CINXE.COM

Novell Pulse - Lift at heart | The Scala Programming Language

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Novell Pulse - Lift at heart | The Scala Programming Language</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="shortcut icon" href="../sites/default/files/favicon.gif" type="image/x-icon" /> <link rel="alternate" type="application/rss+xml" title="The Scala Language (Featured News Only)" href="../featured/rss.xml" /> <link type="text/css" rel="stylesheet" media="all" href="../sites/all/modules/views/css/views.css%3Fo.css" /> <link type="text/css" rel="stylesheet" media="all" href="../sites/default/files/css/4e65d956fb7274736b9fd70d81a6a011.css" /> <script type="text/javascript" src="../sites/default/files/js/11880ce88959804b72dd4d9ff9c1c0ac.js"></script> <script type="text/javascript">jQuery.extend(Drupal.settings, { "basePath": "/", "extlink": { "extTarget": 0, "extClass": "ext", "extSubdomains": 1, "mailtoClass": "mailto" }, "fivestar": { "titleUser": "Your rating: ", "titleAverage": "Average: ", "feedbackSavingVote": "Saving your vote...", "feedbackVoteSaved": "Your vote has been saved.", "feedbackDeletingVote": "Deleting your vote...", "feedbackVoteDeleted": "Your vote has been deleted." }, "spamspan": { "m": "spamspan", "u": "u", "d": "d", "t": "t" } });</script> <script type="text/javascript">var BASE_URL = "/";</script> <script type="text/javascript"> </script> <style type="text/css"> #page { width : 950px; } </style> <style type="text/css"> body.sidebar-left #main { margin-left: -200px; } body.sidebars #main { margin-left: -200px; } body.sidebar-left #squeeze { margin-left: 200px; } body.sidebars #squeeze { margin-left: 200px; } #sidebar-left { width: 200px; } </style> <style type="text/css"> body.sidebar-right #main { margin-right: -200px; } body.sidebars #main { margin-right: -200px; } body.sidebar-right #squeeze { margin-right: 200px; } body.sidebars #squeeze { margin-right: 200px; } #sidebar-right { width: 200px; } </style> <style type="text/css"> body { font-family : Custom; } </style> <style type="text/css"> body { font-family : "Helvetica neue", Arial, Verdana, sans-serif; } </style> <!--[if lte IE 6]> <script type="text/javascript"> $(document).ready(function(){ $(document).pngFix(); }); </script> <![endif]--> <!--[if IE]> <style type="text/css" media="all">@import "/sites/all/themes/newsflash/css/ie.css";</style> <![endif]--> <script type="text/javascript" src="../sites/all/themes/newsflash/js/pickstyle.js"></script> </head> <body class="sidebar-right" style="padding-top:0px;"> <div class="clear-block" style="background: black; padding-top: 6px; padding-bottom: 3px; padding-left: 12px; padding-right: 12px;"> <p style="font-size: larger; font-weight: bold; color: #C00000; line-height: normal; text-align: center; margin-top: 1px; margin-bottom: 4px;">This page is no longer maintained &mdash; Please continue to the home page at <a href="http://www.scala-lang.org" style="color: #C00000;"><u>www.scala-lang.org</u></a></p> </div> <div id="page"> <div id="header" class="clear-block"> <div id="logo-title"> <a href="../index.html" title="Home"> <img src="../sites/default/files/newsflash_logo.png" alt="Home" id="logo" /> </a> </div><!-- /logo-title --> <div id="name-and-slogan"> </div><!-- /name-and-slogan --> <form action="6618.html" accept-charset="UTF-8" method="post" id="search-theme-form"> <div><div id="search" class="container-inline"> <div class="form-item" id="edit-search-theme-form-1-wrapper"> <label for="edit-search-theme-form-1">Search this site: </label> <input type="text" maxlength="128" name="search_theme_form" id="edit-search-theme-form-1" size="15" value="" title="Enter the terms you wish to search for." class="form-text" /> </div> <input type="submit" name="op" id="edit-submit" value="Search" class="form-submit" /> <input type="hidden" name="form_build_id" id="form-1efb9edf59466373995fe32a6a5323e3" value="form-1efb9edf59466373995fe32a6a5323e3" /> <input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form" /> </div> </div></form> <div id="primarymenu"> </div> <div style="clear:both"></div> <div id="suckerfishmenu" class="clear-block"> <div class="block block-menu" id="block-menu-primary-links"> <h2 class="title">Scala Main Menu</h2> <div class="content"><ul class="menu"><li class="expanded first"><a href="273.html" title="">About Scala</a><ul class="menu"><li class="leaf first"><a href="25.html" title="">Introduction</a></li> <li class="leaf"><a href="1658.html" title="Scala in the Enterprise">In the Enterprise</a></li> <li class="expanded"><a href="208.html" title="">Scala Community</a><ul class="menu"><li class="expanded first"><a href="199.html" title="">Mailing Lists</a><ul class="menu"><li class="leaf first"><a href="199.html#scala" title="">scala</a></li> <li class="leaf"><a href="199.html#scala-announce" title="">scala-announce</a></li> <li class="leaf"><a href="199.html#scala-user" title="">scala-user</a></li> <li class="leaf"><a href="199.html#scala-debate" title="">scala-debate</a></li> <li class="leaf"><a href="199.html#scala-tools" title="">scala-tools</a></li> <li class="leaf"><a href="199.html#scala-internals" title="">scala-internals</a></li> <li class="leaf"><a href="199.html#scala-xml" title="">scala-xml</a></li> <li class="leaf last"><a href="199.html#scala-sips" title="">scala-sips</a></li> </ul></li> <li class="leaf"><a href="813.html" title="The Scala IRC Channel">IRC Channel</a></li> <li class="leaf"><a href="208.html#blogs" title="">Blogs &amp; News</a></li> <li class="leaf"><a href="http://scala.sygneca.com/" title="">Sygneca Wiki</a></li> <li class="leaf last"><a href="http://issues.scala-lang.org" title="">Scala Jira</a></li> </ul></li> <li class="expanded"><a href="143.html" title="">Language Research</a><ul class="menu"><li class="leaf first"><a href="143.html#grants" title="">Grants</a></li> <li class="leaf"><a href="143.html#papers" title="">Papers</a></li> <li class="leaf"><a href="143.html#talks" title="">Talks</a></li> <li class="leaf"><a href="143.html#theses" title="">Theses</a></li> <li class="leaf"><a href="203.html" title="">Courses</a></li> <li class="leaf last"><a href="207.html" title="">Presentations</a></li> </ul></li> <li class="expanded"><a href="202.html" title="">In the Press</a><ul class="menu"><li class="leaf first"><a href="205.html" title="">Articles</a></li> <li class="leaf"><a href="206.html" title="">Interviews and Panel Talks</a></li> <li class="leaf last"><a href="../archive.html" title="">News Archive</a></li> </ul></li> <li class="leaf"><a href="89.html" title="">The Scala Team</a></li> <li class="leaf"><a href="239.html" title="">Scala&#039;s Prehistory</a></li> <li class="leaf last"><a href="188.html" title="">Contact Us</a></li> </ul></li> <li class="expanded"><a href="197.html" title="">Documentation</a><ul class="menu"><li class="leaf first"><a href="1305.html" title="">Learning Scala</a></li> <li class="leaf"><a href="104.html" title="">Tour of Scala</a></li> <li class="expanded"><a href="198.html" title="">Manuals</a><ul class="menu"><li class="leaf first"><a href="../sites/default/files/linuxsoft_archives/docu/files/ScalaTutorial.pdf" title="">A Brief Scala Tutorial</a></li> <li class="leaf"><a href="../sites/default/files/linuxsoft_archives/docu/files/ScalaByExample.pdf" title="">Scala by Example</a></li> <li class="leaf"><a href="../sites/default/files/linuxsoft_archives/docu/files/ScalaOverview.pdf" title="">Scala Overview</a></li> <li class="leaf"><a href="../sites/default/files/linuxsoft_archives/docu/files/ScalaReference.pdf" title="">Scala Language Specification</a></li> <li class="leaf"><a href="http://scala.github.com/sips/index.html" title="">Scala Improvement Process</a></li> <li class="leaf"><a href="274.html" title="">Translations</a></li> <li class="leaf last"><a href="https://wiki.scala-lang.org/display/SW/Scaladoc" title="contains information on how to use the Scaladoc tool for browswing API documentation, writing your own documentation with Scaladoc, and developing Scaladoc.">Scaladoc 2 Manual</a></li> </ul></li> <li class="leaf"><a href="959.html" title="Books on Scala">Books</a></li> <li class="expanded"><a href="216.html" title="">Scala API</a><ul class="menu"><li class="leaf first"><a href="http://www.scala-lang.org/api" title="">scaladoc (stable)</a></li> <li class="leaf"><a href="http://www.scala-lang.org/archives/downloads/distrib/files/nightly/docs/library/index.html" title="">scaladoc (nightly)</a></li> <li class="leaf"><a href="http://www.scala-lang.org/archives/downloads/distrib/files/nightly/docs/compiler/index.html" title="The Scala compiler API, built on the current trunk.">compiler API (nightly)</a></li> <li class="leaf last"><a href="../downloads.html#api" title="">Download locally</a></li> </ul></li> <li class="expanded"><a href="201.html" title="">Setup &amp; Getting Started</a><ul class="menu"><li class="leaf first"><a href="166.html" title="">Getting Started with Scala</a></li> <li class="leaf"><a href="960.html" title="Java to Scala with the Help of Experts">Java to Scala</a></li> <li class="leaf"><a href="310.html" title="">Windows Mini-Guide</a></li> <li class="leaf"><a href="330.html" title="">Setting PATH on Windows</a></li> <li class="leaf last"><a href="294.html" title="">fsc and the OSX firewall</a></li> </ul></li> <li class="expanded"><a href="1908.html#programming" title="">Programming Guides</a><ul class="menu"><li class="leaf first"><a href="242.html" title="">Scala Actors</a></li> <li class="leaf"><a href="http://www.scala-lang.org/node/160" title="">Scala on Android</a></li> <li class="leaf"><a href="168.html" title="">Scala on Microsoft .NET</a></li> <li class="leaf last"><a href="1826.html" title="Scala on Google App Engine">Scala on Google App Engine</a></li> </ul></li> <li class="expanded"><a href="1909.html#other" title="">Other Guides</a><ul class="menu"><li class="leaf first"><a href="345.html" title="">Maven for Beginners</a></li> <li class="leaf"><a href="http://www.scala-lang.org/node/363" title="">Scala and JUnit on Eclipse</a></li> <li class="leaf last"><a href="354.html" title="">Scala, Emacs and Yasnippet</a></li> </ul></li> <li class="leaf last"><a href="../faq.1.html" title="">FAQs</a></li> </ul></li> <li class="expanded"><a href="219.html" title="">Code Examples</a><ul class="menu"><li class="leaf first"><a href="166.html" title="">Hello world!</a></li> <li class="leaf"><a href="220.html" title="">Simple Snippets</a></li> <li class="leaf last"><a href="44.html" title="">Advanced Examples</a></li> </ul></li> <li class="expanded"><a href="210.html" title="">Software</a><ul class="menu"><li class="expanded first"><a href="../downloads.html" title="">Download Scala</a><ul class="menu"><li class="leaf first"><a href="../downloads.html" title="">Latest Stable Release</a></li> <li class="leaf"><a href="165.1.html" title="">Previous Releases</a></li> <li class="leaf"><a href="212.html" title="">Nightly Builds</a></li> <li class="leaf"><a href="https://github.com/scala/scala" title="">Git Repository</a></li> <li class="leaf last"><a href="36.html" title="">Distribution Content</a></li> </ul></li> <li class="expanded"><a href="91.html" title="">IDE and Editor plugins</a><ul class="menu"><li class="leaf first"><a href="91.html#ide_plugins" title="">IDE Plugins</a></li> <li class="leaf last"><a href="91.html#tool_support" title="">Tool Support</a></li> </ul></li> <li class="expanded"><a href="1209.html" title="">Libraries and Tools</a><ul class="menu"><li class="leaf first"><a href="1209.html#libraries" title="">Libraries</a></li> <li class="leaf"><a href="1209.html#development_tools" title="">Development Tools</a></li> <li class="leaf"><a href="1209.html#program_testing" title="">Program Testing</a></li> <li class="leaf last"><a href="1209.html#other_scala_related" title="">Other Scala-Related</a></li> </ul></li> <li class="leaf last"><a href="146.html" title="">Scala License</a></li> </ul></li> <li class="expanded last"><a href="214.html" title="">Scala Developers</a><ul class="menu"><li class="expanded first"><a href="215.html" title="">Developer&#039;s Guides</a><ul class="menu"><li class="leaf first"><a href="217.html" title="">Build Scala from the Source</a></li> <li class="leaf"><a href="140.html" title="">Writing Compiler Plugins</a></li> <li class="leaf"><a href="98.html" title="">Scala Ant Tasks</a></li> <li class="leaf"><a href="598.html" title="">Compiler Internals</a></li> <li class="leaf last"><a href="http://www.scala-lang.org/node/233" title="Scala Improvement Documents">Improvement Documents</a></li> </ul></li> <li class="expanded"><a href="218.html" title="">Bug Tracking &amp; Testing</a><ul class="menu"><li class="leaf first"><a href="https://issues.scala-lang.org" title="">Scala Bugtracker</a></li> <li class="leaf"><a href="http://scala-webapps.epfl.ch/jenkins/" title="">Scala Jenkins</a></li> <li class="leaf last"><a href="https://codereview.scala-lang.org" title="">Code Review</a></li> </ul></li> <li class="expanded"><a href="237.html" title="">Codebase Progress</a><ul class="menu"><li class="leaf first"><a href="43.html" title="">Language Changes</a></li> <li class="leaf last"><a href="309.html" title="">Download Stats</a></li> </ul></li> <li class="leaf"><a href="292.html" title="">Maintainers</a></li> <li class="leaf last"><a href="../sites/default/files/contributor_agreement.pdf" title="">Contributor Agreement</a></li> </ul></li> </ul></div></div> </div> </div><!-- /header --> <div id="middlecontainer"> <div id="main"> <div id="squeeze"> <div id="breadcrumb"> <div class="breadcrumb"><a href="../index.html">Home</a> 禄 Novell Pulse - Lift at heart</div> </div> <div id="squeeze-content"> <div id="inner-content"> <h1 class="title">Novell Pulse - Lift at heart</h1> <div class="tabs"></div> <div class="node"> <span class="submitted"> Created by bagwell on 2010-06-09. Updated: 2010-06-09, 07:07 </span> <div class="content"><span class='print-link'></span><p><a href="http://www.novell.com/home/">Novell</a> has just announced <a href="http://www.novell.com/products/pulse/">Pulse</a>, an exciting and much anticipated cloud-based, real-time collaboration platform for the enterprise. It provides a collaboration environment that is secure and draws on the best of instant messaging, document sharing, social connections, real-time co-editing and enterprise controls. At Pulses heart beats <a href="http://liftweb.net/">Lift 1.0</a>, a Scala based WebFramework that has been used to provide all of the web services for the project.</p> <p>You can enjoy a very professional <a href="http://www.novell.com/media/media.php?media=keynote-collaboration-colleen-okeefe) ">Pulse demo given at Novell BrainShare 2010</a> or learn more about the product and service on the <a href="http://www.novell.com/products/pulse/">Pulse web pages</a> or follow an introductory series of videos on YouTube: <a href="http://www.youtube.com/watch?v=gUWOr8UMMBY">Pulse1</a>, <a href="http://www.youtube.com/watch?v=5M4R2Dhy3Jg ">Pulse2</a>, <a href="http://www.youtube.com/watch?v=CNNRatplKg4">Pulse3</a>, <a href="http://www.youtube.com/watch?v=bhVD5NgPed8 ">Pulse4</a> and <a href="http://www.youtube.com/watch?v=rbmUOsGcXi4">Pulse5</a></p> <p>Daniel Spiewak,Developer and member of the &quot;breakout&quot; team that developed Pulse, talks about the project.</p> <p>&quot;The great Lift Comet support made the architecture decisions much easier. We had already made extensive use of Comet so Lift's fit was a real benefit. The entire front end, the web application, was written in Scala. Most of the back end is Java, though we do use Scala code to handle really complex functions, like rendering the Google Wave content schema into XHTML. There are some administrative tools still written in C#. Numerous backend services, all hang off of RabbitMQ and push data around through several asynchronous channels. It can all get quite busy!</p> <p>The front end application fits really nicely into this ecosystem, primarily because of its intense reliance on actors. The entire front end is highly asynchronous, spending most of its time passing actor messages around from point A to point B.</p> <p>It felt good to see all the pieces come together and just do the job rather well.</p> <p>We've become somewhat disillusioned with traditional concurrency control mechanisms, and so while we certainly could work with locks and mutexes, it's so much easier just to send async messages. However, there are still several areas where actors do not seem a good solution, the in-memory message cache for example. In these cases, we generally use(and possibly abuse) the java.util.concurrent data structures. We would certainly appreciate seeing a Scala STM to more soundly deal with this type of problem.</p> <p>We use a patched version of Lift 1.0 due to the fact that later versions in the 1.0.x stream trigger a very intermittent bug in our application's session management, and it was easier to just fork our own version of Lift rather than spend any more time trying to isolate the issue. Dave Pollak, the originator of Lift, has been extremely helpful and we look forward to upgrading to the new features in Lift 2.0 and Scala 2.8 sometime in the near future.</p> <p>The tooling support (or lack thereof) has certainly been a challenge, but not an insurmountable one. Our team is split roughly 50/50 between the Scala Eclipse IDE (version 2.7.7) and the Scala module for NetBeans. Neither tool was particularly solid at that point, but with enough experience, it was possible to massage them into behaving appropriately. The most important thing is that they both provide debugging support, which I believe is crucial to developing a non-trivial application in Scala. The tool scene is not all darkness and rainclouds though, embedded Jetty works flawlessly with Scala and Lift, and ZeroTurnaround's free JRebel license for Scala developers has saved us cumulative weeks in our development cycle.</p> <p>Overall, both Scala and Lift have provided a great experience for us. It did take some time for our team of former Java developers to get up to speed with the language and its idioms (a process which led to the first drafting of <a href="http://davetron5000.github.com/scala-style/">the Scala Style Guide</a>), but things are flowing along quite smoothly now. Scala is certainly a more powerful language than Java, but its learning curve really isn't any steeper than your average scripting language. Given enough patience and persistence, I would expect any team of competent developers should be able to get completely up to speed with the language in a month or two. There is that initial hurdle, but the benefits are staggering once it is overcome. Expressive, functional code, the cake pattern, built-in XML support, monads, the list just goes on. These features (and more!) have saved us countless man-hours working on Pulse and allowed us to deliver a product into production much sooner than I ever would have imagined.&quot;</p></div> <div class="clear-block clear"></div> <div class="links"><ul class="links inline"><li class="comment_forbidden first"><span><a href="../user/login%3Fdestination=comment%252Freply%252F6618%2523comment-form.html">Login</a> or <a href="../user/register%3Fdestination=comment%252Freply%252F6618%2523comment-form.html">register</a> to post comments</span></li> <li class="print_html last"><a href="../print/6618.html" title="Display a printer-friendly version of this page." class="print-page" rel="nofollow"><img src="../sites/all/modules/print/icons/print_icon.gif" alt="Printer-friendly version" title="Printer-friendly version" width="16" height="16" class="print-icon print-icon-margin" />Printer-friendly version</a></li> </ul></div> <div class="clear-block clear"></div> </div> <div id="comments"> </div> </div><!-- /inner-content --> </div><!-- /squeeze-content --> </div><!-- /squeeze --> </div><!-- /main --> <div id="sidebar-right"><div class="block block-menu" id="block-menu-secondary-links"> <h2 class="title">Scala Quick Links</h2> <div class="content"><ul class="menu"><li class="leaf first"><a href="../downloads.html" title="Download the Scala compiler and Tools">Download Scala</a></li> <li class="leaf"><a href="198.html" title="">Reference Manuals</a></li> <li class="leaf"><a href="216.html" title="">Scala API</a></li> <li class="leaf"><a href="308.html" title="Submitting a Story">Submit a Story</a></li> <li class="leaf"><a href="../archive.html" title="Archive of scala-lang.org front page news stories">News Archive</a></li> <li class="leaf"><a href="../faq.1.html" title="">FAQs</a></li> <li class="leaf"><a href="../menutree.html" title="Map of the site content">Site map</a></li> <li class="leaf"><a href="188.html" title="Contact Us">Contact Us</a></li> <li class="leaf"><a href="../shop.html" title="">The Scala Shop</a></li> <li class="leaf"><a href="http://days2012.scala-lang.org/" title="">Scala Days 2012</a></li> <li class="leaf"><a href="http://docs.scala-lang.org/" title="">Documentation Site</a></li> <li class="leaf last"><a href="../gsoc2012.html" title="Summer of Code 2012 Scala Projects">Summer of Code 2012</a></li> </ul></div></div> <div class="block block-views" id="block-views-featuredNews-block_1"> <h2 class="title">Featured News</h2> <div class="content"><div class="view view-featuredNews view-id-featuredNews view-display-id-block_1 view-dom-id-1"> <div class="view-header"> <style type="text/css"> .view-id-featuredNews.view-display-id-block_1 ul { position:relative; left:.75em; } .view-id-featuredNews.view-display-id-block_1 ul li { list-style-type: circle; } #block-views-featuredNews-block_1 { position: relative; } #block-views-featuredNews-block_1 .feed-icon { position:absolute; bottom:2px; right:2px; } </style> </div> <div class="view-content"> <div class="item-list"> <ul> <li class="views-row views-row-1 views-row-odd views-row-first"> <div class="views-field-title"> <span class="field-content"><a href="12603.html">Scala 2.9.2 final</a></span> </div> </li> <li class="views-row views-row-2 views-row-even views-row-last"> <div class="views-field-title"> <span class="field-content"><a href="12560.html">Akka 2.0 Released!</a></span> </div> </li> </ul> </div> </div> <div class="feed-icon"> <a href="../featured/rss.xml" class="feed-icon"><img src="../misc/feed.png" alt="Syndicate content" title="The Scala Language (Featured News Only)" width="16" height="16" /></a> </div> </div> </div></div> <div class="block block-block" id="block-block-5"> <h2 class="title">User login</h2> <div class="content"> <form action="https://www.scala-lang.org/user?destination=node%2F6618 " method="post" id="user-login-form"><div class="form-item" id="edit-name-wrapper"><label for="edit-name">Username: <span class="form-required" title="This field is required.">*</span></label> <input type="text" maxlength="60" name="name" id="edit-name" size="15" value="" class="form-text required" /></div> <div class="form-item" id="edit-pass-wrapper"><label for="edit-pass">Password: <span class="form-required" title="This field is required.">*</span></label> <input type="password" name="pass" id="edit-pass" maxlength="60" size="15" class="form-text required" /><br /> <span style="font-size: smaller;">will be sent securely</span></div> <input type="submit" name="op" id="edit-submit-custom" value="Log in" tabindex="3" class="form-submit" /> <br /> <p><a title="Create new account" href="../user/register.html">Create new account</a></p> <p><a title="Retrieve lost password" href="../user/password.html">Retrieve lost password</a></p> <input type="hidden" name="form_id" id="edit-user-login" value="user_login" /></form> </div></div> <div class="block block-block" id="block-block-3"> <div class="content"><ul> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books1.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books2.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books3.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books4.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books5.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books6.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books7.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books8.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books9.png" /></a></li> <li><a href="959.html"><img width="95" height="353" alt="" src="../sites/default/files/books1.png" /></a></li> </ul> </div></div> </div> </div><!-- /middle-container --> <div style="clear:both"></div> <div class="clear-block clr" id="section2"> <div class="sections"> <div class="section width99"><div class="block block-block" id="block-block-2"> <div class="content"><p style="text-align: center;">Copyright &copy; 2012 &Eacute;cole Polytechnique F&eacute;d&eacute;rale de Lausanne (EPFL), Lausanne, Switzerland</p></div></div> </div> </div> <div style="clear:both"></div> </div><!-- /section2 --> <div id="footer"> </div><!-- /footer --> <div style="clear:both"></div> </div> <!-- /page --> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10