Slide 1

Slide 1 text

Modern UX Dev tooling Ryan Joy - @atxryan

Slide 2

Slide 2 text

Who am I? Web developer / UX developer Developer Evangelist @ Microsoft Local meetup organizer. Come talk to me about Refresh Austin, Austin Windows App Developers, Austin Geek Lunch, Austin Web Design & Developer Meetup. Loves JavaScript Find me on Twitter at @atxryan or ryanjoy.com

Slide 3

Slide 3 text

About this talk. • Rebecca Murphey gave an awesome talk at TXJS last year. This talk is inspired by her listing of the baseline skills she considers a part of modern JavaScript development. • PSA – TXJS tickets go on sale again today at 11am CT. • This talk is geared toward front-end developers looking to take their skills past simple jQuery plugins. You may be managing large projects, writing single page applications, or just want to level up.

Slide 4

Slide 4 text

Version Control (VCS) Commit yourself.

Slide 5

Slide 5 text

Git and Github You don’t have to use Git and GitHub for your personal projects, but you’d be remiss to not understand these things. Most open-source projects of interest make their home on Github. Cloning a repo to try it out should be second-nature to you.

Slide 6

Slide 6 text

Git • Make sure you know how to create a new repo, clone, branch, and merge locally. • Next, look at collaboration workflow, pull requests, code reviews • Do you use SVN or something else at work? Try using git-svn on your own machines. • Create a Git repository for your code snippets, project folder, playground, etc.

Slide 7

Slide 7 text

JavaScript jQuery is made of JavaScript. True story.

Slide 8

Slide 8 text

JavaScript You want to know: • prototypal inheritance, • closures & function scope, • MV* patterns You should understand • data structures like objects and arrays; functions • call and apply • You should understand patterns.

Slide 9

Slide 9 text

Improve yourself: JavaScript

Slide 10

Slide 10 text

Modularity You don’t write everything in the global namespace, right?

Slide 11

Slide 11 text

Modularity • We don’t manage dependencies by adding one more script or style tag. • RequireJS lets you develop with small, modular JS and CSS files • It concatenates and minifies them via its optimization tool for production use. • Not convinced of modules? At least use tools like UglifyJS, Closure Compiler, or even YUI compressor that will minify your code, and then concatenate those minified files for production.

Slide 12

Slide 12 text

CSS Preprocessing SASS, Stylus, Compass, and/or LESS These tools give you features like variables, math, logic, mixins and they can also help smooth over the CSS property prefix mess.

Slide 13

Slide 13 text

Browser tools Hint: if you’re still using alert to debug, you’re doing it wrong.

Slide 14

Slide 14 text

Debugging Make sure you’re using and understand `console.log`, `console.dir`, the Network tab, Firebug, Internet Explorer dev tools, or Chrome dev tools. Learn how to set breakpoints & step debugging. Look at performance profilers and the DOM Inspector. Check out timelines.

Slide 15

Slide 15 text

Browser developer tools Get very familiar with at least one browser’s dev tools.

Slide 16

Slide 16 text

Browser tools

Slide 17

Slide 17 text

Templating Keep your controls out of my views.

Slide 18

Slide 18 text

Templating Servers used to respond to XHRs with a snippet of HTML. Now we send JSON or other data. Or, we should. Client-side templating libraries let you maintain templates that, when mixed with some data model, turn into a string of HTML.

Slide 19

Slide 19 text

You should also be doing this on the server.

Slide 20

Slide 20 text

Process Automation A good developer is a lazy developer.

Slide 21

Slide 21 text

Improve: Process automation Software developers have been using build tools and other process automation for a long time. Things like ant and make. You may have used rake on a Rails project. Take those skills into your front-end workflow!

Slide 22

Slide 22 text

Dependency management • npm – Node Package Manager • brew – Homebrew on OS X • gem – Ruby gems on OS X • pip – Python Package Index • NuGet – Package manager within Visual Studio • Bower – Browser-based package manager from Twitter

Slide 23

Slide 23 text

Testing • Force yourself to write tests – perhaps before you even write the code • It will help you organize your thinking and your code. • QUnit • Jasmine • Mocha • Selenium • JSHint <- integrates into your editor! • Testing is easy when your code is modular and loosely coupled. • Code that’s not well organized can be difficult or impossible to test.

Slide 24

Slide 24 text

Frameworks Someone has already done this. Follow them.

Slide 25

Slide 25 text

Frameworks • All this talk of plain vanilla JavaScript and using a module system doesn’t mean you shouldn’t use Frameworks. • They follow most of the tools and patterns we’ve talked about. At the very least, they’re a great learning tool! Whole package • BootStrap • Foundation HTML5 • HTML5 Boilerplate CSS • OOCSS • SMACSS JavaScript • Backbone • Ember.js • Angular • Knockout • …

Slide 26

Slide 26 text

CLI Do not be afraid of the command line.

Slide 27

Slide 27 text

Command line A lot of the tools I mention use command line. Get used to it. ssh to log in to another machine or server ack or grep to find files in a project that contain a string or pattern git to do add, commit, status, and pull brew to use Homebrew to install packages npm to install Node packages gem to install Ruby packages If there are commands you use frequently, create an alias. Edit your .bashrc or .profile or .zshrc or .thingy

Slide 28

Slide 28 text

What didn’t we talk about? So much.

Slide 29

Slide 29 text

Stay thirsty, my friend. • Rapid prototyping • Wireframing • Server-side frameworks and templating • Node.js • Compile to JavaScript languages like CoffeeScript or TypeScript • Importance of your IDE / text editor • Backups besides VCS • Other DVCS like Mercurial • Environment tools like virtualenv, nave, or Vagrant

Slide 30

Slide 30 text

Thank you! Ryan Joy - @atxryan