David Lyon

Bb Dev Conference '08 Report   show  hide

0 Index
1 Bb Developer's Conference 2008
   1.1 Summary
   1.2 For Discussion
   1.3 Disclaimer
2 Keynote Addresses
   2.1 Keynote - Dr. Michael Wesch
     2.1.1 Digital Information is Different
     2.1.2 Harness the Intelligence - A Game
   2.2 The Blackboard NG Project - A Developer's Roadmap
     2.2.1 Project NG Details
     2.2.2 Openness Roadmap
3 Technical sessions
   3.1 Managing Data Sources Within the Blackboard GUI
     3.1.1 Synchronization Problem
     3.1.2 Problem Solution
     3.1.3 Implementation
     3.1.4 Enhancements
   3.2 Getting Started With Building Blocks Part I
     3.2.1 Building Block Architecture
     3.2.2 Installing Building Blocks
     3.2.3 Developing Building Blocks
   3.3 Getting Started With Building Blocks Part II
     3.3.1 Sample Building Blocks
     3.3.2 Comments and Questions
   3.4 Best Practices for Building Testing and Deploying Your Building Blocks
     3.4.1 Requirements
     3.4.2 Design
     3.4.3 Coding
     3.4.4 Build-Deploy-Test
   3.5 Blackboard Academic Suite: Configurations and Considerations
     3.5.1 Windows Tips
     3.5.2 UNIX and Oracle
   3.6 Gaining Performance Maturity in your Blackboard Deployment
     3.6.1 Evolution of Maturity
     3.6.2 Case Study - University of Dundee
     3.6.3 Promoting Success
     3.6.4 System Setup
     3.6.5 Solaris Containers
     3.6.6 Impacts and Benefits
     3.6.7 The Future
   3.7 How To Write Crap in 1000 Seconds
     3.7.1 Maven
     3.7.2 Blackboard Maven Project
   3.8 Background Tasks and Building Blocks
     3.8.1 Option - Basic Java Thread
     3.8.2 Quartz

Index   show  hide


  Ability to choose a DB Location  -  3/3.1/3.1.4
  Advanced Quartz  -  3/3.8/3.8.2
  Advantages  -  3/3.6/3.6.4
  All share a configuration and are node aware  -  3/3.6/3.6.4
  Archetype  -  3/3.7/3.7.1
  Assessing Memberships  -  3/3.3/3.3.1
  Authentication  -  3/3.4/3.4.3


  Background Tasks and Building Blocks  -  3/3.8
  Bb Developer's Conference 2008  -  1
  Bb Look and Feel  -  3/3.2/3.2.1
  Benefits  -  3/3.6/3.6.6
  Best Practices for Building Testing and Deploying Your Building Blocks  -  3/3.4
  Blackboard Academic Suite: Configurations and Considerations  -  3/3.5
  Blackboard Maven Project  -  3/3.7/3.7.2
  Blackboard Tag Libraries  -  3/3.4/3.4.3
  Build snapshot file through retrieval of stored data  -  3/3.1/3.1.4
  Build-Deploy-Test  -  3/3.4/3.4.4
  Building Block Architecture  -  3/3.2/3.2.1
  Building Blocks  -  2/2.2/2.2.1


  Case Study - University of Dundee  -  3/3.6/3.6.2
  CleanBB  -  3/3.5/3.5.2
  Coding  -  3/3.4/3.4.3
  Comments and Questions  -  3/3.3/3.3.2
  Context  -  3/3.4/3.4.3


  Data Retention  -  3/3.1/3.1.2
  Data Storage  -  3/3.4/3.4.3
  Debugging  -  3/3.3/3.3.1
  Demonstration  -  3/3.7/3.7.2
  Design  -  3/3.4/3.4.2
  Details  -  3/3.3/3.3.1
  Developing Building Blocks  -  3/3.2/3.2.3
  Digital Information is Different  -  2/2.1/2.1.1
  Disadvantages - Bb takes longer to start  -  3/3.6/3.6.4
  Disclaimer  -  1/1.3
  Displaying Tables  -  3/3.3/3.3.1


  Enhancements  -  3/3.1/3.1.4
  Evolution of Maturity  -  3/3.6/3.6.1


  Failover between nodes  -  3/3.6/3.6.4
  For Discussion  -  1/1.2
  Functional  -  1/1.2


  Gaining Performance Maturity in your Blackboard Deployment  -  3/3.6
  Getting Started With Building Blocks Part I  -  3/3.2
  Getting Started With Building Blocks Part II  -  3/3.3
  Greater utilization of hardware  -  3/3.6/3.6.4


  Hardware  -  3/3.6/3.6.2
  Harness the Intelligence - A Game  -  2/2.1/2.1.2
  How To Write Crap in 1000 Seconds  -  3/3.7


  IDs and Persistence  -  3/3.4/3.4.3
  IMS Learning Tool Operability  -  2/2.2/2.2.1
  Identify a User  -  3/3.3/3.3.1
  Impacts and Benefits  -  3/3.6/3.6.6
  Implementation  -  3/3.1/3.1.3
  Installing Building Blocks  -  3/3.2/3.2.2
  Internationalization  -  3/3.4/3.4.3


  Job Setup  -  3/3.8/3.8.2


  Keynote - Dr. Michael Wesch  -  2/2.1
  Keynote Addresses  -  2


  Learning Environment Connector APIs  -  2/2.2/2.2.1
  Level 1 - Firefighting  -  3/3.6/3.6.1
  Level 2 - Monitoring  -  3/3.6/3.6.1
  Level 3 - Performance Optimizing  -  3/3.6/3.6.1
  Level 4 - Business Optimizing  -  3/3.6/3.6.1
  Level 5 - Process Optimization  -  3/3.6/3.6.1
  Logs to Utilize  -  3/3.5/3.5.2


  Managing Data Sources Within the Blackboard GUI  -  3/3.1
  Maven Lifecycle  -  3/3.7/3.7.1
  Maven  -  3/3.7/3.7.1
  Monitor old and deleted courses - get a policy that keeps them 3-5 yrs  -  3/3.5/3.5.2
  Monitoring  -  3/3.6/3.6.2



  Openness Roadmap  -  2/2.2/2.2.2
  Option - Basic Java Thread  -  3/3.8/3.8.1


  Permissions  -  3/3.4/3.4.3
  Platform of Participation  -  2/2.1/2.1.1
  Problem Solution  -  3/3.1/3.1.2
  Project NG Details  -  2/2.2/2.2.1
  Promoting Success  -  3/3.6/3.6.3
  Proxy Tools  -  2/2.2/2.2.1


  Quartz Triggers  -  3/3.8/3.8.2
  Quartz  -  3/3.8/3.8.2
  Questions  -  2/2.1/2.1.2
  Questions  -  3/3.8/3.8.2


  Requirements  -  3/3.4/3.4.1


  SQL Server Tuning  -  3/3.5/3.5.1
  Sample Building Blocks  -  3/3.3/3.3.1
  SmartDSM  -  3/3.1/3.1.2
  Solaris Containers  -  3/3.6/3.6.5
  Starting Block  -  3/3.4/3.4.4
  Struts  -  3/3.4/3.4.3
  Summary  -  1/1.1
  Summary  -  2/2.2/2.2.2
  Summary  -  3/3.6/3.6.7
  Synchronization Problem  -  3/3.1/3.1.1
  System Setup  -  3/3.6/3.6.4
  Systems Architecture  -  3/3.6/3.6.2


  Tag Libraries  -  3/3.3/3.3.1
  Technical sessions  -  3
  Technical  -  1/1.2
  Testing  -  3/3.4/3.4.4
  The Blackboard NG Project - A Developer's Roadmap  -  2/2.2
  The Future  -  3/3.6/3.6.7
  Tips and Tricks  -  3/3.5/3.5.2
  To learn is to acquire information  -  2/2.1
  Tomcat Troubleshooting  -  3/3.5/3.5.2
  Tools Leveraged  -  3/3.1/3.1.2


  UNIX and Oracle  -  3/3.5/3.5.2
  Upgrading to NG  -  2/2.2
  User Experience  -  2/2.2/2.2.1
  Using Persistence Manager  -  3/3.3/3.3.1
  Using the MVC Frameworks  -  3/3.2/3.2.3


  Version Issues  -  3/3.4/3.4.2


  Web Services  -  2/2.2/2.2.1
  What Changed  -  3/3.6/3.6.2
  Windows Tips  -  3/3.5/3.5.1
  Work is distributed and they are balanced  -  3/3.6/3.6.4




< Bb Developer's Conference 2008

Print This Report.

Bb Developer's Conference 2008 report – by David C. Lyon, Cal Poly Pomona University. Please read the disclaimer.

The Bb Developer's conference was held in conjunction with Bb World and both events were held in Las Vegas July 14-17. I attended both this year. The Developer's conference was useful in that it will help me gain a foothold into developing custom Building Blocks and gain a better understanding of the internal workings of Blackboard and how it runs code. There were plenty of Bb experts in attendance.

I ran into a man from Holland. His institution was using the portfolio product. He explained that you can by the portfolio product without the content system. Apparently, you need both to have full functionality for portfolios.

< Summary

The California State University had the most attendees here. This was the largest Bb Dev conference so far, with representatives from as far away as Dubai. This conference also had the most client led sessions.

This conference provided more technical meat than the Bb World conference that followed. This is the conference to attend if you want to learn about creating home-grown Blackboard Building Blocks – the way to extend your Blackboard environment. These can be viewed as plugins similar to Firefox plugins (for lack of a better example). The conference provided some basic "getting started" sessions that were useful to me. These sessions outlined the steps to creating a basic Building Block.

There were also sessions dealing with Bb internals and performance and scalability issues. The University of Dundee has done some great things in the area of scalability (more on this follows).

The opening keynote was very interesting and one could easily argue that it belonged at the Bb World conference, not here. However, from a high level, it was quite useful to see how Michael Wesch at Kansas State is turning learning on its side and doing it with Web 2.0 technology. This is certainly presented more from a user and facilitator perspective (rather than highly technical) but nonetheless very valuable.

Blackboard representatives discussed Project NG and the integration it will provide, touting more openness. They will merge the best of WebCT and Blackboard and standardize on Building Blocks to extend the platform. The WebCT Powerlinks method will be phased out. Bb will provide connectors to integrate with other LMS products including Moodle, Sakai and WebCT. One could write a Building Block that would call a course list function in WebCT (presumably Moodle too) and display it within Bb.

There were also sessions covering best practices for Building Blocks and Bb performance in general including database issues. More advanced sessions covered development environments that one could avail of (Maven) for example.

Blackboard thinks people will use the Bb user interface less as Bb access and integration becomes distributed across devices and systems (Facebook for example).

This conference was well worth attending.

< For Discussion
< Disclaimer

The following information was derived (much of it in paraphrase) from the Bb Developer's conference 2008. In some cases, session slides are available. This report is an attempt to encapsulate the most useful information from my perspective, bearing in mind that the Powerpoint slides do not always contain everything presented.

The information presented is deemed to be as accurate as possible but no guarantee is made. This report should not be seen as an official report but instead, as a resource document. Notes taken during the keynote were not necessarily intended to be direct quotes.

< Keynote Addresses

< Keynote - Dr. Michael Wesch

Michael Wesch spoke about what he is doing that is radically different from the traditional approach to learning – by using Web 2.0 technologies. He faced the problem of students, half of them not liking school but liking learning.

< Digital Information is Different

Wesch references Marshall MuLuhan in the context of our need to look at the present. On paper, we thought of information as a thing. Hyperlinking showed us information can be in more than one place. Google harnessed links in 1998 w/o categories and hierarchies. Blogging really changed things and there are over 100 million blogs. Youtube over has over 9000 videos uploaded in a given day. Don't think of it as TV because 88% of it is new and original.

The idea of following along is going out the window. Wikipedia is showing us how we can all work together. The information being created rivals that of the expert. There is a new model of authority, and discussion and debate going on behind the scenes. Information is now tagged for better organization and we are doing this without folders. RSS teaches us that information can find us.

"To Learn is to acquire information" is replaced with "To learn is to discuss/share/create ... information". Learning is creating meaningful connections but is not happening as it should.
  • How can we create students who create meaningful connections?
  • We do this by creating learning environments, platforms of participation (as he calls them) that leverage the new media environment. We are not using it in deep and profound ways (students). Blogger, digg, google – there are no natives here. Students don't Wiki, they consume.

  • Platform of Participation
  • Wesch's site, http://netvibes.com/wesch enables students to do all kinds of participation. The site contains resources for anthropological studies. There is a facebook interface, a Twitter stream, youtube, a Diigo list, a collaborative video and it is all edited together (highly experimental). Students didn't know how to run a wiki when they first came in. Within 48 hrs, students produced a great review in response to questions. Under the "Digital Ethnography" tab, students can make todo lists for each other.

    The students did a "History of Youtube" video. They went on lexus/nexus and found thousands of articles. They broke it up into 10 parts and put it on the wiki in one week. See Youtube History of Youtube. The Platform for Participation extends out into the world as does the classroom video project. It has apparently been viewed from all over.

< Harness the Intelligence - A Game

Wesch created a game. The question was: How do you harness the intelligence of the large group? If you have 12 people, you can have 66 relationships according to his formula. Organizations can create hierarchies. The network is the ideal situation. But, how do you harness all of the intelligence?

The learning objective was to know all about humankind for the last 12000 years of history. It is typically the case where the student knows more about a topic than the professor. Students brainstorm the state of the earth on the wiki. They come up with statistics related to the world today. They ask the question "Why?". "What do we need to know for this test?" They break up into cultural groups and must create cultures that are realistic for the year 1450. They produced well over 1000 pages of material. They abandoned the old classroom and rented a ballroom on campus. They created a game to simulate hundreds of years of world history so students would leverage the media environment all around them to understand how the world works. Part of the game is to colonize other people, "steal their fruitloops".

They also created an economic system and a world political system. They had to think about new forms of energy. They formed alliances – the Central Alliance waged World War Three. There were imperial powers, and fruit loop necklaces. They used a system called jott to synchronize with twitter involving voice to text.

The video was produced as a result of this game.

The next step would be how to move this into the real world in a more organic way using two dimensional barcodes. One could barcode with a cellphone, the barcode would contain a URL. The challenge is to create platforms for participation that allow students to realize and use this media environment. Richard N. Katz at EDUCAUSE has made a video about this.

All agree on one trend – we are moving to ubiquitous networking, computing, information, unlimited speed, about everything, on all devices. Have we prepared students for this world? Wesch suggests we move towards a participation paradigm. Move from a closed to an open system, from control to enable, and flip our current metaphors. Move from knowledgeable to "knowledge able".

< The Blackboard NG Project - A Developer's Roadmap

Presented by: Bob Alcorn and Jessica Finnefrock of Blackboard.

With Bb's Project NG (Next Generation) product line, you'll be able to customize the user experience with millions of colors and Web 2.0 features. They also tout openness. They will bring Sakai, Moodle and Vista into Bb – all courses within the course module. Syracuse University is helping Bb to release the first Sakai connector.

Project NG is the best of WebCT and Bb, standardizing on the Building Blocks platform and a common user interface. A new Grade Center UI will allow inline editing and smart views (relevant to task).

< Project NG Details

Project NG is the most significant platform change for developers since Bb 5.5, which was the first to offer Building Blocks. they are now committed to an open and extensible development environment.

Extensibility is integrating data into Bb, getting data out of Bb (and user experience), and integrating new features.

< Openness Roadmap

One goal is to push information (email, SMS, RSS) to users and devices, extensible architecture with open reporting framework, a CSS driven UI, enterprise data integration, "best of both" multi-institution support, more Building Block openness with enhanced Web Services/APIs, and expanded IMS standard support.

System reports are replaced with pluggable reports. You can also download a skins package to create a new look and feel. NG makes sure you can get the information outside of the Bb UI (news reader, facebook), decoupling the information.

The new reporting framework includes rich visualization, with drop-in reports. They are building this on Eclipse BIRT. BIRT has an Eclipse player so you can write a report in Eclipse, and create a package for it.

< Technical sessions

< Managing Data Sources Within the Blackboard GUI

Presented by: Mark Spurlock and Carl Hardin of the University of Tennessee.

The University of Tennessee has been using Bb for 10 years, are ASP hosted (wanted to use Building Blocks), have about 30000 students, and 56000 accumulated sites. They used a typical means of snapshot control (snapshot controls the SIS integration), hand editing of snapshot properties, a Perl script, or Bb global services written (which is apparently what they used last). It has weathered the years well.

< Synchronization Problem

What would be nice: to have quality control, calendar awareness, system maintenance (data retention), sysadmin control and correction through Bb APIs and not the disjunction of the two. They had used HTML forms, Perl, cron (UNIX scheduler), and human memory.

For example – course deletions. They were keeping everything forever until faculty wanted to delete it. They still waited six months to purge it but kept it hidden. This was not integrated with their business processes. Customer service and policy were frequently in conflict and there were many faults in the process and too many little pieces to manage.

< Problem Solution

The solution was to Give more control to the GUI administrator by creating a Building Block. The command line becomes point and click. Technical expertise was needed to set it up, but less of it to manage.

< Implementation

Their development environment consists of MyEclipse 6.0-1, Tomcat 5.5, RHEL 3, oracle 10.4, and Perl 5. They are pulling data from oracle and MySQL together. They have a feature for the admin to disable the data source. The Bb APIs are extremely helpful while you are developing.

Remove the reference APIs from build path before creating the war file.

One problem they had: Bb was also dropping MYSQL connections. They had to re-initialize the instance to MySQL using a script. They restart their server at 3:00 AM each day and the restart was killing the connection. The Javascript validations were not working due to a missing form reference in the jsp file and a missing package.

< Enhancements

Some enhancements they made:

< Getting Started With Building Blocks Part I

Presented by: Denison Wright, product manager at Blackboard.

Building Blocks provide a way to expand entry points into Bb, really a Java based web application running in Bb. There are various kinds of Building Blocks that can provide a bridge to an external system, a system/course/user tool, communication, content related, and module.

For example, a content Building Block can provide new content into a system, override or extend normal behavior provided by Bb.

< Building Block Architecture

You can provide a bridge system or simple plugin using the API. To create a Building Block, you need to use some Bb classes (jar files), and they must be in the CLASSPATH in the development system. Top level packages are needed. Also included are tag libraries (bb-taglib.jar) to allow for the Bb look and feel and basic functionality.

< Installing Building Blocks

Installing a Building Block simply involves uploading your war file. The remove button provides a hook to your custom application if depending on another application to remove that as well.

Configuration data is stored in the folder returned by PlugUtil.GetConfigDirectory(). The removal can perform necessary cleanup prior to an actual removal.

< Developing Building Blocks

As stated, Building Blocks are Java based web applications. You need the kits from Bb, Bb Academic Suite, Eclipse (suggested), documentation, and sample code.

See slide 31 in the presentation.

Dennison uses ANT to build – it is similar to the UNIX make tool. One can define build targets to compile, deploy, clean-up, and it is easy to use and is highly recommended. One can get the Building Block from the EDUgarage ANT.

The bb-manifest.xml file describes your Building Block to Bb. It contains the vendor, Bb version, plug-in entry points, and permissions. The handle has to be unique. All Building Blocks are installed in a plug-ins folder. The http-action is for any optional custom remove logic.

You can also have custom entry points. If you have a module Building Block, you can define this. You can define who can access this module. You can also add permissions (restrictions) and control what kind of operations the building block can perform. All of the information in the manifest is available in the GUI.

< Getting Started With Building Blocks Part II

Presented by: Anupam Kumar, Global Services Senior Technical Analyst at Bb since 2006.

This session was a continuation of "Building Blocks Part I". See http://www.easyeclipse.org for eclipse packaged plug-ins. The examples covered today are in the Bb software development kit and from EDUGarage.

< Sample Building Blocks

Kumar started with "Hello World" - it creates a course link. In his example, it doesn't yet have the look/feel of Bb. That is where Tag libraries come into play.

< Comments and Questions

APIs provide what might be provided by SQL and you can access outside databases. There are web services APIs available.

When you add a course tool, you are not able to specify the order in Bb. The order can get reset during certain actions. Also, you need more handles to compartmentalize things. Using debug methods does take setup time but is worth it.

Migrating from 7 to 8 not too painful though you need to check for deprecated functions. The Tag libs ensure user interface consistency.

< Best Practices for Building Testing and Deploying Your Building Blocks

Presented by: Jeff Bradley, Senior Software Architect at Blackboard.

< Requirements

Know your audience and scale the process to your needs – end quality is as good as quality up front. You don't want to stitch things together. Development pauses are expensive and you need an expert decision maker.

< Design

A Building Block is a basic web application. It runs on a sandbox with limited integration points (integration not even necessary). Be clear on the type of Building Block you are creating (module, content type,etc). Some design artifact must exist – scoped to your needs. This would be a wiki, html mock-ups, etc. Bb uses WiKis for documentation. They use confluence as it helps encourage developers to document their code.

< Coding

When coding, use appropriate tools, set coding standards and adhere to common formatting standards. Most internal Bb people use Eclipse. Abandon "proc" JSPs and don't use JSP scriptlets. The original Bb used proc JSPs. JSPs are for presentation only and should contain no business logic.

Use an MVC framework (struts, springboard, etc). Use JSTL, the JavaServer Pages Standard Tag Library to help enforce the business boundaries.

< Build-Deploy-Test

Building must be repeatable and simple (single command.) Bb uses ANT internally for this. See page 21 in the notes.

There are two ways to deploy and the desire is to have something that is simple. You can deploy using Tomcat, but it won't allow the hooks. We need to accurately simulate the customer experience.

  • Starting Block
  • Starting Block is a poor man's web service, invoked by URL. It allows for a Building Block to be installed on a local development system by hitting a URL. You can hook the Building Block into a build process like ANT. It is available on EDUGARAGE.

    It only works with local files.

  • Testing
  • Use JUnit to automate and setup repeatable testing. Have tests drive the implementation when possible – they should come first.

< Blackboard Academic Suite: Configurations and Considerations

Presented by: Justin Gray and Tito Holloway of Blackboard.

This session covered system administration tips for both the UNIX and Windows platforms running Bb. The presenters covered general performance tuning, SQL server, index rebuilds, accumulator statistics, etc. I believe Gray represented the Windows side while Holloway represented the UNIX side.

Gray talked about identifying null sessions (those that have ended). If those build up, you have a problem.

select count(*) from sessions where user_id=null.

Large counts could be attributed to monitoring,etc. Monitor these (we are) to make sure we aren't being burdened.

Firewalls – make sure 1433 is open. Bb doesn't recommend a firewall in between app server and DB server.

Make sure services log is rotated.

< Windows Tips

Truncate and shrink transaction logs, keep it small so efficient. If grows too large in Windows, win can crash. Do when hits 1GB.

To maximized SQL memory, use AWE Advanced Windows Extensions and set maximum and minimum values. Also, consider TCP Time_Wait Registry modification.

After each Bb upgrade, you have to put these changes back. SQL 2000 to 2005 is a good upgrade, less deadlock issues.

< UNIX and Oracle

Bb support looks at the DB first for any performance issues. Optimize your system to use as much RAM as possible. In Oracle 10g , auto shared memory management was introduced. It is controlled through sga maxsize. Oracle ASMM.

Many performance issues come from discussion board scans.

Stop and replace the analyze_my job. Blackboard puts this back after an install. This is the stats gathering job that runs with the DB. It was written for pre- 6.3 Bb versions and doesn't provide histograms. It is no good anymore. Now, we manually gather statistics. Use the oracle provided dbms_stats.gather_schema_stats package and enable table monitoring.

For the technical details, see the presentation.

Syntax is critical. This actually computes the statistics.
< Gaining Performance Maturity in your Blackboard Deployment

Presented by: Hannah Whaley and Graeme Whaley of the University of Dundee.

The presenters discussed moving from a fire fighting mode (when dealing with performance) to a mature architecture that includes resilience monitoring and plans for improvement.

There was a need to influence practice and decision making, monitor systems, look at performance resilience and recovery – multiple points of failure, and eliminate data loss. Also, create custom tools and techniques to ease administration.

< Evolution of Maturity

They described their process of evolution along this journey.

Automation, not formalized

< Case Study - University of Dundee

Dundee has 14000 students. In their initial setup in 2002, they were one of many services and were operating in fire fighting mode but had infrequent issues. In 2004, they went to two servers and were taken on board by the university. The frequency of issues was increasing dramatically.

In 2006, everything fell down, the service was unstable (3-4 times a day), no confidence by users, less enthusiasm, and management was voicing concerns. However, users were persevering, the product was an integral part of teaching, the university wanted it to succeed, and the importance of VLE was acknowledged.

There was a desperate need for change.
< Promoting Success

To promote the success they had, they published the improvements, focused on uptime (days since incident), and recorded incidents. They use tools - including a server availability checker, unique users online, and types of access. They want to visualize this in the form of graphs.

< System Setup

Increased performance is gained and for cheap using some of these methods. Bb now has a tool to create the tomcat cluster and it alters the required configuration files (InstallCluster.sh). The simple steps are:

  • bbconfig.tomcat.cluster.enable=true
  • Run InstallCluster.sh
  • Give cluster ID
  • Specify ports - shutdown, connector, listener
  • Repeat for required nodes in cluster
  • Run PushConfig
< Solaris Containers

Solaris Containers are like clustering and allow for greater utilization of hardware (more bang for buck), and is in-line with very popular "green initiatives". What is a container? It is a zone with resource control. The presenter discussed the technical details of a Solaris zone (sparse zones, whole root zones). Whole root zones have their own O/S files and different O/S from global zones (a branded zone) - it could be Solaris, Linux, etc. They chose the sparse zone because of the security level, the systems are read-only, and for the ease of upgrade. You update Java in the global zone, it gets inherited on the sparse zone.

When planning, decide on the number of zones, division of resources, configuration, installation, and cloning. Tools include pooladm and poolcfg - used to create psets and pools. The Solaris resource management is very extensive.

< Impacts and Benefits

Dundee had about 1000 more unique active users in 2007 and were able to deal with the capacity. They also had 300 more courses accessed than during the previous year. There were no issues. They did some graphing and noticed some unexpected peaks. They found more usage on Tuesday. They also found more users on Sunday as opposed to Saturday.

  • Benefits
  • They have seen increased usage, and have built in scalability. They now give accounts to 15000 applicants (My Dundee) a year. They have no issues with this at all. They have coupled with the police to do forensic analysis (body identification for the Tsunami). They also have decreased risks with Building Block deployment (offline production server), minimize server crashes, and minimize collateral damage. This accomplishment also possibly warranted an assistant.

    If there is damage in tomcat, clustering helps.

    The offline production application server allows for Building Block deployment, for testing in production. They also have a read-only production system, 365 day planned uptime, and more flexible upgrades. This allows for the 365 day uptime. They can't upload to the read-only system but it does allow them to access the data they already have and it allows for flexible for upgrades because users can still have access.

    Perhaps Cal Poly Pomona needs more formalized roles.
< The Future

The Sun T2000 has been very successful and the Sun T5120 better. They also want to add resilience to NFS and database with self-replication, NetApp, increase the level of monitoring, and look to more new integrations.

Make Bb the most important thing they look after.
< How To Write Crap in 1000 Seconds

Presented by: Wim Machiels and Pieter Vandepitte, Software Architects from Katholieke Universiteit Leuven.

The presenters are lead developers at Toledo KULeuven. They have two environments serving K12 and higher education. The inspiration for this session came from a cooking show – cook a meal in 1000 seconds (two funny guys). They found that it is impossible though to make a Building Block in 1000 seconds. They also discussed how to optimize your development lifecycle with Maven from Apache.

< Maven

Maven is a project management and comprehension tool. It is based on POM (Private Object Model). It manages a project's build, reporting, and documentation, all from a central source. This started from the Jakarta Turbine project which had problems integrating things together – hence Maven was born. Maven's objectives are to build projects easily and in a uniform way, handle project information, and provide guidelines for best practices.

Maven has uses pom.xlm and non-pom.xml files. The POM file contains all project configuration and information and has four parts. The parts are information, build settings (source, target folders, plugins, report plugins), project information (metadata – developers, description of project), environment settings (repositories – where to find dependent projects, subversion servers, and CVS servers).

The non-project configuration contains mirrors, proxies, security & deployment information, and remote repositories (per user or per Maven). There are internal repositories – local or remote, and a Maven plugin to deploy.

< Blackboard Maven Project

Blackboard has a Maven project. There is no tomcat manager available, no automated deployment, version number issues, and undocumented manifest permissions. There is one new Building Block available. Bb Maven is available on OSCELOT.

< Background Tasks and Building Blocks

Presented by: Jeff Johnson and Eric Denman of Blackboard.

This presentation covered background tasks and how one can utilize them. Typically, one might use a cron job and shell script to perform a regular task. Johnson and Denman provided a means to do something similar using a Java task.

Eric Denman provided an introduction and the basic Java Thread for creating a simple background task. Perhaps you need a recurring task (status), or have a process intensive task. Tasks are useful for that.

There are two options, explained below.

< Option - Basic Java Thread

This option is easy to code, simple to setup, and has the flexibility of task handling. There are no third party dependencies (not a large war file). You have to be careful with synchronization (communication between threads) - avoiding deadlocks. Advanced scheduling is more complex and more difficult.

Example for Bb Sync:

Use LinkblockinQueue for queue synchronization. To start a new thread:

_backgroundRunnable = new BackgroundProcessingThread()

Someone criticized this as leading to other issues (performance, etc). This is a good method for simple tasks.

< Quartz

Jeff Johnson presented the information about Quartz.

Bb does a lot of reporting, pulling from SIS, gradebook, etc. Bb was executing background jobs using Building Blocks or cron jobs. Eric Denman found that messy. He introduced Quartz Framework, a job scheduling framework. It is open source. It has an advantage in that it is lightweight, scalable, and generally easy to use and configure. It has more features than a basic Java thread or timer task. You can set a cron trigger, do job management, chain jobs, provide DB persistence (load balanced), and thread pooling (standard feature to help within J2E environment).