Fluent Conference 2013 videos (review)

Conferences can be costly, especially when travel, lodging and food are considered. Many companies cover these expenses for attending employees, but many people still pay out-of-pocket. If you’re like me you have to make strategic decisions about which conferences you want to attend in a given year, and which tracks or sessions you want to attend while you’re there. Unfortunately I missed O’Reilly’s annual Fluent Conference this year, but my joy was palpable when I learned that all conference keynotes, sessions, and workshops were recorded. As a member of O’Reilly’s user group program, I was given a set of Fluent Conference videos to watch and review. The complete set includes over fifty-five hours of video that may be streamed or downloaded to a computer or mobile device. (I use a Roku player and a USB drive to watch Fluent Conference videos on my television.)  Each video is professionally recorded, and the sessions are produced in split format so that you can see the speaker and their presentation slides or demos at the same time. Presently I have viewed all keynote presentations and over a dozen individual sessions. Every speaker has been competent and articulate, and the topics have all been interesting, and some, surprisingly in-depth. I have not yet evaluated the workshop sessions, though if the tenor of the general sessions is any indication, I fully expect the workshops to share the same qualities. These are the keynotes I found particularly interesting.

  • Brenden Eich (Mozilla) talked about the maturity level that JavaScript has reached over the last eighteen years. He covered ECMAScript 6 features that will bring JavaScript into adulthood. He also demonstrated that, through libraries like emscripten and ASM.js, JavaScript can be used to run applications at near-native speeds. To illustrate, he played a round of Epic Games’ Unreal Tournament, which had been ported to JavaScript and WebGL, right in his FireFox browser.
  • Paul Irish (Google) talked about new Chrome web development tools, including developer workspaces that map browser assets to files on the file system and source maps that track changes between generated CSS and SASS files.
  • Bill Scott (PayPal) relayed his experience porting portions of PayPal’s checkout process to node.js, specifically how he was able to integrate a node solution into an existing Java environment in a piecemeal way to combat regression.
  • Breaking from technology and delving into practice, Kate Matsudaria (popforms) discussed how skill mastery requires an understanding of all abstractions involved in any activity, and why developers should understand the “magic” behind the tools that they love so much.
  • Mike Hostetler (appendTo) encouraged audience members to re-think their definition of “work”. Mike runs a completely distributed company in which “work” relates to goals and activity, not location. This subtle but fundamental thought shift creates enormous benefits for companies, employees, and even the world at large.
  • Lea Verou (W3C) walked the audience through the lifecycle of a web standard and discussed the different people and organizations involved in the standardization process.

These are some sessions I particularly enjoyed.

  • Todd Kloots (Twitter) spoke about the power of HTML5 pushState and the challenges that his team had to overcome while simultaneously supporting modern and antiquated browsers, specifically reconciling URL hash changes with pushState routing.
  • Trevor Burnham (Hubspot) deconstructed promises into their constituent parts and showed how they can be use to aggregate callbacks to fulfill async tasks.
  • Ralph Whitbeck (appendTo) talked about the current state of the popular jQuery Mobile framework, how the jQuery Mobile release cycle works, and what users can expect from upcoming releases.
  • Steven Sanderson (Microsoft) presented an overview of his MVVM UI library, knockout.js. Not to be outdone, Misko Hevery (Google) presented his popular alternative, angular.js. Both libraries specialize in view/logic segregation and provide bi-directional data binding mechanisms, though they differ in template implementation.
  • Eric Elliott (Adobe) discussed the prototypal nature of JavaScript delegation and contrasted it with classical language inheritance. He made a compelling case for rejecting classical thinking and embracing prototypes as a superior means of reuse.
  • Ben Vinegar (Disqus) warned about the dangers of cross-site scripting and demonstrated how the proposed Content-Security-Policy header can curtail XSS abuse by whitelisting scripts.
  • Eric Bidelman (Google) demonstrated how the new HTML5 web component specification will help developers sandbox custom, reusable elements that have their own markup, styles, and scripts. He showed how much of the proposed (but yet unimplemented) web component behavior can be achieved with the Polymer library in modern browsers.
  • David Bruant (freelance) compared two theories of garbage collection in memory-managed languages (like JavaScript), showed how each has its own pitfalls, and discussed what JavaScript developers can do to prevent memory leaks.

I’ve been to many conferences and plan to go to many more. Maybe I will even get to attend Fluent Conference 2014. But until then I can get the learning benefit from a world-class conference in my own home or a favorite coffee shop. The Fluent Conference videos are quality tools for developers and teams to keep skills current and ideas fresh.

InformIT sponsors STL ALT .NET

InformITI am happy to announce that book publisher InformIT has joined the growing list of STL ALT .NET sponsors! Some of the most significant books in my software development library are InformIT imprints. Titles like Patterns of Enterprise Application Architecture, Refactoring to Patterns, and Design Patterns adorn the bookshelves posed strategically within sight during video chat meetings. Not only do these books make me look smart, they have actually contributed to my knowledge of programming and large-scale enterprise systems. Also, hardback books are just cool. InformIT has graciously donated one hardback book and several e-books to raffle, and discount codes for all members at this month’s meetup. InformIT publishes imprints from quality industry publishers like Addison Wesley, Sams, QUE, and Prentice Hall. You can learn more about InformIT and read quality development articles on the InformIT website.

Listing npm packages without dependencies

I have written a short gist on how to create a bash function to filter out npm package dependencies when using `npm ls`. This function, when placed in .bash_profile can then be treated as a bash command. This is really helpful when you have lots npm packages installed, or those packages have lots of dependencies.

NCrunch sponsors STL ALT .NET

NCrunchThat unit tests have become a significant tool for modern programmers cannot be denied.  Whole conferences, long books, and powerful tools have all been created to make the task of testing software a streamlined, painless process.  “Red, green, refactor” has become the mantra by which we code. At last month’s STL ALT .NET meetup, Brian Schroer introduced members to the automated .NET testing tool, NCrunch.  He demonstrated how NCrunch automatically conducted background builds and ran unit tests in real-time while he was actively making changes to his code.  Not only would NCrunch report when unit tests failed, but it also visually tagged the lines of code that were covered by unit tests, clearly showing Brian which portions of his code tested and which were not.  (I have it on good authority that Brian never writes untested code. Ever. So this feature is useless for him because he is a coverage ninja.)  NCrunch also provides a host of other features, including inlined exception details (so that errors can be easily traced through code when tests fail), line-by-line performance metrics that help identify slow and inefficient code, parallel test execution, optimized, selective builds, and more. I am happy to announce that, to compliment Brian’s lightning talk from last month, the generous folks at NCrunch have donated one NCrunch license to be raffled at the upcoming November STL ALT .NET meetup!

Scooter Software sponsors STL ALT .NET

Scooter Software - Beyond CompareThe consensus among most developers that I talk to who use Windows as their primary operating system is that Beyond Compare by Scooter Software is, hands down, the best diff/merge tool available.  Not only does Beyond Compare offer powerful 3-way file merges, but it can perform directory diffs and synchronizations as well.  For comparisons between CSV files, Excel spreadsheets, HTML tables, registry keys, images and other binary files, Beyond Compare also provides specialized viewers that enable developers to work with the data in each file without worrying about the storage format.  (Someone seriously needs to write plugins for comparing Visual Studio project and solution files!)  Beyond Compare is so universally praised that it has a standing mention on Scott Hanselman’s developer and power user tool list. To support the St. Louis developer community, Scooter Software has kindly donated two Beyond Compare Professional licenses to be raffled at the upcoming November STL ALT .NET meetup (which is pretty much like having Christmas in November)! On behalf of STL ALT .NET I thank Scooter Software for their generosity.

appendTo Sponsors STL ALT .NET

appendToLast month I started working for an amazing software development company called appendTo. My co-workers are a tight, talented, distributed group of amazing individuals who inspire and motivate me with the awesome work they do. Though a small company, appendTo plays a major league game. Our front-end developers recently worked with Time Magazine developers to launch a responsive redesign of Time.com, company founder Mike Hosteler presented at the MS Build 2012 conference last week on writing Windows Store apps with jQuery, and many of our team members are core contributors and/or owners of popular open source projects written in many different programming languages. appendTo offers a wide variety of services, most of which center around web and mobile development. Because appendTo has a strong commitment to open source software, many of the core libraries that were developed internally have been released on Github. As an addition to the appendTo Portfolio of Awesome™, appendTo has graciously offered to sponsor STL ALT .NET by covering the (non-trivial) cost of our meetup site. I am happy to welcome appendTo as a sponsor and want to personally thank the company for its investment in the St. Louis developer community!

Infragistics Sponsors STL ALT .NET

developer toolsI am pleased to announce that Infragistics, a leading .NET UI control vendor, has donated a number of free package licenses to STL ALT .NET to give away as raffle prizes during our monthly meetings:

Infragistics is well respected as a leading UI control vendor, and has a formidable array of control packages for any .NET development need, whether it be Windows Forms, WPF, ASP.NET or Windows Phone, Infragistics has packages for all of these and more.  Infragistics also offers a free beta controls download for its newest toolset, the Windows 8 App Store controls.  Designed to run in the new Windows 8 Modern UI, these controls are ideal for either desktop or Surface development.  Because they take advantage of both the C# and JavaScript WinRT APIs, both desktop and web developers will be in familiar territory while developing. We are glad to welcome Infragistics as a sponsor and thank them greatly for their generosity!

Why I Voted Libertarian

This is not a political blog, but I am breaking rank today to talk about a political matter in light of our most recent bout of national elections. I want to explain why I vote Libertarian. My goal is not to convince you to vote as I do, but rather to give you a different perspective to consider. I don’t claim to speak for all Libertarians–these are my personal beliefs–but I do think that most Libertarian-minded voters would agree with my position here. Consider the following slogans, all of which I have seen in some form on bumper stickers here in St. Louis:

  • I own guns… and I vote.
  • I am a woman… and I vote.
  • I love animals… and I vote.
  • I am a vegetarian… and I vote.
  • I am a Christian… and I vote.

I’m sure you have seen similar bumper stickers, as these tend to be quite popular, especially during election years. What is interesting about each of these slogans is that they convey something that, deep down, most people understand about politics and law, but which they don’t verbalize or even conceptualize very well, and that is the fact that law (government) is force.  Each of these slogans is actually a thinly veiled threat. The hidden meaning is: I have specific personal beliefs, and I am prepared to use my voting power to _force _you to comply with those beliefs. Think about that. Every time you vote for some proposition or support some political figure who pushes particular laws, you are agreeing that it is acceptable to compel your family, friends, and neighbors to obey those laws, and that if they disagree they should be forcibly punished. Every human being is (sub)consciously aware that their life is being shortened every day, and so seeks to maximize the benefit they get from living while they can. There are only two ways to achieve this: by compelling others to provide them with the necessities of life (as thugs, tyrants, slave owners and cult leaders do), or by joining in a voluntary society with others who are all willing to specialize their labor and trade voluntarily, increasing both the standard of living and the leisure time of all involved. These are contradictory methods, and laws are created in civilized societies to prevent people from exercising the former. The only way that everyone who participates in society benefits is by prohibiting the initiation of force. Generally, people seek to spend the least amount of time procuring the necessities of life and the most amount of time pursuing the things they love and value. Self-realization – the development and pursuit of values – is a defining characteristic of our humanity. But compulsory laws, rather than providing a safe environment in which values can be discovered and pursued, prescribe values and prohibit alternatives. This method of aggression by-proxy is not only harmful to society  but destructive to our very humanity. American society continues to fragment into “tribes” of people who all wage a war of compulsion in our political system. Whether it is the 1% or the 99%, the Christians or the Muslims, the gays or the straights, the feminists or men’s rights advocates, each group wants to use government as a cudgel to compel the other to behave in particular ways. The reason I vote Libertarian is because I believe that the answer to social problems is not more compulsion or force, but the _restraint _of compulsion and force by laws that protect _all _individuals. I vote Libertarian because I believe that people must be free to be different, and to live their convictions regardless of whether I like them or not; and should their convictions move them to violence against me, the society that we’ve created checks that and protects my peaceful behavior. I vote Libertarian because I believe it is time that Americans become adults and solve their problems, person to person, without threatening bumper stickers or political pull. I vote Libertarian because I believe that the only way humans can reach their full potential is to be completely free.