tag:blogger.com,1999:blog-68367286653323194562024-03-14T15:53:56.535+00:00[ UK Smalltalk User Group ]Unknownnoreply@blogger.comBlogger107125tag:blogger.com,1999:blog-6836728665332319456.post-15109365334686218792024-02-23T14:46:00.004+00:002024-02-23T14:46:43.267+00:00Juan Vuletich - Bootstrap & Dynamic Cuis Libraries - 28 February 2024<p> Juan Vuletich returns to the UKSTUG to discuss some recent enhancements to <a class="!text-viridian" href="https://cuis.st/" rel="nofollow ugc" target="_blank">Cuis Smalltalk</a>: Bootstrap and Dynamic Cuis Libraries.</p><div class="break-words">
<p class="mb-4"><b>Bootstrap:</b> <i>Creating Minimal Images from Scratch</i></p>
<p class="mb-4">> * <i>The last ancestor of Cuis Smalltalk that was
bootstrapped from scratch was Smalltalk-76. Since then, various released
images of Smalltalk-80, Squeak and Cuis were derived by applying
updates to the previous one. A new tool called 'Bootstrap' allows the
creation of minimal Smalltalk images from scratch. These images are in
the Spur 32 and 64-bit formats, compatible with the OpenSmalltalk VM.
'Bootstrap' gives developers complete control over what is included in
the new image. It is compact, relatively simple, and easy to extend and
adapt.</i></p>
<p class="mb-4"><b>Dynamic Cuis Libraries</b>: <i>A binary format for Cuis code that is powerful and quick to load</i></p>
<p class="mb-4">> * <i>Dynamic Cuis Libraries are binary files with
pre-compiled code that can be loaded into a running Cuis image. They can
add new classes and extend existing ones. For existing classes, there
are no requirements on the shape of that class in the image loading the
library. Missing variables are added, extra variables are kept, and both
existing and newly loaded methods are adjusted to whatever shape the
class has.</i></p>
<p class="mb-4"><a class="!text-viridian" href="https://independent.academia.edu/JuanVuletich" rel="nofollow ugc" target="_blank">Juan Vuletich</a> is the founder and lead developer of <b>Cuis</b>
Smalltalk. He is a long-standing Open Source Smalltalk community
member, having contributed kernel code to Cuis, Squeak and the Squeak VM
for over 25 years. Juan has been programming since he was 14, and doing
it professionally since he was 17. He holds an MS.Sc. in Computer
Science from the University of Buenos Aires. He works at LabWare.</p><p>This will be an online meeting from home.</p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/299084123/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!<p class="mb-4"> </p></div>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-69381507909530534112024-01-26T10:35:00.003+00:002024-01-26T11:16:34.416+00:00Pierre Misse-Chanabier - Polyphemus (Take 2) - 31 January 2024<p>Pierre Misse-Chanabier will talk to us about <a class="!text-viridian" href="https://github.com/hogoww/Polyphemus" rel="nofollow ugc" target="_blank">Polyphemus</a> for the Pharo Virtual Machine.</p><div class="break-words">
<p class="mb-4">The presentation will focus on how to create Tooling on
the Pharo Virtual Machine. (This does not require Virtual machine level
knowledge)<br />
We will start by taking a look at a few existing tools. We will create
one or two small tools, and see how they differ from tooling on the
image side.</p>
<p class="mb-4">Pierre Misse Chanabier is a recently graduated PhD with a
focused interest on Virtual Machines, Code Generation, and Meta
Programming. He worked on and contributed to many different levels and
parts of the Pharo<br />
ecosystem.<br />
He is now working on how to leverage images for more than what they do now. He's currently working at <a class="!text-viridian" href="https://www.microdoc.com" rel="nofollow ugc" target="_blank">Microdoc </a>on the Graal VM.<br />
Born in south of France, he currently lives in Lille.</p><p>This will be an online meeting from home.</p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/298169915/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!<br /></div>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-11070195209315194262023-11-28T23:38:00.002+00:002024-01-26T10:35:58.576+00:00Pierre Misse-Chanabier - Polyphemus - 29 November 2023<p>Pierre Misse-Chanabier will talk to us about <a class="!text-viridian" href="https://github.com/hogoww/Polyphemus" rel="nofollow ugc" target="_blank">Polyphemus</a> for the Pharo Virtual Machine.</p><div class="break-words">
<p class="mb-4">The presentation will focus on how to create Tooling on
the Pharo Virtual Machine. (This does not require Virtual machine level
knowledge)<br />
We will start by taking a look at a few existing tools. We will create
one or two small tools, and see how they differ from tooling on the
image side.</p>
<p class="mb-4">Pierre Misse Chanabier is a recently graduated PhD with a
focused interest on Virtual Machines, Code Generation, and Meta
Programming. He worked on and contributed to many different levels and
parts of the Pharo<br />
ecosystem.<br />
He is now working on how to leverage images for more than what they do now. He's currently working at <a class="!text-viridian" href="https://www.microdoc.com" rel="nofollow ugc" target="_blank">Microdoc </a>on the Graal VM.<br />
Born in south of France, he currently lives in Lille.</p><p>This will be an online meeting from home.</p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/297644731">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</div><div class="break-words"><p class="mb-4"><b>Update 26 January 2024</b>: due to issues with the Zoom account, Pierre's presentation had to be postponed to <a href="https://www.uksmalltalk.org/2024/01/pierre-misse-chanabier-polyphemus-take.html">January</a>. <br /></p></div>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-28184517674633201822023-10-24T18:14:00.002+01:002023-10-24T18:14:25.496+01:00Marten Feldtmann - GPAS: GemStone/PUM Application Stack - 25 October 2023<p>For our October meeting, <a href="https://schrievkrom.wordpress.com">Marten Feldtmann</a> will share is project GPAS: a GemStone/PUM Application Stack.<br /></p><p>This will be an online meeting from home.</p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/296563100/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-75231557936977337912023-09-26T15:38:00.005+01:002023-09-26T15:44:44.784+01:00ESUG 2023 Recap - 27 September 2023<p>The ESUG conference returned once more <a href="https://esug.github.io/2023-Conference/conf2023.html">this past summer</a> when Smalltalkers from all over the world met in Lyon, France for a week of presentations, and socials.<br />For this month's meeting, we'll have an open discussion about what was presented at the conference. If you've been there, join us to tell us what you liked, and why. If you could not go, join us and discover what went down in Lyon!</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/295958488/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-54968589735963268612023-07-26T08:56:00.001+01:002023-07-26T08:56:30.840+01:00Show'n'Tell - 26 July 2023<p>For this month's meeting, we'll open the floor to the whole audience and let people show what they are working on.<br /><br />If you have an interesting project to show, or if you'd like to get some help with some hard problem, just show up and be ready to present!<br /><br />This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/294397093/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-30803270488863962522023-06-26T19:51:00.003+01:002023-06-26T19:51:25.187+01:00David Buck - Beagle Smalltalk - 28 June 2023<p>For our June meeting, <a href="http://www.simberon.com/">Simberon</a>'s David Buck will present Beagle Smalltalk.</p><p>Over
the past 8 years, David has been developing a Smalltalk virtual
machine and image. He used it to release two Smalltalk Games which ran on Andriod and iPhone devices. More recently, he's
re-written the VM to use a new bytecode set and re-written the Smalltalk compiler with a new framework to make a new Smalltalk environment called Beagle Smalltalk named after the ship that took Darwin on his voyage of discovery. David plans to release this as an open-source Smalltalk to
help and encourage kids to explore the world of programming.</p><p>In this talk, David presents the current status of the project and where he hopes to go with it.</p><p>David
Buck is the president of Simberon - a company that has been providing
Smalltalk training and consulting for over 25 years. Along with James
Robertson, David produced the Industry Misinterpretations podcast and
later the Smalltalk Reflections podcast with Craig Latta. David remains a
Smalltalk enthusiast and works to spread the word about Smalltalk.</p><p> (This is a rescheduling of our December meeting) <br /></p><p> This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/293933993/">Meetup page</a> to receive the meeting details.</p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-65012424624597709012023-05-30T08:12:00.002+01:002023-05-30T08:12:26.821+01:00Stephane Ducasse - Pharo: a vision implemented step by step - 31 May 2023<p><span style="background-color: white; font-family: inherit;"> </span></p><p class="mb-4" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; -webkit-text-stroke-width: 0px; border: 0px solid; box-sizing: border-box; color: black; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1rem; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="background-color: white; font-family: inherit;">For our May presentation, Stephane Ducasse will present the vision behind Pharo and how that is been implemented incrementally across multiple releases. In Stef's words:</span></p><p class="mb-4" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; -webkit-text-stroke-width: 0px; border: 0px solid; box-sizing: border-box; color: black; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1rem; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="background-color: white; font-family: inherit;">"The vision of Pharo is based on three pillars:<br style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box;" />- First we want to make sure that Pharo is used to develop complex and robust systems (by complex we means multiple millions lines of code or objects).<br style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box;" />- Second we want Pharo to be a modular system that can be versatile (Pharo on iot, on large servers, in the web browser….)<br style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box;" />- Third Pharo should be an evolvable system that can adapt to new needs (modular tools, first class slot, new debuggers, packages…).</span></p><p class="mb-4" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; -webkit-text-stroke-width: 0px; border: 0px solid; box-sizing: border-box; color: black; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1rem; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="background-color: white; font-family: inherit;">Sometimes it can be unclear that we follow this vision but over the years we are delivering this vision and we will continue. In this talk I will briefly recall the vision behind Pharo and show the achievements so far. I will show that our development is heavily backed by tests.<br style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box;" />In the second part of the talk I will focus on the current effort to improve the user interface. I will show that the reimplementation of the Spec UI framework is a cornerstone of the future replacement of Morphic and use of GTK.<br style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box;" />I will also answer questions about Pharo 11 and Pharo 12."</span></p><p class="mb-4" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; -webkit-text-stroke-width: 0px; border: 0px solid; box-sizing: border-box; color: black; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1rem; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="background-color: white; font-family: inherit;">Stephane is an Inria Research Director, currently lead the<span> </span><a class="!text-viridian" href="http://rmod.lille.inria.fr/" rel="nofollow ugc" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1 !important; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box; color: #0098ab; text-decoration: inherit;" target="_blank">RMoD team</a>. Stef is an expert in language design, software quality, program understanding, program visualisations, reengineering and metamodeling. Among his contributions we can list: traits (implemented in Pharo, Perl, PHP and other languages);<span> </span><a class="!text-viridian" href="http://www.moosetechnology.org/" rel="nofollow ugc" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1 !important; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box; color: #0098ab; text-decoration: inherit;" target="_blank">Moose</a>, an open-source software analysis platform. Stef is one of the leaders of<span> </span><a class="!text-viridian" href="http://www.pharo.org/" rel="nofollow ugc" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1 !important; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box; color: #0098ab; text-decoration: inherit;" target="_blank">Pharo</a>, a dynamic reflective object-oriented language supporting live programming, and of the industrial<span> </span><a class="!text-viridian" href="https://consortium.pharo.org/" rel="nofollow ugc" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1 !important; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box; color: #0098ab; text-decoration: inherit;" target="_blank">Pharo consortium</a>.</span></p><p class="mb-4" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; -webkit-text-stroke-width: 0px; border: 0px solid; box-sizing: border-box; color: black; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1rem; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="background-color: white; font-family: inherit;">Stef works regularly with companies such as Thales, Wordline, Siemens, Berger-Levrault, Arolla, and others on their software evolution problems. Stef has authored a<span> </span><a class="!text-viridian" href="http://stephane.ducasse.free.fr/Publications.html" rel="nofollow ugc" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1 !important; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box; color: #0098ab; text-decoration: inherit;" target="_blank">couple hundred articles</a><span> </span>and several<span> </span><a class="!text-viridian" href="http://books.pharo.org/" rel="nofollow ugc" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-text-opacity: 1 !important; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid; box-sizing: border-box; color: #0098ab; text-decoration: inherit;" target="_blank">books</a>.</span></p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/293473947/">Meetup page</a> to receive the meeting details.</p><p class="mb-4" style="--tw-backdrop-blur: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); --tw-backdrop-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-invert: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-opacity: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-backdrop-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-blur: var(--tw-empty,/*!*/ /*!*/); --tw-brightness: var(--tw-empty,/*!*/ /*!*/); --tw-contrast: var(--tw-empty,/*!*/ /*!*/); --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/); --tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); --tw-grayscale: var(--tw-empty,/*!*/ /*!*/); --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/); --tw-invert: var(--tw-empty,/*!*/ /*!*/); --tw-ring-color: rgba(59,130,246,.5); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-saturate: var(--tw-empty,/*!*/ /*!*/); --tw-scale-x: 1; --tw-scale-y: 1; --tw-sepia: var(--tw-empty,/*!*/ /*!*/); --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-translate-x: 0; --tw-translate-y: 0; -webkit-text-stroke-width: 0px; border: 0px solid; box-sizing: border-box; color: black; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1rem; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="background-color: white; font-family: inherit;"> </span></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-59728115571383066702023-04-18T08:27:00.005+01:002023-04-20T19:33:52.306+01:00Yoshiki Ohshima - Croquet Microverse - 26 April 2023<p>For this month's online presentation, Yoshiki Ohshima will demonstrate the <a href="https://croquet.io/">Croquet Microverse</a>, which is a 3D collaborative construction environment. It is an incarnation of Smalltalk-based Croquet but instead implemented in JavaScript. Microverse allows a group of users to collaboratively create new objects in a virtual space, and describe their behaviors in the live programming manner that can be used by professional programmers.<br /><br />The object extension mechanism used in the Microverse is heavily influenced by past class and object extension mechanisms, many of which originated from experimentation and implementation in Smalltalk. Likewise, the architecture of the Microverse application framework draws upon other frameworks such as Morphic and AppKit. Yoshiki will explain the connections between those systems and the Microverse.<br /><br /><a href="https://tinlizzie.org/ohshima/">Yoshiki</a> joined Walt Disney Imagineering R&D in 2000 as an intern while attending the graduate school of Tokyo Institute of Technology, and helped develop prototypes of Disney's theme park attractions. He also has been involved in Alan Kay's research group, and participated in the research and development effort of education programming environment Squeak Etoys and later took the leading role. Yoshiki has worked at the Viewpoints Research Institute, SAP Labs CDG, and Y Combinator Research, all of which Dr. Kay founded or helped found. He was awarded his PhD. for designing and implementing a massively parallel particle programming system from Tokyo Institute of Technology.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/292570084/">Meetup page</a> to receive the meeting details.</p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-57556372440611942492023-03-21T20:06:00.004+00:002023-03-21T20:06:50.400+00:00Mercap Presents: Open Source Frameworks for Financials Solutions - 29 March 2023<p>This month's online meeting introduces a new format whereby we'll give space to commercial companies to discuss how they make use of Smalltalk and contribute to the Smalltalk community.<br /><br />The first of this series will be <a href="https://www.mercapsoftware.com/en/">Mercap Software</a>, represented by Gabriel Cotelli, Inés Sosa, Iván Boaretto, Matías Fernandez, and Maximiliano Tabacman.<br /><br />During this talk, Mercap will showcase five of their solutions designed for different types of investors. They will shed light on how Mercap benefits from the open-source projects maintained by the Buenos Aires Smalltalk group on GitHub. They will share with you how they use these freely available frameworks to interact with databases, operate on math and time units, create custom CSS, declare interactions on web applications, display complex charts, manage application startup, and streamline the creation of Docker images.<br /><br />Gabriel Cotelli is a CS bachelor, continuous learner & free-thinker. Supporter of libre knowledge, human intelligence augmentation and open source software. Working in Smalltalk at Mercap since 2004. He's an active member of the Smalltalk development community and regular contributor to open source projects in Buenos Aires Smalltalk and Pharo.<br /><br />Inés Sosa writes code in Smalltalk.<br /><br />Iván Boaretto is a software developer by day and a computer science student by night. He is very passionate about his craft and is always striving to improve. Now, in his first time at the Smalltalks, he is looking to attract new blood to the wonderful Smalltalk community.<br /><br />Matías Fernandez is a software and tech enthusiast, and Smalltalk developer.<br /><br />Maximiliano Tabacman has been a part of Mercap since he started his studies in IT, which now include a PhD in Computer Sciences from the Facultad de Ciencias Exactas y Naturales (UBA). His main interest is the design of systems that apply nature inspired concepts, such as evolutionary algorithms and neural networks. Smalltalk, with its object-message design, is his natural choice for a development platform. He is also the creator of ERA, a standalone web server application for running table-top roleplaying games, which runs on Windows, Mac and Linux.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/292128721/">Meetup page</a> to receive the meeting details.</p><p> </p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-25832308453630323302023-02-14T23:04:00.007+00:002023-08-26T16:35:42.465+01:00Craig Latta - WebAssembly as a Smalltalk Compilation Target (v1) - 22 February 2023<p><a href="https://wikiwand.com/en/Webassembly">WebAssembly</a> (WASM) is an instruction format for portable high-performance code, run by a stack-based virtual machine. To Smalltalkers, this sounds very familiar. WASM is supported by the three most popular web browsers, and by other host platforms as well. Perhaps we can translate certain Smalltalk compiled methods to WASM, augmenting our support for physical processors and for livecoding the Web. For our February meeting, Craig Latta will describe his initial experiments, using the <a href="https://thiscontext.com/epigram">Epigram</a> compilation framework.<br /><br /><a href="https://thiscontext.com/">Craig Latta</a> is a research computer scientist in Berkeley and Amsterdam, with interests including livecoding, music performance, and interactive visualization. The discovery of a mysteriously-placed copy of the Blue Book at university led to stints at several exploratory labs, and a pursuit of improvisation wherever code is found.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/291365015/">Meetup page</a> to receive the meeting details.</p><p><b>Update 26 August 2023:</b> The recording of Craig's presentation is now live on <a href="https://vimeo.com/858207177?share=copy">Vimeo</a>. <br /></p><p> </p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-45315937827247146442023-01-16T18:33:00.001+00:002023-03-06T18:48:56.290+00:00Stéphane Rollandin - muO: musical objects for Squeak - 25 January 2023<p>For our first online meeting of the year, Stéphane Rollandin will talk to us about <a href="http://www.zogotounga.net/comp/squeak/sqgeo.htm">muO: musical objects for Squeak</a>.<br /><br />The presentation will focus on some of the interactive tools and subsystems widely used in muO, that are of interest in their own right, and potentially useful to others.<br />The main emphasis will be on the large family of zoomable fields, which are modular plotting editors. Stéphane will demonstrate the workflow they are designed for, and show in what sense it is a seamless and natural exploitation of the Morphic framework.<br />The code for these tools is somewhat entangled with the muO package, so Stéphane will also provide a Squeak image taylored to help people find their way there.<br /><br />Stéphane Rollandin has been doing independent research on software for musical composition and representation for the last 20 years, during his whole careeer as a stay-at-home father.<br />After developing the GeoMaestro system for KeyKit, and the Csound-x package for Emacs, he was introduced to Smalltalk and never looked back. Besides muO, he developed for Squeak a modular Lisp interpreter, the LambdaMessageSend framework and a few games. He is now working on an experimental game engine with an emphasis on procedural generation and complex autonomous agents.<br />He was formally educated in physics, and his other artistic ventures are in photography and aikido. His music is freely available <a href="https://stephanerollandin.bandcamp.com/">online</a>.<br />Born in Marseille, he currently lives in the southern French Alps.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/290746320/">Meetup page</a> to receive the meeting details.</p><p> Update 6 March 2023: The recording of the presentation is now available on <a href="https://vimeo.com/805242793">Vimeo</a>. <br /></p><p> </p><p><br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-33063564090260215482022-12-19T22:36:00.000+00:002022-12-19T22:36:09.965+00:00David Buck - Beagle Smalltalk - 28 December 2022<p>For our holiday meeting, <a href="http://www.simberon.com/">Simberon</a>'s David Buck will present Beagle Smalltalk.</p><p>Over the past 8 years, David has been developing a Smalltalk virtual machine. He used it to release two Smalltalk Games written in VisualWorks to run on Andriod and iPhone devices. More recently, he's re-written the VM to use its own bytecode set and written his own Smalltalk compiler to make it a stand-alone Smalltalk environment called Beagle Smalltalk named after the ship that took Darwin on his voyage of discovery. David plans to release this as an open-source Smalltalk to help and encourage kids to explore the world of programming.</p><p>In this talk, David presents the current status of the project and where he hopes to go with it.</p><p>David Buck is the president of Simberon - a company that has been providing Smalltalk training and consulting for over 25 years. Along with James Robertson, David produced the Industry Misinterpretations podcast and later the Smalltalk Reflections podcast with Craig Latta. David remains a Smalltalk enthusiast and works to spread the word about Smalltalk.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/290409453/">Meetup page</a> to receive the meeting details.</p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-19052147302216234882022-11-29T08:58:00.004+00:002023-02-28T08:08:37.516+00:00Dave Mason - Zag Smalltalk - 30 November 2022<p><a href="http://sarg.ryerson.ca/dmason/">Dave Mason</a> has been a professor of Computer Science at Toronto Metropolitan University (previously known as Ryerson) for 41 years. He has done research on operating systems, software reliability and programming languages. Current research is mostly around Smalltalk and other dynamic languages. If forced to program very low level projects such as virtual machines, he is willing to use Zig or Rust, but for any other purpose, he insists on using higher productivity languages - primarily Smalltalk.<br /><br /><a href="https://github.com/dvmason/Zag-Smalltalk">Zag Smalltalk</a> is a principle-based Smalltalk VM. "Principled" means that the only 3 operations are: message send, assignment, and return. <br /><br />1) it is designed from the ground up to use multi-processing, to leverage multi-core systems.<br />2) There is no special-casing of methods like ifTrue:ifFalse or whileTrue:, although of course some methods are implemented by primitive methods. It does aggressive inlining of methods and blocks.<br />3) “Source” code is maintained as ASTs.<br />4) Compiled code runs in a dual form of threaded code and JIT’ed machine code that seamlessly interoperate.<br />5) It has a partially-copying and partially-non-moving garbage collector.<br />6) It keeps many more values as immediate, including symbols.<br />7) It uses a single-level dispatch mechanism to implement Smalltalk dispatch semantics<br /><br />The research question is, "Can this be made fast enough to be competitive?” Preliminary results are encouraging.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/290036186/">Meetup page</a> to receive the meeting details.</p><p>Update 28 February 2023: The recording of Dave's presentation is now up on <a href="https://vimeo.com/802502826">Vimeo</a>. <br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-3980945262945494362022-10-25T23:58:00.001+01:002023-02-26T12:04:08.195+00:00(Online) Beer and Smalltalk<p>For this month's meeting, we'll take it easy and have an online social!<br /><br />Bring your favourite drinks - beer, coffee, or whatever you prefer!</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/289339721/">Meetup page</a> to receive the meeting details.</p><p><b>Update 26 February 2022:</b> Aik-Siong Koh's presentation on digital twins using Smalltalk is now available on <a href="https://vimeo.com/802402616">Vimeo</a>.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-65418468771459270122022-09-26T00:26:00.005+01:002022-09-28T08:13:59.038+01:00ESUG 2022 Recap - 28 September 2022<p>After a two year pause, the ESUG conference returned <a href="https://esug.github.io/2022-Conference/conf2022.html">this past summer</a> when Smalltalkers from all over the world met in Novi Sad, Serbia for a week of presentations, and socials.<br /><br />For this month's meeting, we'll have an open discussion about what was presented at the conference. If you've been there, join us to tell us what you liked, and why. If you could not go, join us and discover what went down in Novi Sad!</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/288718350/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-5459297596189803872022-08-10T23:17:00.002+01:002023-02-19T19:25:17.680+00:00Intro to Asynchronous Programming with VAST - 31 August 2022<p>For this month, we'll be welcoming <a href="https://www.instantiations.com/">Instantiations</a>' Mariano Martinez Peck and Seth Berman, who will be talking to us about asynchronous programming in Smalltalk.<br /><br />Whether you’re interested in starting a new project or enhancing an existing system, asynchronous programming offers a great way to optimize application speed and help ensure maintainability as complexity increases. We’ll discuss the asynchronous programming approach, why it’s important, and show live demos in the <a href="https://www.instantiations.com/vast-platform/">VAST Platform</a> of how to get started with futures/promises, asynchronous streams/zones, and more!<br /><br /><a href="https://twitter.com/martinezpeck">Mariano Martinez Peck</a> is a senior systems engineer specializing in dynamic programming language software. In 2018, he joined Instantiations to further develop the VAST Platform through the addition of new frameworks, libraries and tools, as well as improving the existing code base of VAST. He is active in the Smalltalk development community, and has used his expertise to co-author numerous open source projects. Mariano has a PhD in Computer Science, and his academic research has been published across various international journals.<br /><br /><a href="https://twitter.com/sethloco78">Seth Berman</a> is President & CEO of Instantiations. He leads a dedicated team that tirelessly supports and enhances Instantiations' VAST Platform, while he guides expansion into new software/service areas like IoT, cloud, and edge computing solutions. Before leading Instantiations, Seth joined the company in 2011 as a software engineer working on projects ranging from advanced code editors and cryptography libraries to FFI enhancements and virtual machine implementations. Previously, he worked for the US government in a variety of domains including stochastic simulation, operations research, grid computing, and link analysis. Seth has a B.S. in Computer Science and an M.S. in Software Engineering.</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/287330710/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p><p> <b>Update 19 February 2023:</b> The recording of the presentation is now available on <a href="https://vimeo.com/800273265">Vimeo</a>. <br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-62624014639434140382022-07-18T16:30:00.001+01:002023-02-17T17:07:14.429+00:00Show'n'Tell - 27 July 2022<p>For this month's meeting, we'll open the floor to the whole audience and let people show what they are working on.<br /><br />If
you have an interesting project to show, or if you'd like to get some
help with some hard problem, just show up and be ready to present!</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/ukstug/events/286802146/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p><p><b>Update 17 February 2023</b>: The recording of this session are now available on Vimeo:</p><p><a href="https://vimeo.com/783075106">Tim Rowledge - Home weather station using Squeak and MQTT - 27 July 2022</a> <br /><a href="https://vimeo.com/783442294">Christian Haider - Porting PDFTalk - 27 July 2022</a><br /><a href="https://vimeo.com/783936729">Oleksandr Kryvonos - Lisperanto - 27 July 2022</a><br /><a href="https://vimeo.com/797977869">Tim Rowledge - Text To Software - 27 July 2022</a><br /><a href="https://vimeo.com/798175464">Dave Mason - Camp Smalltalk Supreme + NA Smalltalk 2023 + Zag Smalltalk - 27 July 2023</a><br /><a href="https://vimeo.com/798562778">Offray Vladimir Luna Cárdenas - MiniDocs: minimal documentation approaches - 27 July 2022</a><br /><a href="https://vimeo.com/799868337">Hernán Wilkinson - Inline Method Refactoring with LiveTyping - 27 July 2023</a> </p><p> </p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-22002662989025929462022-06-13T19:02:00.003+01:002022-07-20T17:14:37.602+01:00Smalltalk and Self hardware - 29 June 2022<p> For our June meeting, Merik Voswinkel will give us a presentation on Smalltalk and Self hardware with a focus on manycore parallelism and distributed computing.<br /><br />This follows from Jecel Assumpcao Jr's <a href="https://youtu.be/CfYnzVxdwZE">SiliconSqueak presentation</a> at the <a href="https://www.meetup.com/california-smalltalkers/events/278748248/">California Smalltalkers meetup</a>.<br />Merik will bring us on a tour past 50 years of late bound message passing Smalltalk VMs, Smalltalk RISC processors, David Ungar’s RoarVM, adaptive compilers, concurrent aggregates, clone-reduce, a processor per object, FPGA’s, Morphle Logic, Croquet and Teatime , Wafer Scale Integration, hundred (M1 Ultra), thousands and million cores ASICs, Cuniform, Matroshca Brains and much more in our tourney towards the Wayne Gretzky invention game of inventing the future.<br />If there is time we’ll go burning the Smalltalk disk packs, the intergalactic network GUI and the destiny of computers as intellectual amplifiers for humans pervasively networked worldwide and how we are going to communicate with Aliens.<br /><br />Merik Voswinkel is an independent scientist who build his first transputer supercomputer for Smalltalk after the Byte 1981 Smalltalk issue, build one of the first internet providers, works on SiliconSqueak, wafer scale integrations and Enernet energy computing.</p><p>This will be an online meeting from home. If you'd like to join us, please sign up on the <a href="https://www.meetup.com/ukstug/events/286314641/">Meetup page</a>.</p><p><b>Update 20 July 2022</b>: the <a href="https://vimeo.com/731037615">recording</a> of Merik's presentation is now available on Vimeo.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-12472891228471686602022-05-14T16:55:00.003+01:002022-06-11T12:19:05.881+01:00Expressive Systems: A business application framework on top of CodeParadise - Wednesday, May 25th<p>For our May meeting, Object Guild's Jonathan van Alteren and Erik Stel will give us a preview of Expressive Systems.<br /><br />Expressive Systems is a framework inspired by Richard Pawson's work on <a href="https://en.wikipedia.org/wiki/Naked_objects">Naked Objects</a>. It allows Object Guild to rapidly develop flexible applications by focusing on the design of behaviorally complete objects in the business domain. By using a novel web application architecture based on <a href="https://github.com/ErikOnBike/CodeParadise">CodeParadise</a>, it allows direct manipulation of business objects by the user. The goal of the framework is to better support problem solving activities and to empower users by giving them a first-person experience. The framework is currently in a (private) alpha phase of development. There are plans to open source the framework in the future.<br /><br />Jonathan has been developing business applications for various Dutch companies since 2001, in roles varying from programmer to solution architect. In 2018, he got hooked on Pharo/Smalltalk and never looked back.<br /><br />Erik has developed both technical as well as business applications in a variety of areas using a broad range of technologies. He’s been a Smalltalk addict since using VisualAge in the late 1990’s.<br /><br />This will be a hybrid meetup where we'll connect to Zoom from the <a href="https://goo.gl/maps/gxiuohY8z5CvA7wr5">The City Pride</a> pub. If you'd like to join us either via Zoom or in person, please sign up on the <a href="https://www.meetup.com/UKSTUG/events/285546604/">Meetup page</a>.</p><p><b>Update 11 June 2022:</b> The recording of the presentation is now up on <a href="https://vimeo.com/719355883">Vimeo</a>.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-77539080687717619842022-04-20T23:16:00.001+01:002022-06-06T22:52:47.187+01:00Newspeak: Live, Modular and Secure Development in the Web Browser - Wednesday, April 27th<p>The next meeting of the UK Smalltalk User Group will be held on Wednesday, April 27th 2022. <br /></p><p><a href="https://bracha.org/Site/Newspeak.html">Newspeak</a> is a programming system in the Smalltalk tradition, whose current incarnation runs in the web browser. Newspeak is designed to provide the liveness Smalltalkers expect, as well as features atypical of Smalltalk such as modularity, security and good interoperability with the surrounding ecosystem. In this talk, we'll explain how and why Newspeak differs from Smalltalk and demonstrate the Newspeak IDE.</p><p>Gilad Bracha is the creator of the Newspeak programming language and a well known researcher in the area of object-oriented programming languages. He was awarded the senior <a href="http://www.aito.org/Dahl-Nygaard/">Dahl-Nygaard</a> prize in 2017. He is currently a Technical Fellow at <a href="https://www.f5.com/">F5</a>, and has held positions at Google, SAP Labs, Cadence, and Sun. He has authored or co-authored several books including the <a href="http://java.sun.com/docs/books/jls/">Java Language and Virtual Machine Specifications</a>, and the <a href="http://catalogue.pearsoned.co.uk/educator/product/Dart-Programming-Language-The/9780321927705.page">Dart Programming Language</a>. Prior to joining Sun, he worked on Strongtalk, the <a href="http://www.cs.ucsb.edu/projects/strongtalk/">Animorphic Smalltalk System</a>. He received his B.Sc in Mathematics and Computer Science from <a href="http://www.bgu.ac.il/">Ben Gurion University</a> in Israel and a Ph.D. in Computer Science from the <a href="http://www.utah.edu/">University of Utah</a>.</p><p>This will be an online meeting from home.</p><p>If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/UKSTUG/events/cbklbrydcgbkc/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p><p><b>Update 6 June2022:</b> the recording of the presentation is now up on <a href="https://vimeo.com/717656814">Vimeo</a>.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com1tag:blogger.com,1999:blog-6836728665332319456.post-83957618016773204152022-03-22T08:18:00.002+00:002022-06-04T14:40:02.409+01:00Glamorous Toolkit - Wednesday, March 30th<p> The next meeting of the UK Smalltalk User Group will be held on Wednesday, March 30th 2022.<br /></p><p data-pm-slice="1 1 []">Come to hear news about Glamorous Toolkit, the moldable development environment. We were busy over the past year: beside everything else, GT also became a multi-language notebook + programmable knowledge management platform. By this we unify the flows of programming, data science and knowledge management. And there might be a couple of other surprises, too.</p><p></p><p>Tudor Gîrba is a software environmentalist and CEO of <a href="http://feenk.com/">feenk.com</a> where he works with an amazing team to make the inside of systems explainable. Much of the work is embodied in Glamorous Toolkit (<a href="http://gtoolkit.com/">gtoolkit.com</a>), a novel environment that enables Moldable Development.</p><p> This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/UKSTUG/events/284774351/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p><p><b>Update 4 June 2022:</b> The recording of <a href="https://vimeo.com/717056293">Tudor's presentation</a> and of <a href="https://vimeo.com/717046803">Ken Dickey's lightning talk</a> are now available on Vimeo.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-77697701036358514672022-02-19T11:31:00.004+00:002022-05-29T22:09:39.912+01:00Show'n'Tell - Wednesday, February 23rd<p>For this month's meeting, we'll open the floor to the whole audience and let people show what they are working on.<br /><br />If you have an interesting project to show, or if you'd like to get some help with some hard problem, just show up and be ready to present!</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/UKSTUG/events/284113812/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p><p><b>Update 29 May 2022:</b> The recording of this session are now available on Vimeo:</p><p><a href="https://vimeo.com/715006200">Steven Travis Pope - Resurrecting Score-11</a></p><p><a href="https://vimeo.com/715006667">Offray Vladimir Luna Cárdenas - Pharo powered data stories with Lepiter</a></p><p><a href="https://vimeo.com/715007160">Sean DeNigris - A Glamorous Toolkit-based Dynabook</a> </p><p><a href="https://vimeo.com/715007617">Ken Dickey - Nested morph coordinate systems in Cuis</a></p><p><a href="https://vimeo.com/715007651">David Buck - PigeonTalk</a> </p><p><a href="https://vimeo.com/715008273">Torsten Bergmann - Nucleus + OJO</a></p><p><a href="Tim Rowledge - MQTT and Smalltalk">Tim Rowledge - MQTT and Smalltalk</a> </p><p><a href="https://vimeo.com/715015132">Keith Holman - Profiling Pharo code using flame graphs</a> <br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-23576233921037880182022-01-17T22:25:00.004+00:002022-02-13T22:46:54.935+00:00Sparkle: Let's Annoy Users Differently - Wednesday, January 26th<p>For our January meeting, we'll be hosting <a href="https://gemtalksystems.com/">GemTalk</a>'s Martin McClure who will talk about a new Smalltalk IDE - Sparkle.<br /><br />If you're setting out to develop a Smalltalk IDE from scratch, what design decisions do you make? You'd love to "fix" the things that have long annoyed you in existing IDEs, but new designs risk creating their own novel annoyances.<br />The Sparkle project-in-progress is creating a new and not entirely conventional development environment for GemStone Smalltalk. Come see factors that have influenced its design, get a demo of the current state of the tools, learn about the project's next steps, and share *your* IDE annoyances.<br /><br />Martin heard about Smalltalk in 1975, *finally* got his hands on a running Smalltalk system ten years later, and hasn't let go since. In his 25 years on the GemStone team, Martin has worked on many aspects - some VM internals, some user interface design, but mostly all the things that go in between. In his rare spare time, he works on Mist, a Smalltalk variant with improved modularity and no virtual machine. When not dodging Covid, he does a lot of contra and country dancing.</p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/UKSTUG/events/282299228/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks!</p><p> <b>Update 13 February 2022</b>: the recording of the presentation is now available on <a href="https://vimeo.com/676889959">Vimeo</a>.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0tag:blogger.com,1999:blog-6836728665332319456.post-11063521659787411252021-12-09T20:46:00.004+00:002022-01-17T22:24:52.461+00:00JsSqueak - Wednesday, December 29th<p>For our December meeting, Florin Mateoc will show us <a href="https://github.com/fmateoc/JsSqueak">JsSqueak</a>, a JavaScript implementation of (JavaScript compiled) Squeak.<br /><br />Whereas SqueakJS or TruffleSqueak are implementations of the Squeak stack VM which run the Squeak bytecodes, JsSqueak compiles all the Squeak code to JavaScript (including the VM plugins), it exports the image state as one big JavaScript storeString, and then loads them, and runs the JavaScript implemented minimal VM (mostly primitives) and the JavaScript-translated Squeak methods as one combined JavaScript application. The compiled JavaScript application can be run either in a browser or in Node.js<br /><br />While JavaScript, especially with its newest additions, is a very powerful language, which allows us to implement most Smalltalk-specific features (e.g. processes/green threads are implemented using generator functions and recursive yield* for all invocations, DNU is implemented using proxies and proto manipulation, the Smalltalk parallel class hierarchy is implemented using JavaScript classes with static properties and their parallel prototypes hierarchy, weak classes are implemented using JavaScript WeakRef instances in their (weak) slots), one obvious challenge is implementing contexts.<br />Since we compile Squeak classes to JavaScript classes, Squeak methods to JavaScript methods (and class-side Squeak methods to static JavaScript methods), the code runs on the native JavaScript call stack, and we do not have a mapping between the JavaScript function activations and reified contexts. Nevertheless, it turns out that, by providing specialized implementations for various aspects that are implemented using contexts/stack walking in Squeak, we can actually run almost all Squeak code as-is.<br /><br /><a href="https://fmateoc.js.org/">Florin Mateoc</a> is an electronics engineer who has always loved programming and who has actually only ever worked as a software engineer.<br />Florin has worked as a professional Smalltalk programmer in Enfin (later called ObjectStudio), VisualAge, VisualWorks, and a little bit as a hobbyist in Squeak.</p><p></p><p>This will be an online meeting from home.<br /><br />If you'd like to join us, please sign up in advance on the meeting's <a href="https://www.meetup.com/UKSTUG/events/282445345/">Meetup page</a> to receive the meeting details. Don’t forget to bring your laptop and drinks! <br /><br /><b> Update 8 January 2022</b>: The recording of the presentation is now up on <a href="https://vimeo.com/663693415">Vimeo</a>.<br /></p>UK Smalltalkhttp://www.blogger.com/profile/02430653244716771841noreply@blogger.com0