El documento describe cómo Objective-C se desarrolló como una extensión de C para agregar capacidades de Smalltalk. Se explica cómo Objective-C llegó a usarse en iOS a través del desarrollo de NeXTSTEP por parte de NeXT y la posterior adquisición de NeXT por Apple. También resume algunas características sintácticas clave de Objective-C como la separación de interfaz e implementación y el uso de corchetes para la sintaxis de estilo Smalltalk.
A JIT Smalltalk VM written in itself. The VM is written entirely in Smalltalk and is compatible with Digitalk's (VS) Smalltalk implementation, leveraging the existing Smalltalk environment. Key components include generating .exe files, object format, memory management including garbage collection, method lookup, primitives, and foreign function interfaces.
From Legacy Database to Domain Layer Using a New Cincom VisualWorks ToolESUG
The document discusses updates and new features in GLORP (Generic Lightweight Object Relational Persistence), Cincom's object-relational mapping framework for Smalltalk. Key points include:
- Support for PostgreSQL 3.0 and ODBC 3.0 in the External Database Interface (EXDI).
- Improvements to GLORP including support for composite primary keys, nested iterators in queries, and exempting more literals from rollbacks.
- The mapping process between databases, GLORP modeling tools, and domain objects. A quick-start mapping tool called GlorpAtlasUI is demonstrated.
- Questions are invited about GLORP, EXDI, AppeX,
This document discusses RetroObjects, a framework and collection of emulators written in Smalltalk. It aims to allow emulating retro game consoles like the Commodore 64 and Nintendo Entertainment System in an object-oriented way. The framework provides abstractions for common hardware components like CPUs, video chips, and memory. It separates the emulator into a system model and objects for user input/output. This allows developers to focus on accurately modeling the target system architecture rather than low-level programming.
The document discusses the challenges of implementing Smalltalk on the Java Virtual Machine (JVM) and how Redline Smalltalk addresses these challenges. It uses ANTLR to parse Smalltalk source code and ASM to generate Java bytecode. Redline Smalltalk compiles Smalltalk code into Java classes that subclass ProtoObject and implement primitives as static methods. When a Smalltalk class is executed, its bytecode is loaded and instantiated via the SmalltalkClassLoader, resulting in message sends that encode the original Smalltalk logic.
This document discusses planning techniques for agile software projects. It begins by noting that while planning may not be glamorous, it is important for project success. The session will review common planning techniques and new ideas from successful agile teams. Specifically, it will discuss how planning does not need to be tedious, but can be rapid and effective. It will also critique traditional project planning methods like those using Microsoft Project, and advocate for alternative agile planning approaches.
Wed, August 24, 9:00am – 9:45am
Youtube: https://youtu.be/mCdoq7P5Zkw
First Name: Norm
Last Name: Green
Email where you can always be reached: norm.green@gemtalksystems.com
Type: Talk
Abstract: GemStone/64 product update and road map. A review of what's
new in version 3.3 and a preview to what we're working on for version
3.4. This year, I will also start with a few slides describing what
GemStone is and benefits of using it ("GemStone-101").
Bio: Norm Green started his career in 1989 at IBM in Toronto, Canada
as a quality assurance engineer. In 1993, he moved to the DACS (Data
Acquisition and Control System) team where he helped design and build
site-wide data collection system in VisualWorks and GemStone/S
Smallalk.
In 1996, he joined GemStone Systems as a Senior Consultant and
traveled the world helping GemStone/S customers be successful.
Currently, Norm lives near Portland, Oregon and holds the position of
Chief Technical Officer at GemTalk Systems.
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...ESUG
This document describes the goals and history of the RSqueak/VM project. The goals of the project are to build a fast and malleable virtual machine (VM) using RPython that has no C or assembler code, good performance, a small codebase, and extensive testing. It discusses how the project started in 2008 with a Smalltalk VM implementation in RPython and has since added just-in-time compilation, storage strategies, and joint execution with other VMs like SQLite and Topaz Ruby. The document highlights work done by students on the project over the years and shows that the RSqueak/VM codebase remains relatively small while achieving good performance.
A Weak Pharo Story
Video: https://youtu.be/nLEmAVVC6aQ
Thu, August 25, 3:00pm – 3:15pm
Description
Automatic garbage collection, used to free unused objects, generally provides a finalization mechanism that allows developers to execute some arbitrary code when an object was or is about to be garbage collected. This finalization mechanism, useful to free external resources, is implemented in Pharo through the usage of special weak references and a weak registry. While this finalization process was in place and working since several years, with the increase of the complexity of the Pharo IDE it demonstrated to not be sufficient. In this talk we will show some popular misconceptions of the idea of "weak" references, and how memory leaks can be (and were) created from these misconceptions. We will also show how to avoid and solve this problem, ending up in the introduction of Ephemerons in latest Pharo 6.
Bio: Guille Polito is research engineer at CNRS, France. Pharoer since 2010, he participates actively in the Pharo open source community since several years. He currently works on the modularization of Pharo where he does software archeology, refactoring, library rewriting and participates in the Virtual Machine development.
A JIT Smalltalk VM written in itself. The VM is written entirely in Smalltalk and is compatible with Digitalk's (VS) Smalltalk implementation, leveraging the existing Smalltalk environment. Key components include generating .exe files, object format, memory management including garbage collection, method lookup, primitives, and foreign function interfaces.
From Legacy Database to Domain Layer Using a New Cincom VisualWorks ToolESUG
The document discusses updates and new features in GLORP (Generic Lightweight Object Relational Persistence), Cincom's object-relational mapping framework for Smalltalk. Key points include:
- Support for PostgreSQL 3.0 and ODBC 3.0 in the External Database Interface (EXDI).
- Improvements to GLORP including support for composite primary keys, nested iterators in queries, and exempting more literals from rollbacks.
- The mapping process between databases, GLORP modeling tools, and domain objects. A quick-start mapping tool called GlorpAtlasUI is demonstrated.
- Questions are invited about GLORP, EXDI, AppeX,
This document discusses RetroObjects, a framework and collection of emulators written in Smalltalk. It aims to allow emulating retro game consoles like the Commodore 64 and Nintendo Entertainment System in an object-oriented way. The framework provides abstractions for common hardware components like CPUs, video chips, and memory. It separates the emulator into a system model and objects for user input/output. This allows developers to focus on accurately modeling the target system architecture rather than low-level programming.
The document discusses the challenges of implementing Smalltalk on the Java Virtual Machine (JVM) and how Redline Smalltalk addresses these challenges. It uses ANTLR to parse Smalltalk source code and ASM to generate Java bytecode. Redline Smalltalk compiles Smalltalk code into Java classes that subclass ProtoObject and implement primitives as static methods. When a Smalltalk class is executed, its bytecode is loaded and instantiated via the SmalltalkClassLoader, resulting in message sends that encode the original Smalltalk logic.
This document discusses planning techniques for agile software projects. It begins by noting that while planning may not be glamorous, it is important for project success. The session will review common planning techniques and new ideas from successful agile teams. Specifically, it will discuss how planning does not need to be tedious, but can be rapid and effective. It will also critique traditional project planning methods like those using Microsoft Project, and advocate for alternative agile planning approaches.
Wed, August 24, 9:00am – 9:45am
Youtube: https://youtu.be/mCdoq7P5Zkw
First Name: Norm
Last Name: Green
Email where you can always be reached: norm.green@gemtalksystems.com
Type: Talk
Abstract: GemStone/64 product update and road map. A review of what's
new in version 3.3 and a preview to what we're working on for version
3.4. This year, I will also start with a few slides describing what
GemStone is and benefits of using it ("GemStone-101").
Bio: Norm Green started his career in 1989 at IBM in Toronto, Canada
as a quality assurance engineer. In 1993, he moved to the DACS (Data
Acquisition and Control System) team where he helped design and build
site-wide data collection system in VisualWorks and GemStone/S
Smallalk.
In 1996, he joined GemStone Systems as a Senior Consultant and
traveled the world helping GemStone/S customers be successful.
Currently, Norm lives near Portland, Oregon and holds the position of
Chief Technical Officer at GemTalk Systems.
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: A...ESUG
This document describes the goals and history of the RSqueak/VM project. The goals of the project are to build a fast and malleable virtual machine (VM) using RPython that has no C or assembler code, good performance, a small codebase, and extensive testing. It discusses how the project started in 2008 with a Smalltalk VM implementation in RPython and has since added just-in-time compilation, storage strategies, and joint execution with other VMs like SQLite and Topaz Ruby. The document highlights work done by students on the project over the years and shows that the RSqueak/VM codebase remains relatively small while achieving good performance.
A Weak Pharo Story
Video: https://youtu.be/nLEmAVVC6aQ
Thu, August 25, 3:00pm – 3:15pm
Description
Automatic garbage collection, used to free unused objects, generally provides a finalization mechanism that allows developers to execute some arbitrary code when an object was or is about to be garbage collected. This finalization mechanism, useful to free external resources, is implemented in Pharo through the usage of special weak references and a weak registry. While this finalization process was in place and working since several years, with the increase of the complexity of the Pharo IDE it demonstrated to not be sufficient. In this talk we will show some popular misconceptions of the idea of "weak" references, and how memory leaks can be (and were) created from these misconceptions. We will also show how to avoid and solve this problem, ending up in the introduction of Ephemerons in latest Pharo 6.
Bio: Guille Polito is research engineer at CNRS, France. Pharoer since 2010, he participates actively in the Pharo open source community since several years. He currently works on the modularization of Pharo where he does software archeology, refactoring, library rewriting and participates in the Virtual Machine development.
CommunityExplorer: A Framework for Visualizing Collaboration NetworksESUG
The document introduces CommunityExplorer, a framework for visualizing collaboration networks. It aims to support users in analyzing groups of collaboration, the evolution of groups, and identifying new and key authors. The framework uses graphs and bi-graphs to visualize collaboration networks with the goal of decreasing edge crossings that obstruct comprehension. It presents case studies on two scientific communities and plans to use formal concept analysis and extend the data extraction pipeline to further improve the visualizations.
Intro to GemStone/S
Mon, August 22, 3:30pm – 4:00pm
Youtube: https://youtu.be/NGMxjtOl8oA
Abstract: What is GemStone/S and how does it compare to other Smalltalks? This talk is intended to introduce you to a system that combines an ANSI-compliant Smalltalk application server with a full-featured multi-user database. In particular, because of the multi-user nature of the system, GemStone/S has implemented namespaces as well as class/object versioning. How this works presents interesting technical challenges.
Bio: As a junior-high student in 1971, James discovered the local university’s computer center and a life-long obsession with computers began. He was introduced to Smalltalk/V for the Mac in the mid-90s, and became a Smalltalk bigot. James is Director of Operations for GemTalk Systems and is a passionate advocate for GemStone and all things Smalltalk.
Title: Sista: Improving Cog’s JIT performance
Speaker: Clément Béra
Thu, August 21, 9:45am – 10:30am
Video Part1
https://www.youtube.com/watch?v=X4E_FoLysJg
Video Part2
https://www.youtube.com/watch?v=gZOk3qojoVE
Description
Abstract: Although recent improvements of the Cog VM performance made it one of the fastest available Smalltalk virtual machine, the overhead compared to optimized C code remains important. Efficient industrial object oriented virtual machine, such as Javascript V8's engine for Google Chrome and Oracle Java Hotspot can reach on many benchs the performance of optimized C code thanks to adaptive optimizations performed their JIT compilers. The VM becomes then cleverer, and after executing numerous times the same portion of codes, it stops the code execution, looks at what it is doing and recompiles critical portion of codes in code faster to run based on the current environment and previous executions.
Bio: Clément Béra and Eliot Miranda has been working together on Cog's JIT performance for the last year. Clément Béra is a young engineer and has been working in the Pharo team for the past two years. Eliot Miranda is a Smalltalk VM expert who, among others, has implemented Cog's JIT and the Spur Memory Manager for Cog.
Explicit Composition Constructs in DSLs - The case of the epidemiological lan...ESUG
This document summarizes the work of the UMMISCO research group on epidemiological modeling and their Kendrick domain-specific language. The group builds mathematical models to study disease spread in populations. Their approach involves separating epidemiological concerns like seasonality, host types, and spatial aspects into modular, reusable components. They implemented this approach in the Kendrick DSL embedded in Smalltalk. The DSL allows defining and composing epidemiological models from different concerns to study diseases like tuberculosis. Several PhD students are involved in ongoing work applying and extending the DSL.
seamless – Object Oriented CMS System
Video: https://youtu.be/m_DmvTfTS64
Thu, August 25, 4:30pm – 5:00pm
Description
First Name: Georg
Last Name: Heeg
Email: georg@heeg.de
First Name: Karsten
Last Name: Kusche
Email: karsten@heeg.de
Title: seamless – Object Oriented CMS System
Type: Talk
Abstract: Since 1992 HTML-Websites are available on the Internet. But HTML does not scale, CMS became available. Classical CMS do not scale to
flexibility. Thus Georg Heeg eK uses a typical Smalltalk approach: Take Seaside and seaBreeze and Objects and build an Object Oriented CMS system.
Bio: Georg Heeg uses Smalltalk since 1983. Four years later he founded Georg Heeg eK, a Smalltalk software house. He has not yet
stopped using Smalltalk.
Bio: Karsten uses Smalltalk and VisualWorks since 12 years, working at Georg Heeg eK. He is one of the developers of seaBreeze,
created the tools to find the Bach Haus in Köthen and also worked on Dakar Testing during his diploma thesis. In his spare time, he's an Objective-C
developer writing useful little tools for Mac OS X.
Tue, August 23, 4:00pm – 4:30pm
Youtube: https://youtu.be/5Txf774hLKY
First Name: Tommaso
Last Name: Dal Sasso
Email: dalsat@usi.ch
Title: Talking about bugs with bugs
Type: Talk
Abstract:
We present ShoreLine, a new approach to track bugs in Pharo.
With ShoreLine users can report and describe errors in a program from the image, without stopping the conversation with the system. Reporting bugs is
easier and faster, since you can attach any kind of information, not just text: you can easily configure the system to collect your custom data.
ShoreLine allows you to access the information about defects from the image and connect together the different pieces of data, to build a knowledge graph
of your system.
Bio: Tommaso Dal Sasso is a PhD student in Software Engineering at the University of Lugano, in Switzerland. He works with Professor Michele Lanza to
improve the way developers describe software defects and interact with bug reports.
Pillar: one language for all supports
Video: https://youtu.be/gcnK5B7tfC0
Fri, August 26, 9:00am – 9:15am
Description
Pillar is a markdown extracted from the original Pier wiki. Markdown can be used to generate books, booklets, webpages, slides,....
This presentation will present the new architecture of Pillar
More XP-rience
Video: https://youtu.be/DoFrzbpECCY
Thu, August 25, 4:00pm – 4:30pm
First Name: Niall
Last Name: Ross
Email Address: nross@cincom.com
Title: More XP-rience
Type: Talk
Abstract: In the 15 years since I last presented my 'XP-rience' of
eXtreme Programming to ESUG, I've had a lot more experience: of
working in partly and wholly not-colocated teams; of how I and others
actually think while doing XP; of the disadvantages and positive
advantages of non-colocation; of what is most used and most needed in
tools. This talk will let you (and me) discover if I've learned
anything in the last decade and a half.
Bio: Niall ended his undergraduate career with two intellectual
interests: computing and the theory of relativity. A quick check of
how much commercial work was available to relativity and gravitation
theorists made him decide to do academic research in that field and
then seek a commercial job in computing, rather than the other way
round. Niall started working commercially in IT in 1985. At first, he
was assigned to designing and implementing software engineering
process improvements; only after three years did he begin significant
writing and delivery of commercial software. This experience taught
him that intelligent people can form foolish ideas about software
engineering if they have not worked at the coding coalface of real,
large commercial projects.
Learning from this, Niall spent the nineties working on software to
manage complex, rapidly changing telecoms networks. A side effect of
this work was that it taught him much about how scale and rate of
change affects software. Early in the nineties, he discovered
Smalltalk. The more he used it the more he came to recognize its power
in this area. This perception was strengthened when he spent a year
delivering a telecoms management system in Java.
At the end of the decade, Niall formed his own software company to
offer consultancy in meta-data system design, Smalltalk and agile
methods. Over the next decade, he worked on a variety of
meta-data-driven systems, mostly in the financial domain.
Niall joined the Cincom Smalltalk Engineering Team nearly eight years
ago. His first task was to lead the team that does the weekly
VisualWorks builds - an experience he likened to doing brain surgery
on yourself every Friday (e.g., "Prepare new memory for insertion,
remove old memory … uh, I can't remember what I was going to do
next!").
Currently, he leads the Glorp and Database team. He also leads the
Custom Refactoring open-source project, which he co-founded, and the
SUnit open-source project.
The Glamorous Toolkit: Towards a novel live IDEESUG
Youtube: https://youtu.be/XWOOJa3kEa0
The Glamorous Toolkit project aims to reinvent the IDE (http://gtoolkit.org). Over the last two years the team has produced four significant tools that are part of Pharo: Playground, Inspector, Spotter, Debugger. In this demo-driven talk we exemplify how these tools can change the development workflow, and we sketch the broader perspective and outlook of the project.
BIO:
Tudor Gîrba (http://tudorgirba.com) founded feenk gmbh, a consulting and coaching company (http://feenk.com), and in partnership with Eliot Miranda helps companies adopt Pharo.
He leads the work on the Moose platform for software and data analysis (http://moosetechnology.org), he founded the Glamorous Toolkit project for rethinking the IDE (http://gtoolkit.org), and he is a board member of the Pharo live programming environment (http://pharo.org).
He authored the humane assessment method (http://humane-assessment.com) to help teams to rethink the way they manage large software systems and data sets. Tudor also argues that storytelling should be prominent in software development (http://demodriven.com).
In 2014, he won the prestigious Dahl-Nygaard Junior Prize (http://aito.org) for his work on modeling and visualization of evolution and interplay of large numbers of objects.
The document summarizes news and updates about the Pharo programming language and ecosystem. It highlights the growing adoption of Pharo in universities and research groups around the world, new books and MOOCs being released, improvements and stabilization in the Pharo 5.0 release, and ongoing work to optimize performance and develop new tools and frameworks like Epicea, GT Tools, Match, and Sista. It also promotes Pharo Pro services and mentions several external projects and companies building on and contributing to Pharo.
Lowcode: Extending Smalltalk with C Types to Improve PerformanceESUG
Lowcode extends Pharo with C types and low-level bytecodes to improve performance of operations on primitive data types. It defines a type system with primitive, reference, pointer, and object types. The Pharo compiler and virtual machine were modified to support type checking, inference and the new bytecodes. Benchmarks show 50-400% improvement on linear algebra operations important for 3D graphics. Future work includes unchecked pointers, more inlining, and direct C calling.
Tugrik: A new persistence option for Pharo
Wed, August 24, 2:00pm – 2:45pm
youtube: https://youtu.be/YwlUdRaqTwE
First Name: Dale
Last Name: Henrichs
Email: dhenrich@gemtalksystems.com
Title: Tugrik: A new persistence option for Pharo
Type: Talk
Abstract:
Tugrik[1] is a new persistence framework for Pharo using GemStone/S 64[3] as
the data base engine.
"GemStone/S 64 provides a distributed, server-based,
multi-user, transactional Smalltalk runtime system,
with the ability to partition the application
between client and server"[4]
As of this writing, a proof of concept for Tugrik has been implemented using
a MongoTalk-style[2] API. The proof of concept includes a Voyage[5]
implementation for Tugrik.
While it is somewhat interesting for developers to use Tugrik to simply
replace MongoDb in their Pharo applications, the work moving forward will
focus on expanding the functionality of Tugrik beyond that of a simple
document database, after all, GemStone/S is a fully functional Smalltalk
implementation.
This talk will describe the proof of concept and discuss the current state
of the project.
[1] https://github.com/dalehenrich/Tugrik
[2] https://github.com/pharo-nosql/mongotalk
[3] https://gemtalksystems.com/products/gs64/
[4] https://downloads.gemtalksystems.com/docs/GemStone64/3.3.x/GS64-ProgGuide-3.3/GS64-ProgGuide-3.3.htm
[5] https://github.com/dalehenrich/voyage
Bio:
Dale Henrichs is a Principal Engineer at GemTalk Systems and has been working
in Smalltalk since 1985. For the last decade Dale has focused on the development
and support of open source projects for both GemTalk Systems and the Smalltalk
community. His contributions to the Smalltalk community include Metacello,
FileTree, and the GemStone port of Seaside.
smalltalkCI: A Continuous Integration Framework for Smalltalk ProjectsESUG
SmalltalkCI is a continuous integration framework that allows Smalltalk projects to be tested on services like TravisCI. It works by running a Smalltalk image and project files from a repository and running tests with each push. SmalltalkCI is lightweight, compatible with multiple dialects, and supports debugging and testing of projects like Seaside. Future work includes adding more Smalltalk implementations and virtual machines, improving Git support, and simplifying initial setup.
Workshop: Identifying concept inventories in agile programmingESUG
This document discusses the development of a concept inventory to identify common misconceptions in agile programming and object-oriented development. The project aims to strengthen collaboration between INRIA/Lille and ÉTS/UQAM by creating a concept inventory that can be used to improve teaching of agile development with object-oriented languages like TypeScript, JavaScript, and Pharo. The methodology involves identifying misconceptions, proposing a concept inventory, and validating it in courses by measuring understanding before and after instruction. A workshop will help identify initial misconceptions in Smalltalk/Pharo by capturing them in a collaborative tool.
This document proposes integrating documentation into the Pharo language metamodel and environment to improve documentation support. It suggests making documentation first-class citizens in Pharo by providing built-in support and a minimal API, which would allow tight integration with development tools and future extensions without requiring grammar changes or large efforts. This could improve documentation quality by enabling direct references between code and documentation and automatic logging of documentation usage.
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
This document outlines advances and the roadmap for debugging tools in Pharo. It discusses recent improvements to the debugging infrastructure, including architectural changes and new debugging commands. It also describes upcoming work, such as additional infrastructure improvements, an emergency debugger, support for meta-object protocols, a redesigned user experience, a remote debugger, and improved documentation. The document concludes by inviting participants to help evaluate new debugging experiments.
The document describes Sequence, a pipeline modeling and discrete event simulation framework developed in Pharo Smalltalk. Sequence allows describing system resources, building blocks that use those resources, assembling scenarios from blocks, collecting information during simulated runs, and interactively exploring system traces. The framework implements a discrete event simulation engine with event streams that model periodic processes and resources. Sequence provides tools for evaluating system performance through simulation before complete hardware is available.
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
This document discusses migrating a monolithic mobile application called CARL Touch to a micro frontend architecture. It presents a migration process involving three steps: 1) analysis of the monolithic codebase, 2) identification of potential micro frontends, and 3) transformation of the codebase to implement the identified micro frontends. Previous experiments at Berger-Levrault involving two teams migrating CARL Touch provided insights. The proposed process uses static and dynamic analysis, code visualization and clustering techniques to help identify optimal micro frontends and transform the codebase in a semi-automated manner.
Analyzing Dart Language with Pharo: Report and early resultsESUG
This document summarizes an analysis of the Dart programming language using tools in the Pharo environment. It describes generating a parser for Dart using SmaCC, which produces an AST. It also details defining a Famix meta-model for Dart and the Chartreuse-D importer that creates a FamixDart model from the AST. Future work is outlined, including improving SmaCCDart, continuing to develop the FamixDart meta-model, and handling dynamic types when importing associations. The goal is to analyze Dart and explore modeling Flutter applications.
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
This document summarizes research on transpiling Pharo classes to JavaScript using ECMAScript 5 versus ECMAScript 6. It finds that transpiling to ES6 provides benefits like significantly faster load times, improved benchmark performance up to 43%, and more idiomatic code compared to ES5. However, fully emulating Smalltalk semantics like metaclass inheritance remains challenging when targeting JavaScript.
CommunityExplorer: A Framework for Visualizing Collaboration NetworksESUG
The document introduces CommunityExplorer, a framework for visualizing collaboration networks. It aims to support users in analyzing groups of collaboration, the evolution of groups, and identifying new and key authors. The framework uses graphs and bi-graphs to visualize collaboration networks with the goal of decreasing edge crossings that obstruct comprehension. It presents case studies on two scientific communities and plans to use formal concept analysis and extend the data extraction pipeline to further improve the visualizations.
Intro to GemStone/S
Mon, August 22, 3:30pm – 4:00pm
Youtube: https://youtu.be/NGMxjtOl8oA
Abstract: What is GemStone/S and how does it compare to other Smalltalks? This talk is intended to introduce you to a system that combines an ANSI-compliant Smalltalk application server with a full-featured multi-user database. In particular, because of the multi-user nature of the system, GemStone/S has implemented namespaces as well as class/object versioning. How this works presents interesting technical challenges.
Bio: As a junior-high student in 1971, James discovered the local university’s computer center and a life-long obsession with computers began. He was introduced to Smalltalk/V for the Mac in the mid-90s, and became a Smalltalk bigot. James is Director of Operations for GemTalk Systems and is a passionate advocate for GemStone and all things Smalltalk.
Title: Sista: Improving Cog’s JIT performance
Speaker: Clément Béra
Thu, August 21, 9:45am – 10:30am
Video Part1
https://www.youtube.com/watch?v=X4E_FoLysJg
Video Part2
https://www.youtube.com/watch?v=gZOk3qojoVE
Description
Abstract: Although recent improvements of the Cog VM performance made it one of the fastest available Smalltalk virtual machine, the overhead compared to optimized C code remains important. Efficient industrial object oriented virtual machine, such as Javascript V8's engine for Google Chrome and Oracle Java Hotspot can reach on many benchs the performance of optimized C code thanks to adaptive optimizations performed their JIT compilers. The VM becomes then cleverer, and after executing numerous times the same portion of codes, it stops the code execution, looks at what it is doing and recompiles critical portion of codes in code faster to run based on the current environment and previous executions.
Bio: Clément Béra and Eliot Miranda has been working together on Cog's JIT performance for the last year. Clément Béra is a young engineer and has been working in the Pharo team for the past two years. Eliot Miranda is a Smalltalk VM expert who, among others, has implemented Cog's JIT and the Spur Memory Manager for Cog.
Explicit Composition Constructs in DSLs - The case of the epidemiological lan...ESUG
This document summarizes the work of the UMMISCO research group on epidemiological modeling and their Kendrick domain-specific language. The group builds mathematical models to study disease spread in populations. Their approach involves separating epidemiological concerns like seasonality, host types, and spatial aspects into modular, reusable components. They implemented this approach in the Kendrick DSL embedded in Smalltalk. The DSL allows defining and composing epidemiological models from different concerns to study diseases like tuberculosis. Several PhD students are involved in ongoing work applying and extending the DSL.
seamless – Object Oriented CMS System
Video: https://youtu.be/m_DmvTfTS64
Thu, August 25, 4:30pm – 5:00pm
Description
First Name: Georg
Last Name: Heeg
Email: georg@heeg.de
First Name: Karsten
Last Name: Kusche
Email: karsten@heeg.de
Title: seamless – Object Oriented CMS System
Type: Talk
Abstract: Since 1992 HTML-Websites are available on the Internet. But HTML does not scale, CMS became available. Classical CMS do not scale to
flexibility. Thus Georg Heeg eK uses a typical Smalltalk approach: Take Seaside and seaBreeze and Objects and build an Object Oriented CMS system.
Bio: Georg Heeg uses Smalltalk since 1983. Four years later he founded Georg Heeg eK, a Smalltalk software house. He has not yet
stopped using Smalltalk.
Bio: Karsten uses Smalltalk and VisualWorks since 12 years, working at Georg Heeg eK. He is one of the developers of seaBreeze,
created the tools to find the Bach Haus in Köthen and also worked on Dakar Testing during his diploma thesis. In his spare time, he's an Objective-C
developer writing useful little tools for Mac OS X.
Tue, August 23, 4:00pm – 4:30pm
Youtube: https://youtu.be/5Txf774hLKY
First Name: Tommaso
Last Name: Dal Sasso
Email: dalsat@usi.ch
Title: Talking about bugs with bugs
Type: Talk
Abstract:
We present ShoreLine, a new approach to track bugs in Pharo.
With ShoreLine users can report and describe errors in a program from the image, without stopping the conversation with the system. Reporting bugs is
easier and faster, since you can attach any kind of information, not just text: you can easily configure the system to collect your custom data.
ShoreLine allows you to access the information about defects from the image and connect together the different pieces of data, to build a knowledge graph
of your system.
Bio: Tommaso Dal Sasso is a PhD student in Software Engineering at the University of Lugano, in Switzerland. He works with Professor Michele Lanza to
improve the way developers describe software defects and interact with bug reports.
Pillar: one language for all supports
Video: https://youtu.be/gcnK5B7tfC0
Fri, August 26, 9:00am – 9:15am
Description
Pillar is a markdown extracted from the original Pier wiki. Markdown can be used to generate books, booklets, webpages, slides,....
This presentation will present the new architecture of Pillar
More XP-rience
Video: https://youtu.be/DoFrzbpECCY
Thu, August 25, 4:00pm – 4:30pm
First Name: Niall
Last Name: Ross
Email Address: nross@cincom.com
Title: More XP-rience
Type: Talk
Abstract: In the 15 years since I last presented my 'XP-rience' of
eXtreme Programming to ESUG, I've had a lot more experience: of
working in partly and wholly not-colocated teams; of how I and others
actually think while doing XP; of the disadvantages and positive
advantages of non-colocation; of what is most used and most needed in
tools. This talk will let you (and me) discover if I've learned
anything in the last decade and a half.
Bio: Niall ended his undergraduate career with two intellectual
interests: computing and the theory of relativity. A quick check of
how much commercial work was available to relativity and gravitation
theorists made him decide to do academic research in that field and
then seek a commercial job in computing, rather than the other way
round. Niall started working commercially in IT in 1985. At first, he
was assigned to designing and implementing software engineering
process improvements; only after three years did he begin significant
writing and delivery of commercial software. This experience taught
him that intelligent people can form foolish ideas about software
engineering if they have not worked at the coding coalface of real,
large commercial projects.
Learning from this, Niall spent the nineties working on software to
manage complex, rapidly changing telecoms networks. A side effect of
this work was that it taught him much about how scale and rate of
change affects software. Early in the nineties, he discovered
Smalltalk. The more he used it the more he came to recognize its power
in this area. This perception was strengthened when he spent a year
delivering a telecoms management system in Java.
At the end of the decade, Niall formed his own software company to
offer consultancy in meta-data system design, Smalltalk and agile
methods. Over the next decade, he worked on a variety of
meta-data-driven systems, mostly in the financial domain.
Niall joined the Cincom Smalltalk Engineering Team nearly eight years
ago. His first task was to lead the team that does the weekly
VisualWorks builds - an experience he likened to doing brain surgery
on yourself every Friday (e.g., "Prepare new memory for insertion,
remove old memory … uh, I can't remember what I was going to do
next!").
Currently, he leads the Glorp and Database team. He also leads the
Custom Refactoring open-source project, which he co-founded, and the
SUnit open-source project.
The Glamorous Toolkit: Towards a novel live IDEESUG
Youtube: https://youtu.be/XWOOJa3kEa0
The Glamorous Toolkit project aims to reinvent the IDE (http://gtoolkit.org). Over the last two years the team has produced four significant tools that are part of Pharo: Playground, Inspector, Spotter, Debugger. In this demo-driven talk we exemplify how these tools can change the development workflow, and we sketch the broader perspective and outlook of the project.
BIO:
Tudor Gîrba (http://tudorgirba.com) founded feenk gmbh, a consulting and coaching company (http://feenk.com), and in partnership with Eliot Miranda helps companies adopt Pharo.
He leads the work on the Moose platform for software and data analysis (http://moosetechnology.org), he founded the Glamorous Toolkit project for rethinking the IDE (http://gtoolkit.org), and he is a board member of the Pharo live programming environment (http://pharo.org).
He authored the humane assessment method (http://humane-assessment.com) to help teams to rethink the way they manage large software systems and data sets. Tudor also argues that storytelling should be prominent in software development (http://demodriven.com).
In 2014, he won the prestigious Dahl-Nygaard Junior Prize (http://aito.org) for his work on modeling and visualization of evolution and interplay of large numbers of objects.
The document summarizes news and updates about the Pharo programming language and ecosystem. It highlights the growing adoption of Pharo in universities and research groups around the world, new books and MOOCs being released, improvements and stabilization in the Pharo 5.0 release, and ongoing work to optimize performance and develop new tools and frameworks like Epicea, GT Tools, Match, and Sista. It also promotes Pharo Pro services and mentions several external projects and companies building on and contributing to Pharo.
Lowcode: Extending Smalltalk with C Types to Improve PerformanceESUG
Lowcode extends Pharo with C types and low-level bytecodes to improve performance of operations on primitive data types. It defines a type system with primitive, reference, pointer, and object types. The Pharo compiler and virtual machine were modified to support type checking, inference and the new bytecodes. Benchmarks show 50-400% improvement on linear algebra operations important for 3D graphics. Future work includes unchecked pointers, more inlining, and direct C calling.
Tugrik: A new persistence option for Pharo
Wed, August 24, 2:00pm – 2:45pm
youtube: https://youtu.be/YwlUdRaqTwE
First Name: Dale
Last Name: Henrichs
Email: dhenrich@gemtalksystems.com
Title: Tugrik: A new persistence option for Pharo
Type: Talk
Abstract:
Tugrik[1] is a new persistence framework for Pharo using GemStone/S 64[3] as
the data base engine.
"GemStone/S 64 provides a distributed, server-based,
multi-user, transactional Smalltalk runtime system,
with the ability to partition the application
between client and server"[4]
As of this writing, a proof of concept for Tugrik has been implemented using
a MongoTalk-style[2] API. The proof of concept includes a Voyage[5]
implementation for Tugrik.
While it is somewhat interesting for developers to use Tugrik to simply
replace MongoDb in their Pharo applications, the work moving forward will
focus on expanding the functionality of Tugrik beyond that of a simple
document database, after all, GemStone/S is a fully functional Smalltalk
implementation.
This talk will describe the proof of concept and discuss the current state
of the project.
[1] https://github.com/dalehenrich/Tugrik
[2] https://github.com/pharo-nosql/mongotalk
[3] https://gemtalksystems.com/products/gs64/
[4] https://downloads.gemtalksystems.com/docs/GemStone64/3.3.x/GS64-ProgGuide-3.3/GS64-ProgGuide-3.3.htm
[5] https://github.com/dalehenrich/voyage
Bio:
Dale Henrichs is a Principal Engineer at GemTalk Systems and has been working
in Smalltalk since 1985. For the last decade Dale has focused on the development
and support of open source projects for both GemTalk Systems and the Smalltalk
community. His contributions to the Smalltalk community include Metacello,
FileTree, and the GemStone port of Seaside.
smalltalkCI: A Continuous Integration Framework for Smalltalk ProjectsESUG
SmalltalkCI is a continuous integration framework that allows Smalltalk projects to be tested on services like TravisCI. It works by running a Smalltalk image and project files from a repository and running tests with each push. SmalltalkCI is lightweight, compatible with multiple dialects, and supports debugging and testing of projects like Seaside. Future work includes adding more Smalltalk implementations and virtual machines, improving Git support, and simplifying initial setup.
Workshop: Identifying concept inventories in agile programmingESUG
This document discusses the development of a concept inventory to identify common misconceptions in agile programming and object-oriented development. The project aims to strengthen collaboration between INRIA/Lille and ÉTS/UQAM by creating a concept inventory that can be used to improve teaching of agile development with object-oriented languages like TypeScript, JavaScript, and Pharo. The methodology involves identifying misconceptions, proposing a concept inventory, and validating it in courses by measuring understanding before and after instruction. A workshop will help identify initial misconceptions in Smalltalk/Pharo by capturing them in a collaborative tool.
This document proposes integrating documentation into the Pharo language metamodel and environment to improve documentation support. It suggests making documentation first-class citizens in Pharo by providing built-in support and a minimal API, which would allow tight integration with development tools and future extensions without requiring grammar changes or large efforts. This could improve documentation quality by enabling direct references between code and documentation and automatic logging of documentation usage.
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
This document outlines advances and the roadmap for debugging tools in Pharo. It discusses recent improvements to the debugging infrastructure, including architectural changes and new debugging commands. It also describes upcoming work, such as additional infrastructure improvements, an emergency debugger, support for meta-object protocols, a redesigned user experience, a remote debugger, and improved documentation. The document concludes by inviting participants to help evaluate new debugging experiments.
The document describes Sequence, a pipeline modeling and discrete event simulation framework developed in Pharo Smalltalk. Sequence allows describing system resources, building blocks that use those resources, assembling scenarios from blocks, collecting information during simulated runs, and interactively exploring system traces. The framework implements a discrete event simulation engine with event streams that model periodic processes and resources. Sequence provides tools for evaluating system performance through simulation before complete hardware is available.
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
This document discusses migrating a monolithic mobile application called CARL Touch to a micro frontend architecture. It presents a migration process involving three steps: 1) analysis of the monolithic codebase, 2) identification of potential micro frontends, and 3) transformation of the codebase to implement the identified micro frontends. Previous experiments at Berger-Levrault involving two teams migrating CARL Touch provided insights. The proposed process uses static and dynamic analysis, code visualization and clustering techniques to help identify optimal micro frontends and transform the codebase in a semi-automated manner.
Analyzing Dart Language with Pharo: Report and early resultsESUG
This document summarizes an analysis of the Dart programming language using tools in the Pharo environment. It describes generating a parser for Dart using SmaCC, which produces an AST. It also details defining a Famix meta-model for Dart and the Chartreuse-D importer that creates a FamixDart model from the AST. Future work is outlined, including improving SmaCCDart, continuing to develop the FamixDart meta-model, and handling dynamic types when importing associations. The goal is to analyze Dart and explore modeling Flutter applications.
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
This document summarizes research on transpiling Pharo classes to JavaScript using ECMAScript 5 versus ECMAScript 6. It finds that transpiling to ES6 provides benefits like significantly faster load times, improved benchmark performance up to 43%, and more idiomatic code compared to ES5. However, fully emulating Smalltalk semantics like metaclass inheritance remains challenging when targeting JavaScript.
The document presents an approach for automated test generation from software models and execution traces. Key aspects of the approach include using metamodels to represent the codebase, values, and desired unit test structure. Models are built from the codebase and traces, then transformations are applied to generate unit tests conforming to the test metamodel. Abstract syntax trees are used to export the generated tests to code. The approach aims to generate tests that are relevant, readable and maintainable without relying on existing tests. An example demonstrates generating a JUnit test from an application class.
Genetic programming is used to generate unit tests by evolving test code via genetic algorithms to maximize coverage. Tests are represented as chromosomes of object and message statements. The genetic algorithm selects tests based on coverage, combines tests through crossover, and replaces tests in the population over generations to find optimal test sequences. Future work includes improving path exploration and comparing with other test generation tools.
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
Threaded execution and continuation-passing style (CPS) allow for smooth switching between execution modes in Zag Smalltalk. Threaded execution interprets code as a sequence of addresses like bytecode but is 2.3-4.7 times faster, while CPS passes continuations explicitly like in functional languages and is 3-5 times faster than bytecode. Both approaches allow fallback to debugging. The implementation shares context and stack between modes to easily switch with proper object structures.
Exploring GitHub Actions through EGAD: An Experience ReportESUG
This document summarizes an experience report on exploring GitHub Actions through EGAD, a tool for GitHub Action analysis. It discusses three key lessons learned: 1) Composing a story by documenting tasks and linking documentation to code, 2) Navigating custom views to conduct research, and 3) Supporting onboarding of researchers by assigning mentors, scheduling meetings, and encouraging use of resources. EGAD takes workflow YAML files, wraps them in a domain model to provide context, and allows inspecting examples to fully explore the GitHub Actions domain model.
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
This document analyzes the reflective features and APIs in Pharo, a reflective programming language. It presents a catalog of Pharo's reflective APIs and analyzes how they relate to metaobjects. The analysis highlights areas for potential improvement, such as providing solutions for intercession on state reads/writes and addressing constraints when changing an object's class. The document contributes to understanding Pharo's reflective design and its evolution over time.
The document discusses garbage collector tuning for applications with pathological allocation patterns. It begins by explaining the motivation and issues caused by pathological patterns, such as applications taking over an hour and a half to run. It then provides an overview of garbage collection and how allocation patterns can impact performance. The document dives into two specific tuning techniques - increasing the full GC threshold to prevent premature full GCs from being triggered, and increasing the tenuring threshold to avoid large objects residing in the remembered set and slowing down scavenges. These tunings resulted in significant performance improvements for the sample DataFrame application, reducing the run time from over an hour and a half to around seven minutes.
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
This document discusses improving garbage collection performance in Pharo through object lifetime profiling. It presents Illimani, a lifetime profiler developed for Pharo. Illimani was used to profile the lifetimes of objects created when loading a large DataFrame. The profiling revealed that most objects had short lifetimes, suggesting the garbage collector could be tuned. Tuning the garbage collector parameters based on the lifetime profiles improved the performance of loading the DataFrame.
This document discusses the past, present, and future of Pharo DataFrames. It began as a student project but has evolved into a mature project with dedicated engineers, improving performance and adding functionality. Future plans include further performance enhancements, adding more functionality, better integration with other Pharo projects, and support for big data. Evaluation of DataFrames is also planned.
This document discusses issues with thisContext in the Pharo debugger not correctly representing the execution context and being the DoIt context instead. This was fixed in Pharo12 by making thisContext a variable object that is wrapped in a DoItVariable, so the debugger context is used. When inspecting or doing DoIt, the doIt Variable is pushed and read to provide the proper execution context.
This document proposes using websockets to display fencing scores and a chronometer from an arena server to mobile phones over the internet in real-time. It includes links to video examples of a chronometer display and photos from fencing competitions.
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
This document discusses PharoJS, which allows developers to develop applications in Pharo and then export them to run as JavaScript applications. PharoJS enables 100% of Pharo code to be executed during development, and then 100% of that same code is exported to JavaScript to be executed in production. The document also briefly mentions deployment options for exported PharoJS applications like GitHub Pages and GitHub Actions.
The document contains testimonials from participants of the Pharo MOOC praising its effectiveness at teaching object-oriented design. It also announces an upcoming advanced design MOOC that will have over 60 lectures, slides, videos and an exercise booklet. Finally, it provides links to the course websites and encourages people to stay tuned for the new MOOC.
A New Architecture Reconciling Refactorings and TransformationsESUG
This document discusses reconciling refactorings and transformations in software engineering. It proposes a new architecture where refactorings decorate transformations by checking preconditions and composing multiple transformations. Refactorings ensure transformations are applied safely while transformations focus on model changes. Open questions remain around precondition handling and composition semantics. The goals are to reduce duplication, support custom refactorings/transformations, and provide a modern driver-based user interface.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaAMADO SALVADOR
Descubra el catálogo completo de buzones BTV, una marca líder en la fabricación de buzones y cajas fuertes para los sectores de ferretería, bricolaje y seguridad. Como distribuidor oficial de BTV, Amado Salvador se enorgullece de presentar esta amplia selección de productos diseñados para satisfacer las necesidades de seguridad y funcionalidad en cualquier entorno.
Descubra una variedad de buzones residenciales, comerciales y corporativos, cada uno construido con los más altos estándares de calidad y durabilidad. Desde modelos clásicos hasta diseños modernos, los buzones BTV ofrecen una combinación perfecta de estilo y resistencia, garantizando la protección de su correspondencia en todo momento.
Amado Salvador, se compromete a ofrecer productos de primera clase respaldados por un servicio excepcional al cliente. Como distribuidor oficial de BTV, entendemos la importancia de la seguridad y la tranquilidad para nuestros clientes. Por eso, trabajamos en colaboración con BTV para brindarle acceso a los mejores productos del mercado.
Explore el catálogo de buzones ahora y encuentre la solución perfecta para sus necesidades de correo y seguridad. Confíe en Amado Salvador y BTV para proporcionarle buzones de calidad excepcional que cumplan y superen sus expectativas.
13. Mobile Platforms
• Any developers for mobile platforms?
• Any iOs developers
lunes 3 de septiembre de 12
14. Mobile Platforms
• Any developers for mobile platforms?
• Any iOs developers
• Any Android developers
lunes 3 de septiembre de 12
15. Mobile Platforms
• Any developers for mobile platforms?
• Any iOs developers
• Any Android developers
• Windows
lunes 3 de septiembre de 12
16. Mobile Platforms
• Any developers for mobile platforms?
• Any iOs developers
• Any Android developers
• Windows
• Multiple platforms?
lunes 3 de septiembre de 12
19. Who am I?
• Doing Smalltalk since 1992
lunes 3 de septiembre de 12
20. Who am I?
• Doing Smalltalk since 1992
• Involved in Squeak since 1996
lunes 3 de septiembre de 12
21. Who am I?
• Doing Smalltalk since 1992
• Involved in Squeak since 1996
• Past developer and editor of the SqueakNews
e-zine
lunes 3 de septiembre de 12
22. Who am I?
• Doing Smalltalk since 1992
• Involved in Squeak since 1996
• Past developer and editor of the SqueakNews
e-zine
• Experienced systems developer with30+ years
of experience
lunes 3 de septiembre de 12
23. Who am I?
• Doing Smalltalk since 1992
• Involved in Squeak since 1996
• Past developer and editor of the SqueakNews
e-zine
• Experienced systems developer with30+ years
of experience
• Currently iOs,Android and RAILS consultant
lunes 3 de septiembre de 12
50. Objective-C
• Developed by Brad Cox and Tom Love in
1980s
• Earliest appearance 1981ish
lunes 3 de septiembre de 12
51. Objective-C
• Developed by Brad Cox and Tom Love in
1980s
• Earliest appearance 1981ish
• Both were introduced to Smalltalk at ITT
Corporation Programming Technology
Center in 1981
lunes 3 de septiembre de 12
54. OOPC to Objective-C
• Brad Cox started writing a preprocessor
for C to add some capabilities of Smalltalk
lunes 3 de septiembre de 12
55. OOPC to Objective-C
• Brad Cox started writing a preprocessor
for C to add some capabilities of Smalltalk
• He named it OOPC
lunes 3 de septiembre de 12
56. OOPC to Objective-C
• Brad Cox started writing a preprocessor
for C to add some capabilities of Smalltalk
• He named it OOPC
• meaning “Object oriented pre-compiler”
lunes 3 de septiembre de 12
57. OOPC to Objective-C
• Brad Cox started writing a preprocessor
for C to add some capabilities of Smalltalk
• He named it OOPC
• meaning “Object oriented pre-compiler”
• OOPC evolved to Objective-C
lunes 3 de septiembre de 12
67. NeXT
• Steve Jobs founded NeXT
• Licensed Objective-C to develop
NeXTSTEP
lunes 3 de septiembre de 12
68. NeXT
• Steve Jobs founded NeXT
• Licensed Objective-C to develop
NeXTSTEP
• NeXTSTEP -> OPENSTEP (with SUN)
lunes 3 de septiembre de 12
69. NeXT
• Steve Jobs founded NeXT
• Licensed Objective-C to develop
NeXTSTEP
• NeXTSTEP -> OPENSTEP (with SUN)
• OPENSTEP +BSD ->Mac OS-X
lunes 3 de septiembre de 12
70. NeXT
• Steve Jobs founded NeXT
• Licensed Objective-C to develop
NeXTSTEP
• NeXTSTEP -> OPENSTEP (with SUN)
• OPENSTEP +BSD ->Mac OS-X
• OS X -> iOs
lunes 3 de septiembre de 12
79. Objective-C
• Basic syntax:
• Anything valid in C is valid in Objective-C
• Smalltalk syntax is introduced through
“[]”
lunes 3 de septiembre de 12
84. Additional Syntax
• Separation of interface and implementation
• Method categories
• Protocols
lunes 3 de septiembre de 12
85. Additional Syntax
• Separation of interface and implementation
• Method categories
• Protocols
• UI related macros
lunes 3 de septiembre de 12
86. Additional Syntax
• Separation of interface and implementation
• Method categories
• Protocols
• UI related macros
• Some code generation for getters-setters
lunes 3 de septiembre de 12
90. Smalltalk in Objective-C
[UIView setAnimationDelay:wait];
[UIView beginAnimations:@"Fade Out" context:nil];
lunes 3 de septiembre de 12
91. Smalltalk in Objective-C
[UIView setAnimationDelay:wait];
[UIView beginAnimations:@"Fade Out" context:nil];
[self.navigationController
pushViewController:videoStarter animated:NO];
lunes 3 de septiembre de 12
92. Smalltalk in Objective-C
[UIView setAnimationDelay:wait];
[UIView beginAnimations:@"Fade Out" context:nil];
[self.navigationController
pushViewController:videoStarter animated:NO];
[self performSelector:@selector(showVideo:)
withObject: @"Owh" afterDelay: 0.3];
lunes 3 de septiembre de 12
123. So, you decided
• Download XCode
• Apple developer site
lunes 3 de septiembre de 12
124. So, you decided
• Download XCode
• Apple developer site
• Free but requires registration
lunes 3 de septiembre de 12
125. So, you decided
• Download XCode
• Apple developer site
• Free but requires registration
• Requires OS-X
lunes 3 de septiembre de 12
126. So, you decided
• Download XCode
• Apple developer site
• Free but requires registration
• Requires OS-X
• Latest Xcode will require latest OS-X
lunes 3 de septiembre de 12
127. So, you decided
• Download XCode
• Apple developer site
• Free but requires registration
• Requires OS-X
• Latest Xcode will require latest OS-X
• Can be downloaded through the App store
lunes 3 de septiembre de 12
128. So, you decided
• Download XCode
• Apple developer site
• Free but requires registration
• Requires OS-X
• Latest Xcode will require latest OS-X
• Can be downloaded through the App store
lunes 3 de septiembre de 12
140. Custom Artwork
• You WILL need at least some custom
artwork
lunes 3 de septiembre de 12
141. Custom Artwork
• You WILL need at least some custom
artwork
• Unless you are graphics artist do not do it
yourself!!
lunes 3 de septiembre de 12
142. Custom Artwork
• You WILL need at least some custom
artwork
• Unless you are graphics artist do not do it
yourself!!
• If you must, then read “Human Interface
Guidelines” especially:
lunes 3 de septiembre de 12
143. Custom Artwork
• You WILL need at least some custom
artwork
• Unless you are graphics artist do not do it
yourself!!
• If you must, then read “Human Interface
Guidelines” especially:
• “Human Interface Principals”
lunes 3 de septiembre de 12
147. iPhone Mockups
• Use a GUI designer
• Use ready made mockup images from the
internet
lunes 3 de septiembre de 12
148. iPhone Mockups
• Use a GUI designer
• Use ready made mockup images from the
internet
• http://www.teehanlax.com/downloads/
iphone-4-guid-psd-retina-display/
lunes 3 de septiembre de 12
149. iPhone Mockups
• Use a GUI designer
• Use ready made mockup images from the
internet
• http://www.teehanlax.com/downloads/
iphone-4-guid-psd-retina-display/
• Careful: the above can only be used by
designers for mockups not for promotion
lunes 3 de septiembre de 12
150. iPhone Mockups
• Use a GUI designer
• Use ready made mockup images from the
internet
• http://www.teehanlax.com/downloads/
iphone-4-guid-psd-retina-display/
• Careful: the above can only be used by
designers for mockups not for promotion
lunes 3 de septiembre de 12
153. Apple Human Interface Guidelines
• Must-must-must read!
lunes 3 de septiembre de 12
154. Apple Human Interface Guidelines
• Must-must-must read!
• “iOS Human Interface Guidelines describes the guidelines and principles
that help you design a superlative user interface and user experience
for your iOS app”
lunes 3 de septiembre de 12
155. Apple Human Interface Guidelines
• Must-must-must read!
• “iOS Human Interface Guidelines describes the guidelines and principles
that help you design a superlative user interface and user experience
for your iOS app”
lunes 3 de septiembre de 12
156. Apple Human Interface Guidelines
• Must-must-must read!
• “iOS Human Interface Guidelines describes the guidelines and principles
that help you design a superlative user interface and user experience
for your iOS app”
Image and quote source:Apple developer Library
lunes 3 de septiembre de 12
173. iOs App types
• Generally fits into a few basic categories
lunes 3 de septiembre de 12
174. iOs App types
• Generally fits into a few basic categories
• Simple one or 2 page apps
lunes 3 de septiembre de 12
175. iOs App types
• Generally fits into a few basic categories
• Simple one or 2 page apps
• Tab based apps
lunes 3 de septiembre de 12
176. iOs App types
• Generally fits into a few basic categories
• Simple one or 2 page apps
• Tab based apps
• Navigation based apps
lunes 3 de septiembre de 12
177. iOs App types
• Generally fits into a few basic categories
• Simple one or 2 page apps
• Tab based apps
• Navigation based apps
• OpenGL Apps
lunes 3 de septiembre de 12
178. iOs App types
• Generally fits into a few basic categories
• Simple one or 2 page apps
• Tab based apps
• Navigation based apps
• OpenGL Apps
• Mixed apps
lunes 3 de septiembre de 12
179. iOs App types
• Generally fits into a few basic categories
• Simple one or 2 page apps
• Tab based apps
• Navigation based apps
• OpenGL Apps
• Mixed apps
lunes 3 de septiembre de 12
188. Tabbed Apps
• Good when there are a few pages
lunes 3 de septiembre de 12
189. Tabbed Apps
• Good when there are a few pages
• Navigation is through always visible
sometimes horizontally scrollable tabs
lunes 3 de septiembre de 12
190. Tabbed Apps
• Good when there are a few pages
• Navigation is through always visible
sometimes horizontally scrollable tabs
lunes 3 de septiembre de 12
191. Tabbed Apps
• Good when there are a few pages
• Navigation is through always visible
sometimes horizontally scrollable tabs
lunes 3 de septiembre de 12
195. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
lunes 3 de septiembre de 12
196. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
• Can create a complex tree like navigation
lunes 3 de septiembre de 12
197. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
• Can create a complex tree like navigation
• with or without a navigation bar on top
lunes 3 de septiembre de 12
198. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
• Can create a complex tree like navigation
• with or without a navigation bar on top
lunes 3 de septiembre de 12
199. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
• Can create a complex tree like navigation
• with or without a navigation bar on top
lunes 3 de septiembre de 12
200. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
• Can create a complex tree like navigation
• with or without a navigation bar on top
lunes 3 de septiembre de 12
201. Navigation based Apps
• For more sophisticated apps
• Allows to navigate through pushing new
views
• Can create a complex tree like navigation
• with or without a navigation bar on top
lunes 3 de septiembre de 12
204. OpenGL Games
• Do not need to be compliant to Apple
Human Interface Guidelines as much as
other iOs apps
lunes 3 de septiembre de 12
205. OpenGL Games
• Do not need to be compliant to Apple
Human Interface Guidelines as much as
other iOs apps
• openGL is generally much harder than
Apple UI component based apps
lunes 3 de septiembre de 12
206. OpenGL Games
• Do not need to be compliant to Apple
Human Interface Guidelines as much as
other iOs apps
• openGL is generally much harder than
Apple UI component based apps
lunes 3 de septiembre de 12
207. OpenGL Games
• Do not need to be compliant to Apple
Human Interface Guidelines as much as
other iOs apps
• openGL is generally much harder than
Apple UI component based apps
Image from Apple developer site
lunes 3 de septiembre de 12
234. Where to go next
• Play with Xcode
lunes 3 de septiembre de 12
235. Where to go next
• Play with Xcode
• Immense amount of tutorials on the web
lunes 3 de septiembre de 12
236. Where to go next
• Play with Xcode
• Immense amount of tutorials on the web
• Some on-line courses by respected
universities
lunes 3 de septiembre de 12
247. Any questions?
• You can reach me at tansel@tansel.org
lunes 3 de septiembre de 12
248. Any questions?
• You can reach me at tansel@tansel.org
• Come and visit us in Turkey while I am
there!
lunes 3 de septiembre de 12
249. Any questions?
• You can reach me at tansel@tansel.org
• Come and visit us in Turkey while I am
there!
• Let us do an ESUG conference in Istanbul!
lunes 3 de septiembre de 12