Quantifying Trolling

Having run this blog for many years (which was once upon a time popular) and now running Flippin' Awesome (which has become heavily trafficked), I've received my fair share of trolling comments. The obvious ones are easy to spot. The language is offensive, the comment features little in the way of constructive or usable feedback and the user is generally choosing to remain anonymous. However, with many comments the line isn't so clear cut and since I prefer to err on the side of allowing valid criticism even if it is harsh, I often find the determination a struggle. Perhaps they use offensive language or a fake name but the content was legitimate, for instance. Or, take for instance, a comment I received on an article this morning on a recent article. The site was fake, and the email, while not obviously fake, seemed questionable, and here was the contents: *sigh* And this is the state of software engineer discourse regarding the front-end? Dismissing full-featured, battle-tested frameworks and approaches based on little more than aesthetic distaste, hypothetical performance problems, and – most hilariously – that they dare to *enforce* modularity? What a shame that they stop you writing your big ball of template mud -sorry, I mean your “holistic” template. Articles like this are pure nonsense, are incredibly damaging to web development. They contribute to the community's complete inability to settle and build on frameworks and concentrate on building applications that can compete with native experiences. Instead wasting years flitting between various half-baked new frameworks, each one rabidly evangelised by neophiles who promise that *this time* it really it is an architecturally sublime silver bullet, far better than last month's framework de jure, which incidentally is a bloated and deficient piece of shit. The criticism makes some valid points and does so, right up until the end, without veering into questionable language (I'm not trying to be puritanical or anything but I think cursing in comments only serves to degrade the quality of the discussion over all). So, this isn't an obvious troll. The main issue I am having is that the entire tone of the comment is argumentative and intentionally insulting to the author (and potentially other commenters). The topic of the article was admittedly and openly opinionated, but I haven't approved the comment because I thought it's author was “picking a fight” rather than contributing to the discussion. It's definitely a judgement call though and I haven't deleted the comment yet because I am still somewhat on the fence about approving it - but clearly leaning towards no. What about you? Do you have a way you like to “quantify” comments of this sort when you are moderating your sites? Do you disagree think this comment should be approved? I'd love to hear feedback.

Posted by on 26 March 2014 | 1:43 pm

On Departing Adobe

For the last three and a half years I have held a variety of roles at Adobe and these were some of the best years of my career so far. Years ago, I wrote a post asking what the next step would be for a lifelong developer. At the time, I didn't have an answer. It had always been a dream of mine to work for Adobe (and Macromedia and Allaire before that), but I never knew what they'd want with a ColdFusion developer like myself. Thankfully, they did. I came in to Adobe as a community manager for Flex and Flash. For a time, I helped lead the Adobe Developer Connection content around web standards, web design and mobile development. More recently I've worked on developing getting started training material for the Creative Cloud. In each of these roles, I have had the opportunity to broaden my skills and figure out what it is that I love to do and am successful at beyond just coding (not that my love of coding is gone - far from it). I love working with the community and I love creating, curating and generally working on content for the developer and designer communities. Adobe gave me those opportunities and for that I am forever grateful. I also managed to join Adobe during turbulent times. A lot has changed over the past few years. Adobe seems to be headed in a very successful direction with the Creative Cloud (as evidenced by the market response seen in the stock price over the past couple years). However, despite my love for Adobe, I wanted to get back to focusing on developers and the developer community in an official capacity (I've done so unofficially for a year now with my Flippin' Awesome site). That is why I am very excited that as of February 16th I'll be joining Telerik as their new Developer Content Manager. They have an exciting end-to-end platform for developers and I am looking forward to helping tell that story through creating, curating and generally working on content for their developer and designer communities. I hope to have more to say about my new role after I start. My last official day at Adobe will be February 14th. Thanks to everyone both inside and outside the company who has really made a difference in my professional life during my time at Adobe.

Posted by on 7 February 2014 | 1:26 pm

The Lasting Impact of Arbitrary Decisions

Lately I have been giving a lot of thought to arbitrary decision-making and it's long term effects. In each day, both personally and professionally, we are asked to make a large number of decisions ranging from large and impactful to small and relatively innocuous. In many cases, our decisions are somewhat arbitrary, based on limited knowledge or research. This is both necessary and unavoidable. We simply do not have the time to adequately research every decision that has to be made and a choice must be made, so we make it. That's not the trouble. The trouble comes with the fact that we often don't recognize the arbitrary nature of our choice. We come up with justifications after the fact, pretending the decision was always based upon sound judgement. For example, I may choose to use a particular library to solve a problem in developing my web application. Perhaps, it was simply the library I could find at that particular moment. It worked, so I used it. However, later on, I will find and point to articles that reinforce that this was the correct library to use to solve this particular problem. This process usually isn't done with malice and we're often not even fully conscious of it. In the end, what was once an arbitrary choice can become an established rule. Our after-the-fact justifications reinforce our decision and we become certain and very comfortable in its correctness. In our example, this library becomes not just a way to solve this particular problem, but the best and easiest way even if we've never really explored alternatives. In my experience, people (including myself) often defend our least thought out decisions the most adamantly. Sometimes even, these decisions become so entrenched that the ex-post-facto justifications are long since forgotten and we just continue to do things this way because we always have - or at least as long as anyone can remember. At this point, as you might imagine, even small decisions can have long-lasting impact and things become hard to change. Everyone working on the project now uses our library "just because" without giving it much thought. New people who may question its value can find their objections, no matter how well reasoned, fail to gain much headway. This sort of problem is much easier to notice in others than it is in ourselves. It is something I am trying to work on myself. However it can only take a brief moment of self-reflection to recognize when we are doing things out of habit and take a moment to think through our choices. Or perhaps its just speaking up when others won't and being that voice that is open to someone's new way of looking at the problem. Even if you end up in the same place, it'll be on firmer ground. P.S. I was originally inspired to write this by the great posts that appear on The Pastry Box Project. If you haven't checked them out, you should.

Posted by on 5 February 2014 | 1:48 pm

2013 in Review

I actually enjoy reading people's year in review. I see it as a great exercise in acknowledging your own accomplishments and where you could have improved while setting goals for the year to come. Along those lines, 2013 was an eventful year for me. Professionally, my job changed twice which caused me to change my own efforts and focus outside of work. Personally, I continued my focus on improving my health and fitness, but changed it up a bit. The End of the ADC Back in February, Adobe made some changes internally, choosing to place most of the company's focus on the Creative Cloud. This emphasis meant the end of some efforts, which included the Adobe Developer Connection. This was a big change for me in many ways. It wasn't just a job change but a massive change in focus. Managing content for the ADC and recruiting authors and choosing topics was my dream job - though I never knew it ahead of time. The adjustment to creating getting started training videos for the Creative Cloud was not an easy one for me. The ADC is still up but the last of my backlog of content was published some time around last March. The Start of Something New While, admittedly, professionally I was struggling at work, I decided that I wasn't going to let that prevent me from doing what I'd come to love doing. Thus, I decided to start Flippin' Awesome where I could continue my work with authors and publishing. The site became a bigger success than I could have imagined when I started it - especially given that it was a completely unknown property and didn't carry the Adobe name. Since launching in April, the site has had over 820k pageviews on about 623k visitors (360k unique). It has featured the writing of almost 60 authors. It's regularly featured in major industry newsletters and has had numerous articles that made the top items on Hacker News. It's been a lot of work but a lot of fun. It also meant that this blog went very quiet as all my efforts were focused there. Another Change Again in November, Adobe continued to refine its strategy and organization around Creative Cloud. This meant another role change for me - though some details around what this means and how it impacts me is still being determined. Despite the lack of specifics, I can say that I am still focused on content for the Creative Cloud in some way. Writing and Speaking It felt like a lot of my focus this year was on other people's writing. Despite running Flippin' Awesome on my own, I actually published more articles there than I ever did via the ADC. However, as a result, I think I wrote less myself this year than in year's past. I actually did write several pieces for Flippin' Awesome as well. Retro Game Music using Web Audio and Band.js DOM Traversal and Manipulation with Voyeur Drawing and Animating with Two.js and Illustrator Quick and Easy Local and Device Web App Testing Create Your First Mobile App with PhoneGap Build (Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, Part 7) I continued to write for Adobe Inspire mostly because Julie Campagna is simply a great person to work with. Including one that just came out but was written last year, I did 4 new articles for Inspire. Creating complex layouts for the web with CSS Regions and Adobe Edge Reflow CC Web designers become app developers with PhoneGap Building responsive web designs with Adobe Edge Reflow Getting started with responsive web design I also started writing for InfoQ a bit towards the end of the year. It's a different style of writing, more delivering the news. However, I also did a series of interviews for them while at QCon San Francisco. CodeCube Offers Shareable, Runnable Code Samples Current Trends in NoSQL - Q&A with Peter Bell Google Announces Chrome Apps Improved Offline Capabilities & Mac Support Tom Dale on Ember and JavaScript Frameworks Andrew Betts on Developing for Mobile with HTML5 Neal Ford on Giving Technical Presentations Speaking isn't my favorite thing to do but I did also speak at a number of conferences this year. I figure, if I don't keep doing it, I won't get better at it. I managed to reuse a number of my sessions which helped. November 2013 Web Unleashed - Getting Started with Responsive Design (Workshop), Node in Command - Node CLI Tools October 2013 Worcester Web Technology Group - Develop Node.JS, HTML and JavaScript Apps Using Open Source Adobe Brackets July 2013 Mobile and Web Devcon - Introduction to Responsive Web Design and Adobe Edge Reflow May 2013 Fluent - Go Node Without Code cf.Objective - Go Node Without Code April 2013 HTML5 Developers Conference - Introduction to Responsive Web Design and Adobe Edge Reflow Adobe Community Tech Weds - Introduction to Responsive Web Design and Adobe Edge Reflow February 2013 HTML5tx - Web Application Architecture: Learning from Adobe Brackets At Fluent, I also gave an Ignite presentation on how to be an open source superstar which was very well received. You can watch it here. A Changing Focus on Fitness On a personal level, I tweaked my focus on fitness a bit. Those of you who've known me for some time know that I used to be fat. I was probably 270 pounds at one point (I say probably because I would refuse to weigh myself), which is a lot for someone of my stature. About 6 years ago, I think, I decided to change that and today I am about 170 pounds and in the best shape of my life. A lot of that weight was dropped by running with some weight lifting as well. I had been doing the same routine 5-6 days a week for about 4 years. It was getting old, plus, I admit, I knew nothing about weight training. Plus, I'd hit a plateau with my ability to train myself. This year I added a personal trainer who I work with every other week for an hour. This has totally shaken up my workout and improved my build. I also mixed in some interval training classes and rowing (instead of running) throughout the week. The result is not only that I am in better shape, but I am less bored with my workouts. What's In Store for 2014 I've got a lot of things brewing already. My goals are: Write more - specifically tutorials. Not only do I love writing, but writing tutorials forces me to keep my skills up. Build something - enough with simple demos. I want to actually build something substantive like I used to when I was a full-time coder. I have ideas, just need to make time to focus on them. Figure out how to take Flippin' Awesome to the next level - sure, the site is doing great, but it's stuck on a plateau right now. Traffic is good but, in so many ways, the site could be better. Revive this blog - I can't focus my technical writing in two places, but I think this could be a place for me to write about my other interests. Hopefully some of you are interested as well. Focus on strength - I like the strength training my trainer has me doing and I think I see results. I don't want to be overly built, just toned (or at least as much as a formerly overweight 39 year old can be toned). I also already have tons of speaking and events already lined up (probably more than I'd like) but if you want, you can catch me at: Feb 24-25 in Atlanta DevNexus Getting Started with Responsive Web Design (workshop) Approaches to DOM Traversal May 13-16 in Minneapolis cf.Objective() Leveling Up at Javascript: DOM Traversal March 11-13 in San Francisco Fluent Creating 8-bit Game Music in the Browser April 25-27 in Boston HackFit I volunteered to be technical coach in this. June 9-10 in New York QCon NY I am on the conference committee - not sure if I'll be officially speaking. If you got this far. Thanks for reading.

Posted by on 14 January 2014 | 12:07 pm

Best of JavaScript, HTML & CSS – Week of August 19, 2013

This week's best of JavaScript, HTML and CSS update on Flippin' Awesome was filled with new and updated libraries and other projects including Yeoman 1.0, Brick, Tridiv, ungit, FlowType and much more. Of course, there were plenty of great tutorials as well, so be sure to check them out. In addition, we published three new articles this week: Ryan Morr explains the difference between scope and context in JavaScript and how they're used in common design patterns. Understanding Scope and Context in JavaScript Matt Baker discusses rules for applying functional programming principles to CSS so it can more effectively scale. Functional CSS (FCSS) Seth Vincent shares his strategy for deciding when to choose between npm, Bower and component for client-side dependency management. Choosing Between npm, Bower and component

Posted by on 28 August 2013 | 2:37 pm

Best of JavaScript, HTML & CSS – Week of August 12, 2013

This week's "Best of" post on Flippin' Awesome had a broad array of tutorial topics including lots of cutting edge stuff in ES6 and CSS to new frameworks like Ractive and React. There were a handful of new and updated libraries including a new version of JavaScript MVC and Brackets. In addition, we published three new articles including one by the author of Ractive.js, a new framework that received a lot of positive attention when it was released a few weeks ago: Rich Harris explains how reactive programming can make your JavaScript code more efficient and how Ractive.js expressions work.Ractive.js Expressions and the New Wave of Reactive Programming Alan Greenblatt shows an example of how you can use CSS Regions to more easily build responsive layouts.Responsive Content Using CSS Regions Krasimir Tsonev discusses a couple of useful features in Sass but also discusses their current limitations.Two Useful Sass Features and Their Limitations

Posted by on 21 August 2013 | 8:23 am

Best of JavaScript, HTML & CSS – Week of August 5, 2013

This week's best of JavaScript, HTML and CSS post on Flippin' Awesome features a good dose of framework-specific tutorials such as Backbone, Bootsrap and Jasmine, as well as updates to all the Adobe Edge products such as Reflow, Brackets/Edge Code and Edge Animate. In addition, we published 3 new articles this week, which have been hugely popular already: Mathew Carella shares tips for writing better and more efficient CSS. Writing Better CSS Jonathan Fielding explains how SimpleStateManager let's your JavaScript code react to responsive design state changes. Coding for Responsive State Changes with SimpleStateManager Krasimir Tsonev walks through techniques for animating in HTML using JavaScript, CSS and the Animate.CSS library. Introduction to Animating in HTML

Posted by on 15 August 2013 | 2:47 pm

Sites I Admire in Web Development

Recently, I've been giving some thought to the future of my web development articles and tutorials site, Flippin' Awesome. When I started it nearly 6 months ago, the plan wasn't just to become yet another web developer tutorials site - there are already a ton of those, to be quite honest. My goal was and is to make it one of the premiere sites for web developers. One of the ways to try and formulate a path for the site is to look at other sites that I admire and learn from them. So, this post discusses some of those sites I admire most, and why. Smashing Magazine - More than any other publication, Smashing Magazine, created by Vitaly Friedman, is what I would say I aspire to be. The site consistently publishes quality and influential articles from a array of authors, both well-known and not. Not only that, but they've turned this into a thriving business with books and events. CoDrops - Manoela Ilic (aka Mary Lou) and Pedro Botelho run this site, which has a heavy CSS and design focus. While the site has contributions from outside authors, the majority of tutorials and experiments are posted by Mary Lou. The thing that impresses me most is that, while maintaining a steady stream of content, every demo is both technically impressive and attractively designed. CSS-Tricks - Chris Coyier's site has become a great resource for cutting edge design tutorials from both Chris and others. One of the small things I enjoy about this site is the way Chris prefaces each external contribution with a summary of why he thought it was important to share. Raymond Camden's Blog - Ray and I have been friends for some time, but I have always admired his blog. It's not just that he generally keeps a steady stream of content but more so that he has a very authentic voice. Ray has a way of writing that makes complicated topics seem unintimidating. This is not a definitive list - there are many more sites that I admire, such as A List Apart, David Walsh Blog, Christian Heilmann's blog and others. What sites do you admire most? (P.S. Sorry about the CAPTCHA, I had a ton of spam getting through my spam protection and this seemed better than no comments at all)

Posted by on 14 August 2013 | 7:01 am

Best of JavaScript, HTML & CSS – Week of July 29, 2013

Sorry that this post is a little late. This week's best of post on Flippin' Awesome featured a ton of general (non-framework-focused) tutorials and some interesting new releases such as Bone.io, Bindr, NeDB and node-webkit. Read the update here. In addition, we published three new articles and a new podcast episode (busy week eh?): AngularJS offers built-in support for CSS3 transitions and animations. Holly Schinsky shows how to use them with a sample app.Animating with AngularJS Chris Griffith introduces the CSS-based components, icons and other features offered by the Topcoat UI library.Introduction to Topcoat Thinking of monetizing your mobile app with ads? Alex Genadinik shares a story of how putting ads on his app actually lost money.How Putting Ads on Mobile Apps Can Lose Money – A Case Study Topic Undefined Episode 3 features Ray Camden and I disagreeing on a number of important web development topics. Guess who was right? No, I meant me!Topic Undefined – Episode 3

Posted by on 8 August 2013 | 12:43 pm

Lots of JavaScript, HTML and CSS at NCDevCon

On September 21-22, NCDevCon will host it's 5th conference in Raleigh, North Carolina. This year it is jam-packed with content on JavaScript, HTML, CSS and mobile development. I counted at least 25 sessions and workshops on a range of these topics. The hardest part will likely be choosing which sessions you'll have to miss for lack of time.Registration for the event is only $200, which would be cheap enough as is but also includes:    * Entry to the weekend event, all presentations and hands on classes.    * Lunch (both days)    * Coffee, drinks and snacks (both days)    * Conference shirt    * Saturday evening networking eventRegister here: http://ncdevcon.eventbrite.com/Find the session list here: http://ncdevcon.com/page.cfm/sessions-2013

Posted by on 30 July 2013 | 12:30 pm

Best of JavaScript, HTML & CSS – Week of July 22, 2013

This was a busy week, so be sure you don't miss the weekly "best of" post on Flippin' Awesome. On top of a lot of important tutorials, it featues some important new releases including new Twitter BootStrap, Bower, UIKit, Ractive.js and more. Also, be sure to check out the new articles on Flippin' Awesome this week on Git, Node and jQuery: Peter Bell shows common problems around rewriting history using Git and how to solve them.Changing History with Git Jonathan Fielding walks through the steps to build you own command line utility using Node.Writing a Command Line Utility using Node Tim Severien shows how you can use the Promin jQuery plugin to easily create user-friendly multi-step forms.Creating Multi-step Forms with jQuery and Promin

Posted by on 29 July 2013 | 9:29 am

Keeping Up with New JavaScript, HTML and CSS Projects

Developers love things that are shiny and new, and, in a world where new JavaScript or CSS libraries are released faster than babies are born, it can be hard to keep up. I've maintained my own weekly update which recently moved to my Flippin' Awesome site (follow the news category for the weekly update), and one of the toughest pieces is finding not just new and updated projects, but worthwhile ones! This post is a thank you to some of the best resources that I rely on for that task. Of course, for the most part I rely on people who create projects to promote them on their blogs, Twitter or elsewhere. Nonetheless, the following resources are especially valuable. Web Developer Focused Sites DailyJS DailyJS is run by Alex Young and in addition to featuring great tutorials on topics like Node and AngularJS, it has weekly roundups covering newly released projects in JavaScript, Node and jQuery. I almost always find a new project worth highlighting in every one of his posts. CoDrops CoDrops has some of the most attractive and impressive demos and tutorials around. However, for the purposes of our discussion, Manoela Ilic (Mary Lou) also produces a weekly list of the best projects, tutorials and other posts around HTML, CSS and web design. Badass JavaScript Though it has been quiet very recently, Badass JavaScript by Devon Govett regularly shares some really awesome new projects. Rather than simply a rundown of new projects, each posts goes into some detail about the particular project. Web Developer Focused Newsletters I've covered this topic before more generally, but these newsletters always lead me to good projects. HTML5 Weekly and JavaScript Weekly Both of these newsletters maintained by Peter Cooper (the latter with the help of Axel Rauschmayer) always contain a list of new and updated projects. Somehow, this list always manages to include projects that were completely off my radar, but deserving of attention. Web Tools Weekly This newcomer on the newsletter scene is by Louis Lazaris and it is entirely focused on new and updated libraries. The first issue came out this week and hopefully this becomes another valuable resource. Other Resources Hacker News Yes, it is tough to wade through the noise on this site, but frequently a gem will shine through. Keep in mind that this isn't always on the front page, but often is passing mostly ignored on the very busy newest feed. DZone It can take some digging, but if you follow the CSS-HTML and JavaScript categories (including especially the new posts feed), you'll often come across something valuable.

Posted by on 25 July 2013 | 7:11 am

Best of JavaScript, HTML & CSS – Week of July 15, 2013

This past week was a busy one so don't miss this week's Best of JavaScript, HTML & CSS post on Flippin' Awesome. There were a number of notable library releases including PhoneGap 3, eddy.js, ESLint and more. Also, there were some outstanding tutorials. Be sure to read Hugo Giraudel discussing frustrating CSS issues, Sean Fioritto discussing flexbox, Joel Hooks on AngularJS internals and Raymond Camden on Express. Also, be sure to check out the latest articles this week: I show how the Voyeur.js library offers an alternative syntax for DOM traversal and Manipulation.DOM Traversal and Manipulation with Voyeur Joel Hooks takes a look inside AngularJS to examine the internal directives that override standard HTML tags.AngularJS Directives That Override Standard HTML Tags

Posted by on 22 July 2013 | 7:49 am

New Podcast for Web and Mobile Developers

Raymond Camden and I have been trying something new. A couple of week's ago, we recorded the first episode of a new podcast we have (very creatively) called Topic Undefined. Today we released episode 2. In the podcast, we discuss some of our favorite articles from recent weeks, sharing and sometimes debating the significnance of it. It is a great opportunity to offer context to some of the links both he and I like to share via Twitter and our web sites. Obviously, this is something new and we are still learning, to some degree, how to do it. If you have suggestions or comments, please share. On a side note, I did recently submit it to iTunes, so it should show up there as soon as they are done reviewing it. You can find a list of all podcasts here. You can subscribe via RSS here. Episode 1 Episode 2

Posted by on 16 July 2013 | 10:38 am

Best of JavaScript, HTML & CSS – Week of July 8, 2013

The best of JavaScript, HTML and CSS post this week on Flippin' Awesome features a ton of CSS-related links from tutorials on maintaining aspect ratios in CSS to using CSS custom filters, from a CSS media qery generator to a new spec draft on CSS Regions. Of course, there is also the usual array of JavaScript and HTML tutorials and projects as well. So, please, check it out. In addition, I published two new articles, both on JavaScript topics (and both focused on similar architectural concerns though not in the same way): Simon Smith shows how to write more maintainable JavaScript by decoupling event handlers using custom jQuery events. Decoupling with Custom jQuery Events Learn how to use Soma.js to write maintainable JavaScript applications with a loosely-coupled architecture from Romuald Quantin.Soma.js – Your Way Out of Chaotic JavaScript

Posted by on 15 July 2013 | 11:53 am