Learn about Java framework for pen-based computing and the Livescribe Platform at SF-JUG

  • 2,565 views
Uploaded on

San Francisco Java User Group hosted an event on March 9th, 2010 with Michael Knopp and Shawn Silverman from Livescribe who talked about their Java framework for pen-based computing and the Livescribe …

San Francisco Java User Group hosted an event on March 9th, 2010 with Michael Knopp and Shawn Silverman from Livescribe who talked about their Java framework for pen-based computing and the Livescribe Platform. Truly fascinating stuff.

http://www.sfjava.org/calendar/12296429/

These are their slides.

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,565
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.
  • 2. 2
    SF JUG: March 9th2010: Welcome from Livescribe
    • Joyce Morrell: Director Livescribe Developer Program
    • 3. Maureen Keating: Program Manger Developer Program
    • 4. Michael Knopp: Lead Developer Support Engineer and Pen Applications
    • 5. Java and Livescribe: History, Current Story, Looking Forward
    • 6. The Livescribe Penlet API: Design, Maintenance, and Development
    • 7. Shawn Silverman: System and Apps Software Engineer
    • 8. API Design and Implementation: HSA, BSS
    • 9. The Event Model: Plug-in architecture to address common issues
  • 3
    A few logistics….
    • We enjoy an open conversation, please speak up at any point
    • 10. Open Developer Challenge: Closes March 13th 2010 @ 11:59pm PST
    • 11. Details at:www.livescribe.com/developer (over 10K in prizes)
    • 12. Further questions: Livescribe developer forums
    • 13. Developer Tools are free, as is Developer Registration
    • 14. Pen Emulator for Windows coming (very) soon
    • 15. Pens available at Best Buy, Target, LS online store
  • 4
    Developing Penlets, Paper Products…..
    • Developer Registration at www.livescribe.com/developer
    • 16. Eclipse Feature for Penlet Development (J2ME) + Pen Profile
    • 17. Eclipse Feature for Paper Development + Pattern License Server
    • 18. Active Community in Developer Forums with LS Moderation
    • 19. RTFM: Architecture and Paper Expertise documented
    • 20. Developer Support initiatives:
    • 21. Building out KB of tech papers and samples
    • 22. Support in Forums and developer@livescribe.com
  • History, Current, Future
    5
  • 23. Java and Livescribe: A Brief History
    2006: Demo
    2008: Launch
    2008: SDK #1
    2008: SDK #2
    2009: Paper Tool
    2009: Pattern Server
    2009: App Store
    2010: Desktop SDK
    KVM + custom API: Demonstrating extensible content on a smart pen
    Penlet Profile v0.9: Internal only, limited productization
    JavaOne 2008: Ant scripts, command line tools, limited productization
    Eclipse Feature built above internal Penlet SDK, Penlet Profile v.0.999
    Eclipse Feature for Paper Product design and code integration
    LPS with public JAX-RPC API. Unique pattern for all!
    Application Distribution model. System re-architecture + CLDC-HI
    Java wrapper of exiting PenComm Framework (data from pen)
  • 24. Java and Livescribe: Today
    • J2ME Connected, Limited Device Configuration (CLDC 1.1)
    • 25. Mobile Media API 1.2 (JSR 135)
    • 26. Livescribe Smartpen Profile v2.2
    • 27. Event management
    • 28. Stroke input
    • 29. Menu, Display, Persistent storage management
    • 30. ICR: Custom Lexicons, Custom Subsets, RegEx,HWR Events
    • 31. Multiple Penlet support and lifecycle
    • 32. All Pen Applications written in Java
    • 33. Paper Replay written against public API (95% public API)
    • 34. (5%) camera frames
    • 35. (5%) grid architecture
  • Java and Livescribe: Hello There!
    // * This Penlet displays "Hello World!" as text when activated by menu.
    public class HelloThere extends Penlet implements StrokeListener, HWRListener {
    ……
    public void activateApp(int reason, Object[] args) {
    if (reason == Penlet.ACTIVATED_BY_MENU) {
    this.label.draw("Hello world!", true);
    this.display.setCurrent(this.label);
    this.player.play("/audio/helloworld.wav");
    }
    this.context.addStrokeListener(this);
    // Prompt the user for text entry
    this.label.draw("Enter text", true);
    this.display.setCurrent(this.label);
    // Configure the ICR context
    try {
    this.icrContext = this.context.getICRContext(1000, this);
    Resource[] resources = {
    this.icrContext.getDefaultAlphabetKnowledgeResource(),
    this.icrContext.createAppResource("/icr/LEX_HelloThere.res"),
    this.icrContext.createSKSystemResource(ICRContext.SYSRES_SK_ALNUM)
    };
    this.icrContext.addResourceSet(resources);
    } catch (Exception e) { }
    context.addStrokeListener(this);
    }
    public void strokeCreated(long time, Region regionId, PageInstance page) {
    this.icrContext.addStroke(page, time); }
    public void hwrUserPause(long time, String result) {
    this.icrContext.clearStrokes(); }
    public void hwrResult(long time, String result) {
    this.label.draw("Recognized: " + result); }
    public booleancanProcessOpenPaperEvents () {
    return true; }
    ……..
  • 36. 2010 Developer Tools Roadmap
    Platform SDK Version 1.3
    -- Mac Support for Penlet Development
    -- Paper Tool for Mac
    -- Improved java documentation
    -- Improved Eclipse template sample code
    -- Bug fixes
    -- Support for Eclipse 3.5
    -- Additional functionality TBD
    Desktop SDK Version 0.7
    -- Desktop framework for querying pen applications for data packages and responses
    -- Sample Projects for supported languages (Desktop and Penlet)
    -- Support for querying pen properties
    -- Full API and architecture documentation
    -- C API with C# wrapper for SmartpenCommuncation
    -- C# API for processing stroke files
    -- C# API for reading and writing AFD files
    Desktop SDK Release Version 1.0
    -- Support for remote LS License Server queries
    -- Additional functionality TBD
    Smartpen Emulator for Windows Version 1.0
    -- 1:1 pen emulation in a Windows environment
    -- Draw, Write, and Use the emulator in the same manner as a physical pen
    -- View paper products on your computer screen and get response in real time
    -- Live debug messages in color with filtering options
    -- OLED emulation on screen
    -- Visual dynamic and static regions UI
    Desktop SDK Version 0.8
    -- Updated release of the 0.7 SDK including bug fixes and maintenance
    -- Updated documentation and samples
    Developer Content
    - Knowledge Base articles for common developer questions
    - Sample Code for multiple Livescribe Java API features
    - Advanced Sample Code introducing new Platform Features
    Platform SDK Version 1.4
    -- Java API Improvements and Bug Fixes
    -- Additional functionality TBD
    Q1’10 Q2’10 Q3’10
  • 37. Tools and System Architecture: Why Java?
    • JVM models fit the development boards and architecture in 2004
    • 38. Desire for a true platform-agnostic development environment
    • 39. AFP and AFD mapped well to Java technology
    • 40. Eclipse Features for cross-platform support
    • 41. Why KVM?
    • 42. Availability at the time, familiarity of development team
    • 43. Port to CLDC-HI required for class unloading in AppStore model
  • Early Access and Temporary is, well, forever …..
    • On the express train to obvious town ?
    • 44. Focus on Platform design moving forward
    • 45. KVM: Timing, knowledge  CLDC-HI
    • 46. API Early Access: Early access as a feedback loop  Process
    • 47. Platform development is not a given  Internal process, education
    • 48. New Platform / New Paradigms  Content, Content, Content…..
    • 49. 2010: API finalization, Platform loop closed, Content….
  • API Design and Implementation
    12
  • 50. Push vs. Pull Architecture
    • Push vs. Pull Architecture overview
    • 51. Penlets are ‘push’
    • 52. Event filtering in context of ‘push’
  • Penlet Plugins
    • Concept derived from HSS and BSA implementations
    • 53. KEY: As easy to code as penlets
    • 54. Consuming of events
    • 55. Event Objects as a solution
    • 56. Plugin Model
  • HotSpots Anywhere (aka: HSA)
    • Feature name subject to change
    • 57. Tap-and-Hold access to a specific menu item
    • 58. Requires: drawing, stroke, and tap logic
    • 59. Ah, sounds like a Plugin
  • Button Setup Support (aka: BSS)
    • Feature name subject to change
    • 60. Common functionality for dynamic button creation
    • 61. Manage storage and mapping of region ID’s
  • Prompt and Believe
    • As an input model for users
    • 62. Standard UI / Text for a common feature
    • 63. ‘Displayable’ to handle the screen UI
    • 64. Support for multiple drawing methods
  • Menuing System
    • Existing Menu framework wraps our BrowseListclass
    • 65. Supports: Creation, Display, and Management
    • 66. Utility classes and “RadioMenus”
  • Open Q&A
    19