SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
WebTools for GemStone/S
ESUG 2011, Friday, 11:00 – 11:45 am
James Foster, Sr. Member Technical Staff




                                           © 2010 VMware Inc. All rights reserved
Abstract

 GemStone/S 64 Bit includes a new goodie, WebTools, with which
    you can quickly and easily interact with a running GemStone
    system through a web browser. With WebTools you can browse
    code, view version information, view statistics, and analyze
    statmonitor files.




2
Presenter

 Software Background
    • As a junior-high student in 1971, I discovered the local university‟s computer
     center and a life-long obsession with computers began.
    • I was introduced to Smalltalk/V for the Mac in the mid-90s, and became a
     Smalltalk bigot.
    • I am on the Smalltalk Engineering team at VMware, and am a passionate
     advocate for GemStone and Seaside.
 Past Careers
    • Commercial Pilot
    • Lawyer
 Other interests
    • Economics
    • Politics
    • Religion


3
Agenda

   Existing tools
   Motivation
   Demo: WebTools in Action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




4
Agenda

 Existing tools
    • Topaz
    • Visual Statistics Display (VSD)
    • GemBuilder for Smalltalk (GBS)
    • GemTools
    • Jade




5
Topaz

 Primary GemStone/S user interface
    • Used internally to create distribution image
    • Used internally for testing and debugging
    • Recommended for batch and maintenance jobs (backups, etc.)
    • Preferred for reproducible bug reports
 Command-line driven
    • Analogous to command shell (bash): Enter command and get response
    • Run, DoIt, & PrintIt to execute Smalltalk code
 Debugger
    • View stack frames and variables
 Applicability
    • Low-level work by those comfortable with vi, emacs, and Unix
    • Less comfortable for typical Smalltalker


6
Visual Statistics Display (VSD) - 1

 Statmonitor
    • The product distribution includes statmonitor, an executable that captures
     hundreds of statistics about a running GemStone/S system
    • Statmonitor produces a text file of data (optionally compressed)
    • Recommendation that all production systems capture this data constantly
      • Allows analysis in event of crash
      • Allows comparisons over time (how does this year compare to last year?)
 VSD
    • View statistics in graphics format
    • Separate application (not part of product distribution)
    • Cross-platform
    • Templates for common issues
    • Ability to zoom, combine, etc.



7
Visual Statistics Display (VSD) - 2

 Issues
    • TCL-based application
    • Building third-party libraries on several platforms
    • Cannot run if there is a space in the executable path
    • Doesn‟t run on Windows 7
      • Actually, it just requires “XP Compatibility Mode”
    • File size limits (sometimes there is a lot of data!)
    • Font size




8
GemBuilder for Smalltalk (GBS)

 The traditional GUI-based tools
 Add-on library for client-based Smalltalk
    • Cincom Smalltalk
    • VA Smalltalk
 Various GemStone/S tools
    • Code browser
    • Debugger
    • UserProfile editor
 Limitations
    • Not free (GBS is not available for the „no-cost‟ license)
    • Requires installation and use of yet another product
    • Most updating focuses on host Smalltalk changes



9
GemTools

 Pharo-based tools for ‘GLASS’
 Various GemStone/S tools
 • Code browser
 • Debugger
 • Monticello browser
 • Metacello browser (new!)
 Limitations
 • Requires specific server-side code
 • Requires installation and use of yet another product
 • Many network round-trips to server
     • Impractical for remote (e.g., hosted) server
 • GUI is based on OB




10
Jade

 Microsoft Windows application
 • Created in Dolphin
 • Small footprint (EXE is 1.3 MB; takes ~8 MB of RAM)
 Various GUI-based tools
 • Monticello browser
 • Code browser
 • Debugger
 Avoids ‘two-object-space’ problem
 • Built with Dolphin, but not (necessary to) run in Dolphin
 Disadvantages
 • Windows-only
 • Yet another application to download and install
 • Unofficial „goodie‟


11
Agenda

   Existing tools
   Motivation
   Demo: WebTools in Action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




12
Motivation

 GUI
 Light-weight
 • Simple to install and use
 • Minimal network and CPU usage
 Cross-platform
 • Preferable with minimal effort
 Extensible
 • Allow users to enhance
 Experiment with new technology
 • Because it is fun!




13
Agenda

   Existing tools
   Motivation
   Demo: WebTools in Action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




14
WebTools

 Open web browser on http://vienna:8080/
 Explore tools




15
Agenda

   Existing tools
   Motivation
   Demo: WebTools in Action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




16
Design: Code in GemStone

 Web Server
 • One class, couple dozen methods
 • Not a generalized web server
 Serves files in $GEMSTONE/examples/www
 Returns Json for recognized methods
 • Search path for class and method to handle request
 Each ‘tool’ represented on server by subclass of Tool
 • Required class-side methods: #’displayName’ and #’description’
 • Optional class-side methods: #’fileName’ and #’sortOrder’
 • Required instance-side method: #’json’
 • Optional instance-side methods: any needed by client




17
Design: Files in the File System

 Place files in $GEMSTONE/examples/www
 Convention
 • HTML in /
 • Simple JavaScript libraries in /scripts
 • Shared style in /css
 • Complex JavaScript frameworks in /
 Each tool identifies an html file in Tool class>>#’fileName’
 • By default, use class name , „.html‟
 HTML for tool is obtained using Ajax call and then added to the
 existing document
 • Use embedded (or linked) JavaScript to add behavior
 • Use embedded (or linked) CSS to add style
 Okay to have HTML, JavaScript, and CSS in one file?

18
Why not Seaside?

 Preference for a light-weight solution
 • Development is in GemStone/S 64 Bit 3.0
 • But should be easy to port to earlier versions, including older 32-bit product
 • Seaside requires later 64-bit version
 Expect heavy use of JavaScript
 • Somewhat rigid to have server send HTML data
 • Added #’printJsonOn:’ to a handful of classes
 Fair question!
 • Desire to explore something else?
 • Show some objectivity in advocacy by occasionally choosing something else!




19
Avi Bryant on Seaside

 Smalltalk Solutions 2011
 • March 2011 in Las Vegas, Nevada, USA
 Web Architecture Changes
 • Old: Get/Post returning fat HTML file
 • Seaside offers saving state on server
 • New: Async background requests for Json
 • Stateless interaction reduces value of saving state on server
 What will Next Generation Web Framework Look Like?
 • No components, no continuations, and no canvas
 • Json builder with callbacks




20
Agenda

   Existing tools
   Motivation
   Demo: WebTools in action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




21
Adding a Configuration Report Tool

 Add ConfigurationReport class
 • Copy and edit three class-side methods from VersionReport
 • Copy and edit one instance-side method
 Add ConfigurationReport.html file
 • Copy VersionReport.html
 • Edit JavaScript
 • Edit CSS
 • Edit HTML




22
Agenda

   Existing tools
   Motivation
   Demo: WebTools in action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




23
JavaScript Lessons for a Smalltalker

 Editing in a text file vs. in an image
 Assignments & comparisons
  • = vs. :=
  • == and ===
 Closures
  • $.each(list, function(index, each) { newList.add(this * 2); });
  • list do: [:each | newList add: each].
 Scope
  • Block (curly braces) does not provide a scope
  • Scope is limited by function
 Fifty-nine (59) reserved words
  • Cannot use for temporary variables and difficult to use for instance variables
 Not tiny: Chrome has 4 processes at 20 to 150 MB each

24
Agenda

   Existing tools
   Motivation
   Demo: WebTools in action
   Design
   Demo: Adding a new tool
   JavaScript lessons
   Future




25
Future

 Current Tools
 • Code Browser: view/set breakpoints, class hierarchy, more context menus
 • Statistics: zoom, multiple per chart, AI analysis
 • Debugger: step, edit & continue
 New Tools
 • Inspector
 • Monticello
 • Metacello
 Or nothing!
 • Not an officially supported product
 • Shipping in $GEMSTONE/examples/www
 • Feedback welcome




26
Questions?

 James Foster
 • jfoster@vmware.com
 • http://programminggems.wordpress.com/




27

Mais conteúdo relacionado

Mais procurados

Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
Nuxeo
 
JavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies TodayJavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies Today
Wesley Hales
 
One drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp CaceresOne drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp Caceres
hernanibf
 

Mais procurados (20)

Nuxeo World Session: Mobile ECM Apps with Nuxeo EP
Nuxeo World Session: Mobile ECM Apps with Nuxeo EPNuxeo World Session: Mobile ECM Apps with Nuxeo EP
Nuxeo World Session: Mobile ECM Apps with Nuxeo EP
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
 
JavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies TodayJavaOne 2011 - Going Mobile With Java Based Technologies Today
JavaOne 2011 - Going Mobile With Java Based Technologies Today
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Build content centric apps with eclipse and nuxeo - ny java-sig november 2011
Build content centric apps with eclipse and nuxeo - ny java-sig november 2011Build content centric apps with eclipse and nuxeo - ny java-sig november 2011
Build content centric apps with eclipse and nuxeo - ny java-sig november 2011
 
[Webinar] Nuxeo platform 5.8 webinar
[Webinar] Nuxeo platform 5.8 webinar [Webinar] Nuxeo platform 5.8 webinar
[Webinar] Nuxeo platform 5.8 webinar
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
About javascript libraries
About javascript librariesAbout javascript libraries
About javascript libraries
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on Domino
 
One drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp CaceresOne drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp Caceres
 
Installer benchmarking
Installer benchmarkingInstaller benchmarking
Installer benchmarking
 
GateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsGateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web Apps
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUG
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG Presentation
 
CodeOne SF 2018 "Continuous Delivery with Containers: Lessons Learned"
CodeOne SF 2018 "Continuous Delivery with Containers: Lessons Learned"CodeOne SF 2018 "Continuous Delivery with Containers: Lessons Learned"
CodeOne SF 2018 "Continuous Delivery with Containers: Lessons Learned"
 

Semelhante a Web Tools for GemStone/S

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
ARTDM 171, Week 14: Multimedia on the Web
ARTDM 171, Week 14: Multimedia on the WebARTDM 171, Week 14: Multimedia on the Web
ARTDM 171, Week 14: Multimedia on the Web
Gilbert Guerrero
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp London
hernanibf
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
WSPDC & FEDSPUG
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
Code Mastery
 

Semelhante a Web Tools for GemStone/S (20)

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer
 
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyCincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
 
Cloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming CurriculumCloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming Curriculum
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1
 
Prueba ppt
Prueba pptPrueba ppt
Prueba ppt
 
Versioned Page Objects: How to handle 12 versions of web application
Versioned Page Objects: How to handle 12 versions of web applicationVersioned Page Objects: How to handle 12 versions of web application
Versioned Page Objects: How to handle 12 versions of web application
 
ARTDM 171, Week 14: Multimedia on the Web
ARTDM 171, Week 14: Multimedia on the WebARTDM 171, Week 14: Multimedia on the Web
ARTDM 171, Week 14: Multimedia on the Web
 
Html5 n css3
Html5 n css3Html5 n css3
Html5 n css3
 
Test Automation with Twist and Sahi
Test Automation with Twist and SahiTest Automation with Twist and Sahi
Test Automation with Twist and Sahi
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
Case study
Case studyCase study
Case study
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp London
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 

Mais de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mais de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Web Tools for GemStone/S

  • 1. WebTools for GemStone/S ESUG 2011, Friday, 11:00 – 11:45 am James Foster, Sr. Member Technical Staff © 2010 VMware Inc. All rights reserved
  • 2. Abstract  GemStone/S 64 Bit includes a new goodie, WebTools, with which you can quickly and easily interact with a running GemStone system through a web browser. With WebTools you can browse code, view version information, view statistics, and analyze statmonitor files. 2
  • 3. Presenter  Software Background • As a junior-high student in 1971, I discovered the local university‟s computer center and a life-long obsession with computers began. • I was introduced to Smalltalk/V for the Mac in the mid-90s, and became a Smalltalk bigot. • I am on the Smalltalk Engineering team at VMware, and am a passionate advocate for GemStone and Seaside.  Past Careers • Commercial Pilot • Lawyer  Other interests • Economics • Politics • Religion 3
  • 4. Agenda  Existing tools  Motivation  Demo: WebTools in Action  Design  Demo: Adding a new tool  JavaScript lessons  Future 4
  • 5. Agenda  Existing tools • Topaz • Visual Statistics Display (VSD) • GemBuilder for Smalltalk (GBS) • GemTools • Jade 5
  • 6. Topaz  Primary GemStone/S user interface • Used internally to create distribution image • Used internally for testing and debugging • Recommended for batch and maintenance jobs (backups, etc.) • Preferred for reproducible bug reports  Command-line driven • Analogous to command shell (bash): Enter command and get response • Run, DoIt, & PrintIt to execute Smalltalk code  Debugger • View stack frames and variables  Applicability • Low-level work by those comfortable with vi, emacs, and Unix • Less comfortable for typical Smalltalker 6
  • 7. Visual Statistics Display (VSD) - 1  Statmonitor • The product distribution includes statmonitor, an executable that captures hundreds of statistics about a running GemStone/S system • Statmonitor produces a text file of data (optionally compressed) • Recommendation that all production systems capture this data constantly • Allows analysis in event of crash • Allows comparisons over time (how does this year compare to last year?)  VSD • View statistics in graphics format • Separate application (not part of product distribution) • Cross-platform • Templates for common issues • Ability to zoom, combine, etc. 7
  • 8. Visual Statistics Display (VSD) - 2  Issues • TCL-based application • Building third-party libraries on several platforms • Cannot run if there is a space in the executable path • Doesn‟t run on Windows 7 • Actually, it just requires “XP Compatibility Mode” • File size limits (sometimes there is a lot of data!) • Font size 8
  • 9. GemBuilder for Smalltalk (GBS)  The traditional GUI-based tools  Add-on library for client-based Smalltalk • Cincom Smalltalk • VA Smalltalk  Various GemStone/S tools • Code browser • Debugger • UserProfile editor  Limitations • Not free (GBS is not available for the „no-cost‟ license) • Requires installation and use of yet another product • Most updating focuses on host Smalltalk changes 9
  • 10. GemTools  Pharo-based tools for ‘GLASS’  Various GemStone/S tools • Code browser • Debugger • Monticello browser • Metacello browser (new!)  Limitations • Requires specific server-side code • Requires installation and use of yet another product • Many network round-trips to server • Impractical for remote (e.g., hosted) server • GUI is based on OB 10
  • 11. Jade  Microsoft Windows application • Created in Dolphin • Small footprint (EXE is 1.3 MB; takes ~8 MB of RAM)  Various GUI-based tools • Monticello browser • Code browser • Debugger  Avoids ‘two-object-space’ problem • Built with Dolphin, but not (necessary to) run in Dolphin  Disadvantages • Windows-only • Yet another application to download and install • Unofficial „goodie‟ 11
  • 12. Agenda  Existing tools  Motivation  Demo: WebTools in Action  Design  Demo: Adding a new tool  JavaScript lessons  Future 12
  • 13. Motivation  GUI  Light-weight • Simple to install and use • Minimal network and CPU usage  Cross-platform • Preferable with minimal effort  Extensible • Allow users to enhance  Experiment with new technology • Because it is fun! 13
  • 14. Agenda  Existing tools  Motivation  Demo: WebTools in Action  Design  Demo: Adding a new tool  JavaScript lessons  Future 14
  • 15. WebTools  Open web browser on http://vienna:8080/  Explore tools 15
  • 16. Agenda  Existing tools  Motivation  Demo: WebTools in Action  Design  Demo: Adding a new tool  JavaScript lessons  Future 16
  • 17. Design: Code in GemStone  Web Server • One class, couple dozen methods • Not a generalized web server  Serves files in $GEMSTONE/examples/www  Returns Json for recognized methods • Search path for class and method to handle request  Each ‘tool’ represented on server by subclass of Tool • Required class-side methods: #’displayName’ and #’description’ • Optional class-side methods: #’fileName’ and #’sortOrder’ • Required instance-side method: #’json’ • Optional instance-side methods: any needed by client 17
  • 18. Design: Files in the File System  Place files in $GEMSTONE/examples/www  Convention • HTML in / • Simple JavaScript libraries in /scripts • Shared style in /css • Complex JavaScript frameworks in /  Each tool identifies an html file in Tool class>>#’fileName’ • By default, use class name , „.html‟  HTML for tool is obtained using Ajax call and then added to the existing document • Use embedded (or linked) JavaScript to add behavior • Use embedded (or linked) CSS to add style  Okay to have HTML, JavaScript, and CSS in one file? 18
  • 19. Why not Seaside?  Preference for a light-weight solution • Development is in GemStone/S 64 Bit 3.0 • But should be easy to port to earlier versions, including older 32-bit product • Seaside requires later 64-bit version  Expect heavy use of JavaScript • Somewhat rigid to have server send HTML data • Added #’printJsonOn:’ to a handful of classes  Fair question! • Desire to explore something else? • Show some objectivity in advocacy by occasionally choosing something else! 19
  • 20. Avi Bryant on Seaside  Smalltalk Solutions 2011 • March 2011 in Las Vegas, Nevada, USA  Web Architecture Changes • Old: Get/Post returning fat HTML file • Seaside offers saving state on server • New: Async background requests for Json • Stateless interaction reduces value of saving state on server  What will Next Generation Web Framework Look Like? • No components, no continuations, and no canvas • Json builder with callbacks 20
  • 21. Agenda  Existing tools  Motivation  Demo: WebTools in action  Design  Demo: Adding a new tool  JavaScript lessons  Future 21
  • 22. Adding a Configuration Report Tool  Add ConfigurationReport class • Copy and edit three class-side methods from VersionReport • Copy and edit one instance-side method  Add ConfigurationReport.html file • Copy VersionReport.html • Edit JavaScript • Edit CSS • Edit HTML 22
  • 23. Agenda  Existing tools  Motivation  Demo: WebTools in action  Design  Demo: Adding a new tool  JavaScript lessons  Future 23
  • 24. JavaScript Lessons for a Smalltalker  Editing in a text file vs. in an image  Assignments & comparisons • = vs. := • == and ===  Closures • $.each(list, function(index, each) { newList.add(this * 2); }); • list do: [:each | newList add: each].  Scope • Block (curly braces) does not provide a scope • Scope is limited by function  Fifty-nine (59) reserved words • Cannot use for temporary variables and difficult to use for instance variables  Not tiny: Chrome has 4 processes at 20 to 150 MB each 24
  • 25. Agenda  Existing tools  Motivation  Demo: WebTools in action  Design  Demo: Adding a new tool  JavaScript lessons  Future 25
  • 26. Future  Current Tools • Code Browser: view/set breakpoints, class hierarchy, more context menus • Statistics: zoom, multiple per chart, AI analysis • Debugger: step, edit & continue  New Tools • Inspector • Monticello • Metacello  Or nothing! • Not an officially supported product • Shipping in $GEMSTONE/examples/www • Feedback welcome 26
  • 27. Questions?  James Foster • jfoster@vmware.com • http://programminggems.wordpress.com/ 27