SlideShare a Scribd company logo
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
Ad

More Related Content

What's hot (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
Nuxeo
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
Nuxeo
 
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
IT 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 Today
Wesley Hales
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
Daniele Vistalli
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul 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 2011
Nuxeo
 
[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 Frameworks
FITC
 
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
FITC
 
About javascript libraries
About javascript librariesAbout javascript libraries
About javascript libraries
Harshal 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 Domino
Frank 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 Caceres
hernanibf
 
Installer benchmarking
Installer benchmarkingInstaller benchmarking
Installer benchmarking
Mallikarjuna G D
 
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
Wesley 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 UKLUG
Paul Withers
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG Presentation
Derrick 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
 
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
Nuxeo
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
Nuxeo
 
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
IT 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 Today
Wesley Hales
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
Daniele Vistalli
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul 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 2011
Nuxeo
 
[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 Frameworks
FITC
 
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
FITC
 
About javascript libraries
About javascript librariesAbout javascript libraries
About javascript libraries
Harshal 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 Domino
Frank 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 Caceres
hernanibf
 
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
Wesley 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 UKLUG
Paul Withers
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG Presentation
Derrick 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
 

Similar to 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
Howard 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 Advocacy
ESUG
 
Cloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming CurriculumCloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming Curriculum
Steven Miller
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1
asim78
 
Prueba ppt
Prueba pptPrueba ppt
Prueba ppt
Ulises Torelli
 
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
Alexandr 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 Web
Gilbert Guerrero
 
Html5 n css3
Html5 n css3Html5 n css3
Html5 n css3
Jindal Gohil
 
Test Automation with Twist and Sahi
Test Automation with Twist and SahiTest Automation with Twist and Sahi
Test Automation with Twist and Sahi
ericjamesblackburn
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
Peter Nazarov
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
Paul Jensen
 
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
Mohanadarshan Vivekanandalingam
 
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
C4Media
 
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.
 
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
 
Case study
Case studyCase study
Case study
karan saini
 
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
 
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
 
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 Advocacy
ESUG
 
Cloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming CurriculumCloud Computing in Systems Programming Curriculum
Cloud Computing in Systems Programming Curriculum
Steven Miller
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1
asim78
 
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
Alexandr 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 Web
Gilbert Guerrero
 
Test Automation with Twist and Sahi
Test Automation with Twist and SahiTest Automation with Twist and Sahi
Test Automation with Twist and Sahi
ericjamesblackburn
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
Peter Nazarov
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
Paul 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 Applications
C4Media
 
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.
 
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
 
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
 
Ad

More from ESUG (20)

Words words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetitionWords words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetition
ESUG
 
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpalShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ESUG
 
Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"
ESUG
 
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
ESUG
 
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline examplePharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
ESUG
 
Show us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cardsShow us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cards
ESUG
 
Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...
ESUG
 
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and MetamodelsModest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
ESUG
 
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk PlatformGLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
ESUG
 
Smalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM ExperimentationSmalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM Experimentation
ESUG
 
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
ESUG
 
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
ESUG
 
Pyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific EditorPyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific Editor
ESUG
 
Intentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic LanguagesIntentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic Languages
ESUG
 
MethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control LibraryMethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control Library
ESUG
 
Runtime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code TranspilingRuntime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code Transpiling
ESUG
 
Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024
ESUG
 
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
ESUG
 
gt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkitgt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkit
ESUG
 
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
ESUG
 
Words words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetitionWords words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetition
ESUG
 
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpalShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ESUG
 
Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"
ESUG
 
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
ESUG
 
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline examplePharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
ESUG
 
Show us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cardsShow us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cards
ESUG
 
Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...
ESUG
 
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and MetamodelsModest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
ESUG
 
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk PlatformGLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
ESUG
 
Smalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM ExperimentationSmalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM Experimentation
ESUG
 
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
ESUG
 
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
ESUG
 
Pyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific EditorPyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific Editor
ESUG
 
Intentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic LanguagesIntentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic Languages
ESUG
 
MethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control LibraryMethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control Library
ESUG
 
Runtime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code TranspilingRuntime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code Transpiling
ESUG
 
Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024
ESUG
 
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
ESUG
 
gt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkitgt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkit
ESUG
 
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
ESUG
 
Ad

Recently uploaded (20)

Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Hands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordDataHands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordData
Lynda Kane
 
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your UsersAutomation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Lynda Kane
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Buckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug LogsBuckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug Logs
Lynda Kane
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko
Fwdays
 
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
Lynda Kane
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Salesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docxSalesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docx
José Enrique López Rivera
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Hands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordDataHands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordData
Lynda Kane
 
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your UsersAutomation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Lynda Kane
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Buckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug LogsBuckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug Logs
Lynda Kane
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko
Fwdays
 
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
Lynda Kane
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Salesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docxSalesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docx
José Enrique López Rivera
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 

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 [email protected] • http://programminggems.wordpress.com/ 27