Author: Scott Gibson

  • Squeak Oversight Board 2026 – Call For Candidates

    Squeak Oversight Board 2026 – Call For Candidates

    The message below was shared by Patrick Rein on the Squeak Developers mailing list (link here). We encourage you to put your name forward or support a candidate by casting your vote on Squeak-dev. This is a great opportunity to take part. Now is a great time to become involved!


    Hi All,

    (If you plan to run, please note the important information for board members below).

    It’s that time again. Time to raise your voices and elect your leaders! Can you believe it’s been over a year already?

    It’s a time for you to stand up, help your community and volunteer to serve!

    Squeak wants you!

    Every year we elect the SOB (Squeak Oversight Board) consisting of seven members from our community. The current board members are:

    • Marcel Taeumel
    • Vanessa Freudenberg
    • Eliot Miranda
    • Tim Rowledge
    • David T. Lewis
    • Christoph Thiede
    • Rachel Crowther
    • Scott Gibson

    For more info on the board please see:  https://squeakboard.wordpress.com/our-mission/

    Everything about the election, including schedule and more, can be tracked here:  http://wiki.squeak.org/squeak/6675

    Now until Friday 8th of May 2026, 18.00 UTC: Nominations of SOB members and campaigning!

    Important Information for Candidates: As Squeak is a member project of the Software Freedom Conservancy, board members need to follow and sign the SFCs conflict of interest policy, which you can find here: https://sfconservancy.org/projects/policies/conflict-of-interest-policy.html

    Candidates should nominate themselves and start their campaign on the squeak-dev mailing list. Or if you nominate someone else, make sure that person really wants to run. 🙂 I will not put anyone on the candidate list until that person makes it known on squeak-dev that he/she intends to run.

    During this period, the candidates should ideally present themselves on squeak-dev, unless they have already done so, and the community can ask questions.

    I encourage you to reach out to potential candidates, people that are active in the community and represent your views, and ask them to run. Some people will not run without encouragement.  Also, I know that some people wait to the last minute to run for the board to see if others will run but please consider getting this year off to a faster start and just jump right in!

    The schedule and process are as follows:

    • Now until Friday 8th of May 2026, 18.00 UTC: Nominations of SOB members and campaigning!
    • Friday 8th of May 2026, 18.00 UTC: Candidate list is finalized.
    • Friday 8th of May 2026, ~19.00 UTC: Online election starts.
    • Friday 22nd of May 2026, 19.00 UTC: Online election ends.
    • Results will be announced immediately after the election ends.

    The voting period is two weeks long and ballots are sent out via email.

    And how do you end up on the voter list? See below. 🙂

    IMPORTANT: New voters will not be added once the election is started. You must try to get on the voter list before the 8th of May 2026 or you will not be able to vote. If your Email has changed please try to make sure it is changed on the list of voters before the election starts.

    ————————–

    If you were invited to vote last year you are already on the voter list, no worries! If you are a new Squeaker and wish to vote you should do one of the following:

    • Get a “known” Squeaker to vouch for you. If a known Squeaker sends an email to voters (at) squeak.org giving me a name and email for you, then I will add you.
    • Send an email to voters (at) squeak.org yourself (and CC to squeak-dev if you like) with information/arguments showing me that you are indeed serious about voting and that you are indeed a Squeaker.

    When the voting period starts all voters will receive an email with instructions and a link to the voting website.

    If there are any further questions, just reply *in this thread* and I will closely track it – or send email to voters (at) squeak.org which is updated and points to me.

    …so let’s get on with it!

    All the best, Patrick

    Photo by Tara Winstead from Pexels: https://www.pexels.com/photo/person-holding-white-and-red-love-print-card-8850718/

  • ESUG 2026 International Conference

    ESUG 2026 International Conference

    31st International Joint Conference ESUG

    The 31st ESUG conference will be held in Plovdiv, Bulgaria from Tuesday 7th to Friday 10th of July 2026. The colocated isLoop summer school to be held from Saturday 4th to Monday 6th of July 2026 and spread all during the conference through student volunteering program.

    Location and Venue

    Calls for Contributions

    This call includes:

    Call for Presentations

    ESUG Main Track is inviting interested speakers! In the Call for Presentations we are looking for YOUR experience on using Smalltalk. You will have 30 min for presentations and 45-60 min for hand-ons tutorial.

    Technology Award Competition

    The top 3 teams with the most innovative software will receive, respectively, 500 Euros, 300 Euros and 200 Euros during an awards ceremony at the conference. Developers of any Smalltalk-based software are welcome to compete. Read more in the Call for the Innovation Technology Awards

    Show us Your Project

    Additionally, we invite all attendies to announce their fresh work in any of Smalltalk technologies and to show it shortly during the dedicated sessions during the conference. We will collect the show topics during the conference at the student volunteer desk.

    International Workshop on Smalltalk Technologies

    IWST is an inspirative venue for sharing early ideas, preliminary results, tool demonstration, and any other more-or less immature form of innovation and research contribution published in an academic manner.

    Student Volunteer Program

    If you are a student wanting to attend ESUG, have you considered being a student volunteer? Student volunteers help keep the conference running smoothly; in return, they have free accommodations, while still having most of the time to enjoy the conference. More information. From last year, ESUG is co-locating the isLoop summer school for student volunteers during the weekend before the conference.

    You can support the ESUG conference in many different ways:

    • Sponsor the conference by our sponsoring packages
    • Submit a talk, a software or a paper to one of the events. See below.
    • Attend the conference. We’d like to beat the previous record of attendance.

    Thanks to our sponsors, students can get free registration and hosting if they enroll into the Student Volunteers program.

    Conference Registration

    Conference Registration. Now you can also pay (without extra fees) at HelloAsso.

    Early registration deadline: 01/04/2026

    Registration fees are:

    • Early Registration Fee: 600€ (all days) / 200€ (per day)
    • Late Registration Fee: 1000€ (all days) / 300€ (per day)
    • Extra person to social dinner: 70€
    • Payment by bank transfer: free of charge
    • Payment by credit card: +6% fees

    Note! In case of (too) late registrations we cannot ensure the availability of T-Shirts nor Social Event entrance for extra participants. Cancellation Policy: If the refund is requested during the early bird period all the fee (without charges) will be refunded. If it is requested after the early bird period is finished, the refund will be 50%.

    Got to the Conference organization

  • Happy 29th Birthday to Squeak!

    Happy 29th Birthday to Squeak!

    This month marks 29 years since the birth of Squeak Smalltalk. That is nearly three decades of exploration, invention, and collaboration – all made possible by the ambition and generosity of those who have shaped Squeak over the years.

    On this occasion, it is fitting to pause and give thanks:

    • To those who, in the early years, had the vision and energy to create something enduring.
    • To those who continue to share insights and encouragement, answer questions, and work to resolve difficult issues on the mailing lists, sustaining collaboration and shared purpose.
    • To the programmers who work tirelessly on the system and the virtual machine, ensuring that Squeak remains robust, modern, and ready for the challenges ahead.
    • To the maintainers who incorporate patches and merges, smoothing the flow of progress and keeping the platform healthy.
    • To the unsung heroes who support the infrastructure, making sure our tools and resources are available and reliable.
    • To the academic community at large who continues to explore, teach, and contribute to Squeak.
    • To those who provide financial support, helping sustain the project and its infrastructure.
    • And to everyone else not mentioned in this brief list.

    Each contribution, whether large or small, has helped Squeak remain vibrant and resilient – a system that is both a playground for ideas and a platform for serious development.

    As we look forward to the next year, let this anniversary be a moment of encouragement. There is always more to explore, more to refine, and more to create together. Your help makes a difference and keeps Squeak a programming system that is a joy to use, where everything is available to see, understand, modify, and extend for any purpose. With 30 just around the corner, now is a good time to reflect that you make a difference, and that Squeak would not continue without the efforts of its community.

    Here’s to another year of invention, collaboration, and joy with Smalltalk and Squeaking!

  • Upcoming Smalltalks 2025 conference at Facultad de Ingeniería, UBA

    Upcoming Smalltalks 2025 conference at Facultad de Ingeniería, UBA

    The Smalltalks 2025 conference is coming soon! The conference will take place from November 5 to 7, 2025, at the Facultad de Ingeniería, Universidad de Buenos Aires (UBA).

    When & Where

    • Dates: November 5-7, 2025
    • Location: Facultad de Ingeniería, UBA

    Registration & Call for Talks

    Registration for the event is now open (here), and participants are encouraged to secure their spot early. In addition, the call for talk proposals is available (here) – a great opportunity to share your work and ideas with the Smalltalk community.

    Sponsorship Opportunities

    Organizations interested in supporting the conference can explore the sponsorship options available (here). It is a chance to engage with the community while helping make the event possible.

    Stay tuned for more updates, and don’t miss out on one of the most exciting gatherings for the Smalltalk community!

    Have a great time with Smalltalk and keep on Squeaking!

  • Announcing the Multicast Project for Squeak

    Announcing the Multicast Project for Squeak

    Tony Garnock-Jones recently announced on the Squeak Developers mailing list (here) a new contribution to the Squeak community: Multicast, a project that brings UDP multicast socket support to Squeak.

    The project has been published on SqueakSource (here), where you can obtain the code and experiment with it directly. Tony also provided the file-in code with his announcement.

    What Does Multicast Do?

    Multicast provides the necessary support code for creating and using UDP multicast sockets within Squeak. This makes it possible for Squeak images to participate in group communication over networks – an important feature for distributed applications and collaborative tools. Check out the mailing list thread for more information on what multicasting does.

    Current Status and Platform Support

    • Tested on macOS: Initial testing has been done successfully.
    • Linux support: Testing is planned soon.
    • Windows users: Contributions are welcome – help testing Multicast on Windows would be especially valuable.

    Requirements

    To use Multicast, you will need:

    • A current Trunk version of Squeak
    • The SocketPlugin enabled

    How to Help

    Community involvement is encouraged! If you are running Squeak on Linux or Windows, testing Multicast and reporting results would be a great way to contribute.

    Have a great time with Smalltalk and keep on Squeaking!

    Photo by GuerrillaBuzz from Unsplash: https://unsplash.com/photos/a-group-of-blue-lights-iFj_9n695ns

  • California Smalltalkers Meeting on Aug. 13: Craig Latta to Present His Work with Catalyst, a WASM-Based Smalltalk VM

    California Smalltalkers Meeting on Aug. 13: Craig Latta to Present His Work with Catalyst, a WASM-Based Smalltalk VM

    The California Smalltalkers meeting on August 13 at 7:00 p.m. PDT will feature a presentation by Craig Latta on his recent work with Catalyst, a WebAssembly GC (WASM GC) implementation of the Open Smalltalk virtual machine. Latta will share surprising results from experiments using AI models to dynamically translate Smalltalk methods into WASM functions.

    The talk will also examine the historical evolution of dynamic stack machine optimization and explore BNF-level optimizations enabled by the Epigram compilation framework.

    The meeting will additionally include community lightning talks, giving attendees an opportunity to highlight current projects and ideas. Participants are invited to draw inspiration from their peers, and those interested in giving a longer presentation in the future are encouraged to reach out to the organizers.

    To learn more or attend, visit the Meetup event page at:
    https://www.meetup.com/california-smalltalkers/events/308741033

    Have a great time with Smalltalk and keep on Squeaking!

  • Naming and Referencing Morphs in Squeak/Smalltalk

    Naming and Referencing Morphs in Squeak/Smalltalk

    Dr. Nicola Mingotti has released a new in-depth tutorial video that explores how to identify and name Morphs in the Squeak/Smalltalk environment. If you have ever wondered how to refer to a specific Morph – for example, how to say “make that Morph yellow” – this video walks you through several effective techniques.

    Throughout the video, you will learn how to use tools such as the object explorer and the workspace to better understand and interact with objects in Squeak. The tutorial introduces a variety of methods, including assigning names to Morphs, identifying them using properties such as identityHash and knownName, and inspecting objects with user interface tools that are not immediately obvious to new users.

    This tutorial is particularly useful for those who wish to go beyond the basics and gain more precise control over their Squeak projects. It also includes several helpful interface tips that may be difficult to discover independently.

    Check out the video here!

    Have a great time with Smalltalk and keep on Squeaking!

  • Lesson 7: Programming the Shooter Game in Squeak/Smalltalk

    Lesson 7: Programming the Shooter Game in Squeak/Smalltalk

    Let us dive into the exciting process of game creation!

    In this lesson, you will begin writing the actual code that brings your game to life. The previous lessons prepared you by helping define the game’s key objects and their responsibilities. Now, with those ideas in place, it is time to create your first class in Smalltalk: ShooterGame.

    This class will act as the canvas for everything else that follows. Though it may seem plain at first, much like an artist’s blank canvas, your ShooterGame Morph will soon host a lively collection of interactive game objects – ships, enemies, shots, and more. Unlike a painting, however, this canvas can respond, animate, and change as your code evolves.

    Using the System Browser

    The work begins in the System Browser, a powerful tool within the Squeak environment where you can write, view, and organize your code. You can open the System Browser from the main menu under Tools → Browser, or by left-clicking on the desktop background and selecting Browser.

    This browser is not the only place you can write code in Squeak, but it is the one you will use most frequently as you build and modify your game. You will use it to define classes, write methods, organize your code into categories, and explore existing functionality that your objects can build on.

    ShooterGame as a Morph

    When you create your ShooterGame class, you define it as a subclass of Morph. This design choice is essential. A Morph is a graphical object in Squeak that can be added to the screen, moved around, colored, resized, and interacted with. By making ShooterGame a Morph, you give it the ability to appear on the screen and act as a visible, interactive container for the other game elements.

    This inheritance relationship also means that ShooterGame will share the capabilities of Morphs – like positioning and drawing – while allowing you to add new, game-specific behavior through your own methods.

    Understanding Initialization

    After defining your class, you will write its first method: initialize. This is a special method that sets up a new instance of the class when it is created. It is also an ideal place to define how the object should appear and behave initially.

    An instance of a class is the actual object that gets created from that class. Think of the class as a blueprint or a set of instructions – like the design for a computer. That design tells you what the computer will have and how it will work. But until someone actually builds a computer from that design, you do not have a real one. The same is true in programming: the class is the design, and an instance is the real, usable object created from that design. Every time you create a new object from a class, you are making a new instance of it. And because everything in Smalltalk is an object, even the class itself is a kind of object – one that can do things, not just describe them!

    Inside the method, you will encounter super initialize. This line is important. It tells the system to first run the initialize behavior of the parent class – in this case, Morph – before adding your custom setup code. An initialize method should always start by sending super initialize. Skipping this line can lead to unexpected issues because it would prevent an object from preparing itself properly.

    Following that, you will define the Morph’s position and size using the position: and extent: messages. In Squeak, extent refers to the width and height of the Morph – think of it as how much space it occupies on the screen. The coordinate system in Squeak starts at the top-left corner of the screen (0 @ 0), and each point is written as an x and y pair (e.g., 640 @ 480). These lines of code determine where your game window will appear and how large it will be.

    You also set the background color to black and give the object a name using setNameTo:. These finishing touches help establish your game’s visual style and identity.

    Positioning and Sizing

    In Squeak, the World refers to the entire display area of the environment – the space where all graphical objects (Morphs) appear and interact. It is the backdrop of your development tools, your game, and the broader environment in which your game objects will live and move. Even the tools you use to write your code – such as the System Browser – are Morphs themselves, sharing the same space and able to interact with the same environment as your game.

    Squeak uses a coordinate system to place and size Morphs on the screen. The top-left corner of the World is the origin (0 @ 0). When you set a Morph’s position to 100 @ 100, it will appear 100 points from the left and 100 points from the top. The extent describes the Morph’s width and height – how much space it will take up on the screen. These values give you precise control over where and how your game interface is laid out.

    Seeing the Results

    Even after completing just this lesson, you will be able to see the first visible result of your code. Though the game is not yet playable, the space in which it will take shape is now visible and ready for action. The foundation is laid, and every lesson from here will build upon it.

    Remember that these lessons are designed for live coding – you are encouraged to run, modify, and explore your work as you go. That is one of the great strengths of Smalltalk. The lessons in this series are designed for live coding, meaning the game does not need to be closed and restarted when changes are made. You can follow through the lessons just as easily without live coding; however, you may not learn as many topics, as some only arise from using live coding. Also, remember that, unlike some other programming languages, Smalltalk does not require a final period (.) at the end of a method. The final period in the last expression is optional.

    And finally, remember to save your work once you have successfully completed the lesson. This ensures you can pick up right where you left off next time or provides a good recovery option if something should go wrong.

    Lesson Resources

    To access Lesson 7 and the full series of tutorials for building the Shooter Game, visit https://scottgibson.site/ShooterGame/. There you will find everything you need to follow along, including PDFs, Squeak Help lesson content, source code, images, sound files, and other game assets. This site not only provides everything you need to progress but also even allows you to play the game directly in your browser using SqueakJS. Whether you are just getting started with Squeak/Smalltalk or advancing your skills, these resources will help guide you as you move forward through the game development process.

    Have a great time with Smalltalk and keep on Squeaking!

  • What Are Flaps in Squeak?

    What Are Flaps in Squeak?

    Dr. Nicola Mingotti has created a short introductory video, “Flaps in Squeak Smalltalk,” that explains how to get started using flaps in the Squeak environment. In the video, he demonstrates how to enable flaps, use them to drag objects into the Squeak World, and explores a few basic configuration options. If you are new to flaps or looking for a quick overview, this video provides a clear and helpful starting point. You can watch it here.

    Have a great time with Smalltalk and keep on Squeaking!

  • Lesson 6: Programming the Shooter Game in Squeak/Smalltalk

    Lesson 6: Programming the Shooter Game in Squeak/Smalltalk

    Lesson 6 – Object Interaction and Behavior

    In the last lesson, you were asked to identify the objects present in Figure 1 of Lesson 5. From the example, we will be using the object names ShooterGame, Ship, Shot, Enemy, and Score. These names have been chosen because they are clear, descriptive, and directly relate to the roles these objects will play within the game. Each name corresponds to a specific function within the game, and using such intuitive names helps to keep the code organized and easy to understand.

    The reason these names were selected is tied to their roles and responsibilities within the game. As you will see in the following explanations, each object has a clear purpose. At the core of everything is ShooterGame, which provides the game screen – the boundary within which all gameplay takes place. It serves as the origin point for the entire game, coordinating the creation and management of other game elements and the overall flow of activity. The Ship represents the player’s character, allowing for movement and interaction with enemies. Shot represents the projectiles fired by the player, which interact with enemies to destroy them. Enemy objects are the targets that move across the screen and can be destroyed by shots. Finally, the Score object tracks the points the player earns by destroying enemies. The following sections of this article will further explain the roles and responsibilities of each object in detail, providing a better understanding of how they work together in the game.

    Key Object Behaviors

    • ShooterGame: The ShooterGame object provides the screen boundary and serves as the foundation from which the entire game emerges. It defines the playable area that other objects use to determine their positions and limits. In addition to supplying this essential structure, ShooterGame also acts as the central controller of the game. It initializes the Ship and Score at the start and recreates Enemy objects when all have been eliminated. It also coordinates the overall flow of the game, including when it begins and ends, and keeps track of the main objects involved in gameplay.
    • Ship: The Ship is controlled by the player, and its movements will be essential to the game. You can program the Ship to move in all four directions: up, down, left, and right. Unlike many games, the ship will not be destroyed if it comes into contact with an enemy, meaning the player can continue to control the ship without worrying about direct collisions with enemies. The ship’s movement and interactions with other objects will be crucial to progressing through the game.
    • Shot: The Shot object represents the projectiles that the player shoots at the enemies. Shots will move in an upward direction as the player fires them. The behavior of the Shot is simple: when a shot hits an enemy, the enemy is destroyed. This interaction between the shot and the enemy is one of the core mechanics of your space shooter game.
    • Enemy: The Enemy objects will move left and right across the screen, adding a dynamic element to the game. There will be three Enemy objects in the game, each with its own movement pattern. As the player’s shots hit the Enemy objects, the Enemy objects will be destroyed, and the player will earn points.
    • Score: The Score object is responsible for keeping track of the player’s points. Each time an enemy is destroyed, the player earns 100 points, and the score increases accordingly. The score is updated when a Shot hits an Enemy. Because the Score object displays its information on the ShooterGame screen, it maintains a relationship with it.

    Object Interactions

    Now that each object’s role and behavior has been identified, it is important to understand how these objects interact during gameplay. Their interactions define how the game functions and how players experience the game world.

    • Ship and ShooterGame: The Ship appears within the game screen provided by ShooterGame. It moves in response to player input and uses the boundaries of the game screen to determine how far it can travel. The screen boundaries provided by ShooterGame limit how far the Ship can move. ShooterGame provides the space in which the Ship operates, but it does not control the Ship’s movement.
    • Ship and Shot: When the player activates a firing action, the Ship releases a Shot that travels upward. This interaction allows the player to engage with enemies and is central to gameplay. The firing of a Shot gives the player a way to respond to the movement of Enemy objects on the screen.
    • Shot and ShooterGame: The game screen provided by ShooterGame establishes the upper boundary for shots. When a Shot moves upward and reaches the top of the screen, it is removed from play. ShooterGame does not manage or direct shots, but its boundaries help determine when a Shot leaves the gameplay area.
    • Shot and Enemy: If a Shot comes into contact with an Enemy during its path, both the Shot and the Enemy are removed from play. This interaction is a key part of gameplay: successful hits on Enemy objects are the player’s goal. When this happens, the Score is also updated to reflect the player’s progress.
    • Enemy and ShooterGame: Enemy objects move left and right across the game screen using the screen’s width to guide their motion. The screen boundaries provided by ShooterGame limit how far Enemy objects can move. When an Enemy is hit by a Shot, it is removed from the game screen.
    • Score and ShooterGame: The Score is displayed on the game screen and increases when an Enemy is destroyed. ShooterGame provides the location where the Score is shown during gameplay. As the game progresses, the Score gives players feedback on their performance and accomplishments.

    Understanding how these objects behave and interact lays the groundwork for building a playable game. By thinking carefully about each object’s role and how it connects with others, you will be better prepared to implement the necessary features in code. These foundational concepts will continue to guide your work as you move forward with designing and programming the game’s functionality.

    The tutorials are now also available for use inside the Squeak development environment through the Squeak Help System. Once installed, this resource allows you to read and follow the lessons directly within Squeak, making it easy to experiment with code and concepts without leaving the environment. The Help System documentation is included as part of the downloadable resources for the game and can be added to your Squeak image just like the other game assets.

    Lesson Resources

    To access Lesson 6 and the full series of tutorials for building the Shooter Game, visit https://scottgibson.site/ShooterGame/. There you will find everything you need to follow along, including PDFs, Squeak Help lesson content, source code, images, sound files, and other game assets. This resource also allows you to try out the game directly in your browser using SqueakJS. Whether you are new to programming, just getting started with Squeak/Smalltalk, or building on prior experience, these materials will support you as you continue developing your own version of the game.

    Have a great time with Smalltalk and keep on Squeaking!