glamoroustoolkit v1.0.1815

  • Glamorous Toolkit
    • About this book
    • Get started
    • A short history of Glamorous Toolkit
    • How to give feedback and contribute
    • About this version of Glamorous Toolkit
  • A tour of the environment
    • GT in 7' videos
      • Getting started with GT in 7'
      • Exploring the GitHub REST API in 7'
      • Inspecting objects with custom views in 7'
      • Understanding Lepiter in 7'
      • How to find stuff in GT in 7'
      • Smalltalk Syntax in 7'
      • How to set up a GT GitHub repo in 7'
    • A single starting point for scripting, linking and documenting
    • Handling objects through custom views
    • Managing code with Coder
    • Searching for code, documents and objects in general
    • Molding the environment
    • Basic shortcuts
  • Case studies of Moldable Development
    • Working with a REST API: the GitHub case study
    • Browsing the OpenAPI description of GitHub
    • Exploring GitHub through GraphQL
    • Exploring your Twitter data
    • Working with AT Protocol
    • Explaining Andrej Karpathy's tokenization explanation
    • Editing Rust sources through the Language Server Protocol
    • Editing Python sources through the Language Server Protocol
    • Inspecting Python objects with custom inspectors
      • Movies Collection demo in GT
      • Movies Collection demo in GemStone
    • Adding gtViews to the existing Python pandas DataFrame and Series class
    • Exploring the execution of a Python LampSort algorithm
    • Working with Python Bridge objects
    • Analyzing COBOL: the AWS CardDemo case study
    • Analyzing JavaScript React Native: the Zooniverse case study
    • Analyzing Ruby on Rails: the Whitehall case study
    • Analyzing feature toggles from a Python project: the Open edX case study
    • Analyzing Spring Boot RESTful web services
    • Visualizing yarn.lock files using JavaScript and Pharo
    • Working with the PostgreSQL relational database
    • Executable domain-driven design: the Ludo game case study
    • Executable domain-driven design: documenting a price model
    • Rewriting Rust code using the rewrite snippet
    • Transforming Delphi code into C# (at syntax level)
    • Using d3 to create views for local objects
    • Building an LLM assistant for editing blog posts
    • Adding the GT book to a LLM to answer questions about GT
    • Glamorous Toolkit as a case study
      • Quantifying the need for custom tools
      • Explaining the squarified treemap algorithm
      • Explaining the text editor's selection mechanism
      • Scripting an elaborate user interface scenario
      • Optimizing the links in the book for first time readers
      • Testing user interactions: the Spotter case study
      • Detecting the correct positioning of a dropdown
      • Explaining the context menu and dropdown algorithm
      • Identifying an editor bug by inspecting wrapped Rust objects
    • PetitParser SPL case study
      • PetitParser SPL case study slideshow
      • SPL
      • Parsing SPL tokens
      • Debugging SPL grammar rules
      • Extracting a class from a PetitParser script
      • Testing a PetitParser class
      • Using PetitParser to build an AST
      • Implementing an SPL interpreter
      • SPL Facade
  • Tutorials
    • A tour through Pharo
      • Pharo architecture
      • A gentle introduction to Pharo Smalltalk
        • Smalltalk method syntax on a postcard
        • Understanding Smalltalk message syntax
        • Understanding Smalltalk method syntax
        • Understanding Pharo built-in data types
        • Understanding Smalltalk control structures
        • Working with collections in Pharo
        • Implementing a stack machine
      • A gentle introduction to classes and methods in Smalltalk
      • Introducing test examples and code cleaning
      • Understanding self and super
      • Understanding Smalltalk classes and metaclasses
      • Understanding reflection
        • What is Reflection?
        • What is Introspection?
          • Querying objects
          • Querying classes and methods
          • Querying the runtime
        • What is Intercession?
          • Compiling and performing code
          • Understanding object pointers
          • Overriding doesNotUnderstand:
          • Anonymous classes
          • Method wrappers
      • Smalltalk history
    • Querying Pharo code with GT filters
    • Rewriting Pharo code
    • Drawing graphs with Mondrian by example
    • Building treemaps
    • Example-driven development by example
    • Example-driven development tutorial
      • Warmup: understanding the Money classes
      • Modeling a Concrete Price
      • Modeling discounted prices
    • Memory Game
      • Implementing the Memory Game model
      • Implementing the Memory Game model logic
      • Building the Memory Game graphical elements with Bloc
      • Playing the Memory Game
      • Building the Memory Game graphics directly with the Sparta canvas
    • Ludo Game
      • Implementing a Ludo Game as a moldable development exercise
        • Smalltalk Introductory lecture
        • Ludo Exercise 5
        • Ludo Exercise 6
      • Creating the basic Ludo Board model
      • Adding simple list views for Ludo Players and Squares
      • Placing tokens on the Ludo Board
      • Creating the Ludo Board view
      • Implementing the Ludo Die in the Playground
      • Introducing rules to the Ludo Board Game
      • Adding a feedback region to the Ludo Board
      • Tracking the state of the Ludo game play
      • Testing the Ludo corner cases
      • Ludo Refactoring — merge Game and Board
      • Refactoring scenario with Ludo
      • Ludo Game with first-class moves
      • Fixing Ludo autoplay and storeStrings
    • Parsing with PetitParser2
    • Logging with Beacon
    • Traversing graphs with DeepTraverser
    • Loading and managing code configurations with Metacello
    • Querying SmaCC abstract syntax trees (ASTs)
    • Programatically generating accessors for a class
    • Profiling Glamorous Toolkit
      • Profiling the synchronous execution of stylers using message tally
      • Profiling the styling of a method using the virtual machine telemetry
      • Profiling the user interface for a method styling
  • Explanations
    • Moldable Development
      • Explainable software
      • Developers spend most of their time figuring systems out
      • The contextual nature of software and the importance of tools
      • Moldable Development roles: Facilitator and Stakeholder
        • Facilitator
        • Stakeholder
      • The Moldable Development Environment
      • Mapping Moldable Development
      • Example-driven
      • What is the difference between Moldable Development and ...
      • Moldable Development patterns
        • Explainable System
        • Tooling patterns
          • Moldable Tool
          • Contextual Playground
          • Custom View
          • Custom Search
          • Custom Action
          • Composed Narrative
        • Modeling patterns
          • Moldable Object
          • Example Object
          • Moldable Data Wrapper
          • Moldable Collection Wrapper
        • Process patterns
          • Project Diary
          • Tooling Buildup
          • Blind Spot
          • Simple View
          • Throwaway Analysis Tool
    • Glamorous Toolkit and Pharo
      • A code size analysis
    • One rendering tree
      • Geometry, visual and layout bounds explained
      • How Mondrian relates to Bloc
  • Moldable Development exercises
    • Implementing a moldable Stack Machine
    • Exploring IMDB movie lists
    • Exploring a publications database
    • Implementing a Sudoku solver (open-ended)
  • How to ...
    • How to get started with Moldable Development
    • How to troubleshoot GT
      • What to do when GT hangs?
      • How do I recover my work after a crash?
      • What to do if GT is becomes slow and unresponsive?
      • I can't load or commit to repos. What's wrong?
      • What can I do if my repository is detached and I cannot commit my changes?
      • What should I do if I get an error during Lepiter reload?
      • How do I add a Lepiter database to an existing repo?
      • How to guard against inifinte loops?
    • How to work with Lepiter
      • How to get started with Lepiter (FAQ)
        • How to create a Lepiter page?
        • Where are my pages stored?
        • How do I add new snippets?
        • How do I move snippets around within a Lepiter page?
        • How to format text in Lepiter pages?
        • How do I rename a Note?
        • How do I find my pages?
        • How do I move a page to a different database?
        • How do I search within a Lepiter page?
        • How do I create a Table of Contents for a Lepiter database?
        • How do I move a bunch of snippets from one page to another?
      • How to measure the size of the current knowledge base
      • How to visualize the current knowledge base
      • How to snippets for managing the default logical database
        • How to compute the local sync database status for the default database
        • How to reload the content of the default logical database
        • How to programatically register a new database to a logical database
        • How to load another properties file in the default logical database
        • How to replace the default logical database instance
      • How to fix Lepiter loading errors
    • How to get started with Coder (FAQ)
      • How to create a new class?
      • How to add a method to a class?
      • How to add a slot to a class?
      • How to change the package or subpackage of a class?
      • How to rename a class or method?
      • How to evaluate some code?
      • How to search for methods?
      • How to duplicate a class
    • How to close all open debugger windows
    • How to browse examples
    • How to work with GitHub
      • How to configure Git username and email address
      • How to deal with "Detached Working Copy" message
      • How to configure GitHub credentials
        • How to configure GitHub SSH key authentication
        • How to configure GitHub token authentication
        • How to make GitHub credentials persistent
      • How to set up a new GitHub repo
        • How to set up a baseline
        • How to create a GitLab project
      • How to set up a home section
      • Using Libgit-CLI as an alternative to Libgit2 FFI in Iceberg
      • How to contribute to Glamorous Toolkit through a GitHub pull request
      • Another way to contribute to Glamorous Toolkit through a GitHub pull request
      • How to produce signed and verified GitHub commits
      • How to use the Pure Git tool
    • How to ... graphics related
      • How to change the default fonts in GT
      • How to scale the UI
      • How to take a screenshot
      • How to set the extent of the current window
      • How to create a standalone app
      • How to show a picture from a URL
      • How to properly initialize context menus, dropdowns, and tooltips
      • How to set the default weight of a pane in Pager
      • How to open the Morphic World
    • How to parse and manipulate other languages
      • How to parse sources in different languages
      • How to translate an ANTLr parser into SmaCC
      • How to rewrite code in other languages
    • How to work with the file system
    • How to work with a remote code synced image
    • How to execute external commands
      • How to work with external child processes
      • How to stream output from an external child process to the UI
      • How to extract meta information using ExifTool
      • How to display MacOS native notifications
    • How to log Zinc events using Beacon
    • How to explore objects pinned in memory
    • How to get the default finalization registry
    • How to configure search filters in Spotter extensions
    • How to change the memory settings during a computation
    • How to snippets for Glamorous Toolkit development
      • How to update the content of all opened GtWorld instances
      • How to find where a database is stored on disk
      • How to measure the performance of delivering remote announcements
      • How to profile PharoLink remote calls
      • How to debug issues related to the code index
      • How to clone, load and release GlamorousToolkit from sources for development
        • How to clone GlamorousToolkit repositories for development
        • How to load Glamorous Toolkit code for development
        • How to create a Glamorous Toolkit release for development
      • How to create a new release for the GT Vm from a new release of the Pharo Vm
      • How to debug the examples command line runner in image
      • How to investigate performance of stylers in coder
      • How to programatically explore the matching done by the substrings filter
      • How is the interrupt logic using primary+. working
    • How to install Glamorous Toolkit
      • How to use gt-installer
      • How to build a development version of Glamorous Toolkit
      • How to install Glamorous Toolkit with Nix
      • How to use a startup script
    • How to view the startup and shutdown lists
    • How to parse Loader and Cloner logs
    • How to use an ICP callback in a web view
    • How to pages related to the virtual machine
      • How to get the operating system name
      • How to limit the old space size in the VM
    • How to setup the LLM integration
  • Components
    • Beacon
      • Logging VM messages using Beacon
        • Accessing VM log messages using Beacon
        • Printing VM log messages to the console
      • An example of moldable logging using Beacon
    • Coder
      • Programmatic code evaluation
      • Setting different behavior for cursor word movement and double click selection
    • Completer
    • Examples
      • Running checks as part of the development cycle
    • Famix
    • Filters
    • Futures, Promises & Streams
      • Futures
      • Promises
        • Promise then:, asyncThen:, and then:otherwise: usage
      • Running futures at user background priority
      • Streams
    • Debugger
      • Extending the debugger through moldable exceptions
        • How to implement a moldable exception
        • Configuring moldable exceptions
        • Examples of moldable exceptions
          • Examples of assertion failures comparing objects
        • Usages of moldable exceptions in Glamorous Toolkit
          • Zinc debugging extensions
    • DeepTraverser
    • Graphical stack
      • Driller
      • Sparta
      • Bloc
        • Bloc Elements
          • Bloc Visual Properties
            • Element Border
        • Layouts explained
        • Layout constraints
        • Layout resizers
      • Brick
        • Asynchronous widgets & futures
        • Widgets
          • Accordion
          • Text editor
            • Editor word classifiers
          • Lists
          • Button
            • Playing with label aptitudes for buttons
            • Learning how button model works
            • Building a custom button appearance
          • Breadcrumb
          • Checkbox
          • Dropdown
          • Pager
      • Scripter
        • Scripter creation
        • Scripter actions
    • gt4gemstone
      • gt4gemstone server
        • gt4gemstone server installation
          • Downloading the gt4gemstone release
          • Directly installing GemStone and loading gt4gemstone for development
            • Directly loading gt4gemstone into a Rowan stone for development
          • Manually installing gt4gemstone into a GemStone extent
            • Loading GT server code into a Rowan stone
            • Loading GT server code into a non-Rowan stone
            • Exporting GT server code for loading in a non-Rowan stone
          • Configuring GemStone on MacOS
          • Checking the loaded gt4gemstone version inside a GemStone extent
      • Connecting to the Gemstone repository
        • Setting up the Gt4Gemstone connection
        • Managing the Gt4Gemstone server connection
        • Using Gt4Gemstone to inspect objects
      • GemStone code synchronisation
      • Geolife GPS trajectory dataset example
      • How to profile GemStone remote calls
      • Investigating GemStone operation performance
      • Working with the GemStone transcript
      • Working with GemStone features
      • How to pages related to GemStone
        • How to programatically evaluate code in GemStone
        • How to work with styled text in GemStone
        • How to reset the GemStone connectors in default registry
        • How to get the content of the current gem log file
        • How to get a class object starting from its name (asClass equivalent)
        • How to get methods from a class in GemStone by selector
        • How to work with temporary objects in a session
        • How to check if a GemStone session was created from Glamorous Toolkit
        • How to for gt4gemstone development
          • How to - snippets with multiple halts for resume in the GemStoneDebugger
          • How to - managing remote bindings in a GemStone snippets
      • gt4gemstone development
        • GemStone session registry and manager user interface
        • Debugging remote GemStone views
        • Improving the performance of the GemStone inspector
        • WireEncoding in GemStone
        • Porting GT code to GemStone
    • gt4llm
      • Chatting with an LLM in Ollama, Anthropic, Gemini, or OpenAI
      • Handling custom instructions using assistants
      • Adding custom tools to assistants
      • Working with images and LLMs
      • Managing LLM provider connections and setting the default
      • gt4openai: working with OpenAI
        • Adding an OpenAI API key
        • Working with the OpenAI API client
        • OpenAI assistants
        • OpenAI providers
        • File search in the response provider
        • Embeddings in OpenAI
          • Generating embeddings
          • Using the embedding registry
        • Fine-tuning
          • Creating a fine-tuned model
          • Creating a dataset for fine-tuning
      • gt4ollama: working with Ollama
        • Working with the Ollama API client
        • Embeddings in Ollama
          • Generating embeddings using Ollama models
        • Using modelfiles
        • Using structured outputs
      • gt4anthropic: Working with Anthropic
        • Adding an Anthropic API key
        • Working with the Anthropic API client
      • gt4gemini: Working with Gemini
        • Adding a Gemini API key
        • Working with the Gemini API client
      • LLM utilities
        • Visualizing tokenization
    • gt4magritte
      • How to define a Magritte form field
      • How to build a Magritte form
    • Inspector
      • Inspector views
      • Inspector actions
    • Lepiter
      • Lepiter snippets
        • Text snippet
        • Pharo snippet
        • Example snippet
        • Element snippet
        • PharoLink snippet
        • JavaScript snippet
          • JavaScript debugger setup & example
        • Python snippet
          • Python Debugger Setup & Example
        • GraphQL snippet
        • Shell snippet
        • Wardley Map snippet
        • Rewrite snippet
      • Class comments as live documents
      • Multilanguage notebook
      • Extending Lepiter with custom snippets and annotations
        • How to implement a new snippet class
      • Announcements for changes in a Lepiter knowledgebase
    • Loader
      • Example of parsing a Cloner and Loading log for Glamorous Toolkit
    • Phlow
      • How to test phlow views
    • PetitParser
    • Presenter
    • Releaser
      • Profiling the execution of a release
        • Example of parsing a Releaser log for Glamorous Toolkit
    • Remote
      • JSLink
      • PharoLink
        • PharoLink - Start manual server and client
      • PythonBridge
        • Getting started with the Python Bridge
        • Basic usage of the Python Bridge
        • Python Bridge troubleshooting
        • Using an independent Python Bridge instance
        • Running the PythonBridge in another directory
        • Using an externally started, already running Python Bridge instance
        • Connecting to a remote Python Bridge instance
        • Using an alternative Python Bridge controller process
        • Python Bridge cleanup
        • Debugging remote Python views
        • PythonBridge custom views for pandas DataFrame and Series
        • Working with Python source files
      • RemoteRunner
        • Remote Runner: start manual runner and workers
        • RemoteRunner: worker startup scripts
        • Remote Runner: checks, examples and tests
      • Inspecting remote objects using Remote Phlow
        • Using a simulation for inspecting objects
        • Specifications and Views in Remote Phlow
    • SmaCC
      • SmaCC scopes
    • Spotter
      • Molding Spotter searches
      • Debugging exceptions in Spotter processors
      • Converting old Spotter searches to use new Spotter
    • Transcript
    • Visualizer
      • Mondrian
      • Treemap
      • Plotter
      • Connector
    • World
  • Technical Aspects
    • Architectural report
      • Architectural report for Glamorous Toolkit development
      • Managing dependencies constraint
      • Ensuring repositories have a Jenkins file
      • Ensuring repositories have a .gitattributes file
      • Pages containing missing references - allowed failures
    • Analysing the size of code-related entities
      • Analysing the size of the code index
    • Analysing the image size and its evolution
    • Exploring Undeclared Variables
    • Creating an analysis for senders of halt in GT packages
    • Exploring repositories used when loading GT
      • Managing forked projects in GT
    • Changes to the base Pharo image
      • Exploring extension methods to the base image
        • Overrides of the base image using #gtPharoPatch:
      • Patches/changes to the base Pharo Image
        • Issues related to patches to the base image
      • Changes in GT for supporting in Pharo 12
    • Exploring deprecated Glamorous Toolkit classes
    • Lepiter Iceberg Integration Model
      • Iceberg model and inner workings
    • Using Parallels to run GT on other platforms
  • Experimental Development
    • Strict Symbol Comparison
      • Strict Symbol Comparison with literals
      • Strict Symbol Comparison with variables
      • Strict Symbol Comparison in Collections
      • Strict Symbol Comparison in HashedCollections
      • Strict Symbol Comparison logging offline
      • Strict Symbol Comparison logging during development
      • Strict Symbol Comparison - Enabling
  • Glossary of Terms
    • AST
    • Bash
    • COBOL
    • Example
    • feenk
    • Java
    • JavaScript
    • JSON
    • GitHub
    • Island parser
    • Language Server Protocol (LSP)
    • Markdown
    • Metacello
    • Metacello baseline
    • Nix
    • OpenAPI
    • OpenGL
    • pandas
    • Pharo
    • Powershell
    • Python
    • React
    • React Native
    • Reflection
    • Rust
    • Software Assessment
    • Smalltalk
    • Wardley Map
    • XML
    • x86_64

React Native

https://reactnative.dev

Powered by Lepiter | Privacy Policy