Pacific Northwest Software Symposium
September 18 - 20, 2009 - Seattle, WA
Howard Lewis Ship
Creator of Apache Tapestry
Howard Lewis Ship is the creator and lead developer for the Apache Tapestry project, and is a noted expert on Java framework design and developer productivity. He has over twenty years of full-time software development under his belt, with over ten years of Java. He cut his teeth writing customer support software for Stratus Computer, but eventually traded PL/1 for Objective-C and NeXTSTEP before settling into Java.
Howard is respected in the Java community as an expert on web application development, dependency injection, Java meta-programming, and developer productivity. He is a frequent speaker at JavaOne, NoFluffJustStuff, ApacheCon and other conferences, and the author of "Tapestry in Action" for Manning (covering Tapestry 3.0). Lately, he's been dipping his toes into alternate languages, including Clojure.
Howard is an independent consultant, offering Tapestry training, mentoring and project work as well as training in Clojure. He lives in Portland, Oregon with his wife Suzanne, and his son, Jacob.
Presentations
Brew up a rich web application with Cappuccino
Cappuccino is a rich web framework that all but redefines what's possible in the web browser. It brings the heritage and richness of the Apple Objective-C language and runtime directly into the browser, as Objective-J (Objective JavaScript). Cappuccino apps look and act like Desktop Mac OS X Applications -- a very high bar to set! In many ways comparable to Google Web Toolkit, Cappuccino is simpler and less obtrusive.
Like coding in JavaScript but hate the DOM? Cappuccino is for you; it replaces the rag tag DOM APIs with a slick, streamlined, cross-browser model based on the venerable AppKit libraries that power Mac OS X and the iPhone. It adapts Objective-C's syntax (itself derived from Smalltalk) to JavaScript, giving up nothing in the process. It gives great results quickly, and without all the gotcha's of traditional client JavaScript. We'll take a peek at a potential downside (debugging) and a huge upside (the upcoming Atlas interface builder).
Clojure: Functional Concurrency for the JVM
Talk about strange bedfellows: what happens when you mix one part Lisp (one of the oldest computer languages), one part Java (so young, yet so well adopted), a healthy serving of functional programming, and add a state-of-the-art concurrency layer on top? That's Clojure, which "feels like a general-purpose language beamed back from the near future."
Clojure embraces functional programming with immutable data types and first class functions. It is fully interoperable with Java. Clojure's approach to concurrency includes asynchonous Agents, and Software Transactional Memory. Clojure is fast, elegant, dynamic, and scalable: a language for the future, today. This session introduces the challenges of concurrency. We then explore the nature and syntax of Clojure and show how Clojure bridges between the imperative programming style of Java and the functional programming world. Finally, we introduce the constructs in Clojure that support highly scalable, highly concurrent applications without locking or blocking.
Clojure Deep Dive
Clojure packs a tremendous amount of power into a very small package. Clojure inherits the power and elegance of Lisp, and in this session we'll explore the features that make Clojure so attractive: macros, multimethods, meta-data, and an overview of Clojure's rich built-in library.
We'll also go into more detail about Clojure/Java interop, and explore Clojure's ability to create new Java classes on the fly, and take a look at Clojure's evolving "contrib" library.
Books
by Howard M. Lewis Ship
-
The creator of Tapestry details how to use this new framework's components to create rich web-based GUIs using links, images, and HTML forms. The challenges of web application development are discussed, such as managing server-side state properly, application localization, and maintaining synchronization between the client web browser and the application server. At the same time, the benefits of a clean separation between presentation logic and business logic and how well Tapestry succeeds in keeping these two concerns apart are identified. Written for new Tapestry users and even developers new to creating web applications in general, this guide includes extensive notes on development "gotchas," including common Tapestry errors and how to fix them. Advanced techniques are covered as well, including creating entirely new components, integration with traditional servlet and JSP applications, and creation of client-side JavaScript. Finally, a complete J2EE application, the Virtual Library, is presented and analyzed in detail.
-
The creator of Tapestry details how to use this new framework's components to create rich web-based GUIs using links, images, and HTML forms. The challenges of web application development are discussed, such as managing server-side state properly, application localization, and maintaining synchronization between the client web browser and the application server. At the same time, the benefits of a clean separation between presentation logic and business logic and how well Tapestry succeeds in keeping these two concerns apart are identified. Written for new Tapestry users and even developers new to creating web applications in general, this guide includes extensive notes on development "gotchas," including common Tapestry errors and how to fix them. Advanced techniques are covered as well, including creating entirely new components, integration with traditional servlet and JSP applications, and creation of client-side JavaScript. Finally, a complete J2EE application, the Virtual Library, is presented and analyzed in detail.


