Pharo by Example

Total Page:16

File Type:pdf, Size:1020Kb

Pharo by Example Portland State University PDXScholar Computer Science Faculty Publications and Presentations Computer Science 2009 Pharo by Example Andrew P. Black Portland State University, [email protected] Stéphane Ducasse Oscar Nierstrasz University of Berne Damien Pollet University of Lille Damien Cassou See next page for additional authors Follow this and additional works at: https://pdxscholar.library.pdx.edu/compsci_fac Let us know how access to this document benefits ou.y Citation Details Black, Andrew, et al. Pharo by example. 2009. This Book is brought to you for free and open access. It has been accepted for inclusion in Computer Science Faculty Publications and Presentations by an authorized administrator of PDXScholar. Please contact us if we can make this document more accessible: [email protected]. Authors Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, and Marcus Denker This book is available at PDXScholar: https://pdxscholar.library.pdx.edu/compsci_fac/108 Pharo by Example Andrew P. Black Stéphane Ducasse Oscar Nierstrasz Damien Pollet with Damien Cassou and Marcus Denker Version of 2009-10-28 ii This book is available as a free download from http://PharoByExample.org. Copyright © 2007, 2008, 2009 by Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet. The contents of this book are protected under Creative Commons Attribution-ShareAlike 3.0 Unported license. You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. • For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page: creativecommons.org/licenses/by-sa/3.0/ • Any of the above conditions can be waived if you get permission from the copyright holder. • Nothing in this license impairs or restricts the author’s moral rights. Your fair dealing and other rights are in no way affected by the above. This is a human-readable summary of the Legal Code (the full license): creativecommons.org/licenses/by-sa/3.0/legalcode Published by Square Bracket Associates, Switzerland. http://SquareBracketAssociates.org ISBN 978-3-9523341-4-0 First Edition, October, 2009. Cover art by Samuel Morello. Contents Preface ix I Getting Started 1 A quick tour of Pharo3 1.1 Getting started..................3 1.2 The World menu.................7 1.3 Sending messages.................8 1.4 Saving, quitting and restarting a Pharo session......9 1.5 Workspaces and Transcripts............. 11 1.6 Keyboard shortcuts................ 12 1.7 The Class Browser................ 15 1.8 Finding classes.................. 16 1.9 Finding methods................. 18 1.10 Defining a new method............... 20 1.11 Chapter summary................. 25 2 A first application 27 2.1 The Lights Out game................ 27 2.2 Creating a new Package.............. 28 2.3 Defining the class LOCell.............. 29 2.4 Adding methods to a class.............. 31 2.5 Inspecting an object................ 33 2.6 Defining the class LOGame............. 34 2.7 Organizing methods into protocols.......... 37 iv Contents 2.8 Let’s try our code................. 40 2.9 Saving and sharing Smalltalk code........... 43 2.10 Chapter summary................. 47 3 Syntax in a nutshell 49 3.1 Syntactic elements................ 49 3.2 Pseudo-variables................. 52 3.3 Message sends.................. 53 3.4 Method syntax.................. 54 3.5 Block syntax................... 55 3.6 Conditionals and loops in a nutshell.......... 56 3.7 Primitives and pragmas.............. 58 3.8 Chapter summary................. 58 4 Understanding message syntax 61 4.1 Identifying messages............... 61 4.2 Three kinds of messages.............. 63 4.3 Message composition............... 65 4.4 Hints for identifying keyword messages........ 72 4.5 Expression sequences............... 73 4.6 Cascaded messages................ 74 4.7 Chapter summary................. 74 II Developing in Pharo 5 The Smalltalk object model 79 5.1 The rules of the model............... 79 5.2 Everything is an Object............... 79 5.3 Every object is an instance of a class.......... 80 5.4 Every class has a superclass............. 87 5.5 Everything happens by sending messages........ 91 5.6 Method lookup follows the inheritance chain....... 92 5.7 Shared variables................. 98 5.8 Chapter summary................. 103 v 6 The Pharo programming environment 105 6.1 Overview.................... 106 6.2 The Browser................... 107 6.3 Monticello................... 119 6.4 The Inspector and the Explorer............ 126 6.5 The Debugger.................. 128 6.6 The Process Browser................ 137 6.7 Finding methods................. 138 6.8 Change sets and the Change Sorter.......... 138 6.9 The File List Browser............... 141 6.10 In Smalltalk, you can’t lose code........... 143 6.11 Chapter summary................. 144 7 SUnit 147 7.1 Introduction................... 147 7.2 Why testing is important.............. 148 7.3 What makes a good test?.............. 149 7.4 SUnit by example................. 150 7.5 The SUnit cook book................ 154 7.6 The SUnit framework............... 155 7.7 Advanced features of SUnit............. 158 7.8 The implementation of SUnit............. 159 7.9 Some advice on testing............... 162 7.10 Chapter summary................. 163 8 Basic Classes 165 8.1 Object..................... 165 8.2 Numbers.................... 174 8.3 Characters................... 177 8.4 Strings..................... 178 8.5 Booleans.................... 179 8.6 Chapter summary................. 181 vi Contents 9 Collections 183 9.1 Introduction................... 183 9.2 The varieties of collections.............. 184 9.3 Implementations of collections............ 186 9.4 Examples of key classes............... 188 9.5 Collection iterators................ 197 9.6 Some hints for using collections............ 201 9.7 Chapter summary................. 202 10 Streams 205 10.1 Two sequences of elements............. 205 10.2 Streams vs. collections............... 206 10.3 Streaming over collections.............. 207 10.4 Using streams for file access............. 215 10.5 Chapter summary................. 217 11 Morphic 219 11.1 The history of Morphic............... 219 11.2 Manipulating morphs............... 221 11.3 Composing morphs................ 222 11.4 Creating and drawing your own morphs........ 222 11.5 Interaction and animation.............. 226 11.6 Interactors................... 229 11.7 Drag-and-drop.................. 230 11.8 A complete example................ 232 11.9 More about the canvas............... 236 11.10 Chapter summary................. 237 12 Seaside by Example 239 12.1 Why do we need Seaside?.............. 239 12.2 Getting started.................. 240 12.3 Seaside components................ 244 12.4 Rendering XHTML................ 248 12.5 CSS: Cascading style sheets............. 254 vii 12.6 Managing control flow............... 256 12.7 A complete tutorial example............. 263 12.8 A quick look at AJAX............... 269 12.9 Chapter summary................. 272 III Advanced Pharo 13 Classes and metaclasses 277 13.1 Rules for classes and metaclasses........... 277 13.2 Revisiting the Smalltalk object model.......... 278 13.3 Every class is an instance of a metaclass......... 280 13.4 The metaclass hierarchy parallels the class hierarchy.... 281 13.5 Every metaclass Inherits from Class and Behavior ...... 283 13.6 Every metaclass is an instance of Metaclass ........ 286 13.7 The metaclass of Metaclass is an Instance of Metaclass .... 286 13.8 Chapter summary................. 288 14 Reflection 289 14.1 Introspection.................. 290 14.2 Browsing code.................. 294 14.3 Classes, method dictionaries and methods........ 297 14.4 Browsing environments.............. 299 14.5 Accessing the run-time context............ 300 14.6 Intercepting messages not understood......... 303 14.7 Objects as method wrappers............. 307 14.8 Pragmas.................... 310 14.9 Chapter summary................. 311 IV Appendices A Frequently Asked Questions 317 A.1 Getting started.................. 317 A.2 Collections................... 317 A.3 Browsing the system................ 318 A.4 Using Monticello and SqueakSource.......... 320 viii Contents A.5 Tools..................... 321 A.6 Regular expressions and parsing........... 321 Bibliography 323 Index 324 Preface What is Pharo? Pharo is a modern, open source, fully-featured implementation of the Smalltalk programming language and environment. Pharo is derived from Squeak1, a re-implementation of the classic Smalltalk-80 system. Whereas Squeak was developed mainly as a platform for developing experimental educational software, Pharo strives to offer a lean, open-source platform for professional software development, and a robust and stable platform for research and development into dynamic languages and environments. Pharo serves as the reference implementation for the Seaside web development framework. Pharo resolves some licensing issues with Squeak. Unlike previous ver- sions of Squeak, the Pharo core contains only code that has been contributed
Recommended publications
  • Liste Von Programmiersprachen
    www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35)
    [Show full text]
  • M-Explorer User's Guide
    Table of Contents M-Explorer User’s Guide Table of Contents M-Explorer User’s Guide..............................................1 Chapter 1 Using This Guide.................................................................1-1 Introduction...................................................................................................... 1-1 Key Concepts................................................................................................... 1-2 Chapter Organization .....................................................................................................1-2 Online Help ....................................................................................................................1-2 Manual Conventions ......................................................................................................1-2 Chapter 2 Introduction to M-Explorer .................................................2-1 Introduction...................................................................................................... 2-1 Key Concepts................................................................................................... 2-2 System Component Interaction......................................................................................2-2 OPC Data Access Servers.............................................................................................2-2 M-Inspector ....................................................................................................................2-2 M-Password ...................................................................................................................2-3
    [Show full text]
  • Iwork '08 Getting Started (Manual)
    Overview of iWork Tools All three iWork applications share many of the same tools. The Toolbar and Format Bar At the top of each application window, the toolbar provides controls for common tasks. Each toolbar is described in detail in the appropriate chapter in this book. You can customize the toolbar so that it contains the tools you use most often. To customize the toolbar: m Choose View > Customize Toolbar. The toolbar at the top of each window provides controls for common tasks. The Format Bar provides additional formatting tools. The Format Bar provides quick access to commonly used tools for formatting objects. If the Format Bar isn’t visible beneath the toolbar, click View in the toolbar and choose Show Format Bar to show it. 16 Preface Welcome to iWork ’08 The Inspector Window You can format all elements of your document using the panes of the Inspector window. The Inspector panes are described in detail in the user’s guides. To open the Inspector window: m Click Inspector (a blue i) in the toolbar. Click the buttons along the top to see the different Inspector panes. You can have more than one Inspector window open at a time. To open another Inspector window: m Choose View > New Inspector, or Option-click one of the buttons at the top of the Inspector window. Preface Welcome to iWork ’08 17 To see what a control does, rest the pointer over it until its help tag appears. The Media Browser This window provides quick access to all the files in your iTunes library, your iPhoto library, your Aperture library, and your Movies folder.
    [Show full text]
  • 2D Scrolling Background in Unity When Creating a Scrolling
    2D Scrolling Background in Unity When creating a scrolling background image you will use something called a Quad and convert the Sprite into a Material. This works only if the background is designed to be scrollable. The general steps are: A. Create a new Project or use an existing project. B. Import the background sprite into the project C. Convert the Sprite into a Material D. Add a Quad 3D object and resize this object to match the background and set the Material Filtering E. Resize the Camera F. Add a Scrolling Script to the Quad 1. Download the scrolling backgrounds folder that contains some background images (see link for lecture). This will contain three images, a city background image (1230x600), a space background (1782x600) and a trees background (1100x405) 2. Start Unity and choose New to create a new Project. 3. Name the project Scrolling Background and select the 2D option. 4. Create the Project. 5. In the Assets folder create two new folders named Sprites and Scripts. 6. Drag these three background images into the sprites folder. 7. Click the scrolling city background image in the Sprites folder. The Inspector window shows the properties: You are going to change the Texture Type and the Wrap mode. 8. Set the Texture Type to Default and the Wrap Mode to Repeat. 9. Scroll down in the Inspector window and click the Apply button. 10. Repeat these steps for the other two sprites. 11. Click the Game Object menu, choose 3D, and choose Quad: You want to resize the quad object so it matches the background.
    [Show full text]
  • Sindarin: a Versatile Scripting API for the Pharo Debugger
    Sindarin: A Versatile Scripting API for the Pharo Debugger Thomas Dupriez Guillermo Polito Steven Costiou Univ. Lille, CNRS, Centrale Lille, CNRS - UMR 9189 - CRIStAL, Univ. Inria, Univ. Lille, CNRS, Centrale Inria, UMR 9189 - CRIStAL Lille, Centrale Lille, Inria Lille, UMR 9189 - CRIStAL France France France [email protected] [email protected] [email protected] Vincent Aranega Stéphane Ducasse Univ. Lille, CNRS, Centrale Lille, Inria, Univ. Lille, CNRS, Centrale Inria, UMR 9189 - CRIStAL Lille, UMR 9189 - CRIStAL France France [email protected] [email protected] Abstract Studies and work on debugging acknowledge that main- Debugging is one of the most important and time consuming stream debuggers are not well adapted to several debugging activities in software maintenance, yet mainstream debuggers scenarios [3, 27, 31]. This has led to the appearance of new de- are not well-adapted to several debugging scenarios. This bugging techniques proposing to augment traditional interac- has led to the research of new techniques covering specific tive debuggers with, e.g., stateful breakpoints [4], control-flow families of complex bugs. Notably, recent research proposes aware breakpoints [5], object-centric breakpoints [10, 34], the to empower developers with scripting DSLs, plugin-based and automatic insertion of breakpoints based on dynamic execu- moldable debuggers. However, these solutions are tailored to tions [45], or declarative statements from the developer [21]. specific use-cases, or too costly for one-time-use scenarios. A line of research has also started to study scripting APIs to In this paper we argue that exposing a debugging scripting empower developers to implement debugging scripts adapted interface in mainstream debuggers helps in solving many chal- to their needs.
    [Show full text]
  • Pharo by Example
    Pharo by Example Andrew P. Black Stéphane Ducasse Oscar Nierstrasz Damien Pollet with Damien Cassou and Marcus Denker Version of 2009-10-11 ii This book is available as a free download from http://PharoByExample.org. Copyright © 2007, 2008, 2009 by Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet. The contents of this book are protected under Creative Commons Attribution-ShareAlike 3.0 Unported license. You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. • For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page: creativecommons.org/licenses/by-sa/3.0/ • Any of the above conditions can be waived if you get permission from the copyright holder. • Nothing in this license impairs or restricts the author’s moral rights. Your fair dealing and other rights are in no way affected by the above. This is a human-readable summary of the Legal Code (the full license): creativecommons.org/licenses/by-sa/3.0/legalcode Published by Square Bracket Associates, Switzerland. http://SquareBracketAssociates.org ISBN 978-3-9523341-4-0 First Edition, October, 2009.
    [Show full text]
  • Dynamic Object-Oriented Programming with Smalltalk
    Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens by sending messages > All the source code is there all the time > You can't lose code > You can change everything > You can change things without restarting the system > The Debugger is your Friend © Oscar Nierstrasz 2 ST — Introduction Why Smalltalk? > Pure object-oriented language and environment — “Everything is an object” > Origin of many innovations in OO development — RDD, IDE, MVC, XUnit … > Improves on many of its successors — Fully interactive and dynamic © Oscar Nierstrasz 1.3 ST — Introduction What is Smalltalk? > Pure OO language — Single inheritance — Dynamically typed > Language and environment — Guiding principle: “Everything is an Object” — Class browser, debugger, inspector, … — Mature class library and tools > Virtual machine — Objects exist in a persistent image [+ changes] — Incremental compilation © Oscar Nierstrasz 1.4 ST — Introduction Smalltalk vs. C++ vs. Java Smalltalk C++ Java Object model Pure Hybrid Hybrid Garbage collection Automatic Manual Automatic Inheritance Single Multiple Single Types Dynamic Static Static Reflection Fully reflective Introspection Introspection Semaphores, Some libraries Monitors Concurrency Monitors Categories, Namespaces Packages Modules namespaces © Oscar Nierstrasz 1.5 ST — Introduction Smalltalk: a State of Mind > Small and uniform language — Syntax fits on one sheet of paper >
    [Show full text]
  • Preserving Instance State During Refactorings in Live Environments Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse
    Preserving Instance State during Refactorings in Live Environments Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse To cite this version: Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse. Preserving In- stance State during Refactorings in Live Environments. Future Generation Computer Systems, Else- vier, In press, 10.1016/j.future.2020.04.010. hal-02541754 HAL Id: hal-02541754 https://hal.archives-ouvertes.fr/hal-02541754 Submitted on 14 Apr 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Preserving Instance State during Refactorings in Live Environments Pablo Tesonea,b,∗, Guillermo Politoc, Luc Fabresseb, Noury Bouraqadib, Stéphane Ducassea aInria Lille-Nord Europe, 40 Avenue Halley, Villeneuve d’Ascq, France bUnité de Recherche Informatique et Automatique, IMT Lille Douai, 764 Boulevard Lahure, Douai, France cUniv. Lille, CNRS, Centrale Lille, Inria, UMR 9189 - CRIStAL - Centre de Recherche en Informatique Signal et Automatique de Lille, F-59000 Lille, France Abstract An important activity of software evolution consists in applying refactorings to enhance the quality of the code without changing its behaviour. Having a proper refactoring tool is a must-to in any professional development environment.
    [Show full text]
  • Shape Data Analysis Using Qushape
    SHAPE DATA ANALYSIS USING QUSHAPE 1. INTRODUCTION QuShape is a comprehensive user-friendly software package designed to perform fully automated analysis of SHAPE experimental data. QuShape requires no other software to fully analyze raw experimental capillary electrophoresis data. QuShape can be run in an automatic mode with default analytical procedures but contains an array of alternative algorithmic procedures and parameter controls that the user can apply if not satisfied with the default results. 2. GRAPHIC USER INTERFACE The user controls QuShape via a graphic interface. This interface includes the main Data View window, the Tool Inspector window, and the Script Inspector window. Results of every operation are plotted in the Data View window, allowing the user to monitor the quality of each data processing step. The user can vary the graphic display format via a set of control buttons. At each data processing step, the Tool Inspector window offers the user additional analytical tools that can be employed if the user is not satisfied with the results of the automatic procedure. 1 2.1. MAIN MENU AND TOOLS BAR Four groups of icons are found at the top of the QuShape screen: File-handling, Channels, Figure Options, and Split Channels. File-handling icons: These icons allow users to create or save projects. New Project – Click this icon to create a new project. Open Project – Click this icon to open an existing project. Save Project – Click this icon to save the project. Save Project As – Click this icon to save the project under a different name. Channels icons: Six differently colored label widgets relate colors of the lines in the Data View window to specific data channels (these labels refer to the two-capillary approach used to resolve the chemical probing experiment data).
    [Show full text]
  • Nested Class Modularity in Squeak/Smalltalk
    Springer, Nested Class Modularity in Squeak/Smalltalk Nested Class Modularity in Squeak/Smalltalk Modularität mit geschachtelten Klassen in Squeak/Smalltalk by Matthias Springer A thesis submitted to the Hasso Plattner Institute at the University of Potsdam, Germany in partial fulfillment of the requirements for the degree of Master of Science in ITSystems Engineering Supervisor Prof. Dr. Robert Hirschfeld Software Architecture Group Hasso Plattner Institute University of Potsdam, Germany August 17, 2015 Abstract We present the concept, the implementation, and an evaluation of Matriona, a module system for and written in Squeak/Smalltalk. Matriona is inspired by Newspeak and based on class nesting: classes are members of other classes, similarly to class instance variables. Top-level classes (modules) are globals and nested classes can be accessed using message sends to the corresponding enclosing class. Class nesting effec- tively establishes a global and hierarchical namespace, and allows for modular decomposition, resulting in better understandability, if applied properly. Classes can be parameterized, allowing for external configuration of classes, a form of dependency management. Furthermore, parameterized classes go hand in hand with mixin modularity. Mixins are a form of inter-class code reuse and based on single inheritance. We show how Matriona can be used to solve the problem of duplicate classes in different modules, to provide a versioning and dependency management mech- anism, and to improve understandability through hierarchical decomposition. v Zusammenfassung Diese Arbeit beschreibt das Konzept, die Implementierung und die Evaluierung von Matriona, einem Modulsystem für und entwickelt in Squeak/Smalltalk. Ma- triona ist an Newspeak angelehnt und basiert auf geschachtelten Klassen: Klassen, die, wie zum Beispiel auch klassenseitige Instanzvariablen, zu anderen Klassen gehören.
    [Show full text]
  • “Develop in Pharo, Deploy in Gemstone” with Seaside Johan Brichau
    10 Years later “develop in Pharo, deploy in Gemstone” with Seaside Johan Brichau - [email protected] Yesplan ? Web Application (SaaS) to manage an event venue Yesplan ? Web Application (SaaS) to manage an event venue Yesplan ? Web Application (SaaS) to manage an event venue Yesplan ? Web Application (SaaS) to manage an event venue - jQuery - jQuery-UI - KnockoutJs - D3.js - Datatables - Jasper reports - …. Yesplan ? Web Application (SaaS) to manage an event venue - jQuery - jQuery-UI - KnockoutJs - D3.js - Datatables - Jasper reports ReactJs - …. Yesplan ? • Founded by aa. and arts centre • Over 200 customers (in BE, NL, Lux, CH, UK, NO, DK, FI) • Currently 25 employees: • 5 software engineers, 1 dev ops engineer, 1 interaction designer and 1 report engineer • sales, account management, marketing, support, • Emphasis on making an application that not only works, but also is enjoyable to use Yesplan 0.1 (2009) • Yesplan calendar built using Seaside’s “full page rendering” in-place editing info bubbles title • Standard ‘component calls component’ implementation group • A lot of jQuery for animations and ajax updates group visualization • Javascript universe was “big mess” (excluding notable exceptions) • More errors than functionality in most ‘plugins’ • Bad performance and horrible engineering • Pharo + GoodsDB in production Yesplan 1.0 (2010) • Yesplan calendar with incremental ajax updates • A lot of jQuery-based scripts • SVG animations using generated Javascript • Develop in Pharo, deploy in GemStone • Pharo for development • GemStone
    [Show full text]
  • ESUG 2012 Report
    CS21 and ESUG 23, Brescia, July 13th - 17th, 2015 1 CS21 and ESUG 23, Brescia, July 13th - 17th, 2015 This document contains my report of the ESUG conference in Brescia, July 13th - 17th, 2015 (and brief remarks on the Camp Smalltalk on the Sunday before it). As there were parallel tracks, I could not attend all talks. At the end, I also report a 2015 UK Smalltalk User Group meeting I attended. Style ‘I’ or ‘my’ refers to Niall Ross; speakers (other than myself) are referred to by name or in the third person. A question asked in or after a talk is prefixed by ‘Q.’ (sometimes I name the questioner; often I was too busy noting their question). A question not beginning with ‘Q.’ is a rhetorical question asked by the speaker (or is just my way of summarising their meaning). Author’s Disclaimer and Acknowledgements These reports give my personal view. No view of any other person or organisation with which I am connected is expressed or implied. The talk descriptions were typed while I was trying to keep up with and understand what the speakers were saying, so may contain errors of fact or clarity. I apologise for any inaccuracies, and to any participants whose names or affiliations I failed to note down. If anyone spots errors or omissions, email me and corrections may be made. My thanks to the conference organisers and the speakers whose work gave me something to report. My own talk is written up at much greater length than the others. Venue The accommodation was in old town of Brescia (called Brixia in Roman times).
    [Show full text]