I haven’t received official confirmation, but it looks like my two proposals for the Minnesota State Colleges and Universities Information Technology Conference have been accepted this year. This is an annual conference for IT staff from our colleges and universities statewide. I was sorely tempted to do a third and am still kicking myself for not proposing a web security talk, but I didn’t want to stretch myself too thin.
The first is an introduction to Ajax, which I’ll be doing with Dave Kruse, webmaster at South Central College. Dave is damn sharp and a real pleasure to work with, so I’m looking forward to collaborating with him on this talk. The second is an introduction to this new wave of web frameworks, using Ruby on Rails as the starting point.
Oh heck, it’s probably easiest if I just share the proposals.
Introduction to Ajax
Ajax is changing how we create and experience web applications. No longer are we constrained by the slow and restrictive practice of loading an entire page in response to a user action. With Ajax, we use JavaScript to make HTTP requests and modify sections of a page on the fly — without reloading the page. Once the load-click-reload cycle is broken, we can write more responsive, engaging web applications to meet and exceed users’ growing expectations.
This session explores the technology and the impact of Ajax. We provide an overview of the technology behind Ajax and how to use it. The basic code and techniques are straightforward, but there are enough gotchas and quirks that it’s worth using one of the many libraries available. We will introduce popular toolkits and describe/demonstrate their interaction with server-side platforms.
In recent months a creative and vigorously active community has built up around Ajax; we have learned much about how to use it effectively and where the pitfalls lie. After our introduction to the technology, we will turn to common patterns and best practices for using Ajax to enhance web applications, as well as antipatterns that impede usability and accessibility.
We have found that developers are sometimes aware of Ajax and even familiar with coding techniques, but often do not know how or whether to use it in their applications. For this reason, throughout the session we will again draw on real-world apps, including our own, to illustrate and support the concepts.
Ruby on Rails and the New Web Application Frameworks
Since its appearance just over a year ago, Ruby on Rails has drawn tremendous attention. Over-hyped as a Java killer, unfairly dismissed as a toy, the web application framework embodies time-saving, productivity-enhancing ideas about web development that can mean a five- to tenfold increase in developer speed. Similar frameworks for other languages and platforms have emerged in the past year, as well: Django and TurboGears in Python, PHP’s Symfony and the Zend Framework, Catalyst in Perl… All promote a notion of radical simplicity and solid application design, dramatically reducing the amount of work necessary to get an app up, running, and maintainable.
I believe that this is the future of web application development.
This session explores what we can learn from this new breed of web application frameworks. I will start with a demonstration of Ruby on Rails, building in minutes what might normally take hours with traditional development methods. Using that application as an example, I’ll then touch on what makes Rails special, including:
- DRY. Rails embraces the “Don’t Repeat Yourself” principle, reducing coupling between application components. This results in more flexible and maintainable code.
- Convention over configuration. Developers working with web application frameworks, especially in Java and .NET, struggle under the burden of numerous, complex, and interdependent configuration files. By adopting simple naming conventions, Rails “figures out” what would otherwise be handled in configuration: object-relational mapping, request dispatching, and so on. This allows a programmer to focus on application functionality instead of losing untold hours muddling with config files that have little or nothing to do with the app itself.
- Change is instant. The dynamic nature of the language and framework mean that changes made to the code and to the database structure are immediately reflected in the application, without costly compilation and deployment cycles. This will be nothing new to most web developers at MnSCU institutions, but Rails does take it up a notch. A rapid feedback cycle supports a development model that encourages close interaction with customers and improves the likelihood that apps meet their needs.
- Full-stack framework. Most web apps piece together their components: MVC scaffolding, database access and object-relational mapping, request routing, templating, etc. Rails is a one-stop shop, providing the necessary components as an integrated but loosely coupled stack.
- Integrated testing. Developers are waking up to the importance of unit testing to the design and stability of their code. Rails makes testing easy and so more likely to be done.
Having introduced Rails, I will then describe several similar frameworks that have emerged and express the same ideas about web development. I will tease out common threads and put forward lessons that we can learn from this new class of frameworks, including:
- The power of dynamic languages. Yes, powerful apps can be written in something other than statically typed languages such as C# and Java.
- Rapid prototypes and iterations are invaluable. Nothing beats working software for getting customer feedback and identifying what the requirements really are.
- Rapid application development is not necessarily antithetical to good architecture and design. The new frameworks are built on proven design patterns.
- Favoring convention over configuration is an enormous advantage. In cases when you need it, dynamic languages allow code as configuration (instead of the ever-present XML files).
- Simplicity is essential. We’ve all paid lip service to this idea, but the new frameworks really take simplicity to heart.
- The importance of testing. Untested code is broken code. The usual way of developing web apps does not support good testing practices, and in some cases throws up huge roadblocks. The new frameworks make testing easy, promoting it an integral part of the development process.
Even if we never use Ruby on Rails or any of the other frameworks, we can learn from what they’re doing and why they’re being adopted with such fervor, to make our lives easier and our web applications better.