The term "NoSQL" (either "No SQL" or "Not Only SQL" dependending on how upset you are with traditional relational databases) has been around for over 15 years. NoSQL solutions are no more of a "golden hammer" than relational databases -- it's important to recognize circumstances when one is more appropriate than the other.
In this talk, Scott Davis (author of the IBM developerWorks series "Mastering MEAN") will give you a pragmatic overview of the strengths and weaknesses of current popular NoSQL solutions like CouchDB and MongoDB. Persistence stores such as these do a better job of mirroring Agile software practices like emergent design.
If you treat NoSQL solutions as a drop-in replacement for your current relational database, you're going to have a bad day. We'll talk about document-orientation vs. rows and columns, composition vs. joins, and eventual consistency vs. transactions.
Join Scott to see if a NoSQL solution is appropriate for your application.
With apologies to Dr. Martin Luther King, Jr., I look to a day when new web frameworks will not be judged by how easy they make development, but by how easy they make testing. Our industry has proven beyond the shadow of a doubt that you can slap together a Todo list (or a Twitter client, or or or...) in 60 minutes or less using the latest framework de jour. But who would really want to put that slapdash, hacked-together, un-tested mess into production without a solid testing infrastructure backing it up?
In this talk, Scott Davis (author of the IBM developerWorks series "Mastering MEAN") will demonstrate a comprehensive testing stack for the MEAN stack. We'll start with a couple of testing libraries -- JasmineJS and MochaJS -- that support both TDD (Test-Driven Development) and BDD (Behavior-Driven Development). Next we'll explore KarmaJS -- a test runner that runs your tests across an array of browsers (including headless browsers like PhantomJS and SlimerJS), operating systems, and mobile devices. We'll discuss the value of the code-coverage reports provided by IstanbulJS, and the power of driving your browser programmatically (filling in form fields, clicking links, etc.) using the functional testing library ProtractorJS.
Come see how easy it is to do professional, world-class software development -- and by that, of course, I mean how easy it is to test your codebase end-to-end.
Come get a solid introduction to Vert.x from Scott Davis (author of the IBM developerWorks series "Mastering MEAN"), and see if it's a good fit for your next project.
"Everyone talks about the weather, but no one ever does anything about it." - Mark Twain.
Do you feel that way about testing? Is testing a job for someone else? Would you write more tests if you had the right tools?
In this keynote, Scott Davis (author of the IBM developerWorks series "Mastering MEAN") talks about how software testing is a crucial part of the development process. But it is more than a drudgery or a chore -- with the right tools in place, you can gain incredible insight into how your application ACTUALLY works (as opposed to how you THINK it works).
If you think that testing is just for finding bugs after the fact, come see how modern software developers use these testing tools to drive the design and fuel the development process.
In this talk, Scott Davis will show you the vastly improved / vastly simplified RESTful offerings in Grails 2.3. You'll learn how to use cURL to explore and test any web services (not just Grails-based) from the command line. And most importantly, you'll learn both the semantics AND the syntax behind RESTful web services.
Kick PowerPoint to the curb! Ditch that proprietary (but oh so beautiful!) Keynote. Modern HTML5 browsers now have the power and sophistication to replace these presentation software mainstays.
In this talk, Scott Davis will show you three different HTML presentation frameworks. We'll start with the tried-and-true warhorse Slidy.js -- a framework developed by the W3C that has been around for nearly a decade and runs on every legacy browser on the planet. Next, we'll use AsciiDoc and Deck.js for a wiki-like slide creation experience. Finally, we'll use Yeoman and Reveal.js to create a fully modern HTML5 web experience that runs on everything from smartphones to tablets, from laptops to desktops, and everything in-between. Reveal.js even leverages SocketIO to keep remote browsers in sync with your presentation as you change slides!
Exploring the MEAN Stack: MongoDB, ExpressJS, AngularJS, NodeJS
In the late 20th century, web developers talked about using the LAMP stack (Linux, Apache, MySQL, Perl) for building professional websites with open-source software. 15 years later, we have a new acronym that's gaining popularity -- the MEAN stack (MongoDB, ExpressJS, AngularJS, NodeJS).
In this talk, you'll learn how each one of these pieces of technology complement each other. But this is more than a simple change in letters -- the move from relational databases to NoSQL and from server-side MVC to client-side MVC represents a major shift in architecture and mental models.
Come see how these four independent pieces of technology work together to form the "new way" of doing web development.
As a web developer, I'm always looking for tools that "script away" the boring part of the project -- building, scaffolding, testing, minifying, etc. Historically, this problem was solved by bespoke scripts that shipped with individual frameworks. But the "new framework / new workflow" grind gets old after the third or fourth time.
Enter Yeoman -- a collection of best-of-breed tools that streamline your workflow and -- wait for it -- can be reused across projects / frameworks. Yo scaffolds out new projects; Grunt builds and tests your project; Bower tackles dependency management for importing third-party libraries.
Come catch a glimpse of how a modern, reusable workflow can increase your developer velocity.
I have a 12 year old son who is beginning his career as a software developer. But regardless of how many years we've been in this industry, every time we learn a new language, a new framework, or a new library, we're "young" software developers all over again.
When I'm learning something new (and I'm ALWAYS learning something new), I follow the same three steps: 1. Learn to type; 2. Learn to think; 3. Learn to see the future. In this talk, I'll show you tools and utilities to help out with the mechanics of learning something new, as well as rubrics and techniques. Trust me: no matter how "young" you really are, this talk will help you as you move forward in your career as a software developer.
HTML5 in Your Pocket: Application Cache And Local Storage
Two major new features of HTML5 - application cache and local storage - allow you to bring the web experience to your users, even when the web isn't there. Application cache allows you to write fully functional web applications that work offline as well as online. Local storage allows you to store megabytes of data locally without having to install a separate database. Combine these two features, and you can begin writing web applications for mobile devices (iPhone, iPad, and Android) that behave like native applications - right down to the icon on the desktop.
But don't think that these features only work for mobile web development. They are available on PC-based web browsers as well...
Understanding Single-Page Web Apps (using Backbone.js)
I have been working with server-side, page-centric MVC web frameworks for so long that it's hard to imagine anything else. But imagine there's no server. (It's easy if you try...)
In this talk, we'll look at the emerging wave of client-side, component-oriented single page web frameworks like Backbone.js. They'll turn many long-held "best practices" on their ear, requiring a significant change to the way you architect your applications and look at web development in general. There's nothing wrong with the traditional, server-side approach to web development, but if you are interested in making sure that your website works well in tablets and smart phones -- especially in "Airplane-mode" -- single page web apps are something that should be on your radar.
Do you consider yourself a "web programmer" or a "web designer"? The answer to that question provides a strong correlation to the next question: "How well do you understand CSS?"
In this talk, you'll learn many of the new CSS3 features, including media queries (for a responsive web design that lets your website look as good on a smart phone as it does in a desktop browser) vendor prefixes, new selectors (like pseudo-classes and pseudo-elements), form validation, rounded corners, and more. But more importantly, the practical hands-on demonstrations will show you how to program less and let CSS3 do the heavy lifting for you.
Runtime and Compile-time Metaprogramming in Groovy
Groovy is a dynamic language that runs on the JVM. But what does "dynamic" really mean? In this talk, we'll explore what is it means to be a dynamic programming language. We'll see how Groovy adds new methods to existing Java classes -- even final classes like java.lang.String.
Like any powerful language feature, there is more than one way to metaprogram new methods and fields onto existing classes. You might decide to do it in a transient fashion at runtime, or in a more permanent way by transforming the bytecode of the compiled class. We'll discuss the pros and cons of both approaches, with lots of live coding examples.
Hidden Web Services: Microformats and the Semantic Web
The hard line between web pages (pure presentation) and web services (pure data) is finally beginning to blur. Companies as varied as Best Buy, Twitter, Facebook, LinkedIn, Flickr, TripIt, O'Reilly, and even People magazine have decorated their web pages with hidden, semantic metadata. The results are impressive: a 30% increase in traffic for Best Buy, a 15% increase in click-through rate reported by Yahoo!, and dramatic Google PageRank improvements.
In this talk, we'll explore popular microformats such as hCard (the HTML equivalent of vCard) for contact information, hCalendar (the equivalent of iCalendar) for events, hAtom for syndication, and much more. We'll use Java and Groovy to tease out the hidden data in plain old HTML pages for use in everyday applications. You'll also see how Firefox and Safari plug-ins integrate the browser with your address book and your calendar in unprecedented ways.
This is not yet another staid, academic discussion of the future of the semantic web -- this is a pragmatic discussion of how the technology is being used right now to deliver real web services AND web pages at the same time.
As software engineers, we take comfort in the idea of concrete specifications. As web developers, our hearts are either broken (frequently!), or we recognize the W3C's role is a delicate balance of leading the browser developers in new and exciting directions while, in their own words, "paving over the cow paths" of existing, de facto standards.
HTML 5 offers dramatic new improvements for page organization, offering out-of-the-box support for elements like header, footer, nav, section, and article. HTML 5 adds native support for form features such as placeholder text, autocomplete, autofocus, and validation. Additionally, there are a host of new form elements available (email, url, number, range, date, and search) that gracefully degrade in "classic" web browsers -- IE, I'm looking at you.
In this talk, you won't be subjected to discussions about the features that will appear in some distant future release of a web browser. Instead, you'll see the HTML 5 features that are already being used by Google, Apple, and others. You'll see the features that are supported by today's browsers, ready for you to use right now.
Web 2.0 Checklist - Deconstructing Modern Websites
"The challenge of modernity is to live without illusions and without becoming disillusioned." (Antonio Gramsci)
There are plenty of sarcastic “Web 2.0” checklists out there – be perpetually in BETA, when in doubt add rounded corners, etc. While we can all laugh at the superficial aspects of the Web 2.0 revolution, there are plenty of serious aspects to it as well. Is your website mash-up friendly or hostile? Do you tell your visitors when things change (via RSS or Atom syndication), or do you expect them to check in daily for updates? Is your website a silo or a part of a larger ecosystem?
In this talk, we discuss what makes a “modern shiny Web 2.0” website look the way it does. But we go beyond simple look and feel as we catalog the common features in modern websites and show you how to implement them yourself.
"There's an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone." (Bjarne Stroustrup)
The "lizard brain" is the oldest part of the human brain -- the part responsible for autonomic functions like breathing, heart rate, and navigating websites. OK, maybe not that last part, but your website should be easy to use. Stupid easy. Lizard brain easy. Any time your user spends figuring out how to do something -- even for a split second -- is wasted time due to poor design.
Inspired by Steve Krug's book "Don't Make Me Think", this talk answers the question, "Why is that website so hard to use?" In this talk, we look at what make a "good" website "good". Simple changes in the layout or sort order can yield drastic improvements. We'll get inside the heads of typical users and see how their view of our website is drastically different than what we painstakingly planned out. You'll learn how to cater to "Browsers" and "Searchers" -- the human kind, not the software kind. "Lizard Brain Web Design" answers these questions and more in a funny and informative way.
Dim Sum Grails - A Sampler of Practical Non Database-Driven Grails Applications
"The proof of the pudding is in the eating. By a small sample we may judge of the whole piece." (Miguel de Cervantes Saavedra)
Most Grails tutorials demonstrate how easy it is to build simple CRUD (Create/Retrieve/Update/Delete) applications. While skinning a database with a web front-end is undeniably one beneficial aspect of Grails, it isn't the only thing Grails is good for. As you'll see here, Grails can be used to build a wide variety of web applications. You won't see a single HTML table with "edit" and "delete" links, I promise.
In this talk, we look at a variety of Grails applications that go beyond the simple CRUD metaphor -- blogs, wikis, maps, portals, and more.
"The central enemy of reliability is complexity." (Dr. Daniel Geer)
Java is a powerful programming language. A smart developer can do nearly anything with Java. So the next question is, "How quickly can it be done? How many lines of code does it take to do common tasks?" Groovy greases the wheels of Java by decreasing the complexity of the language while preserving the raw power. At first glance, you might think that this talk is simply about how Groovy drastically reduces the lines of code you need to write. What this talk is really about is bringing simplicity, clarity, readability, and yes, beauty to your source code.
In this talk, you'll see common problems presented in Java and the corresponding solutions in Groovy. From something as simple as defining a JavaBean up through File I/O, XML, networking, and database interaction, Groovy offers identical capabilities in a fraction of the lines of code.