After a goodnight sleep, I mange to NOT be late for this mornings tutorial sessions. Today I have planned to attend Advanced Software Architecture and Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing. Advanced Software Architecture Marwan Abu-Khalil was the presenter for this tutorial. This wasn't as hands on as I usually like from my tutorial sessions, but with that being said, there was a lot of good knowledge being tossed around. We cover the best practices and outlined a rough path one should follow when designing software. Now it was mentioned frequently and often, that this was just the most common path encountered and that each project would lend itself to a different, there inherit lines the hard part of software architecture. If you could just put it in a patterns book, everyone would be good at it. The quote frequently used was "All architecture is design, but not all design is architecture." Brainstorm session instigated by this tutorial session. As a developer I myself tend to loose focus of the bigger picture as I dive deep in to the inner workings of some specific implementation or core sub-system. This course gives a nice high-level perspective of what the software architecture should focus on. For micro sized development teams; 1-5 developers, these things become even more important, since in most cases, every developer on a such a small team will be responsible for some of the most complicated areas of the system. This goes against the rule of thumb that architects, though they should be involved in the implementation, should not be involved in developing any of the core or complex systems of the architecture, so to prevent them from loosing focus in the details. I agree with this, but as mentioned, in micro teams this can be very hard, if no impossible to do (1 man "team"). This is why introducing things like peer code review and daily standups are so important. Most people seem to have this idea that the smaller you are, the less you need to apply todays agile methods, on the countrary, staying agile with more developers as you can decouple subsystems and spread them across multiple developers or teams. Staying objective and keeping systems decoupled and preventing architectural drift in a one or two man team is even harder than say three, five man teams. Pattern-Oriented Software Architecture This tutorial was done by Doug Schmidt, side note, he's been living in Nashville the last few years doing his research and work out of Vanderbilt University. This was a great tutorial. The subtitle was A Pattern Language for Distributed Computing. But it wasn't so much about completely new patterns, in fact any on fimilar with any of the GoF, PLOP, or POSA books would of received a lot of review. This was about using many proven patterns that we've used in stand-alone archictectures for a long time, take those and establish a pattern language for solving the problems we encoutned in todays distributed enviroments. A pattern mentioned which I must of missed from the POSA 2 book, but new it immediately because I have implemented it under different names was the Active Object pattern. Quickly, Active Object decouples the execution from the invokation of a method. Good coverage of other patterns as well. The handout includes pros and cons in a distributed enviroment for all the patterns presented. I did take issue with some of the cons being things like "Harder to test" and "Harder to debug". I just kept thinking .. if you mock out the interactive components so that your tests are decoupled from any implementation, it seems no harder to test the Active Object pattern vs. any other piece of software. Questions like what if the request comes back out of order? What if the request processor goes offline? What do you do with the queue? What if you get a response for a request that is no longer valid? No more room in your queue? Etc, etc.. All of these conditions can and should be covered by tests. I don't have issues with testing or debuging my most recent Active Object implementation. There was also a nice closing discussion about utilizing multi-core, embedded devices giving us a new reason to remember all the cycle and memory conservation techniques every said we could forget and if existing functional languages would be the wave of the future to take advantage of advancing core technology. Schmidt conclusion was we will need a new language or a dramatic extention to deal with these new concurrency issues ... I just kept thinking Stackless. In the end, it was another standard issue Schmidt tutorial, it did not disappoint. Fast pace and lots of invited Q&A and viewer interaction. Even if you don't like the guy or his ideas, it is worth it to see him give a talk at least once. Random side note .. he refered to Python once, following the words "novelty languages like..." I didn't proof this at all, corrections welcomed.
After the seven hour drive to Nashville, we settled in to our hotel and hit the bar. Getting the brain ready for todays activities. I'll be updating at the end of each Tutorial or Keynote through out the day, but will only publish the entries at the end of day, so bare with me if the entrys seem like many posts in one. Green Bar for C++ This was the first turotial I atteneded. The one I had picked was canceled and this was my runner up. The tutorial was handled by the author CUTE Peter Sommerlad. The presentation was good and packed full of content. I have been out of the C++ game for a while now, but his presentation of CUTE integrated in to the new Eclipse has sparked my interest once again and really made me want to take on another C++ project. Maybe an optimized parser this extends Python bindings .. just have to find something to parse. They were very well setup for the course. Course was very interactive and hands on. I spent the second half of the course implementing the classic Numeric to Roman converted using Eclipse and CUTE with TDD practices. The practices themselves were all refresher for me, but getting a chance to put my hands on some C++ felt good. It had been over a year since I really got dirty in C++. They also had multi-platform installs of Eclipse and a CUTE package archive on a flash drive. Everyone in the tutorial was up and running in no time. I made not of this for sure, in case my any of my recent proposals to speak get accepted. I was also able to see other peoples approach to the same problem which is always insigntful and thought provoking, no matter the language. I spoke with Peter breifly after the tutorial. The functionality of the CUTE framework itself only took about 2 days of development. The integration in to Eclipse is a different monster. Thanks for the free pen and the swiss chocolate. Building SOAs with Web Services Olaf from IBM gives us a great tutorial on using SOAs to build web services. The introduction was an abstract overview of SOA (Service Oriented Archiecture) with some touches on concepts and motivation behind SOAP and WSDLs. He then spoke about some real world implementations and showed some examples and diagrams of those implementations. After which we began the interactive part of walking through a very simple implementation that tied a PHP script to a Java SOA via Tomcat/Axis. Coverage was also given to user experiences and best practices and identifying when a given problem lends itself to the SOA (WSDL/SOAP) solution. Overall it was a good tutorial and getting a chance to see the Web Tools plugin for Eclipse in action generating bottom-up from existing POJO and making the WSDL contract was neat. Afterwards After the day at OOPSLA my wife and I at some St. Louis style BBQ down on Broadway. It was very good. I have a personal goal to eat nothing but BBQ for dinner during my time in Nashville.
OOPSLA 2008 The Object-Oriented Programming, Systems, Languages, and Applications or more commonly referred to OOPSLA, annual conference is right around the corner. Oct 19th through the 23rd in Nashville, TN. I am trying to get my company to pay for me to go, but on such short notice, doubt it will happen, even so, I should be able to get paid time off to attend. This years conference is looking to be a great one. As always they have a ton of workshops and tutorials and the keynotes this year look decent. I am particularly interested in the "Building Service-Oriented Architectures with Web Services" and "Test-Driven Hands On" tutorials. Those fall in to my line of work and I am always interested in seeing how others approach the same problems. As for the keynotes, Rebecca's "What Drives Design" and Mark Dominus' "Atypical Types" both spark my interest.
I recently renewed my ACCU and ACM memberships after letting them go for a couple years. I feel like I've done myself a disservice by letting these lapse. Both of these organizations provided me with countless hours of information and insight as a younger developer and I attribute their journals and usergroups to helping me become the programmer I am today. These organizations promote growth and learning and both have the goal of making people do what they do better. Easier, smarter, more efficient. I think any programmer who cares about their craft and improving their abilities should seriously look at joining one or both of these organizations. If you're a past member who has let their subscription lapse it might be time to look in to renewing it, it will pay for itself many times over.
- ACM - http://www.acm.org (a Plone site! Yes, seriously)
- ACCU - http://www.accu.org (member count seems thin, but content is still great)
The traditional first post. Should it have content? Should it just say welcome to my blog I plan to only update for the next 2 weeks, then try to revive it after a couple months without an update by doing some posting foo and slamming out 10 updates in 1 week. Then after burning myself out in the revival week, I end up closing the blog after 3 more months without an update and try starting another one. We'll see if this one will be any different.