Showing posts with label oopsla. Show all posts
Showing posts with label oopsla. Show all posts

Friday, October 16, 2009

OOPSLA 2009 - Videocast 4 - Microsoft Technology update with Dr. Erik Meijer of Microsoft

Dr. Erik Meijer is well know in language communities (and language lawyer circles) to have help create C# and LINQ (Language Integrated Query). He’s a frequent presenter at OOPSLA on these technologies as well as one of the early voices encouraging the merging of functional and object-oriented technologies and techniques.

In a brief telephone interview, Erik gives us a thorough update on what is new with C# and visual basic, the .NET platform, LINQ, and other up coming technologies at Microsoft (e.g., Project M and Azure).



Interestingly he mentions how some of of his early efforts on combining functional and object-oriented programming are surfacing to address multicore issues as well as how LINQ is finding various applications to solve parallel programming data issues and how LINQp and reactive LINQ are being used by Microsoft in their cloud platform environments: Azure and SQL Azure.

Finally, Erik finishes this video-podcast discussing what OOPSLA means to him, some of his colleagues at Microsoft, and also gives us a flavor of the strong presence of Microsoft technologies and presenters at OOPSLA this year.

Monday, October 12, 2009

OOPSLA 2009 - Videocast 3 - Cloud Analytics with Dr. Anant Jhingran of IBM

Anant Jhingran is well known for leading the technology direction of IBM’s information management division---which includes DB2, Informix, Cloudscape, and Cognos, to name a few. One of the important aspect of any information management portfolio is its analytics capabilities. Nowadays with companies collecting vast amount of data from their Web properties from end users of via social media sites, an obvious growth area for information management users and vendors is to facilitate fast and appropriate insights from this ever increasing big collection of data. Business Intelligence is not a new field, however, the opportunity to apply such technology has never been more pervasive and for so much and so varied domains and in many ways have never been more challenging...



In this videocast I caught up with Dr. Jhingran at his offices in IBM Silicon Valley Labs to discuss business analytics in a cloud computing world. That is, what is the impact of the cloud on big data? His explanation boils down to a simple equation of pain vs. gain. Dr. Jhingran also discusses how programming-oriented conferences such as OOPSLA have a lot to contribute to the challenges of analyzing big data when companies attempt to extract knowledge. The need for programming tricks and tools go beyond map reduce to scalable data analytics languages with well understood semantics and characteristics as SQL was for relational databases.

Wednesday, October 7, 2009

OOPSLA 2009 - Videocast 2 - Social Software with Patrick Chanezon of Google, Inc.


As we discussed in one of the previous OOPSLA 2009 blog post social software continues to impact modern lives in ways the inventors or users of the technologies are uncovering daily. By empowering everyone to be a “journalist” and a “broadcaster”, social media and associated tools are enabling everyone, everywhere, to have a voice and thus is encouraging democratic virtues to flow in all regions of the world. We are seeing only the beginning of this social media revolution.



In this videocast I caught up, at Google IO 2009 in San Francisco, with Patrick Chanezon: one of Google’s most outspoken evangelists on Social Media and Software. Patrick corroborates the importance and wide ranging impact of Social Media and Software. He also talks about Google’s effort to create an open social platform and the successes they have been able to achieve thus far. Importantly, Patrick explains why HTML, JavaScript, and Web APIs in conjunction with platforms like Youtube, Facebook, and Twitter have enabled a new style of Web programming which in turn has facilitated viral sharing of Web content to create this new social Web fabric where content flows in real time without national borders.

Patrick ends the videocast by discussing why OOPSLA matters to Google and how Googlers view deep computer science conferences such as OOPSLA.

Tuesday, September 22, 2009

OOPSLA 2009 Media Advisory Info


acm

The Association for Computing Machinery

Advancing computing as a science & profession

MEDIA ADVISORY


ORLANDO, FL - For Release September 23, 2009


SOFTWARE CONFERENCE EXPLORES CLOUD COMPUTING OPPORTUNITIES

2008 ACM Turing Award Winner Barbara Liskov to Present Opening Keynote Address


WHAT: OOPSLA Conference on Programming http://www.oopsla.org/oopsla2009/ sponsored by ACM’s Special Interest Group on Programming Languages (SIGPLAN)

    • Cloud Computing and Emerging Technologies
  • Designing for the Cloud
    • Implementation and Operational Implications for the Cloud
    • Evaluating Cloud Computing Application Development Platforms
    • PLUS - Onward! Out-of-the-box Thinking at the Frontiers of Computing
    • PLUS – Dynamic Languages Symposium: Groovy, Ruby, JavaScript, Python
    • PLUS – WikiSym: International Symposium on Wikis and Open Collaboration
    • PLUS - Keynote Address: 2008 ACM Turing Award Recipient Barbara Liskov


WHEN: October 25 - 29 - Complimentary press registration (except meals) mandy.mann@regmaster.com .

WHERE: Disney’s Contemporary resort 4600 N. World Dr. Lake Buena Vista, FL 32830


WHO: October 27: Keynoter Turing Award winner Barbara Liskov on techniques for building big software systems more easily; Onward! Keynoter MIT Sloan School of Management’s Tom Malone; WikiSym Keynoter Wikimedia Foundation’s Brion Vibber on optimizing community performance; October 28: Jeannette Wing of Carnegie Mellon University and NSF’s CISE Directorate on foundations of trustworthy computing; Jet Propulsion Labs’ Gerard Holzmann on stealth use of formal methods in software development; October 29: Facebook’s Robert Johnson on lessons learned at Facebook.


WHY: OOPSLA 2009 presents leading-edge content from world-class practitioners, consultants, industry researchers, professors and students. Meet with members of the Gang of Four, the instigators of the Agile movement, and the creators of the Web’s hottest languages and frameworks. OOPSLA 2009 features a core group of innovators presenting keynote addresses, workshops, panel discussions, research papers, lightening talks, demos, posters, films and tutorials.


OOPSLA 2009 is sponsored by ACM SIGPLAN and is independent of vendors or suppliers.


About OOPSLA

OOPSLA (Object-Oriented Programming Systems, Languages and Applications) is sponsored by ACM SIGPLAN, the Special Interest Group on Programming Languages www.sigplan.org/. In its 24th year, OOPSLA is the conference of choice for a broad range of professionals from recognized academics to undergraduate students, from industrial researchers to technical developers and managers, and from technology gurus to users. Additional information at http://www.oopsla.org/oopsla2009/.


About ACM

ACM, the Association for Computing Machinery www.acm.org, is the world’s largest educational and scientific computing society, uniting computing educators, researchers and professionals to inspire dialogue, share resources and address the field’s challenges. ACM strengthens the computing profession’s collective voice through strong leadership, promotion of the highest standards, and recognition of technical excellence. ACM supports the professional growth of its members by providing opportunities for life-long learning, career development, and professional networking.


NOTE: this is reprinted here from the ACM media advisory bulletin

Saturday, June 27, 2009

Social software and media, the virtues of agile development, and the new Iranian revolution


This is a repost of a blog entry created for the OOPSLA 2009 official blog.

The Web is now social. Increasingly, people young and old are spending a substantial part of their social lives by using the Web. Social networking sites like Facebook, MySpace, YouTube, Twitter, and many others, are giving people the ability to maintain various social interactions and connections with friends, family, and acquaintances. Indeed using Facebook one often hears of how people are reconnecting with old friends and making new ones. Twitter has quickly transformed into one of the best means for sharing real-time information on various topics all across the Web. YouTube’s videos can transform the fortune of unknown talented individuals from the most remote part of the world as well as shed light on issues and facts that otherwise would have been completely ignored.


As the world bears witness to the recent unrest in Iran, the power of social media has never been clearer and more manifest. Twitter, Facebook, and Youtube are giving a voice, a face, and a communication channel to the people on the streets of Tehran. All this comes despite the efforts of the Iranian regime to shut down media and reporters across the country. While it is uncertain how this new revolution in Iran will end up and as the world continue to watch intensely, there is one undeniable truth, and that is the unintended impact of social media. As Clay Shirky puts it, social media has enabled the democratization and amplification of the voices of the people...

But what does social media or social software have to do with OOPSLA? Surely they are software systems but what else does the conference bring to help this new wave of Web software.
It is true that social software is about connecting and empowering people and thus appears to be a purely social phenomenon that simply is enabled and constructed using basic Web software principles and approaches... There is, however, an important and subtle aspect that is hard to see on the surface and that has its roots in OOPSLA. In a nutshell it is about agility... Looking deeper at the various social media sites aforementioned, one other thing becomes ample clear. Many of the usages and social consequences of these sites were mostly, if not completely, unintended.

Most of the sites started with initial ideas of connecting people but ended up with emerging usage patterns that are truly powerful and consequential. The creators of Twitter did not set out to create the new voice for modern democratic revolutions---that fact has emerged accidentally. So, the question becomes: how does one create software that can have the type of profound social impacts and successes such as Twitter? There is no “cookie cutter” solution, however, one well known approach (one that was used at Twitter) is to use software frameworks and principles that are in line with the principles of agile software development.

At a recent talk at IBM’s Almaden Research Center, Twitter’s CEO Jack Dorsey was asked by Almaden Ph.D. intern Ajith Ranabahu, if in the light of recent scaling issues that Twitter has experienced, would Dorsey and the original Twitter founders have chosen another language or another framework to create their company. While Dorsey acknowledged some of the limitations of the Ruby on Rails platform they are using, he was quick to say that he would still have made the same framework choice given another chance... Dorsey's reasoning is simply that the key factor is not one of scaling and architecture, but rather of agility and speed of development.

Rails is well known for providing both development speed and agility in bundles. By being able to materialize their ideas quickly, Dorsey and the other Twitter co-founders created a working version of their site in a few weeks which let them observe the initial users and also let them continuously iterate and find the subsequent micro and now macro successes. With each group of users, new patterns emerged and Dorsey and team could quickly iterate, adjust, and malleably modify their software to match the emerging usages and patterns. Without the agile virtues of Ruby on Rails, it is doubtful Twitter would be the phenomenon that it has become today.

As maybe the preeminent incubator of agile software development thinking during the last decade and a half, and the place where agile has gone mainstream, the OOPSLA conference it seems, has been a key enabler for the Agile movement that has inspired frameworks like Rails and indirectly sites such as Twitter. The agile practices of test-driven development, pair programming, continuous integration, and the SCRUM team organization approach, have roots either directly or indirectly at OOPSLA, or have progenitors that frequently attend and participate at the conference. And if we go even further, the virtues of rapid, instant, prototyping and having “the customer as the driver”, like Kent Beck likes to say, now may be taking their natural course in social media and crowd sourcing of content.

And while social software is undoubtedly a phenomenal success, there remains some serious challenges, and this also is where the OOPSLA community could help further. First, there are the programming challenges. The amplification attributes of Twitter and Facebook occur because the Web is now programmable. Using APIs and simple scripts, it is easy to create aggregation points, as well as new data sinks and sources for information flowing through the social media channels. This is how a tweet from the streets of Tehran can flow, be retweeted, and end up, almost instantaneously, on the television screens of millions in the United States and Europe. The challenge is making it quick and easy for anyone to collect, filter, and aggregate social media information.

Second, and perhaps most importantly, are the challenges around the provenance of the information that is flowing through the social media channels. Now that everyone has a voice, it becomes increasingly difficult to discern authentic voices from those trying to manipulate the system. Here, research in data provenance, data mining, and data filtering for the massive amount of realtime and streaming data is key. Realtime and stream programming pose significant and fundamental challenges that beg for systems, frameworks, and programming language help.

Finally, as in all computing for open systems (such as the Web), the concerns of privacy and security remain paramount. It is now well accepted that addressing these persistent issues cannot be done after the fact, but are aspects that must be addressed at the early stages of development. There is a clear need to share best practices and uncover patterns to help overcome these challenges...

So while social media and social software are helping transform the fabric of social interactions from the hills of Silicon Valley to the bars of Austin, to the cafés of Paris, and to the streets of Tehran, remember that many of these social consequences were not planned, but rather emerged from the resulting empowering software that is itself possible due to the virtues of agile software development and practices... And together with the community that produced and helped agile practices go mainstream, we can help address some of the important remaining social media challenges so that the new voice of the people can persist, remain strong, and authentic.


References
Go here to watch Dorsey's talk at Almaden and Ajith's question in toward the end.

Updates
1. Initial post on 06/27/2009

Tuesday, June 9, 2009

Cloud computing - a programming perspective


This is a repost of a blog entry created for the OOPSLA 2009 official blog.

Cloud computing is the “new hot” topic. Simply put, various business pressures, a multitude of pain points, and the maturity of a series of Web technologies (networking, APIs, and standards) have made it possible and cost-effective for businesses, small and large, to completely host data- and application-centers virtually... in the cloud, if you may.

Cloud computing providers, e.g., Amazon, reuse their expertise in efficiently managing and hosting their own Web systems and applications, and expose that core expertise as a set of Web APIs. Using the Amazon Web Services Elastic Compute Cloud (EC2), anyone with a credit card and some programming can provision a server instance and install a Web application on it and thus immediately have a presence on the Web. Using economies of scale for server hardware combined with virtual machine technologies, data- and application-centers automation expertise, as well as extensive instrumentations, Amazon is able to provide that service globally for pennies at the hour. There are no binding contractual agreements and Amazon will only bill you for the hours you have used.

In addition to compute instances, Amazon also provides various other compute resources on their cloud platform, e.g., storage (file and block), message queues, batch data processing, and others. Following Amazon’s lead, various companies, including Google, IBM, and Microsoft, are also exposing frameworks, services, platforms, and applications to a world-wide audience from within a Web browser and with simple Web APIs. Cloud computing is no less than a democratization of compute resources. With cloud computing, vast compute resources no longer require huge and long-term investments but instead can be had and consumed, as Amazon chairman Jeff Bezos, like to say, “by the drink”.

Whether cloud computing will fulfill the high-expectations that many are advocating is still to be determined. Various challenges remain and, in our opinion, we are reaching the peak of the typical hype curve that new technologies follow. However, regardless of whether cloud computing will be a bust or continue to be the hit that it has certainly been so far, there is one undeniable truth that some seem to ignore... The current success of cloud computing and, we believe, its future successes, are heavily tied to how easy the cloud and cloud applications are to program as well as to maintain and to scale. And this is precisely why OOPSLA matters to cloud computing advocates, users, and providers and vice-versa.

As we mentioned, with the cloud, computing resources are cheap and widely available. In a matter of minutes, one can provision 100s of server instances on the Amazon EC2 cloud along with terabytes of storage and more aggregate MIPS than what is available on most recent mini-computers. All of this for around $10 an hour. While most anyone could afford such computing capacity at these price points, what is hard for most is to take advantage of that cheap capacity. The problem is no longer one of provisioning the resources, but rather one of taking advantage of these resources and of efficiently doing so.

We are at the beginning of a new evolution of programming. One that is taking place with this move to cloud computing. For lack of a better moniker, we call it cloud programming. It is about being able to scale programs to take advantages of these on-demand cloud compute resources. Programming distributed nodes of computation has always been one of the classic ongoing problems of computer science. The cloud, it seems, has thrusted this problem and associated corollary issues to the forefront...

While cloud programming has some resemblance to old-style distributed programming or super computing or multicore programming, it is a different problem due to the changes in the core assumptions and constraints. On the cloud, most compute resources are essentially server instances with virtual compute capacities or virtualized services. The network is the Internet and assumptions about co-locations, latency, and errors cannot be made. The same concerns one has with real servers in your data centers also still persist. That is, securing, upgrading, automating, and managing these virtual instances are still very much part of the programming that one must do to reap the benefits of new cloud infrastructures. Scripting languages, e.g., Ruby, Python, and Groovy, are already taking center stage to solve some of these issues.

Additionally, now that storage can shrink and grow on demand and for very low costs, while keeping reasonably good qualities of service, the other issue is how to manipulate the vast amount of data that one can now store. Google had a similar concern years ago as it improved its search engine while managing expenses in growing its data centers to match the unprecedented growth of the Web. Google engineers and scientists cleverly figured out how to parallelize data computation over large clusters of cheap and replaceable compute nodes. The MapReduce programming model is specifically designed to help engineer algorithms that can scale and run on the resulting big data that one now accumulates...

Programming for massive scale is the key challenge. We firmly believe that new styles of programming, new programming frameworks, and new programming languages may be one of the key sources of innovations for the cloud. Imagine when cloud frameworks and cloud programming environments provide, in near real time: the cost, the energy impact, and the automation facilities that a cloud computing infrastructure enables. Plus now imagine being able to program these multiple cloud nodes either in batch or in real-time, while satisfying best practices of Web security and privacy. The combined results would be the nirvana of Web programming. Scaling automatically your compute resources in a cost-efficient and environmentally friendly fashion while managing the resulting deluge of data and potential influx of users...

Surely there are many PhD theses to be had to help address some of the fundamental scientific and engineering issues involved in achieving such an idealized state of Web computing. In some ways we maybe vastly simplifying the issues and that many of the challenges involved have been studied in various branches of computer science and software engineering for the past 30 years. However, the point here is not to claim that cloud computing is the assured next wave of computing, we don’t know; but rather, we would like this post to simply serve as a reminder that the various issues in system, data, and distributed computing that cloud computing brings to the forefront could be addressed from innovations in frameworks, programming styles, and programming languages... OOPSLA, it seems, from its long historical track record of ground breaking innovations in this space, may be a natural choice for the genesis of some of these new future eureka moments.


Updates
06/01/09 - fixed typos: accumulate => accumulates

Sunday, May 31, 2009

Why OOPSLA matters?


This is a repost of a blog entry I created for OOPSLA 2009 official blog

These days, we all take for granted that software is best built incrementally, that testing while coding leads to better quality software, that virtual machine-based languages can be as fast as natively-compiled languages, that patterns are great way to bootstrap your thinking when designing, and that an object-oriented language with single inheritance is likely easier to deal with than one with multiple inheritance...

Many of these well-accepted tenets in the software industry and programming trade have their roots in one conference. A conference that started with a band of early programmers who were passionate about a powerful new style of programming: object-oriented programming. That style has evolved over the years to become a source of innovation for all things programming and software. Indeed, most of the assertions above can be traced back to their origins in papers, workshops, or ideas stemmed from that conference: OOPSLA. Such is the legacy of this conference.


Times and technologies change. That fact has implied that every year OOPSLA had to introspect and look for ways to rejuvenate and encourage exploring boundaries of software. The inventor of Self, Dave Ungar, likes to state it simply as always "question your assumptions."

What are OOPSLA’s basic assumptions? Well, over the years it has been a conference about software languages, software development, software development methodologies, and software systems. Should this still be our focus? Software is embedded everywhere and the success of devices like the iPhone and Blackberry are good indication that at least one immediate future of software is in mobile solutions that include a combination of hardware and software within an ecosystem (private or public).

The Web has also transformed our social lives and is increasingly a communication fabric unparalleled in scope, reach, and immediacy. Web services like Twitter and Facebook have transformed the Web into a real-time virtual social square. Information is flowing quickly and at ever-increasing volumes. This social software is not only near real-time and location-aware but it is also interconnected with complex executable logic. Mashups of Web APIs and data have led to a boom of innovations analogous to early days of commerce on the Web.

The current Web not only has resulted in the democratization of information and applications, but increasingly it is the gateway to reaching every business’s data centers and application centers. Using Web APIs, a startup can run its entire operation virtually on cloud computing infrastructure without concern for acquiring sufficient compute resources to scale should that startup become the next overnight success---that is, if they are TechCruched, Digged, or Slashdotted.

With so much happening around software and the Web, why should someone from academia or industry still attend an object-oriented conference?

This is an important question. It is one that cannot be completely answered in one blog post. However, I will give you a short answer now and elaborate each point over the next three months in various blog posts and podcasts. I hope to convince you that OOPLSA matters. It matters to both academic and industrial participants. It matters because of its tutorials, its workshops, its keynotes, all of its leading-edge content. Most of all, it matters because of the world-class people who regularly present their new ideas at OOPSLA. As you will see when we announce the program, all of the hot topics mentioned above will be represented in some fashion in this year’s program...


What makes any conference really worth while is the quality of the people who attend. OOPSLA has a tradition of attracting the best and most innovative students, professors, consultants, industry researchers, and practitioners. This year will be no different. Come to OOPSLA 2009 and you are sure to meet with members of the gang of four, the instigators of the Agile movement, the creators of the Web’s hottest languages and frameworks, as well as hear from researchers and practitioners at the leading universities and companies.

Yes, "the times they are a changing”. But just as Bob Dylan will forever have a certain “je ne sais quoi” that makes his music pertinent, classic, and always filled with relevant content and meaning. So too will the OOPSLA conference. As long as we keep welcoming a core group of innovators, keep including new topics in tutorials, workshops, keynotes, and keep attracting the quality content that you will hear when we announce the program, the conference’s future is very much assured and alive.

Check back frequently for other posts as we peel away at this year’s program and demonstrate why OOPSLA matters to you.

Updates
06/01/09 - added link to OOPSLA 2009 blog entry

Monday, August 11, 2008

OOPSLA 2008 tutorial program

OOPSLA 2008 logoI wrote this post originally for the OOPLSA 2008 blog. However, to help reach a broad audience, I am taking the liberty to replicate it here. After all, I'll be giving my Web APIs on Rails: using Ruby on Rails to create Web APIs and Services Mashups tutorials at OOPSLA 2008 on Wednesday October 22nd. Sign up if you want a hands on, fast track, and fun overview of Ruby, Rails, Web APIs, and mashups.





While OOPSLA is well known for advancing the fields of computer science, software engineering, and their practical applications---after all, Java, Eclipse, Aspect-Oriented Programming, Design Patterns, Agile Methods, just to name a few, got their start at past OOPSLAs---another important aspect of the conference is the wide-range of tutorials available to novices and experts alike.

Continuing this tradition, OOPSLA 2008 boasts a tutorial program unlike any I have seen. There are more than 40 tutorials covering advance, new, novel, and mainstream topics such as Agile, Test-Driven Development, Domain-Specific Languages/Modeling, Microsoft's F#, advanced C++, Google's Guice, SOA, Apple's iPhone SDK, and Ruby on Rails, to name a few.

Tutorials are offered daily throughout the conference and are given many times by the creators of the technologies in question or by worldwide experts in the fields.

Don't miss learning some new skills, sharpening old ones, or get a head start on tomorrow's next big thing. Register today for OOPLSA and add a tutorial or two to your OOPSLA conference experience.

Sunday, December 2, 2007

ooPSLA 2007 - part 4b

ooPSLA 2007 in Montréal, Canada - Oct. 21 to Oct. 25, 2007 (this is the part 4b (and last) of my braindump on ooPSLA 2007. Please see part 1, part 2, part 3, and part 4a)
Panels
Another side effect of attracting so many experts in any one field is that ooPSLA typically ends up having great panels. This should be expected since, almost by definition, one becomes an expert in academic settings (and to some extent in industry as well) when you do good work but also can defend it when placed in unfriendly environments---where colleagues with criticisms or alternative approaches and ideas.

This year was no exception; tons of really cool panels with many well respected experts and famous figures. I attended four panels and want to briefly highlight three: Simula 67, Silver bullet, and SOA.

Simula 67 panel
Forty years ago the language Simula 67 was introduced to help facilitate the modeling of reality and thus allow help with simulations and other computing tasks that try to replicate real life. This led to what Brooks called the most effective advance toward a silver bullet in computer science we have ever known: object-oriented languages and systems.

(Photo credit: self with iPhone.  From left to right, Guy, James, Bertrand, Anders, and Ole)

To celebrate the 40th anniversary of this historical language, Joe Yoder, panel chair at ooPSLA 2007, managed to get in the same room:
  1. Guy Steele Jr. and James Gosling, both of Sun Microsystems, and co-creators of the Java programming language;
  2. Bertrand Meyer of ETH Zurich and creator of the Eiffel language and;
  3. Anders Hejlsberg of Microsoft and main creator of the C# language;
  4. Ole Lehrmann Madsen of Aahus University and co-creator of the Beta programming language.
Like most such 'roads' down memory lane, a lot of it was good old reminiscing time, however, a few poignant moments marked my memory. First, someone commented, to wild applauds, something to the effect that ooPSLA has become too much of a collection of papers adding or analyzing some aspect of the Java programming language and that needed to change. I have attended enough ooPLSA to remember when the program was not mostly about Java extensions and the likes. As a proponent of the virtues of dynamic languages and as a happy polyglot, I could not agree more.

The last thing that stuck to my mind is Ole's recollection of the grander than life Kristen Nygaard (the creator of Simula), who singlehandedly not only co-created the field, and in so doing impacted computer science profoundly, but Ole also reminded us that Kristen was an important figure in his country's politics and helped shape his country's position with regard to the European Union. I could not help but notice that such multifaceted characters are nowadays becoming rarer and rarer.

Silver bullet panel
An interesting, fun, and at time comical panel "celebrating" our resignation that the No Silver Bullet thesis is still very much in effect and that years of efforts have hardly put a significant dent into making good software easier to create. There was a slew of panelists, which made it a bit diluted, but noteworthy attendees were David Parnas of the University of Limerick, Ricardo Lopez of Qualcomm, Martin Fowler of ThoughtWorks, as well as the Silver bullet man himself, Fredrick P. Brooks of the University of North Carolina.

Two memorable moments are worth discussing. First, Brooks gave a short summary of his Silver Bullet arguments and how over the year it has still remained valid as well as how it is sometime misconstrued. Brooks attempted to remind us that his primary argument, though empirically deducted, has a strong mathematical foundation... I am less convinced of the latter, though, now that I have a brand new signed copy (my third) of the book, maybe it deserves some torn-age by a third read of the text.

The other interesting tidbit to mention is really the courage of 
Martin Fowler (ThoughtWorks, Inc).  After an 
interesting metamorphosis that lasted almost a full minute, Martin reemerged as the storied werewolf on Brooks's book cover. What transpired was Martin playing the mythical beast that never seems to die. Parnas mentioned that we are able to hurt the werewolf with lead bullets but nothing significant to make him disappear. It took courage for Martin to do this and keep a straight face (voice) and at time he
 came across with satire of Colberesque quality... However, the act also became boring at the end and at times distracted from the important themes and the overall conversations while also limiting the time of other panelists.
(Photo credit: self with iPhone of Silver bullet panelists.  Notice Martin's werewolf costume on far right)

SOA panel
The final panel I want to mention is the SOA panel which assembled a group of industry representatives such as Kerrie Holley (IBM Fellow), Dave Thomas (Bedarra Research Labs), Brenda Michelson (Elemental Links), Nicolai Josuttis (IT Communications), and John deVadoss (Microsoft).

After the typical short introduction by each panelists, which saw a regurgitation of your typical SAO kool-aid, though this time with a focus on the importance of looking at the business-side of SOA; that is, separating the architectural concepts from implementations (e.g., Web services or WS-*), and the importance of standards. What followed was a series of interesting "friendly jabs" (pointed questions and comments :-) between panelists and audience members. Since I was part of the conspirators, I'll limit my comments simply to say that I will always attend any panel where Dave Thomas is present. While I don't agree with everything he says, Dave's flamboyant character and speak, along with no-BS attitude, generally results in the truth being spoken...

Of the other panelists, Kerrie was maybe the most calm, cool, and collected and he stayed on message. As far as I could recall, Kerrie's message was that SOAs must reflect the business imperatives and be a projection of the business functions of an organization. While I would agree in theory with with this vision, in my opinion this aspect is less important to debate since as in most interesting ideas, the devil is in the details... Since some of the discussion also centered around the ageless REST vs. WS-* and company implementations, the details argument becomes more interesting. For me, this is analogous to saying that a BMW M3 and Ferrari F350 are sports car. At various levels they are, however, the latter is THE sports car by excellence; the differences dear Watson is in the details...

Parting thoughts
Visiting Montréal outside of the winter is always a treat. A wonderful city with kind folks working hard to hold on to their disappearing roots and culture. As a native french speaker, I always enjoyed to visit places where I am addressed in my mother tongue and also get to meet
 many of my countrymen. The Haitian immigrant population in Montréal is substantial and many of my old high-school and neighborhood friends have made the city their home. Got a chance to also visit many young cousins that I had not seen in 15 years or more.
While the conference allowed me to go down various memory lanes, the best parts and may be most memorable moments, were getting to meet, chat, argue, and even friendly fights, over wine and beer, with colleagues from both academia and industry. Just to name a few, and as a recommendation to never miss meeting the following if you are at a conference where they are presenting or are just attending: Eric Mejyer of Microsoft, Gregor Hohpe of Google, Brian Foote of Industrial Logic, Dave Ungar and David Bacon of IBM Research, as well as (who can forget) Dave Thomas of Bederra Research Labs.
(Photo credits: Self with iPhone of David presenting the best student paper award during the McCarthy keynote and of Dave at the hotel lobby)

Thursday, November 29, 2007

ooPSLA 2007 - part 4a

ooPSLA 2007 in Montreal, Canada - Oct. 21 to Oct. 25, 2007
(this is the part 4a of my braindump on ooPSLA 2007. I decided to split part 4 into two parts since I generally like reading blog posts that fit into one screen page of my laptop and imagine a majority of blog readers feel the same. Please see part 1, part 2, and part 3)



In addition to various paper sessions and one big poster session, like most week-long conferences, ooPLSA includes a wide variety of workshops, co-located symposiums, and tutorials. Unlike many other conferences, these secondary sessions are attended and instructed by the leaders in the field and many times by the progenitors of the technologies and ideas.

These other sessions attract industry participants and thus create a good mix of attendees. For instance, this year, while waiting in line to get lunch, I met developers from one of the big US Banks and they swear by ooPSLA and one has attended the past five years. He had managed to 'infect' other colleagues and they are now a group of three attending this year.

Workshops, symposium, and tutorial

DSM/DSL workshop
Since my recent research centers around using the Ruby on Rails platform to create a domain-specific language (DSL) for Web APIs mashups, I had to attend the domain-specific modeling/language workshop at ooPSLA. I did not have a chance to submit a workshop paper so I attended as a regular participant. Overall, the workshop spanned three days, which I think is a bit much; I only attended the first day. The AM session papers were a mixed of incomplete DSL and approaches to create applications using DSL and DSM. After a nice lunch near old Montreal, where I got to have lunch with some of the organizers, we reconvene for the PM sessions which were deeper and also seemed more mature, as there was a variety of demos and more in-depth discussions.

Overall, I thought the majority of the papers dealt with visual DSLs, that is environments that encourage or facilitate application constructions with visual representations of the DSL. While I realize that there is a growing class of users (non-programmer types) who need to create applications and that one can target with such visual DSLs, I also convinced (based on experience) that visual languages are better suited for very narrow problems and do not scale well. My experience using VisualAge C++ (circa 1996) and then VisualAge Java (circa 1997) have left bitter tastes in my mouth when it comes to visual programming environment. I was able to build a complex application that we shipped to our customers, however, because the application was non-trivial, only a handful of developers could modify and debug it. My conclusion at the time was that the visual code can be harder than textual code. I did not see anything from the presentations at the workshop that convinced me that a significant breakthrough was achieved. I would agree that for some subset of problems and users, a visual environment is very productive and attractive, however, I think it's best to layer the visual tools on top of a textual DSL or a platform supporting a textual language, e.g., Ruby, Rails, Python, Java, or C#

LINQ tutorial

The one tutorial I attended this year was by Eric Mejyer of Microsoft on LINQ. First off, I only attended a part of the tutorial, it was scheduled as an all day affair on the first day of the conference and I was at the DSM/DSL session in the AM. I had met Eric the night before at the bar of the hotel and we had various interesting conversations along with other folks (e.g., Martin Fowler) on many topics. I knew Eric was giving the tutorial and told him I would come for at least part of it. The one thing I must mention right from the start is that Eric is a truly cool dude. I rarely can say this of Microsoft colleagues I have met, but Eric is just cool. He's a real asset to MS, not just for his many contributions, but also overall attitude that debunks the MS engineer stereotype, i.e., "the typically arrogant, I know most everything and the world runs on MS platform" types.
(Photo credit: self with iPhone of Eric Mejyer of Microsoft at the Hyatt Montreal hotel lobby)

Microsoft's Language INtegrated Query (LINQ) has been in research in development for a while now. In the recent version of Visual Studio 2008 and the C# 3.0 language, LINQ is now a prominent feature. In a nutshell LINQ adds new syntax, semantics, and libraries to the C# language (and really the .NET framework) to support direct query and manipulation of relational data. In other words, using LINQ in your C# and other .NET enabled languages, you can do simple to very complex queries of relational data or other data structures directly in your code. For instance this is some LINQ C# code to do some simple queries:

//Assume customers is a C# (or .NET) collection of Customers
//this can be in memory populated or loaded from a relational DB
Customers[] female_customers = from c in customers
where c.sex.ToLower() == "female"
|| c.sex.ToLower() == 'f'
orderby c.age
select c;

//Another example
string[] cities = {"San Jose, CA", "New York, NY",
"San Francisco, CA", "Miami, FL",
"Raleigh, NC", "Portland, OR",
"Seattle, WA"};
string[] cities_in_california = from city in cities
where city.EndsWith("CA")
select city;

(you should easily be able to infer the SQL equivalent, though the EndsWith() and ToLower() selection operators maybe slightly tricky...)

Software Engineering Radio is running a blog episode 72: Erik Meijer on LINQ where he explains the basic. MSDN host a dated but still interesting video of Anders Hejlsberg discussing LINQ and C#.

However, note that unlike in various DB drivers and language wrappers (e.g., JDBC) or even ORMs (e.g., Rails' ActiveRecord) you never deal with SQL and all results and intermediary variables are C# objects and classes. MS added various new additions to C# and .NET framework to make that happen. From my limited understanding of LINQ (based solely on taking half of Eric's class), it appears that under the cover, the LINQ queries are translated into calls to the .NET LINQ libraries which are heavily templated C# classes to represent various generic version of queries. I am guessing that the same magic occurs for regular data structures when you use them in LINQ queries. Under the covers, I am also guessing that the LINQ .NET engine does appropriate "magic" and generate optimized SQL for the database. Naturally, these optimization will depend on what database you have and not simply the DB driver you installed. Therefore, I would venture to guess that on MS SQL this will work well and dandy but your mileage will likely vary if you use other DBs, e.g., MySQL, DB2, or Oracle. Since I am not sure 100% on previous statement, please don't quote me on that.

Generally, I am a firm believer in having a uniform representation of all parts of a software system. That is, reduce the impedance mismatch that occurs as one integrates different parts of a system. For instance, in typical Web applications development, the application logic is in some language and framework (e.g., Java or C#) but the user interface is coded in HTML, CSS, and JavaScript. Same also for the data when in a relational database. The various frameworks have facilities to reduce the impedance mismatch, however, for databases, even the best frameworks (e.g., Ruby on Rails' ActiveRecord) show their weaknesses when you need to do any moderately complex queries (e.g., a query that involves a couple of joins). What typically occurs is that the database binding layer will simply have a pass-thru that allows SQL to be directly submitted. The promise and beauty of LINQ is that the impedance mismatch is almost completely removed since you only deal with the language in question, say C#, and can represent all data elements and queries thereof directly in the language.

This is all good stuff. However, enter some dose of skepticism. I already identified the first problem and that is using MS .NET and LINQ, I wonder how much that ties you to MSQL since for any decently complex DB application you'll start needing the query optimizer and if that is not ported to work with the LINQ engine then forget anything but a complete MS solution.

The second issue I could see is one I had discussed with Eric. He has not convinced me otherwise. It is simply that there is potential for abuse by developers using LINQ. What I mean is that the relational database community has spent a number of years exploring and addressing the limits of the relational model such that it is now well understood and can scale really well. These advancement in great part have enabled the current Web commerce boom we have seen in the past 10 to 15 years. Show me one decently large commerce or Web application and I will point you to an example deployment of relational database. By bypassing SQL with a language that is not a proper subset or equivalently researched you may loose the benefits aforementioned.

Finally, since as far as I know, LINQ is not a standard or submitted to a standard body, though I know that there is an effort to create a Java version named jLINQ, I worry how much longer this will remains a Microsoft-only technology. So I realize that MS invented it but that does not mean it should not be a proposed standard which could allow it to be added to various languages and importantly allow various DB vendor to fully support it in various settings... I am likely dreaming a bit here, however, imagine if IBM and others had not created the SQL standards. What would have come of the database market? What about all the nice advances mentioned earlier?

Dynamic Language Symposium


I attended part of the DLS this year, as I had ooPLSA 2005. It's an interesting bunch since many of the originators of early OO languages are in attendance, e.g., Dave Ungar (visiting researcher at IBM Research), Mark Miller (Google), Jim Hugunin (Microsoft), and many others.

The talks I attended varied from very practical to esoteric. For instance, Jim Hugunin had a very interesting and practical talk on the new .NET dynamic language runtime (DLR) which allows .NET to host (relatively easily) various dynamic languages. Jim was the one to give us JPython (now Jython) so it was reasonable for him to implement Python on the DLR and share some of the results. Cool thing is that Python works and performs well on .NET---without a thorough study, he mentioned it was twice as good as Jython on one Java VM. He also mentioned that there was effort to also move JavaScript and Ruby to the DLR. Interestingly as in any ports, there are subtle issues that come up, especially how to integrate the .NET library and support it in the language. Not sure if MS plans to share some of the DLR spec or ideas with the rest of the world, however, this may be a glimpse into the future... A portable, solid, and performing virtual machine that can host efficiently various dynamic languages. (The JRuby folks are thinking along that line as well, see Headnius blog on the topic). Kudos to Microsoft for advancing this agenda though at the same time it worries me since I doubt this will ever fully work on Linux or the Mac. One esoteric talk was RPython which essentially allowed Python code to be typed... weird though I can see the statically typed heads inflating and smiling.
(Photos credit: self with iPhone of Dave Ungar (creator of Self) of IBM Research and Mark Miller of Google asking questions during keynotes)

Sunday, November 11, 2007

ooPSLA 2007 - part 3


ooPSLA 2007 in Montreal, Canada - Oct. 21 to Oct. 25, 2007
(this is a continuation from my ooPSLA 2007 review part 1 and part 2)



Noteworthy talks
Aside from the keynotes, I attended a few other noteworthy talks. In particular I want to mention three.

Martin Rinard of MIT presented an Ownard! paper entitled Living in the Comfort Zone. This is a continuation of Martin's work on what he calls failure-oblivious computing or Acceptability-Oriented Computing. In a nutshell, Martin is fundamentally questioning our notion of usable software. My interpretation of his main argument follows. Since all software will have bugs, he questions whether we can approach software construction with the explicit assumption that these bugs do and will always exist and whether we can simply make the systems more resistant to inputs that cause problems. In recent studies for various small, but heavily used systems, he experimented and collected data that seems to corroborate his hypothesis that there is a comfort zone in which most inputs to the system could be reduced to and thus have working software that is resilient to bad inputs. He experimented with both the pine UNIX mail reader as well as the commercial AbiWord word processor.

The second talk was by a truly interesting fellow named Brian Foote who, over the years, has also acquired a reputation for asking tough questions at ooPSLA keynotes and talks. Brian's presentation was very unconventional and he was introduced as the 'conscience of ooPLSA'. Having had wine and a chat with Brian two days earlier, I would have to personally agree with the preceding words.

Brian's talk is based on a paper that he wrote with Joe Yoder entitled BIG BALL of MUD. Brian introduced his talk, if I recall correctly, as "An introduction to Post-Modern Programming." It certainly is an out of the ordinary talk by a rather unique speaker. It's a collage of what appears to be a random survey of important thoughts, ideas, people, and failures in modern software engineering. However, there lies what I think is a coherent message and thesis in all of this blurry and witty exposé, and it is that software, perhaps due to its human roots, seems to have a certain inertia toward complexity and convolution. Anyone who has worked on truly successful and decently BIG software systems can attest to this tendency. Things seem to generally get worse, not better. The code becomes a big mess and market and customer pressures always seem to prevent one from ever reengineer for the better. Some techniques may help, such as Test Driven Development or TDD and Refactoring, do help but they are not perfect, they can require considerable efforts, and they can aggravate things in other ways, thus just shifting the complexity elsewhere. Maybe Brian and Martin should meet and marry their ideas. Seems like Brian has identified the problem and Martin is pointing to one, albeit resigned, solution.

The final talk I want to mention is Erich Gamma's (IBM Rational) talk on Jazz. This is the latest initiative from the people and the company that brought you Eclipse---the Rational division of IBM. Jazz is sort of an expanded version of the Eclipse platform containing all sorts of jazzy add-ons for team collaboration. For instance, Erich showed how a distributed team of developers for the Jazz itself platform is setup and how he could join one of the sub-projects. After joining, Erich could list the current TODOs, features, team members, and so on. All bug reports can be assigned to any members of the team who can also collaborate by doing instant chats and sharing white boards and other collaboration tools. Everything is transparent to members of the teams. All events and actions are recorded as RSS/Atom feeds that team members can consume in the comfort of their favorite feed reader. All in all, Jazz promises to make for distributed software development what Eclipse did for individuals... While the demo had a few glitches and the room was crowded to the max, with people seating on the floor, I left feeling good being an IBMer and hopeful that Jazz will allow distributed software teams play together like these bands I hope to see again in New Orleans.

There are still some questions about Jazz's availability and license. I will stay out of it for two reasons. First, I personally don't think that everything that the IBM Eclipse team does should automatically be given away for free, we are a for-profit company, and in this case the OSS business model seems inexistent. Finally, I am not part of the Jazz team nor do I know the details behind the project or their motivations, goals, and customers.

Finally
A lot of people raved about the 50 in 50 talk by Dick Gabriel (IBM Research) and Guy Steele Jr. (Sun Microsystems) but I did not see it. I was visiting some old high-school buddies who live in Montréal and that who I had not seen for more than 15 years. So in many ways I had my own reminisce time and was happy to get second hand account of Dick's and Guy's exploit down memory lane.

In what will surely be my final ooPSLA 2007 post (truly this time) I will complete the braindump with a recall of the LINQ tutorial, the DSM/DSL workshop, and the DLS symposium. I'll briefly mention some highlights from the different panels I attended and give a brief carricature of interesting colleagues, friends, and folks I met at ooPLSA this year. Easily my favorite ooPLSA of all previous years.

Change history (marked with strikes and emphasis)
11/25/2007: minor English updates and additions

Wednesday, November 7, 2007

ooPSLA 2007 - part 2


ooPSLA 2007 in Montreal, Canada - Oct. 21 to Oct. 25, 2007
(this is a continuation from my ooPSLA 2007 review part 1)



Embarrassment of the riches

Photo of Fred Books and Bertrand Meyer (inventor of the Eiffel language)

The first thing that one notices from this year's ooPSLA program is that it is chockfull of BIG computer science names, such as, Turing award winners John McCarthy of Stanford and Fred P. Books of University of North Carolina Chapel-Hill (formerly of IBM), as well as David Parnas of University of Limerick, Ireland, Pattie Maes of MIT, and Gregor Kiczales of University of British Columbia (formerly of PARC). With so many famous keynoters, to fit the program in three days, some of the research paper sessions were concurrently scheduled and that created a vacuum at these sessions... Not a huge problem for a well-attended conference but made it difficult for me to attend 'non-famous' sessions.

I managed to see most of the keynotes and only missed Maes's talk---conflicted with yet another invited talk by Brian Foote of Industrial Logic, Inc. (now consulting at Google and other places.) More on Brian's talk in a future post.

Keynotes

Brooks talk was about collaboration and briefly about why the Mythical Man-Month thesis still remains mostly valid today after more than 25 years. I got three main takeaway from his talk: 1) software engineering is hard and still remains intricately a human-intensive process; 2) most important human works typically have one primary designer/architect. Brooks gave examples in all fields, e.g., Michelangelo's Chapel Sixtine, Frank Ghery's Guggenheim museum in Bilboa, Spain (see photo, credit Wikipedia.org), and many others; the one exception to the solo team structure is the pair, e.g., cited pair programming as a successful agile practice; and 3) Brooks thinks that object-oriented technologies are the closest, so far, to the elusive "silver bullet".



McCarthy's keynote centered around a new programming language called Elephant 2000 that he has been working on for a while. Mostly reminded me, and others, of efforts from the multiagent community on speech-act and agent-based programming. The best part of the talk in my opinion was a series of Intro slides on LISP's history that a member of the audience ask him to go over. It's always cool to reminisce on the beginning events that led to the creation of aspects of computer science. For instance, McCarthy mentions how DARPA provided the first funding in the 60's to create CS at MIT as a gift for the war efforts and how, as they do with all such grant, MIT divided the money to each of the major departments. The Math department got this influx of money and needed to spend it. Minsky and McCarthy were lucky to get some for a crazy idea that they called "artificial intelligence" along with a bunch of math graduate students...


Parnas's talk was mainly about documenting software systems and the difficulties that typically arise. Parnas gives as a current illustration of the problem (which may have ended recently) the long running battle between the EU and Microsoft over allowing competitors to interoperate with MS servers by giving enough documentation on Microsoft's protocols. Apparantly the first effort was in the order of 10K pages and was full of inconsistencies and contradictions... Parnas advocates more mathematical verbiage and precision to help this general issue.

Opinion
Overall, it was nice to see and (in some cases) meet these famous computer scientists. And their general focus on basic research and fundamental principles (gathered empirically or mathematically) is an important reminder to us all. I personally got a chance to speak to both Brooks and Parnas. So kudos to the ooPSLA organizers for inviting them.

However, I cannot help but also point out that both Brooks's and Parnas's talk focused on topics that seems to be a bit at odd with the ooPLSA mostly agile crowd. Brooks was intensely advocating having an architect and a level of 'blueprint' for the system and this could be seen to be a bit at odd with the fact that in the current world, time to market pressures and constant changes in the marketplace make this approach (to its fullest) mostly unrealistic thus the general idea of not doing big-design up front (aka BDUF) in agile teams.

Parnas's documentation rethoric, while clearly needed for a class of software systems, is likely unrealistic in most real-world settings where there is a shortage of programmers (and well educated engineers) and the fact that having working malleable code will get you your contract signed faster or get you ahead of competitors much quicker than one could finish reading the huge amount of of documentation needed to precisely describe even the simplest of systems. Case in point, I was part of the JavaPOS standard and it took a distributed team of more than 20 engineers (from more than 10 companies) greater than 5 years to create a specification (at 3K+ pages) for typical POS devices (i.e., Scanners, magnetic stripe readers, receipt printers, and so on) that could allow application providers to easily have their software working with different hardware vendors by simply changing an XML configuration file.

Next
In the next (and last) post on the ooPSLA 2007 conference, I will continue the braindump of the interesting sessions I attended. This will hopefully include Brian Foote's talk on BIG BALL OF MUD; the workshop on domain-specific modeling/language; some of the Onward! paper sessions; the LINQ tutorial by Eric Meyjer of Microsoft; the Eclipse Jazz presentation by Erich Gamma of IBM Rational; a few of the panels I attended on software engineering, languages, and SOA; and some parting thoughts mingling with many interesting minds and colleagues in the field.

Thursday, November 1, 2007

ooPSLA 2007 - part 1

ooPSLA 2007 in Montreal, Canada - Oct. 21 to Oct. 25, 2007

The 20+ year old conference on object-oriented programming languages systems and applications (OOPLSA) is easily one of the top computer science conference in the field. This is where key revolutionary, evolutionary, and influential ideas and technologies such as Java, Agile, Aspects, Patterns, UML, Eclipse, and DSL (just to name a few) were mostly first discussed in an academic and open industrial setting. The inventors of these ideas and technologies make ooPSLA a GOTO date on their calendars and typically give tutorial and take part in panels with colleagues on the subject.

Photo of Dick Gabriel and David Parnas during Parnas's keynote

That long history and the impact of the technologies and ideas that the conference has spawned make it a star conference to attend for anyone in the field. The fact that acceptance rate is usually extremely low (10% or so) also gives more value to any paper that is accepted there. However, unlike what the name suggests, ooPSLA is more than a conference on object-oriented technologies, hence why Dick Gabriel (IBM Research distinguished engineer and ooPSLA 2007 conference general chair) and other organizers have started to refer to the OO part in lower case, thereby correctly minimizing the importance of OO in the conference as a whole.

ooPSLA and me
In late 1997, during my first year of graduate school, I took Ed Gehringer's class on OO programming at NC State University, and Ed, as a long time OOPLSA participant, introduced us all to OOPLSA and the various technologies being discussed there at the time: Java, Smalltalk, Eiffel, Patterns, UML, and so on. I attended my first OOPSLA in 1999 (Denver, CO) and have attended them sporadically ever since (including 1999 in Dever, 2000 in Minneapolis, 2001 in Tampa Bay, 2002 in Seattle, and 2005 in San Diego). This year, after one year absence, I am back to ooPSLA and this year I also have a short paper and poster on my current research.

In a nutshell I created a domain-specific language (DSL) in the Ruby language for Web APIs mashups. Taking advantage of the Rails framework, the DSL allows a high-level representation of the various parts of what it takes to create a mashup. Using some Ruby metaprogramming magic, the DSL constructs are converted to a full RoR Web applications with necessary plumbing to connect to the Web APIs (i.e., REST, RSS, Atom, and APP) and to present views for user interactions as well as the back-end logic for service interactions. Ajith Ranabahu and I built the first implementation of the platform by the code name Swashup (Situational Web Applications Mashups). At ICSOC 2007, Hernan Wilkinson, Stefan Tai, Nirmit Desai, and I published a paper focusing on the DSL itself.

In a subsequent post, I'll outline some notes and highlights I have captured during this year's conference.