Northern Virginia Software Symposium
Apr 29 - May 1, 2011 - Reston, VA
Tim Berglund
Developer, Consultant, Author
Tim is a full-stack generalist and passionate teacher who loves coding, presenting, and working with people. He believes the best developer is one who is well-informed of specifics and can also make deep connections between software development and the broader world. He has recently been exploring non-relational data stores, continuous deployment, and how software architecture should resemble an ant colony.
His firm, the August Technology Group, helps clients with product development, technology consulting, and technology upgrade projects atop the JVM. The August Group's technology preferences reflect the generalist sensibilities of its founder, and its development practices are always lightweight, self-improving, and humanizing by design.
Tim is a speaker internationally and on the No Fluff Just Stuff tour in the United States, and is co-president of the Denver Open Source User Group in the Denver area, co-author of the DZone Clojure RefCard, co-presenter of the best-selling O'Reilly Git Master Class, co-author of Building and Testing with Gradle, and a member of the O'Reilly Expert Network.
He lives in Littleton, CO with the wife of his youth and their three children.
Presentations
NoSQL Smackdown!
You've read that the relational model is old and busted, and there are newer, faster, web-scale ways to store your application's data. You've heard that NoSQL databases are the future! Well, what is all this NoSQL stuff about? Is it time to ditch Oracle, MySQL, and SQL Server in favor of the new guard? To be able to make that call, there's a lot you'll have to learn.
In this session, we'll take a whirlwind tour of several representative non-relational data stores, including Cassandra, MongoDB, and Neo4J. We'll learn the very different ways they represent data, and we'll see their unique strengths and weaknesses in various kinds of applications. Along the way, we'll learn why new technologies must be introduced to address today's scaling challenges, and what compromises we'll have to make if we want to abandon the databases of our youth. We'll review what ACID means, think about query idioms, and talk about the CAP theorem. It's an exciting time to be storing and retrieving data, and the opportunity is now before us to learn things we could ignore just a few years ago. Come to this session for a solid introduction to a growing field.
Complexity Theory and Software Development
Some systems are too large to be understood entirely by any one human mind. They are composed of a diverse array of individual components capable of interacting with each other and adapting to a changing environment. As systems, they produce behavior that differs in kind from the behavior of their components. Complexity Theory is an emerging discipline that seeks to describe such phenomena previously encountered in biology, sociology, economics, and other disciplines.
Beyond new ways of looking at ant colonies, fashion trends, and national economies, complexity theory promises powerful insights to software development. The Internet—perhaps the most valuable piece of computing infrastructure of the present day—may fit the description of a complex system. Large corporate organizations in which developers are employed have complex characteristics. In this session, we'll explore what makes a complex system, what advantages complexity has to offer us, and how to harness these in the systems we build.
Cassandra: Radical NoSQL Scalability
Want to go deep on a popular NoSQL database? Cassandra is a scalable, highly available, column-oriented data store in use at Netflix, Twitter, Reddit, Rackspace, and other web-scale operations. It offers a compelling combination of a rich data model, a robust deployment track record, and a sound architecture, making it a good choice of NoSQL databases to study first.
In this session, we'll talk about Cassandra's data model, look at its query idioms, talk about how to deploy it, and look at use cases in which it is an appropriate data storage solution. We'll study its origins in the Amazon Dynamo project and Google's BigTable, and learn how its architecture helps us achieve the gold standard of scalability: horizontal scalability on commodity hardware. You'll leave prepared to begin experimenting with Cassandra immediately and planning its adoption in your next project.
Gaelyk: Lightweight Groovy on the Google App Engine
You love Groovy and you're a believer in cloud computing. For a larger project you might choose Grails and hosting on Amazon EC2, but what if you want to take advantage of the nearly massless deployments of a cloud provider like the Google App Engine? You could make Grails work, but it's not always the best fit. Enter Gaelyk.
Gaelyk is a lightweight Groovy web application framework built specifically for the Google App Engine. In this session, we'll talk through the simple abstractions it offers, then show how easy it is to code and deploy a useful application to the cloud.
Programming HTML5
HTML5 wants to make some major changes to the way we deliver media over the web and the way we mark up our pages, but it also gives us a bunch of new stuff in the browser's programming model. To ignore these new JavaScript APIs is to give up on a richer browser UI and a lot of fun.
In this session, we'll cover the geolocation API, local storage, the client-side SQL database, support for offline applications, in-browser threading, web sockets, and more. We'll look at the real, working code for as many features as we can manage, and discuss cross-browser compatibility issues as well. HTML5 is not an optional skill for web developers in 2011. Don't miss it!
Database Refactoring with Liquibase
Most teams manage database change using an ad-hoc system of SQL migration scripts manually applied to various development, staging, and production servers. Some even contrive automated processes, but rarely does this surplus build engineering deliver value directly to the customer. We should be writing applications, not build tools.
In this session, we'll take a look at a ready-to-use, open-source database refactoring tool called Liquibase. Liquibase enables developers to make database changes with confidence, share those changes in a predictable way with other team members, and apply them to automated QA builds, staging servers, and production environments. It provides a credible path to agile database development, and it integrates well into popular build tools. It's a key enabler of the culture of database responsibility that most teams are missing.
Books
by Tim Berglund and Matthew McCullough
-
Build and test software written in Java and many other languages with Gradle, the open source project automation tool that’s getting a lot of attention. This concise introduction provides numerous code examples to help you explore Gradle, both as a build tool and as a complete solution for automating the compilation, test, and release process of simple and enterprise-level applications.
Discover how Gradle improves on the best ideas of Ant, Maven, and other build tools, with standards for developers who want them and lots of flexibility for those who prefer less structure.
- Use Gradle with Groovy, Clojure, Scala, and languages beyond the JVM, such as Flex and C
- Get started building a simple Java program using Gradle's command line tooling and a small build script
- Learn how to configure and construct tasks, Gradle's fundamental unit of build activity
- Take advantage of Gradle's integration with Ant
- Use Gradle to integrate with or transition from Maven, and to build software more cleanly
- Perform application unit and integration tests using JUnit, TestNG, Spock, and Geb
-
Build and test software written in Java and many other languages with Gradle, the open source project automation tool that’s getting a lot of attention. This concise introduction provides numerous code examples to help you explore Gradle, both as a build tool and as a complete solution for automating the compilation, test, and release process of simple and enterprise-level applications.
Discover how Gradle improves on the best ideas of Ant, Maven, and other build tools, with standards for developers who want them and lots of flexibility for those who prefer less structure.
- Use Gradle with Groovy, Clojure, Scala, and languages beyond the JVM, such as Flex and C
- Get started building a simple Java program using Gradle's command line tooling and a small build script
- Learn how to configure and construct tasks, Gradle's fundamental unit of build activity
- Take advantage of Gradle's integration with Ant
- Use Gradle to integrate with or transition from Maven, and to build software more cleanly
- Perform application unit and integration tests using JUnit, TestNG, Spock, and Geb




