David Kaneda will cover the benefits of abstracting CSS by taking a deep look at Sass and Compass. The presentation will include general benefits of abstracted CSS as well as a live-coding demo to show, first-hand, how to get started.
David Kaneda will cover the benefits of abstracting CSS by taking a deep look at Sass and Compass. The presentation will include general benefits of abstracted CSS as well as a live-coding demo to show, first-hand, how to get started.
Language Hunting is a group learning methodology developed to save endangered languages through the tools of accelerated learning. Effective group learning is synonymous with effective group communication and high performance. Willem Larsen, President of Language Hunters, will lead participants in an experiential understanding of how accelerated team learning works.
Responsive Web Design has gained incredible momentum over the past year, and has lead to various strategies in web authoring. In it’s simplest form, CSS3 media queries allow us to manipulate elements of our page to fit multiple screen sizes. This alone can be enough to implement your web content to a broad array of users. When we combine features of CSS, such as absolute positioning and background images, with alternate HTML markup techniques, we can begin to alter the user expereince in addition to layout. Using HTML element as ‘containers’ for imagery allows us to use alternate imagery based ont he user’s screen size, decreasing download speeds on mobile devices. In addition, re-positioning elements gives to the ability re-order the appearance of elements, instead of simply resizing them.
Want to try it for yourself? Chris will be providing a free template to ETE attendees!
There are many stages of practice for each practice. These are the details that get lost in most discussions. What does it mean to practice Continuous Integration, TDD, or Pairing? If you use a CI server, are you doing CI? That depends. The Civiliation games have a “Tech Tree” that show the hundreds of technologies available. They are broken into branches (sea exploration, flight, etc), with dependencies between the branches. We will build a similar tech tree for agile practices, showing how the agile practices interleave and how they change as you develop each branch further.
We’ve all been there. Every night, data in one bucket needs to be put in another bucket. Lots of data. This usually implies iterating through large result sets and hoping that the process doesn’t fall down before it’s finished. It’s tedious, delicate work, and if you had the time, you’d write more robust code. But, you don’t have the time. And frankly, you shouldn’t need to. There is a better way: Spring Batch. Spring Batch is an open source batch processing framework from SpringSource, the people behind the Spring framework. Spring Batch has a large user base and a good track record in production systems, but what is it all really about, and why does it work? This presentation provides a short bootstrap to get a new user started with the Batch domain, showing the key concepts and explaining the benefits of the framework. Then it goes into a deeper dive and looks at what holds it all together, with a close look at some of the most important but least understood features, including remote chunking and partitioning.
Runners find that they can go faster with a lower perceived effort when they exercise in a pack. The same thing happens when our software teams gel, and when our management teams decide to work together for mutual benefit. We are, by nature, social beings—but culture teaches us to hold back and avoid deep connection. What do we need to do to bring back the tribal mentality so we can excel as teams? Find out what companies of all sizes, like Comcast (100k employees), ING Direct (2500 employees), and SmarTesting (30 employees) are doing to successfully adopt and improve Agile development!
Paraphrasing from Margaret Mead: “never doubt that a small group of thoughtful, committed [employees] can change the [company]”. This talk is based on personal experience as well as the work of Seth Godin, Jim Collins, Christopher McDougall, Dan Mezick, Christopher Ryan, Cacilda Jethá, and Katherine Kirk.
Event Sourcing is emerging as a powerful technique to build systems that support retroactive processing. Instead of committing to the current state of the system, events let you reconstruct your system as of any particular timeline in the past. This leads to easier traceability of your system, helps you go back in time, fix errors retroactively and rebuild the timeline without losing any historical context.
Event sourcing can be implemented using the asynchronous model of computation that helps make systems scale easily.This is because events are typically stored once but need to cater to multiple consumers concurrently. One of the main tenets of event sourcing is to ensure a separation of the command and query models (CQRS). While the command store persists the events, they also need to be propagated to multiple consumers like the query model and any other downstream systems with which we interact. Actors are a good fit to manage this asynchronous processing. This section of the talk will discuss various examples from popular libraries like Akka and Finagle to establish how actor and future based models can help scale out your event based system. The next section of the talk will discuss how functional domain models that use data structures like type-lenses form a beautiful dual to event sourced systems
In this talk we’ll look at the state of the art in building real-time Web applications. Based on actual projects such as a real-time monitoring console, we’ll look at Bayeux, Web Sockets, and similar approaches for pushing real-time data to the browser, data management and event-driven UI updates with Backbone.js, decoupling background tasks and calculations using Web Workers, rendering real-time charts with Smoothie, and more. We’ll look at both the latest Web standards, and fallback options for maximum portability. You’ll leave with the tools you need to build a responsive, real-time Web application.
Unlimited bandwidth? Always connected? Yeah right! Truth is, wireless coverage is spotty, and sometimes the internet is simply not available. In this talk, I am going to discuss a few design patterns that make your app snappy when connected, fully-functional when not.
During this talk, Doug will walk through Movitas’ successes and failures in creating a cross platform application that integrates destination information, communication functionality (messaging and calling), and social interaction for hotel and destination travelers. He’ll walk through the some of the development they’ve done to serve content to mobile web, hybrid applications, tablets, and desktops. He’ll also touch on the tools they used, working with multiple programming languages, creating API’s for internal use, hybrid versus native apps, and adjusting the presentation for different devices to meet users expectations.
Cloud Foundry is an open source platform as a service. Think of it as an open source Heroku that you can run inside your own firewall. In this talk, we’ll cover why it’s essential to the enterprise (and many small businesses as well), how you can use it, and most interestingly, how it’s implemented. You’ll learn a lot about PaaS and a lot about how to build a robust distributed system.
In this presentation, we’ll be looking at some of the innards of Rails. Column caching strategies, database interaction, object design, and view rendering will be discussed. We’ll form links from the back end to the front, looking at the meat of the system. We’ll use the information we learn along the way to mold a view of what the future for Rails will hold. Don’t worry, we won’t bite off more than we can chew!
Sausage making may also be discussed.
Connascence (noun) is defined as (1) the common birth of two or more at the same tome; production of two or more together, (2) That which is born or produced with another, or (3) the act of growing together.
In software, connascence is a rough measurement of the amount of coupling amount the components of a software system. Components that are “born” together will often need to change together over time. Excessive connascence in our software means that the system is hard to change and hard to maintain.
At least that’s the theory. How well does connascence hold up as a measurement tool in evaluating real software? In this talk, we will examine two different architectures for a common web application and evaluate each with respect to the amount of connascence and coupling in the system.
“Culture Eats Agile Practices for Breakfast” (quote adapted from Peter Drucker)
Without the right mindset, Agile practices will stagnate, even hurt your agile transformation initiatives. Learn how to prepare for and implement sticking change in this one-hour lecture/workshop. Stacia will guide you through numerous tips and tricks resulting from real-life examples from the hard knocks of agile and management consulting.
In this talk, we take a look at some specific Functional Programming patterns that regularly arise in everyday programming. These patterns are used to solve the same problems that DI attempts to by decoupling data types from their dependencies.
We explore the algebraic properties of these techniques and discover how they give rise to useful programming properties that we may apply in our typical work. This talk focuses on the techniques rather than any particular programming language, since none of these techniques are monopolized by a specific language. Various programming languages will be used for demonstration to emphasize this point; Haskell, Scala, Java and C# for example.
The audience should expect to walk away from this talk with a slight amount of bewilderment, a clear understanding of some FP subjects, but importantly, with the invigorated inspiration to explore these techniques further.
We will look at the innovative Windows Phone platform and explain the philosophy behind its user experience design Metro. In this session we will show you how to take advantage of the Windows Phone platform and design principles that allow developers of all skill levels to create engaging and intuitive apps. We will cover the new features and how developers can benefit from the worldwide market opportunity. By the end of this session, you would learn how to design and architect an Windows Phone app from concept to reality.
A talk on general best practices in Scala, taken from real world experience and examples in the book Scala In Depth. This covers everything from what is an implicit to programming with expressions. If you’re not comfortable with the Scala, this talk will show you how to make use of this elegant language in day-to-day situations.
FindBugs is a static analysis tool that finds coding mistakes in Java programs. It is widely popular, with more than a million downloads. In a student involving hundreds of engineers at Google, the issues identified by FindBugs were evaluated as should fix or must fix issues 81% of the time. However, many projects and developers use FindBugs on an ad-hoc basis, with individual developers running FindBugs sporadically. Some projects use FindBugs as part of their continuous build system, but find themselves unsure of the return on their investment and wondering if there might be a more effective way to use FindBugs. When first applying FindBugs is a large project and seeing hundreds or thousands of issues, others simply give up on using FindBugs. I’ll briefly review FindBugs, and describe techniques for cost-effective integration of FindBugs into the software development process for medium to huge software projects, with a focus on new features available in FindBugs 2.0. Topics include how to customize FindBugs to prioritize and filter issues important to your project, how to store bug data in a cloud so that everyone working on the project shares information about when the issue was first seen and whether people think the issue is important to fix, and ways to use annotations to help FindBugs detect even more errors in your code.
You’ve seen this exchange time and again: a new programming language is announced and the first loud response is an exasperated “why do need yet another language?” We’ll start by answering this question once and for all. Then, borrowing from the experience of organizing two events featuring some of the most interesting new programming languages around, we’ll take a tour of some of the language landscape. Learn about languages and concepts that just might transform the way you work.
As companies grow, the ability to undo decisions becomes more costly and more challenging. This talk is a reminder that technology decisions, unlike diamonds, aren’t forever. This talk will explore the legacy of a 40 year old company with 15 year old set of technology decisions that left them at a dead end for growth.
We’ll discuss the unique (and sometimes difficult) set of tech and strategic decisions we made which have led this company to reduce annual technology costs by over 70% and simultaneously open up multiple new channels of previously unattainable revenue.
This kind of makeover isn’t just a new haircut or a pair of designer jeans – it’s a whole new way of seeing yourself in the mirror.
I’ll talk about how we created an Advanced Applications Engineering team at Comcast, in Philadelphia to develop the XFINITY TV app for iOS and Android and how we are using that team to drive innovation and keep up with mobile app development demands for Xfinity and beyond.
Of all of the controversial topics in the field of (serious) software development, static typing is probably the most divisive. While the topic leads to fewer homicides than the perennial Vim vs Emacs conflagration, it still arouses passions and anger usually reserved for Gungans and fans of Visual Basic. This talk dives head-long into the controversy and anti-typing rhetoric, looking at things through the lens of a language designer and enthusiastic type theorist. We will explore the many areas in which modern static type systems have failed (often in spectacular ways) and gain a deeper understanding of how future languages can reap the benefits of static typing without being awful.
GitHub consists of a bunch of employees who have worked at other companies in the past and despised it. Okay, maybe they weren’t all terrible jobs, but a lot of us remain skeptical of most software development practices.
We do things differently at GitHub. We don’t have meetings, we don’t have managers, we don’t do traditional code review, and we aren’t always in the same room, much less on the same continent. And we couldn’t be happier about it. We ship code quickly, without a lot of red tape, and still maintain an incredibly high level of code quality.
It’s a great way to keep your developers happy, and we think it can work in your company, too.
Infrastructure-as-a-service can reduce your scale problems to triviality, lower the capital expenditure of your product launch, and other great buzz phrases.
But can it help you rock the mic on karaoke night? Rob Spectre from Twilio finds out by live coding a karaoke machine from an empty project.
The way we build applications is rapidly changing. HTML5, Scala, non-blocking IO, real-time push, and the cloud are welcome advancements in the world of web apps. Play Framework makes using these technologies a pleasure. In this session you will learn how to build next generation applications with Play Framework and deploy those applications on the cloud.
A fantastic, fictional, fable of a distributed system and the tooling and teams who herd it. Follow two teams learning that the design of their systems includes everything about how it is developed, tested, deployed, and managed — not just what it looks like in production.
Along the way, learn about the tools and practices that enable their eventual success — in particular Atlas, a new, open source, systems modeling and management tool developed by Ning.
This talk is a deep dive into the ideas behind Atlas, as well as the particular implementation, which embraces the fact that parts of real systems are always being built at different speeds, by different people, and run in many different places at the same time.
Scrum attracts many organizations because of its apparent simplicity and its potential to deliver results faster. Many do not realize the cultural changes that they need to make in order to become a hyper-productive team. This session will discuss why cultural aspects are important and how cultural changes make the mechanics of Scrum effective. During this session, we will discuss the five Scrum Values and how those values will make the Practices in Scrum effective. We will also discuss potential dangers when Scrum is practiced without these values.
Computer programs are the most complicated things that humans make. They must be perfect, which is hard for us because we are not perfect. Programming is thought to be a “head” activity, but there is a lot of “gut” involved. Indeed, it may be the gut that gives us the insight necessary for solving hard problems. But gut messes us up when it come to matters of style.
Spring Roo is a powerful productivity tool that helps Spring developers get a leg up on productivity. It can quickly configure and speed development of JPA, JMS, Email, security, full text searching, several popular web frameworks such as Spring MVC and JSF, and much more.
But what if it doesn’t do what you want it to? Maybe you’ll want to integrate it with a framework it doesn’t yet support. Maybe you want to give your developers an add-on to integrate into your own back-end systems, with a productive command set to automate building those classes. Or perhaps you’ll want to hook into the latest and greatest web or back-end infrastructure framework. All of this is possible with Roo, and you can help yourself AND the Roo community by building these extensions as Roo add-ons.
Ken Rimple, co-author of Manning’s Spring Roo in Action, will show you how to write Roo add-ons, beginning with an overview of the OSGi platform that comprises the Roo shell. He’ll demystify the various OSGi services used to configure new maven artifacts, parse and generate various file types, and transactionally manipulate and generate files in your project. He’ll do this while building a new add-on from the ground up.
Ken will also discuss how to use and deploy your add-ons, including how to use the Roobot to register your add-on for others to use.
Don’t miss this talk if you want to get the most out of Roo, and would be interested in contributing add-ons to the ecosystem.
PhoneGap hacker Brian LeRoux will talk about new breed of cross platform capabilities from the W3C called Device APIs, their relationship to HTML5, web standards, WebKit and mobile development with the most popular platforms. If you are interested in mobile web dev for iOS, Android, BlackBerry and Windows Phone you’ll really enjoy this talk. You can expect live code, remote debugging and cloud compilation too.
Agile methods work beautifully for a single team. But what do you do when you have multiple, interdependent teams, all working on a single product or product suite? How can Agile scale without losing sight of its core principles? In this session, we’ll examine how to apply Lean and Agile principles to the problems of large-scale Agile. We’ll combine a pinch of theory, a dash of experience, and a heaping helping of crazy ideas to give you something to try on your large-scale projects.
Leadership is at the heart of sustainable and continuous agile product delivery.
For instance, are your associates motivated by a shared reward system targeted at delivering outstanding customer outcomes? Leaders that create smart incentives make this happen. Has a developer been empowered to make a wholesale change to your solution delivery process? Leaders that create scorn-free environments make this happen.
There have been numerous writings about agile tools and methodologies, but very little mentioned about the critical leadership aspects behind continuous agile product delivery. In this talk, we will connect leadership characteristics to drivers that enable organizational capabilities that have resulted in 8x improvement in productivity along with 3x improvement in quality.
In this talk, we will cover the challenges and lessons-learned of scaling and operating the PvP.net Platform that supports millions of League of Legends global players daily.
In addition to covering software architecture and design choices in building PvP.net, we will cover the often-overlooked (in the race to market) aspects of monitoring, deployment, analytics, testing and automation.
Django co-creator Adrian Holovaty shares his ideas on the future of server-side Web frameworks. Are the current batch of frameworks getting long in the tooth? Should we really still be generating HTML from scratch on each page request? Can we automate some of the new best practices, such as Pjax?
No Django knowledge is necessary to understand this talk; the thoughts apply equally to Ruby on Rails and other circa-2005 frameworks.
Douglas Crockford outlines the basic principles of designing secure software, with a focus on web applications. With his usual sardonic wit, he starts at the beginning (almost literally â€” with the invention of language itself) and makes a strong case for designing secure software based on fundamental principles rather than specific techniques, tricks, or hacks.
CIOs today have the opportunity to become cloud champions in their organizations, building innovative new IT models that drive new business opportunities. Whether your business is purchasing a single cloud application or driving a company-wide cloud strategy, it is essential to centralize, secure and manage the flow of information in and out of your firewall and to and from the cloud. In this session, Rick Nucci, general manager of Dell Boomi, will outline why every successful cloud strategy must start with an integration strategy and how this can help CIOs take the reins in their cloud strategies.
How do you apply engineering discipline to the thing that matters most: yourself? We’re software engineers or systems engineers or network engineers. We have learned lessons the hard way. These lessons boil down to immutable laws; some things work and some things don’t.
Successful engineers apply these hard-won lessons to their professions. We use the same techniques day in and day out to create systems to make other people’s lives better. But few of us apply the same kind of systems thinking to our own lives, careers, jobs, or organizations.
Let’s start thinking of our daily lives and work as a system, just like a system we would create or maintain in our professions. How would you approach your life differently if it were a system you were creating for a client? How do you define success? How do you measure it? How do internal and external quality differ?
The database world is undergoing a major upheaval. NoSQL databases such as MongoDB and Cassandra are emerging as a compelling choice for many applications. They can simplify the persistence of complex data models and offering significantly better scalability and performance. But these databases have a very different and unfamiliar data model and APIs as well as a limited transaction model. Moreover, the relational world is fighting back with so-called NewSQL databases such as VoltDB, which by using a radically different architecture offers high scalability and performance as well as the familiar relational model and ACID transactions. Sounds great but unlike the traditional relational database you can’t use JDBC and must partition your data.
In this presentation you will learn about popular NoSQL databases – MongoDB, and Cassandra – as well at VoltDB. We will compare and contrast each database’s data model and Java API using NoSQL and NewSQL versions of a use case from the book POJOs in Action. We will learn about the benefits and drawbacks of using NoSQL and NewSQL databases.
Storm makes it easy to write and scale complex realtime computations on a cluster of computers, doing for realtime processing what Hadoop did for batch processing. Storm guarantees that every message will be processed. And it’s fast – you can process millions of messages per second with a small cluster. Best of all, you can write Storm topologies using any programming language. Storm was open-sourced by Twitter in September of 2011 and has since been adopted by numerous companies around the world.
Storm provides a small set of simple, easy to understand primitives. These primitives can be used to solve a stunning number of realtime computation problems, from stream processing to continuous computation to distributed RPC. In this talk you’ll learn:
In this talk, we’ll take a look at some of the areas where CoffeeScript really shines, allowing devs to write cleaner, more maintainable code than would otherwise be possible, both for the browser and for Node.js.
Android is evolving. Gingerbread and Froyo won’t last forever.
Bit rot sets in the moment you commit, but your code base can evolve by leveraging new APIs and best practices. Don’t wait until you’re left behind. Start using Fragments now so you won’t be relegated to the oldest OS versions on the market!
Corey will show you several techniques for starting a fresh project, renovating an existing Android code base, balancing use of new APIs, while remaining backward compatible, and optimizing for Android tablets. She has been using Fragments as long as they have been around in the XfinityTV app as well as her personal projects. She’d never start a new project with out them!
Humans, you may have noticed, are not exactly rational. And yet here we are, trying to get them to build software. It’s a bit of a mess. But there is some good news: by drawing on modern theories of human cognition we can begin to optimize our tools for how people think, not how computers work. I’ll talk about our experience at Yammer building human-centric tools for engineers, lay out the sociotechnical challenges facing organizations trying to build transparent architectures, and mention in passing how all of this relates to making money.
Computer networks and the applications that run on them are growing in size and complexity at an ever faster rate. Managing their configuration by hand became intractable long ago. Various schemes have been devised by systems administrators from all over the world to ease this burden. These usually manifest themselves as a mess of duct tape scripts wrapped around complex change management policies. There is a better way.
In this presentation, I will cover the history and evolution of configuration management strategies, as well as the concepts that power modern configuration management frameworks like Opscode Chef.
Technologists should not identify themselves with their tools. I’m not a Rubyist. You’re not a Windows person. Operating systems, programming languages, database engines, and application frameworks are just tools we use to get things done. Identifying ourselves with our technology choices is both a career- and business limiting mistake.
This session will cover how what is ostensibly a “Rails shop” is actually far from being a Rails shop and how important that distinction is for the success of a real business. We’ve all heard the notion that Rails “doesn’t scale”. It turns out to be true. And it’s a universal truth of all technology choices. We’ll talk about how we get around the limitations of our platform of choice as well as some general strategies for opening the mind to better architectural choices by embracing technological heterogeneity.
Robin Milner (1934-2010) was a gentle giant of computer science. Among many fundamental contributions, his insights on the role of types in the theory and practice of programming have been perhaps the farthest reaching. This talk combines a historical perspective on Milner’s early work with a look at how these ideas continue to unfold — in particular, the idea that types constrain not only structure but also behavior. Examples will include abstract and object types, types for concurrent and distributed systems (session and choreography types), and new work on type systems for privacy-preserving querying of sensitive databases.
In this session, Joonas lays out the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework.You’ll learn:
Online connections have inspired offline action when it comes to political campaigns. How can a city leverage the power of online organizing to inspire new city leaders and make neighborhoods better offline? What is its role? And what are some of the challenges and barriers to inspiring community leaders to work with the city? In this discussion, we will explore what happened when the City of Philadelphia launched Change by Us, an online marketplace for community projects and offer some key lessons learned in the process. We will discuss how Code For American helped in this process.
In this session, Grails core developer Jeff Brown will deliver an update on the latest and greats features of the Grails framework – a dynamic, web application framework based on the Groovy language and designed for Spring. Jeff will cover all the new features of Grails 2.0 including agent-based reloading, unit testing mixins, really powerful new ways to express GORM queries and more. Attendees will gain key knowledge of the latest techniques for building Grails applications on the Spring platform.This talk will be very interesting to new users, and even more so for Grails 1.x developers looking to upgrade.