With a group of like-minded and like-located smalltalkers, we have created the Github group "Buenos Aires Smalltalk" (BA-ST for short).
In it we have been sharing a set of interconnected projects, that would allow many of the architectural challenges of current applications to be available from the start.
You already know about Willow, but there are others. This talk will present an overview of some of these projects and what you can do with them, from configuring a new Github project, to working with graphs, state machines, systems and model creation, to name a few.
2. Who?
BA-ST → Buenos Aires Smalltalk
18 people registered
7 presentations at Smalltalks
3 at ESUG, OOPSLA
2 external collaborators
Designated speaker:
Maximiliano Tabacman You
!
8. Buoy
A complement to Pharo
Math
(200 increasedBy: 10 percent)
decreasedBy: 10 percent
Assertions
| code |
code := 'AR'.
AssertionChecker enforce: [ code size = 2 ] because: 'Expected 2 letters'
Bindings & Optionals
countBinding := Binding undefinedExplainedBy: 'Please set
the default count.'.
countBinding := Binding to: 1.
fileOptional := Optional unused.
fileOptional := Optional containing: self uploadFile.
9. Boardwalk
Some facilities over Seaside
Javascript
Expression
Function call
Named function
TypeOf
Global namespace declaration
Non-Inlined If/Then/Else
Web applications
Identifier assigner
Deployment mode
Online library
Extensions
JSObject
JSStream
WAHtmlCanvas
WAFormTag
WAUrl
10. Mole
A model for Graphs
Directed / Undirected
GraphBuilder new
...
buildUndirected
buildDirectedGraph builder
GraphBuilder new
connect: 1 to: 2;
loopOn: 1;
connect: 4 to: 3;
addVertex: 8;
buildUndirected
Complex labels
anEdge
withLabelDo: [:function | function value:
evaluationContext ] ifUnlabeled: [ self defaultValue ]
11. Cannon
State Machine implementation
Willow examples
Functional web application with state transitions
State machine specification builder
Create valid machine specifications
Transitions
● Name
● Source / Destination
● Preconditions
● Execution on completion
● Triggers
States
● Name
● Execution on entry
● Execution on exit
12. Stardust
Descriptive model creation
● Define how to build complex
objects (from UI components)
● Graph composition (Mole)
● Failure collecting strategy
Single model
SingleModelPicker
named: 'Chosen dish'
obtainingSelectionFrom: platesView
Fixed model
FixedModelCreator creating:
Date today
Reflexive instance creation
(GenericModelCreatorBuilder
named: 'Menu'
building: DinnerMenu
accessedUsing: #(dishes
beverages))
serving: self dishesCreator
drining: self beveragesCreator
13. GitHub-setup
Easy construction of new Pharo projects in GitHub
setup.sh
Step-by-step usage instructions
Structure
assets/
docs/
source/
README.md
CONTRIBUTING.md
LICENSE
...
14. Time for questions
Thanks!
Made possible by:
- Collaborators
- Companies: Mercap, Debris Publishing
- Universities: UBA, UCA, UNQ
Editor's Notes
Welcome to the talk where I tell you about the work of a bunch of people, coding and adding their projects to a little corner of Github. I’ll tell you a little bit about what we’ve been up to, so you can come and comment on the commits, download the tools and use them, or even better: join us with your improvements and your own projects!
We named the group BA-ST for Buenos Aires Smalltalk, but as you’ll see this has greatly exceeded the limits of that idea.
We currently have 18 people registered to the group, and we also have the guest collaboration of Tim Mackinnon and Sean DeNigris, who joined up to collaborate as well.
Check these avatars, the next time we give this talk, your own might be there as well! Also, if you’re one of the 3 people with default avatars, please change them to something more personal.
You might recognize some of the people here, like Gabriel Cotelli, Hernan Wilkinson and Mariano Peck, who have presented in the past different projects that are currently part of the group.
So where are we? Well, mostly in Buenos Aires. You’ll see that many of us work at Mercap, and indeed they are the ones who sent us here to spread the word.
This is an open source, collaborative group, and they have agreed that any architecture solution internally developed in Pharo is to be uploaded here, and shared with the community.
Whenever we find the time, we also try to port to Pharo (and so to Github) the different tools that we have developed for our VA Smalltalk environment over the years.
We have also had the collaboration of Debris Publishing, who have allowed Mariano’s work to be shared and uploaded as well.
Apart from the physical location, we are also located in the virtual world of Slack, at this URL. This is how Tim and Sean have been deep in talks about the details of some of our projects.
So… why are we doing this? First of all, the Github group started as a way to make visible different separate projects we have been working on.
Then we decided to add historical tools and projects that you have seen over the years at the conference.
The slack was also added to allow for a shared space to talk with our fellow smalltalkers in the city of Buenos Aires and eventually the whole country, although of course we welcome the participation of people from abroad. Most of those registered can communicate fluently in english, so you can join and ask questions.
We also wanted to offer a place for the university students to find useful tools, and upload them to the group once they are finished.
It is also a place to strengthen the Smalltalk community.
As you can see there is a lot of stuff here.
There are currently 24 repositories, most of which are active and growing, and more are added as we make our way into the world of APIs, Web Apps, DevOps, and more.
A lot of these projects have very high coverage with tests, since the idea is that you can read the tests to learn how to use them to the fullest.
You might notice that some of these are the content of talks seen previously in the conference.
Eventually we expect all projects to have a talk presented, and so with the video uploaded for each year, you should have a clear introduction to each component of the ecosystem.
Since I’ve got your attention I wanted to show you some other projects uploaded to the BA-ST Github group.
Most of these tools would likely require an entire talk just to give them a proper introduction, but either the person heading the development didn’t feel they were ready, or they didn’t have time this year. So I’ve decided to give you a glimpse of the projects that nobody is telling you about.
Let’s start with Buoy.
This is a complement to Pharo. Which means there’s a lot of stuff we were used to having around when developing at Mercap, and decided we desperately needed them in Pharo as well, or that we just though people would like it.
As you can see here there’s some additional protocol for math stuff, easy objects to perform assertions in an orderly manner, and the very important concept of optionals. As I’ve said, I won’t go into details in this talk. The good news is that Buoy has a nice documentation in its Github page, so check it out, or ask us about it during the conference.
Boardwalk is like Buoy, but for Seaside. Which means we wanted to have some useful protocol ready whenever working on Web Applications, and stored it here. Some of the stuff in Boardwalk was originally in Willow, of which you might have heard about, but eventually we started polishing the responsibilities and decided to extract it to Boardwalk as well. I’ve listed some of the extensions and utilities that it includes.
Mole is for Graphs. If you need to create a Graph, you can use Mole. It has some straightforward documentation on its Github page, but you can check the tests for a quick and complete undestanding of its features.
Cannon is the project to create, manage and execute state machines and their transitions. It has a very helpful builder to create valid instances.
As a bonus, since we wanted to use Cannon for the handling of state transitions in the workflow of our applications, we added a little example of a workflow in a simple Willow web application, which you can find as part of the project.
Stardust is a really interesting component extracted from the architecture in many of Mercap’s products. It allows the definition of instance creation and accessing, which in turn you can use to connect the view with the model of your application. It has support for error handling, metaprogramming facilities to create instances of any class in your model, observer support for change in visual components, to name a few. We have a lot of experience using it, although the migration of the documentation and examples to Github is still a work in progress. You can check the tests, and also ask us about some uses.
Finally, we have a non-Smalltalk project that allows us to create new projects in Github. The nice thing of this addition to the tool collection is that it includes a step by step guide to use it, and we are also working on adding features to connect it with Continuous Deployment tools like Docker.
I’ve taken enough of your time, so I’ll close thanking those who have made BA-ST the group it is today.
We have reached the state of projects I’ve mentioned thanks to the time devoted by our collaborators, both by coding and by questioning how to best use the contents we have uploaded.
We also have to thank the companies that have allowed us to use the time to code for open source projects, and share the result of hours of technical discussions with the community. I can’t stress enough the fact that some of the result of years of refinement are starting to show on the projects in the ecosystem I’ve told you about.
Apart from the companies, we have to thank the different universities who continue to teach Smalltalk, and allow developers to improve their own development environment by adding tools and sharing them. Students and teachers at UBA, UCA and UNQui have participated in creating these projects and show them to their colleagues. If you like what you’ve seen, now you can show them too! Thanks for your time, and let me know if you have any questions.