SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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 EPNuxeo
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Nuxeo
 
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 PeopleIT Arena
 
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...Paul Withers
 
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 TodayWesley Hales
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoDaniele Vistalli
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoPaul Withers
 
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 2011Nuxeo
 
[Webinar] Nuxeo platform 5.8 webinar
[Webinar] Nuxeo platform 5.8 webinar [Webinar] Nuxeo platform 5.8 webinar
[Webinar] Nuxeo platform 5.8 webinar Nuxeo
 
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 FrameworksFITC
 
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 EcosystemFITC
 
About javascript libraries
About javascript librariesAbout javascript libraries
About javascript librariesHarshal Patil
 
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 DominoFrank van der Linden
 
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 Cacereshernanibf
 
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 AppsWesley Hales
 
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...Nuxeo
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUGPaul Withers
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG PresentationDerrick Bowen
 
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"Daniel Bryant
 

La actualidad más candente (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"
 

Similar 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 WorkbenchHoward Greenberg
 
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 Sarah Dutkiewicz
 
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyCincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyESUG
 
Cloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming CurriculumCloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming CurriculumSteven Miller
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1asim78
 
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 applicationAlexandr Khotemskoy
 
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 WebGilbert Guerrero
 
Test Automation with Twist and Sahi
Test Automation with Twist and SahiTest Automation with Twist and Sahi
Test Automation with Twist and Sahiericjamesblackburn
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixPeter Nazarov
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkitPaul Jensen
 
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 ApplicationsC4Media
 
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...Malin Weiss
 
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...Speedment, Inc.
 
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 Londonhernanibf
 
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 practicesCode Mastery
 

Similar 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
 

Más 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 programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
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 RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
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 resultsESUG
 
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 6ESUG
 
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 GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
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 ModesESUG
 
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 ReportESUG
 
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 APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
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 CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
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 JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
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 TransformationsESUG
 

Más 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

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
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 textsMaria Levchenko
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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 interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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 MenDelhi Call girls
 
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 DevelopmentsTrustArc
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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 Servicegiselly40
 

Último (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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
 

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