From ken.dickey at whidbey.com Tue Oct 1 07:55:34 2024 From: ken.dickey at whidbey.com (ken.dickey at whidbey.com) Date: Tue, 01 Oct 2024 07:55:34 -0700 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: <66FB5270.1030306@cuis.st> References: <66FB5270.1030306@cuis.st> Message-ID: Yes! Tomorrow (First Wednesday) I plan to show a single-stroke pen/stylus gesture recognizer for Cuis. Looking forward to sharing. The https://cuis.st/community web page points correctly to https://meet.jit.si/CuisSmalltalk/ 16:00 GMT See ya! -KenD From r.mark.volkmann at gmail.com Tue Oct 1 17:04:26 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 1 Oct 2024 19:04:26 -0500 Subject: [Cuis-dev] tiled background image In-Reply-To: <66FB4F1B.7040806@cuis.st> References: <66FB4F1B.7040806@cuis.st> Message-ID: In the current code the WorldMorph drawOn: method sends aCanvas image: backgroundImage at: `0 at 0` if backgroundImage is set. That can be set with code like the following: filePath := '/Users/volkmannm/Pictures/images/altitude1600.jpg'. byteArray := (filePath asFileEntry readStream) binary contentsOfEntireFile. self runningWorld backgroundImageData: byteArray. The backgroundImageData: method is defined in PasteUpMorph which is the superclass of WorldMorph. That method sends #buildMagnifiedBackgroundImage to self. That method contains this line: backgroundImage := image magnifyTo: extent. That stretches the image to fit the size of the WorldMorph which is the size of the whole window. It does not maintain the aspect ratio of the image. That seems fine for images that are patterns, but not for images that contain recognizable things like people, animals, buildings, cars, ... I think it would be great to have three options for how a background image is used, 1) stretch as is done currently 2) change size to cover WorldMorph without changing the aspect ratio (right or bottom of image could be cut off) 3) tile the image over the window I have learned how to modify WorldMorph and PasteUpMorph to tile the image and the cover option wouldn't be difficult to implement. If I were to submit a change set that modifies WorldMorph and PasteMorph to support all three options, would it be considered? On Mon, Sep 30, 2024 at 8:23?PM Juan Vuletich wrote: > On 9/30/2024 8:21 PM, Mark Volkmann via Cuis-dev wrote: > > I see the Squeak has the class BackgroundMorph that supports tiling an > image over the World background, but that class is not in Cuis. Is there > another way to tile an image over the World background that is in the base > Cuis image? > > -- > R. Mark Volkmann > Object Computing, Inc. > > > Yes. You need to create your own morph, and in its #drawOn: method do > whatever you need. You can also modify WorldMorph so it tiles. Go Smalltalk > go! > > Cheers, > > -- > Juan Vuletichcuis.stgithub.com/jvuletichresearchgate.net/profile/Juan-Vuletichindependent.academia.edu/JuanVuletichpatents.justia.com/inventor/juan-manuel-vuletichlinkedin.com/in/juan-vuletich-75611b3twitter.com/JuanVuletich > > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianomontone at gmail.com Tue Oct 1 17:21:12 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Tue, 1 Oct 2024 21:21:12 -0300 Subject: [Cuis-dev] WebClient issues In-Reply-To: References: Message-ID: Can't you implement as a subclass and/or separate package (that depends on webclient package)? I had that at some point. El dom, 29 de sept de 2024, 11:41, Mark Volkmann via Cuis-dev < cuis-dev at lists.cuis.st> escribi?: > I've been digging into the WebClient package which can be used to > implement HTTP servers in addition to sending HTTP requests. It has these > three shortcomings: > > 1) It doesn't support paths containing path parameters. Request matching > is done through Dictionary lookups and doesn't work when there are > path parameters. For example, you can define a route for "GET /dog", but > you cannot define a route for "PUT /dog/:id" to update a dog with a given > id. > > 2) It doesn't support query parameters. For example, in a request like > "GET /car?size=small&color=yellow", there is no method that will return a > DIctionary containing the query parameters size and color. > > 3) It doesn't support PATCH requests. These are used to update a subset of > the properties of a given resource, unlike PUT requests which update all > the properties. > > I can fix these shortcomings, but before I do that I want to verify > whether there would be interest in possibly merging my changes. If not then > I can just create my own fork of that package. > > -- > R. Mark Volkmann > Object Computing, Inc. > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Tue Oct 1 17:31:02 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 1 Oct 2024 19:31:02 -0500 Subject: [Cuis-dev] WebClient issues In-Reply-To: References: Message-ID: An HTML attachment was scrubbed... URL: From juan at cuis.st Tue Oct 1 18:18:58 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 01 Oct 2024 21:18:58 -0400 Subject: [Cuis-dev] tiled background image In-Reply-To: References: <66FB4F1B.7040806@cuis.st> Message-ID: <66FC9F82.2020804@cuis.st> On 10/1/2024 8:04 PM, Mark Volkmann via Cuis-dev wrote: > In the current code the WorldMorph drawOn: method sends > aCanvas image: backgroundImage at: `0 at 0` > if backgroundImage is set. > That can be set with code like the following: > > filePath := '/Users/volkmannm/Pictures/images/altitude1600.jpg'. > byteArray := (filePath asFileEntry readStream) binary > contentsOfEntireFile. > self runningWorld backgroundImageData: byteArray. > > The backgroundImageData: method is defined in PasteUpMorph which is > the superclass of WorldMorph. > That method sends #buildMagnifiedBackgroundImage to self. > That method contains this line: > > backgroundImage := image magnifyTo: extent. > > That stretches the image to fit the size of the WorldMorph which is > the size of the whole window. > It does not maintain the aspect ratio of the image. > > That seems fine for images that are patterns, but not for images that > contain recognizable things like people, animals, buildings, cars, ... > > I think it would be great to have three options for how a background > image is used, > 1) stretch as is done currently > 2) change size to cover WorldMorph without changing the aspect ratio > (right or bottom of image could be cut off) > 3) tile the image over the window > > I have learned how to modify WorldMorph and PasteUpMorph to tile the > image and the cover option wouldn't be difficult to implement. > If I were to submit a change set that modifies WorldMorph and > PasteMorph to support all three options, would it be considered? Yes! Cheers, > > > On Mon, Sep 30, 2024 at 8:23?PM Juan Vuletich > wrote: > > On 9/30/2024 8:21 PM, Mark Volkmann via Cuis-dev wrote: >> I see the Squeak has the class BackgroundMorph that supports >> tiling an image over the World background, but that class is not >> in Cuis. Is there another way to tile an image over the World >> background that is in the base Cuis image? >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. > > Yes. You need to create your own morph, and in its #drawOn: method > do whatever you need. You can also modify WorldMorph so it tiles. > Go Smalltalk go! > > Cheers, > > -- > Juan Vuletich > cuis.st > github.com/jvuletich > researchgate.net/profile/Juan-Vuletich > independent.academia.edu/JuanVuletich > patents.justia.com/inventor/juan-manuel-vuletich > linkedin.com/in/juan-vuletich-75611b3 > twitter.com/JuanVuletich > > > > -- > R. Mark Volkmann > Object Computing, Inc. -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianomontone at gmail.com Tue Oct 1 19:30:57 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Tue, 1 Oct 2024 23:30:57 -0300 Subject: [Cuis-dev] WebClient issues In-Reply-To: References: Message-ID: Perhaps it is just me being conservative. While you may think the features are fundamental, usually it is also true that there are different ways of doing things. In this case, web routing. And I also like preserving the original implementation if it is harmless to do so and there may be projects that depend no the current implementation. That's how I usually approach projects. El mar, 1 de oct de 2024, 21:31, Mark Volkmann escribi?: > Sure, I could create subclasses of classes in the WebClient package to add > the missing features. I?m curious how it is decided when it?s appropriate > to do that rather than improve the existing classes. The features I?m > proposing seem like fundamental web features, so I thought it would be > better to improve the existing classes so everyone gets access to those > features without needing to use new subclasses. > > --- > R. Mark Volkmann > Object Computing, Inc. > > On Oct 1, 2024, at 7:21?PM, Mariano Montone > wrote: > > Can't you implement as a subclass and/or separate package (that depends on > webclient package)? I had that at some point. > El dom, 29 de sept de 2024, 11:41, Mark Volkmann via Cuis-dev < > cuis-dev at lists.cuis.st> escribi?: > >> I've been digging into the WebClient package which can be used to >> implement HTTP servers in addition to sending HTTP requests. It has these >> three shortcomings: >> >> 1) It doesn't support paths containing path parameters. Request matching >> is done through Dictionary lookups and doesn't work when there are >> path parameters. For example, you can define a route for "GET /dog", but >> you cannot define a route for "PUT /dog/:id" to update a dog with a given >> id. >> >> 2) It doesn't support query parameters. For example, in a request like >> "GET /car?size=small&color=yellow", there is no method that will return a >> DIctionary containing the query parameters size and color. >> >> 3) It doesn't support PATCH requests. These are used to update a subset >> of the properties of a given resource, unlike PUT requests which update all >> the properties. >> >> I can fix these shortcomings, but before I do that I want to verify >> whether there would be interest in possibly merging my changes. If not then >> I can just create my own fork of that package. >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianomontone at gmail.com Tue Oct 1 19:34:43 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Tue, 1 Oct 2024 23:34:43 -0300 Subject: [Cuis-dev] WebClient issues In-Reply-To: References: Message-ID: El mar, 1 de oct de 2024, 21:31, Mark Volkmann escribi?: > Sure, I could create subclasses of classes in the WebClient package to add > the missing features. I?m curious how it is decided when it?s appropriate > to do that rather than improve the existing classes. The features I?m > proposing seem like fundamental web features, so I thought it would be > better to improve the existing classes so everyone gets access to those > features without needing to use new subclasses. > I don't see using a different class as an inconvenience. > --- > R. Mark Volkmann > Object Computing, Inc. > > On Oct 1, 2024, at 7:21?PM, Mariano Montone > wrote: > > Can't you implement as a subclass and/or separate package (that depends on > webclient package)? I had that at some point. > El dom, 29 de sept de 2024, 11:41, Mark Volkmann via Cuis-dev < > cuis-dev at lists.cuis.st> escribi?: > >> I've been digging into the WebClient package which can be used to >> implement HTTP servers in addition to sending HTTP requests. It has these >> three shortcomings: >> >> 1) It doesn't support paths containing path parameters. Request matching >> is done through Dictionary lookups and doesn't work when there are >> path parameters. For example, you can define a route for "GET /dog", but >> you cannot define a route for "PUT /dog/:id" to update a dog with a given >> id. >> >> 2) It doesn't support query parameters. For example, in a request like >> "GET /car?size=small&color=yellow", there is no method that will return a >> DIctionary containing the query parameters size and color. >> >> 3) It doesn't support PATCH requests. These are used to update a subset >> of the properties of a given resource, unlike PUT requests which update all >> the properties. >> >> I can fix these shortcomings, but before I do that I want to verify >> whether there would be interest in possibly merging my changes. If not then >> I can just create my own fork of that package. >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianomontone at gmail.com Tue Oct 1 19:38:39 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Tue, 1 Oct 2024 23:38:39 -0300 Subject: [Cuis-dev] WebClient issues In-Reply-To: References: Message-ID: Perhaps implement 2) and 3) by modifying Webclient. 1) as separate class. But this is just my opinion. You are free to do what you want. El mar, 1 de oct de 2024, 23:34, Mariano Montone escribi?: > > > El mar, 1 de oct de 2024, 21:31, Mark Volkmann > escribi?: > >> Sure, I could create subclasses of classes in the WebClient package to >> add the missing features. I?m curious how it is decided when it?s >> appropriate to do that rather than improve the existing classes. The >> features I?m proposing seem like fundamental web features, so I thought it >> would be better to improve the existing classes so everyone gets access to >> those features without needing to use new subclasses. >> > > I don't see using a different class as an inconvenience. > > > >> --- >> R. Mark Volkmann >> Object Computing, Inc. >> >> On Oct 1, 2024, at 7:21?PM, Mariano Montone >> wrote: >> >> Can't you implement as a subclass and/or separate package (that depends >> on webclient package)? I had that at some point. >> El dom, 29 de sept de 2024, 11:41, Mark Volkmann via Cuis-dev < >> cuis-dev at lists.cuis.st> escribi?: >> >>> I've been digging into the WebClient package which can be used to >>> implement HTTP servers in addition to sending HTTP requests. It has these >>> three shortcomings: >>> >>> 1) It doesn't support paths containing path parameters. Request matching >>> is done through Dictionary lookups and doesn't work when there are >>> path parameters. For example, you can define a route for "GET /dog", but >>> you cannot define a route for "PUT /dog/:id" to update a dog with a given >>> id. >>> >>> 2) It doesn't support query parameters. For example, in a request like >>> "GET /car?size=small&color=yellow", there is no method that will return a >>> DIctionary containing the query parameters size and color. >>> >>> 3) It doesn't support PATCH requests. These are used to update a subset >>> of the properties of a given resource, unlike PUT requests which update all >>> the properties. >>> >>> I can fix these shortcomings, but before I do that I want to verify >>> whether there would be interest in possibly merging my changes. If not then >>> I can just create my own fork of that package. >>> >>> -- >>> R. Mark Volkmann >>> Object Computing, Inc. >>> -- >>> Cuis-dev mailing list >>> Cuis-dev at lists.cuis.st >>> https://lists.cuis.st/mailman/listinfo/cuis-dev >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Wed Oct 2 09:14:11 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Wed, 2 Oct 2024 18:14:11 +0200 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: References: <66FB5270.1030306@cuis.st> Message-ID: Did I miss something and the meeting was postponed ... ? On 10/1/24 4:55 PM, ken.dickey--- via Cuis-dev wrote: > Yes! Tomorrow (First Wednesday) I plan to show a single-stroke > pen/stylus gesture recognizer for Cuis. > > Looking forward to sharing. > > The https://cuis.st/community web page points correctly to > > ? https://meet.jit.si/CuisSmalltalk/ > > ? 16:00 GMT > > See ya! > -KenD > > From hfern at free.fr Wed Oct 2 09:15:46 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Wed, 2 Oct 2024 18:15:46 +0200 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: References: <66FB5270.1030306@cuis.st> Message-ID: <219450e6-cf6c-4ccf-994a-36f545b981b6@free.fr> https://meet.jit.si/CuisSmalltalk/ -- GNU Dr. Geo http://gnu.org/s/dr-geo/ http://gnu-drgeo.blogspot.com/ From hernan.wilkinson at 10pines.com Wed Oct 2 09:15:41 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Wed, 2 Oct 2024 13:15:41 -0300 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: References: <66FB5270.1030306@cuis.st> Message-ID: for sure you are in another meet Use this one: https://meet.jit.si/CuisSmalltalk On Wed, Oct 2, 2024 at 1:14?PM Gerald Klix via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > Did I miss something and the meeting was postponed ... ? > > On 10/1/24 4:55 PM, ken.dickey--- via Cuis-dev wrote: > > Yes! Tomorrow (First Wednesday) I plan to show a single-stroke > > pen/stylus gesture recognizer for Cuis. > > > > Looking forward to sharing. > > > > The https://cuis.st/community web page points correctly to > > > > https://meet.jit.si/CuisSmalltalk/ > > > > 16:00 GMT > > > > See ya! > > -KenD > > > > > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Wed Oct 2 09:18:45 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Wed, 2 Oct 2024 18:18:45 +0200 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: <219450e6-cf6c-4ccf-994a-36f545b981b6@free.fr> References: <66FB5270.1030306@cuis.st> <219450e6-cf6c-4ccf-994a-36f545b981b6@free.fr> Message-ID: <29ccd23c-2431-fa76-dc18-22f51ea2cbc1@klix.ch> No comment! On 10/2/24 6:15 PM, Hilaire Fernandes via Cuis-dev wrote: > https://meet.jit.si/CuisSmalltalk/ > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: mpgfemajamacglim.png Type: image/png Size: 26091 bytes Desc: not available URL: From marianomontone at gmail.com Thu Oct 3 05:27:25 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Thu, 3 Oct 2024 09:27:25 -0300 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: <29ccd23c-2431-fa76-dc18-22f51ea2cbc1@klix.ch> References: <66FB5270.1030306@cuis.st> <219450e6-cf6c-4ccf-994a-36f545b981b6@free.fr> <29ccd23c-2431-fa76-dc18-22f51ea2cbc1@klix.ch> Message-ID: <903a7957-22be-4945-aa5c-ca8db51838b5@gmail.com> It was the slash at the end of the url El 2/10/24 a las 13:18, Gerald Klix via Cuis-dev escribi?: > No comment! > > > On 10/2/24 6:15 PM, Hilaire Fernandes via Cuis-dev wrote: >> https://meet.jit.si/CuisSmalltalk/ >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: mpgfemajamacglim.png Type: image/png Size: 26091 bytes Desc: not available URL: From cuis.01 at klix.ch Thu Oct 3 08:05:42 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Thu, 3 Oct 2024 17:05:42 +0200 Subject: [Cuis-dev] Topic For Tomorrow's Cuis Meeting: UI-StrokeRecognizer In-Reply-To: <903a7957-22be-4945-aa5c-ca8db51838b5@gmail.com> References: <66FB5270.1030306@cuis.st> <219450e6-cf6c-4ccf-994a-36f545b981b6@free.fr> <29ccd23c-2431-fa76-dc18-22f51ea2cbc1@klix.ch> <903a7957-22be-4945-aa5c-ca8db51838b5@gmail.com> Message-ID: Sigh. Thanks a lot. On 10/3/24 2:27 PM, Mariano Montone via Cuis-dev wrote: > It was the slash at the end of the url > > El 2/10/24 a las 13:18, Gerald Klix via Cuis-dev escribi?: >> No comment! >> >> >> On 10/2/24 6:15 PM, Hilaire Fernandes via Cuis-dev wrote: >>> https://meet.jit.si/CuisSmalltalk/ >>> >> >> > From r.mark.volkmann at gmail.com Thu Oct 3 11:54:42 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 3 Oct 2024 13:54:42 -0500 Subject: [Cuis-dev] change set to support background image #cover and #tile options Message-ID: To test this from a Workspace: 1) Choose an image file and set filePath to point to it. For example, filePath := '/Users/volkmannm/Pictures/images/altitude1600.jpg'. 2) Optionally choose a "background effect" which can be nil (current stretch behavior), #cover, or #tile. I'm pretty sure this is NOT the way we want to do this, but I couldn't think of another way without adding an instance variable to PasteUpMorph. I'm open to suggestions on this. Smalltalk at: #backgroundEffect put: #cover. 3) Send #backgroundImageData: to the current WorldMorph. Note that a new stream must be created every time this is sent. stream := filePath asFileEntry readStream. self runningWorld backgroundImageData: stream binary contentsOfEntireFile. 4) Optionally remove the background image. self runningWorld backgroundImageData: nil. All three options are working for me. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 6743-CuisCore-MarkVolkmann-2024Oct02-15h08m-RMV.001.cs.st Type: application/octet-stream Size: 2486 bytes Desc: not available URL: From hfern at free.fr Thu Oct 3 14:11:35 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Thu, 3 Oct 2024 23:11:35 +0200 Subject: [Cuis-dev] change set to support background image #cover and #tile options In-Reply-To: References: Message-ID: May be using Preferences for picture path and background effect.. Le 03/10/2024 ? 20:54, Mark Volkmann via Cuis-dev a ?crit?: > 2) Optionally choose a "background effect" which can be nil (current > stretch behavior), #cover, or #tile. I'm pretty sure this is NOT the > way we want to do this, but I couldn't think of another way without > adding an instance variable to PasteUpMorph. I'm open to > suggestions?on this. -- GNU Dr. Geo http://gnu.org/s/dr-geo/ http://gnu-drgeo.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Fri Oct 4 08:31:38 2024 From: juan at cuis.st (Juan Vuletich) Date: Fri, 04 Oct 2024 11:31:38 -0400 Subject: [Cuis-dev] Removed 4 sequences from NamedCharacters / LatEx character input Message-ID: <67000A5A.5020505@cuis.st> Hi Folks, especially Luciano. Today I learned that the \ + name + space sequence for entering selected Unicode characters meant that some valid Smalltalk could not be entered. For instance: 'C:\' [space] (i.e. some reasonable Windows file path in a String literal, followed by a space character) "C:\" [space] (i.e. some reasonable Windows file path in a comment, followed by a space character) a \~ b (i.e. some weird but possible binary selector) `a copyWith: $\` (i.e. some backtick compile time constant ending with a backslash) If Luciano or anyone thinks they really need this, we can add a preference. Comments welcome. Thanks! -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich From luchiano at gmail.com Fri Oct 4 10:45:44 2024 From: luchiano at gmail.com (Luciano Notarfrancesco) Date: Sat, 5 Oct 2024 00:45:44 +0700 Subject: [Cuis-dev] Removed 4 sequences from NamedCharacters / LatEx character input In-Reply-To: <67000A5A.5020505@cuis.st> References: <67000A5A.5020505@cuis.st> Message-ID: Hi Juan, The example sequences you mentioned are not important for me, removing those would be enough? Or restricting to alphanumeric names like \times and \alpha, plus \^ for superscript and \_ for subscript? On Fri, Oct 4, 2024 at 22:31 Juan Vuletich wrote: > Hi Folks, especially Luciano. > > Today I learned that the \ + name + space sequence for entering selected > Unicode characters meant that some valid Smalltalk could not be entered. > For instance: > 'C:\' [space] (i.e. some reasonable Windows file path in a String > literal, followed by a space character) > "C:\" [space] (i.e. some reasonable Windows file path in a comment, > followed by a space character) > a \~ b (i.e. some weird but possible binary selector) > `a copyWith: $\` (i.e. some backtick compile time constant ending with a > backslash) > > If Luciano or anyone thinks they really need this, we can add a preference. > > Comments welcome. > > Thanks! > > -- > Juan Vuletich > cuis.st > github.com/jvuletich > researchgate.net/profile/Juan-Vuletich > independent.academia.edu/JuanVuletich > patents.justia.com/inventor/juan-manuel-vuletich > linkedin.com/in/juan-vuletich-75611b3 > twitter.com/JuanVuletich > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From luchiano at gmail.com Fri Oct 4 10:47:27 2024 From: luchiano at gmail.com (Luciano Notarfrancesco) Date: Sat, 5 Oct 2024 00:47:27 +0700 Subject: [Cuis-dev] Removed 4 sequences from NamedCharacters / LatEx character input In-Reply-To: References: <67000A5A.5020505@cuis.st> Message-ID: Ah, you mean only these 4? They are not important for me at all, and it makes absolute sense to remove them to me. Sorry for the confusion. On Sat, Oct 5, 2024 at 00:45 Luciano Notarfrancesco wrote: > Hi Juan, > The example sequences you mentioned are not important for me, removing > those would be enough? Or restricting to alphanumeric names like \times and > \alpha, plus \^ for superscript and \_ for subscript? > > On Fri, Oct 4, 2024 at 22:31 Juan Vuletich wrote: > >> Hi Folks, especially Luciano. >> >> Today I learned that the \ + name + space sequence for entering selected >> Unicode characters meant that some valid Smalltalk could not be entered. >> For instance: >> 'C:\' [space] (i.e. some reasonable Windows file path in a String >> literal, followed by a space character) >> "C:\" [space] (i.e. some reasonable Windows file path in a comment, >> followed by a space character) >> a \~ b (i.e. some weird but possible binary selector) >> `a copyWith: $\` (i.e. some backtick compile time constant ending with a >> backslash) >> >> If Luciano or anyone thinks they really need this, we can add a >> preference. >> >> Comments welcome. >> >> Thanks! >> >> -- >> Juan Vuletich >> cuis.st >> github.com/jvuletich >> researchgate.net/profile/Juan-Vuletich >> independent.academia.edu/JuanVuletich >> patents.justia.com/inventor/juan-manuel-vuletich >> linkedin.com/in/juan-vuletich-75611b3 >> twitter.com/JuanVuletich >> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Fri Oct 4 11:00:16 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Fri, 4 Oct 2024 20:00:16 +0200 Subject: [Cuis-dev] Removed 4 sequences from NamedCharacters / LatEx character input In-Reply-To: References: <67000A5A.5020505@cuis.st> Message-ID: IHMO the undo implementation is broken. If you enter ?'C:\times? and than add a single ?'? you get ?'C:?'?, if you undo this substitution, the undo also deletes the ?'?. If the input of a ?'? and the following substitution were separated into two undo entries, one would be able to undo them separately, thus enabling one to just cancel the substitution. Just my Fr. 0.02, Gerald On 10/4/24 7:47 PM, Luciano Notarfrancesco via Cuis-dev wrote: > Ah, you mean only these 4? They are not important for me at all, and it > makes absolute sense to remove them to me. Sorry for the confusion. > > On Sat, Oct 5, 2024 at 00:45 Luciano Notarfrancesco > wrote: > >> Hi Juan, >> The example sequences you mentioned are not important for me, removing >> those would be enough? Or restricting to alphanumeric names like \times and >> \alpha, plus \^ for superscript and \_ for subscript? >> >> On Fri, Oct 4, 2024 at 22:31 Juan Vuletich wrote: >> >>> Hi Folks, especially Luciano. >>> >>> Today I learned that the \ + name + space sequence for entering selected >>> Unicode characters meant that some valid Smalltalk could not be entered. >>> For instance: >>> 'C:\' [space] (i.e. some reasonable Windows file path in a String >>> literal, followed by a space character) >>> "C:\" [space] (i.e. some reasonable Windows file path in a comment, >>> followed by a space character) >>> a \~ b (i.e. some weird but possible binary selector) >>> `a copyWith: $\` (i.e. some backtick compile time constant ending with a >>> backslash) >>> >>> If Luciano or anyone thinks they really need this, we can add a >>> preference. >>> >>> Comments welcome. >>> >>> Thanks! >>> >>> -- >>> Juan Vuletich >>> cuis.st >>> github.com/jvuletich >>> researchgate.net/profile/Juan-Vuletich >>> independent.academia.edu/JuanVuletich >>> patents.justia.com/inventor/juan-manuel-vuletich >>> linkedin.com/in/juan-vuletich-75611b3 >>> twitter.com/JuanVuletich >>> >>> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Fri Oct 4 11:59:08 2024 From: juan at cuis.st (Juan Vuletich) Date: Fri, 04 Oct 2024 14:59:08 -0400 Subject: [Cuis-dev] Removed 4 sequences from NamedCharacters / LatEx character input In-Reply-To: References: <67000A5A.5020505@cuis.st> Message-ID: <67003AFC.1080809@cuis.st> Yes, just those four. Great. Thank you! Cheers, On 10/4/2024 1:47 PM, Luciano Notarfrancesco via Cuis-dev wrote: > Ah, you mean only these 4? They are not important for me at all, and > it makes absolute sense to remove them to me. Sorry for the confusion. > > On Sat, Oct 5, 2024 at 00:45 Luciano Notarfrancesco > > wrote: > > Hi Juan, > The example sequences you mentioned are not important for me, > removing those would be enough? Or restricting to alphanumeric > names like \times and \alpha, plus \^ for superscript and \_ for > subscript? > > On Fri, Oct 4, 2024 at 22:31 Juan Vuletich > wrote: > > Hi Folks, especially Luciano. > > Today I learned that the \ + name + space sequence for > entering selected > Unicode characters meant that some valid Smalltalk could not > be entered. > For instance: > 'C:\' [space] (i.e. some reasonable Windows file path in a String > literal, followed by a space character) > "C:\" [space] (i.e. some reasonable Windows file path in a > comment, > followed by a space character) > a \~ b (i.e. some weird but possible binary selector) > `a copyWith: $\` (i.e. some backtick compile time constant > ending with a > backslash) > > If Luciano or anyone thinks they really need this, we can add > a preference. > > Comments welcome. > > Thanks! > > -- > Juan Vuletich > cuis.st > github.com/jvuletich > researchgate.net/profile/Juan-Vuletich > > independent.academia.edu/JuanVuletich > > patents.justia.com/inventor/juan-manuel-vuletich > > linkedin.com/in/juan-vuletich-75611b3 > > twitter.com/JuanVuletich > -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Fri Oct 4 13:08:42 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Fri, 4 Oct 2024 15:08:42 -0500 Subject: [Cuis-dev] change set to support background image #cover and #tile options In-Reply-To: References: Message-ID: I like that suggestion! Here's a new change set that uses PreferenceSet instead of the Smalltalk Dictionary. On Thu, Oct 3, 2024 at 4:11?PM Hilaire Fernandes via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > May be using Preferences for picture path and background effect.. > Le 03/10/2024 ? 20:54, Mark Volkmann via Cuis-dev a ?crit : > > 2) Optionally choose a "background effect" which can be nil (current > stretch behavior), #cover, or #tile. I'm pretty sure this is NOT the way > we want to do this, but I couldn't think of another way without adding an > instance variable to PasteUpMorph. I'm open to suggestions on this. > > -- > GNU Dr. Geohttp://gnu.org/s/dr-geo/http://gnu-drgeo.blogspot.com/ > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 6744-CuisCore-Volkmann-2024Oct04-14h54m-RMV.001.cs.st Type: application/octet-stream Size: 2818 bytes Desc: not available URL: From r.mark.volkmann at gmail.com Sat Oct 5 15:01:00 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sat, 5 Oct 2024 17:01:00 -0500 Subject: [Cuis-dev] Pen error Message-ID: The following example code found in a comment in the Pen method print:withFont: results in the error MessageNotUnderstood: TrueTypeFont>>glyphAt: Display restoreAfter: [ Pen new squareNib: 2; color: Color red; turn: 45; print: 'The owl and the pussycat went to sea in a beautiful pea green boat.' withFont: FontFamily defaultFamilyAndPointSize ] To install the Pen class, clone the https://github.com/Cuis-Smalltalk/Morphic repository and evaluate Feature require: 'Pen'. Do I need to use a non-TrueType font in order for this to work? -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sat Oct 5 16:24:46 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sat, 5 Oct 2024 18:24:46 -0500 Subject: [Cuis-dev] change set to support background image #cover and #tile options In-Reply-To: References: Message-ID: Here's an example of using the latest attached change set:: filePath := '/Users/volkmannm/Pictures/images/altitude1600.jpg'. PreferenceSet sysPreferences at: #backgroundEffect put: #tile. stream := filePath asFileEntry readStream. self runningWorld backgroundImageData: stream binary contentsOfEntireFile. You can also set the #backgroundEffect preference to #cover or #stretch. On Fri, Oct 4, 2024 at 3:08?PM Mark Volkmann wrote: > I like that suggestion! Here's a new change set that uses PreferenceSet > instead of the Smalltalk Dictionary. > > > On Thu, Oct 3, 2024 at 4:11?PM Hilaire Fernandes via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > >> May be using Preferences for picture path and background effect.. >> Le 03/10/2024 ? 20:54, Mark Volkmann via Cuis-dev a ?crit : >> >> 2) Optionally choose a "background effect" which can be nil (current >> stretch behavior), #cover, or #tile. I'm pretty sure this is NOT the way >> we want to do this, but I couldn't think of another way without adding an >> instance variable to PasteUpMorph. I'm open to suggestions on this. >> >> -- >> GNU Dr. Geohttp://gnu.org/s/dr-geo/http://gnu-drgeo.blogspot.com/ >> >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > > > -- > R. Mark Volkmann > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From hfern at free.fr Sun Oct 6 00:05:37 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Sun, 6 Oct 2024 09:05:37 +0200 Subject: [Cuis-dev] Stroke recognizer Message-ID: <972b9ef4-d820-4022-b034-00b05ef29557@free.fr> Hi , Following the very interesting presentation of Ken Dickey regarding its Stroke Recognizer implementation, here are some information: * In case you want to watch the presentation: https://youtu.be/M9OQNkS525g?si=hr_gmDV-x92-d083 * The package to play with the recognizer: https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-UI/tree/main/tools Hilaire -- GNU Dr. Geo http://gnu.org/s/dr-geo/ http://gnu-drgeo.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Tue Oct 8 13:08:06 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 08 Oct 2024 16:08:06 -0400 Subject: [Cuis-dev] Pen error In-Reply-To: References: Message-ID: <67059126.7060005@cuis.st> Hi Mark, On 10/5/2024 6:01 PM, Mark Volkmann via Cuis-dev wrote: > The following example code found in a comment in the Pen method > print:withFont: results in the error MessageNotUnderstood: > TrueTypeFont>>glyphAt: > > Display restoreAfter: [ > Pen new squareNib: 2; > color: Color red; > turn: 45; > print: 'The owl and the pussycat went to sea > in a beautiful pea green boat.' > withFont: FontFamily defaultFamilyAndPointSize > ] > > To install the Pen class, clone the > https://github.com/Cuis-Smalltalk/Morphic repository and evaluate > Feature require: 'Pen'. > > Do I need to use a non-TrueType font in order for this to work? > > -- > R. Mark Volkmann > Object Computing, Inc. That code could be made to work again. Some investigation is required, though. However I'm strongly about that. This points to a real problem we need to address. The lineage Smalltalk-76 -> Smalltalk-80 -> Squeak -> Cuis comprises almost 50 years. A lot of code has been written! Some things have been made obsolete by much better options. This is one of them. VectorGraphics offers way more flexibility and unbelievable better quality graphics. We need to classify packages in, perhaps, these categories: 1 - Abandoned. 2 - Maintained, but only for historical value. Use beyond that is not recommended. 3 - Somewhat maintained. Bitrot possible, and usually fixed in no more than a couple of months. If bugs are reported, someone fixes them in no more than a few weeks. 4 - Maintained. Someone or several people act as maintainers. They regularly use it and problems are detected and fixed quickly. If a bug is reported, it is acknowledged in no more that a few days, and fixed in no more than a week or two. The Pen package would be in category 1, unless someone volunteers to maintain (and fix!) it. In any case, it would never go beyond 2, unless someone rewrites it to use Vector Graphics. These categories for asses -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From hernan.wilkinson at 10pines.com Wed Oct 9 07:35:44 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Wed, 9 Oct 2024 11:35:44 -0300 Subject: [Cuis-dev] Pen error In-Reply-To: <67059126.7060005@cuis.st> References: <67059126.7060005@cuis.st> Message-ID: I agree with your proposal Juan. Also, people that created the packages should be responsible to maintain them Cheers! Hernan. On Tue, Oct 8, 2024 at 5:08?PM Juan Vuletich wrote: > Hi Mark, > > On 10/5/2024 6:01 PM, Mark Volkmann via Cuis-dev wrote: > > The following example code found in a comment in the Pen method > print:withFont: results in the error MessageNotUnderstood: > TrueTypeFont>>glyphAt: > > Display restoreAfter: [ > Pen new squareNib: 2; > color: Color red; > turn: 45; > print: 'The owl and the pussycat went to sea > in a beautiful pea green boat.' > withFont: FontFamily defaultFamilyAndPointSize > ] > > To install the Pen class, clone the > https://github.com/Cuis-Smalltalk/Morphic repository and evaluate Feature > require: 'Pen'. > > Do I need to use a non-TrueType font in order for this to work? > > -- > R. Mark Volkmann > Object Computing, Inc. > > > That code could be made to work again. Some investigation is required, > though. > > However I'm strongly about that. This points to a real problem we need to > address. The lineage Smalltalk-76 -> Smalltalk-80 -> Squeak -> Cuis > comprises almost 50 years. A lot of code has been written! Some things have > been made obsolete by much better options. This is one of them. > VectorGraphics offers way more flexibility and unbelievable better quality > graphics. > > We need to classify packages in, perhaps, these categories: > 1 - Abandoned. > 2 - Maintained, but only for historical value. Use beyond that is not > recommended. > 3 - Somewhat maintained. Bitrot possible, and usually fixed in no more > than a couple of months. If bugs are reported, someone fixes them in no > more than a few weeks. > 4 - Maintained. Someone or several people act as maintainers. They > regularly use it and problems are detected and fixed quickly. If a bug is > reported, it is acknowledged in no more that a few days, and fixed in no > more than a week or two. > > The Pen package would be in category 1, unless someone volunteers to > maintain (and fix!) it. In any case, it would never go beyond 2, unless > someone rewrites it to use Vector Graphics. > > > These categories for asses > > -- > Juan Vuletichcuis.stgithub.com/jvuletichresearchgate.net/profile/Juan-Vuletichindependent.academia.edu/JuanVuletichpatents.justia.com/inventor/juan-manuel-vuletichlinkedin.com/in/juan-vuletich-75611b3twitter.com/JuanVuletich > > -- *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina -------------- next part -------------- An HTML attachment was scrubbed... URL: From hfern at free.fr Wed Oct 9 12:16:31 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Wed, 9 Oct 2024 21:16:31 +0200 Subject: [Cuis-dev] Pen error In-Reply-To: References: Message-ID: <107f138c-70d0-4ec9-ab2c-a02d94f8e6de@free.fr> Mark, You have been using an outdated version of 4 years ago, likely some forgotten bits. My latest changed was one year ago. Nevertheless, I never remember this method use to work. In the transition I fix the error, but it does not seem the result is right though. Some more work is required. You can find the code in its own repo with some documentation too. https://github.com/Dynamic-Book/xp/tree/main/Pen Le 06/10/2024 ? 00:01, Mark Volkmann via Cuis-dev a ?crit?: > The following example code found in a comment in the Pen method > print:withFont: results in the error MessageNotUnderstood: > TrueTypeFont>>glyphAt: -- GNU Dr. Geo http://gnu.org/s/dr-geo/ http://gnu-drgeo.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Fri Oct 11 08:52:01 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Fri, 11 Oct 2024 10:52:01 -0500 Subject: [Cuis-dev] fileOut / fileIn error Message-ID: I developed a new package with extensive unit tests and they all pass. I right-clicked the category for the package in a Browser and selected fileOut. Then I opened a File List, located the .st file for the fileOut, right-clicked and selected fileIn. I get the error "SyntaxErrorNotification: >". But "" doesn't appear anywhere in the .st file created by the fileOut in the directory Cuis-Smalltalk-Dev-UserFiles/FileOuts. What are some possible causes of that error? -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Fri Oct 11 17:45:24 2024 From: juan at cuis.st (Juan Vuletich) Date: Fri, 11 Oct 2024 20:45:24 -0400 Subject: [Cuis-dev] fileOut / fileIn error In-Reply-To: References: Message-ID: <6709C6A4.5040701@cuis.st> On 10/11/2024 11:52 AM, Mark Volkmann via Cuis-dev wrote: > I developed a new package with extensive unit tests and they all pass. > I right-clicked the category for the package in a Browser and selected > fileOut. > Then I opened a File List, located the .st file for the fileOut, > right-clicked and selected fileIn. > I get the error "SyntaxErrorNotification: ->>". > But "" doesn't appear anywhere in the .st file created by the > fileOut in the directory Cuis-Smalltalk-Dev-UserFiles/FileOuts. > What are some possible causes of that error? > > -- > R. Mark Volkmann > Object Computing, Inc. It is trying to compile some string containing ''. Why? I can't tell without a debugger. If it is enough to file in your file in a stock Cuis image, just post that file. If something else is needed to reproduce the problem, provide detailed enough instructions. If in doubt, check http://www.catb.org/esr/faqs/smart-questions.html HTH, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sat Oct 12 13:01:49 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sat, 12 Oct 2024 15:01:49 -0500 Subject: [Cuis-dev] fileOut / fileIn error In-Reply-To: <6709C6A4.5040701@cuis.st> References: <6709C6A4.5040701@cuis.st> Message-ID: On Fri, Oct 11, 2024 at 7:45?PM Juan Vuletich wrote: > On 10/11/2024 11:52 AM, Mark Volkmann via Cuis-dev wrote: > > I developed a new package with extensive unit tests and they all pass. > I right-clicked the category for the package in a Browser and selected > fileOut. > Then I opened a File List, located the .st file for the fileOut, > right-clicked and selected fileIn. > I get the error "SyntaxErrorNotification: >". > But "" doesn't appear anywhere in the .st file created by the > fileOut in the directory Cuis-Smalltalk-Dev-UserFiles/FileOuts. > What are some possible causes of that error? > > -- > R. Mark Volkmann > Object Computing, Inc. > > > It is trying to compile some string containing ''. > You are correct. I found the code that was doing that. Thanks! -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sat Oct 12 13:34:25 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sat, 12 Oct 2024 15:34:25 -0500 Subject: [Cuis-dev] restoring morph locations in macOS Message-ID: When using macOS, is there a trick to being able to start a Cuis image with morphs (like Browser, Workspace, and Transcript) in the same location they were when the image was last saved? Perhaps this is only an issue with large, external monitors. I have a large monitor external to my laptop. I move the Cuis window to that monitor and make the window the size of the entire monitor. Then I position all the morphs the way I want them. Then I "Save Image and Quit". When I restart the image, the window opens on my laptop screen and is smaller than it was when I saved it because the laptop screen is smaller. Because the previous morph positions make them fall outside the window, they get moved to a location that is visible in the window. When I move the window to my large external monitor, the previous layout isn't restored and I have to manually drag each one to where I want it. Perhaps the solution is to find a way to get Cuis to always launch on my large, external monitor. I haven't been able to find a way to do that yet. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 14 07:18:47 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 14 Oct 2024 10:18:47 -0400 Subject: [Cuis-dev] change set to support background image #cover and #tile options In-Reply-To: References: Message-ID: <670D2847.5000809@cuis.st> On 10/5/2024 7:24 PM, Mark Volkmann via Cuis-dev wrote: > Here's an example of using the latest attached change set:: > > filePath := '/Users/volkmannm/Pictures/images/altitude1600.jpg'. > PreferenceSet sysPreferences at: #backgroundEffect put: #tile. > stream := filePath asFileEntry readStream. > self runningWorld backgroundImageData: stream binary contentsOfEntireFile. > > You can also set the #backgroundEffectpreference to #coveror #stretch. Very nice! I just integrated it in GitHub. Thanks! Cheers, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Mon Oct 14 07:34:30 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Mon, 14 Oct 2024 09:34:30 -0500 Subject: [Cuis-dev] change set to support background image #cover and #tile options In-Reply-To: <670D2847.5000809@cuis.st> References: <670D2847.5000809@cuis.st> Message-ID: On Mon, Oct 14, 2024 at 9:18?AM Juan Vuletich wrote: > On 10/5/2024 7:24 PM, Mark Volkmann via Cuis-dev wrote: > > Here's an example of using the latest attached change set:: > > filePath := '/Users/volkmannm/Pictures/images/altitude1600.jpg'. > PreferenceSet sysPreferences at: #backgroundEffect put: #tile. > stream := filePath asFileEntry readStream. > self runningWorld backgroundImageData: stream binary contentsOfEntireFile. > > You can also set the #backgroundEffect preference to #cover or #stretch. > > > Very nice! > > I just integrated it in GitHub. Thanks! > Thanks so much Juan! I documented how to use this in my ever expanding Smalltalk blog pages. See https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/30-development-environment/ and click the table of contents link "Background Image". I'm still hoping to convert all these blog pages on Smalltalk into a book at some point. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Wed Oct 16 12:37:44 2024 From: juan at cuis.st (Juan Vuletich) Date: Wed, 16 Oct 2024 15:37:44 -0400 Subject: [Cuis-dev] [FIX] ... In-Reply-To: <535cc728-5ba1-b9f7-2b0b-02e53333f690@klix.ch> References: <535cc728-5ba1-b9f7-2b0b-02e53333f690@klix.ch> Message-ID: <67101608.1050002@cuis.st> On 10/16/2024 3:23 PM, Gerald Klix wrote: > Hi all, Hi Juan, > > FileList class>>#itemsForFileEntry: uses a convoluted and error prone > way to collect the non meta classes of a collection of classes. > > The attached fix provides a simpler way and also works for > sub-classes of MetaClass, which Haver uses a lot. > > I did not check for compatibility with Cuis' development version, > instead I presume the fix will work there unchanged. > > > HTH and Best Regards, > > Gerald Integrated! Thanks, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich From cuis.01 at klix.ch Wed Oct 16 12:23:39 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Wed, 16 Oct 2024 21:23:39 +0200 Subject: [Cuis-dev] [FIX] ... Message-ID: <535cc728-5ba1-b9f7-2b0b-02e53333f690@klix.ch> Hi all, Hi Juan, FileList class>>#itemsForFileEntry: uses a convoluted and error prone way to collect the non meta classes of a collection of classes. The attached fix provides a simpler way and also works for sub-classes of MetaClass, which Haver uses a lot. I did not check for compatibility with Cuis' development version, instead I presume the fix will work there unchanged. HTH and Best Regards, Gerald -------------- next part -------------- A non-text attachment was scrubbed... Name: [r7.0]-6456-NoHardCodedMetaclassInItemsForFileEntry-GeraldKlix-2024Oct16-21h13m-KLG.001.cs.st Type: application/vnd.sailingtracker.track Size: 906 bytes Desc: not available URL: From r.mark.volkmann at gmail.com Thu Oct 17 07:43:35 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 17 Oct 2024 09:43:35 -0500 Subject: [Cuis-dev] newline characters in method code Message-ID: Often, but not always, when I press the return key to insert a line of code in a method, I see carriage return arrows as shown in the attached screenshot. I have to manually delete those. I'm curious why those get inserted and whether there is a way to prevent that from happening. I'm on macOS. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screenshot 2024-10-17 at 9.41.01?AM.png Type: image/png Size: 6039 bytes Desc: not available URL: From r.mark.volkmann at gmail.com Thu Oct 17 09:15:40 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 17 Oct 2024 11:15:40 -0500 Subject: [Cuis-dev] improving WebClient package Message-ID: For the past several weeks I've been working on improvements to the WebClient package. I'd really appreciate it if you could take a look at https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus which has a README that walks through a simple example. I welcome suggestions for changes, including feedback on Smalltalk style. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From hernan.wilkinson at 10pines.com Thu Oct 17 15:02:55 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Thu, 17 Oct 2024 19:02:55 -0300 Subject: [Cuis-dev] newline characters in method code In-Reply-To: References: Message-ID: Hi Mark, it happens from time to time. It is usually when you file in a file with a different newline set than the one used by Cuis, but it also happened to me without doing a file in... I did not have the time to look at it but there are two solutions: 1) Select all the code (cmd+a), then press cmd+shift+u and the save the method 2) In CuisUniversity a student added a couple of years ago an option to change the new line encode of a class category... Cheers! Hernan. On Thu, Oct 17, 2024 at 11:44?AM Mark Volkmann via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > Often, but not always, when I press the return key to insert a line of > code in a method, I see carriage return arrows as shown in the > attached screenshot. I have to manually delete those. I'm curious why those > get inserted and whether there is a way to prevent that from happening. I'm > on macOS. > > -- > R. Mark Volkmann > Object Computing, Inc. > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Thu Oct 17 17:50:13 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 17 Oct 2024 19:50:13 -0500 Subject: [Cuis-dev] newline characters in method code In-Reply-To: References: Message-ID: In my case the odd newline characters are inserted when I'm editing a method and press the return key. It's not from doing a fileIn. On Thu, Oct 17, 2024 at 5:03?PM Hern?n Wilkinson < hernan.wilkinson at 10pines.com> wrote: > Hi Mark, > it happens from time to time. It is usually when you file in a file with > a different newline set than the one used by Cuis, but it also happened to > me without doing a file in... I did not have the time to look at it but > there are two solutions: > 1) Select all the code (cmd+a), then press cmd+shift+u and the save the > method > 2) In CuisUniversity a student added a couple of years ago an option to > change the new line encode of a class category... > > Cheers! > Hernan. > > > On Thu, Oct 17, 2024 at 11:44?AM Mark Volkmann via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > >> Often, but not always, when I press the return key to insert a line of >> code in a method, I see carriage return arrows as shown in the >> attached screenshot. I have to manually delete those. I'm curious why those >> get inserted and whether there is a way to prevent that from happening. I'm >> on macOS. >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > > > -- > > *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* > *Phone: +54-011*-4893-2057 > *Twitter: @HernanWilkinson* > *site: http://www.10Pines.com * > Address: Alem 896, Floor 6, Buenos Aires, Argentina > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From hernan.wilkinson at 10pines.com Thu Oct 17 18:05:43 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Thu, 17 Oct 2024 22:05:43 -0300 Subject: [Cuis-dev] newline characters in method code In-Reply-To: References: Message-ID: Yeap, it happened to me a couple of times.. weird *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina On Thu, 17 Oct 2024 at 21:50 Mark Volkmann wrote: > In my case the odd newline characters are inserted when I'm editing a > method and press the return key. It's not from doing a fileIn. > > On Thu, Oct 17, 2024 at 5:03?PM Hern?n Wilkinson < > hernan.wilkinson at 10pines.com> wrote: > >> Hi Mark, >> it happens from time to time. It is usually when you file in a file with >> a different newline set than the one used by Cuis, but it also happened to >> me without doing a file in... I did not have the time to look at it but >> there are two solutions: >> 1) Select all the code (cmd+a), then press cmd+shift+u and the save the >> method >> 2) In CuisUniversity a student added a couple of years ago an option to >> change the new line encode of a class category... >> >> Cheers! >> Hernan. >> >> >> On Thu, Oct 17, 2024 at 11:44?AM Mark Volkmann via Cuis-dev < >> cuis-dev at lists.cuis.st> wrote: >> >>> Often, but not always, when I press the return key to insert a line of >>> code in a method, I see carriage return arrows as shown in the >>> attached screenshot. I have to manually delete those. I'm curious why those >>> get inserted and whether there is a way to prevent that from happening. I'm >>> on macOS. >>> >>> -- >>> R. Mark Volkmann >>> Object Computing, Inc. >>> -- >>> Cuis-dev mailing list >>> Cuis-dev at lists.cuis.st >>> https://lists.cuis.st/mailman/listinfo/cuis-dev >>> >> >> >> -- >> >> *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* >> *Phone: +54-011*-4893-2057 >> *Twitter: @HernanWilkinson* >> *site: http://www.10Pines.com * >> Address: Alem 896, Floor 6, Buenos Aires, Argentina >> > > > -- > R. Mark Volkmann > Object Computing, Inc. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Fri Oct 18 08:49:04 2024 From: juan at cuis.st (Juan Vuletich) Date: Fri, 18 Oct 2024 11:49:04 -0400 Subject: [Cuis-dev] newline characters in method code In-Reply-To: References: Message-ID: <67128370.2050606@cuis.st> On 10/17/2024 10:43 AM, Mark Volkmann via Cuis-dev wrote: > Often, but not always, when I press the return key to insert a line of > code in a method, I see carriage return arrows as shown in the > attached screenshot. I have to manually delete those. I'm curious why > those get inserted and whether there is a way to prevent that from > happening. I'm on macOS. > > -- > R. Mark Volkmann > Object Computing, Inc. Cuis includes keystrokes for entering alternate line ending characters. So: [return/enter] -> Lf [alt] + [enter] -> CrLf [command] + [return] -> CrLf [ctrl] + [alt] + [enter] -> Cr [control] + [command] + [return] -> Cr But nobody seems to find them useful. Additionally, the Mac sometimes returns [command]+[return] when command key is not pressed, leading to the problem you see. I just disabled that code, meaning that any such combination will add a regular LF character. If someone needs it back, we may add a preference. Thanks, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sat Oct 19 16:20:15 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sat, 19 Oct 2024 18:20:15 -0500 Subject: [Cuis-dev] ODBC error Message-ID: I really want to learn how to access relational databases like SQLite and Postgres from Cuis Smalltalk so I can do that as part of an HTTP endpoint implemented using the WebClient package. I have the Cuis ODBC package installed and have registered a DSN for my database which is "TodoDSN". I tested it by entering `isql TodoDSN` which supposedly verifies that it can be accessed using ODBC. That works great. I can enter "select * from todos;" and I see the records I expect. Then I tried this in a Workspace: conn := ODBCConnection dsn: dsn user: user password: password. That gives "Error: External module not found" which comes from this code in the class ODBCLibrary: sqlAllocEnv: environmentHandle "SQLRETURN SQLAllocEnv(SQLHENV *EnvironmentHandle);" ^ self externalCallFailed Can anyone explain what this is doing and what "module" it is looking for? -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Sat Oct 19 19:38:34 2024 From: raiford at labware.com (Jon Raiford) Date: Sun, 20 Oct 2024 02:38:34 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: References: Message-ID: I assume you are on a Mac. You are running into Apple ?courage? like when they removed headphone jacks. They stop applications from using library paths that weren?t explicitly allowed when the application was compiled. In the old days you could add to the library path in your bash profile but the only way to make it work now is to add to the library path in a launch script. One potential option is to explicitly reference the homebrew lib paths in the Open Smalltalk vm and recompile it, assuming you installed the drivers using homebrew. Jon ________________________________ From: Cuis-dev on behalf of Mark Volkmann via Cuis-dev Sent: Saturday, October 19, 2024 7:20:15 PM To: Discussion of Cuis Smalltalk Cc: Mark Volkmann Subject: [Cuis-dev] ODBC error I really want to learn how to access relational databases like SQLite and Postgres from Cuis Smalltalk so I can do that as part of an HTTP endpoint implemented using the WebClient package. I have the Cuis ODBC package installed and have registered a DSN for my database which is "TodoDSN". I tested it by entering `isql TodoDSN` which supposedly verifies that it can be accessed using ODBC. That works great. I can enter "select * from todos;" and I see the records I expect. Then I tried this in a Workspace: conn := ODBCConnection dsn: dsn user: user password: password. That gives "Error: External module not found" which comes from this code in the class ODBCLibrary: sqlAllocEnv: environmentHandle "SQLRETURN SQLAllocEnv(SQLHENV *EnvironmentHandle);" ^ self externalCallFailed Can anyone explain what this is doing and what "module" it is looking for? -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sun Oct 20 04:26:45 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sun, 20 Oct 2024 06:26:45 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: References: Message-ID: Yikes! Sounds complicated. Can you point me to any documentation that describes how I could reference a lib path in the Open Smalltalk VM? Is it possible that nobody that uses Cuis Smalltalk accesses relational databases? --- R. Mark Volkmann Object Computing, Inc. > On Oct 19, 2024, at 9:46?PM, Jon Raiford via Cuis-dev wrote: > > ? > I assume you are on a Mac. You are running into Apple ?courage? like when they removed headphone jacks. They stop applications from using library paths that weren?t explicitly allowed when the application was compiled. In the old days you could add to the library path in your bash profile but the only way to make it work now is to add to the library path in a launch script. One potential option is to explicitly reference the homebrew lib paths in the Open Smalltalk vm and recompile it, assuming you installed the drivers using homebrew. > > Jon > From: Cuis-dev on behalf of Mark Volkmann via Cuis-dev > Sent: Saturday, October 19, 2024 7:20:15 PM > To: Discussion of Cuis Smalltalk > Cc: Mark Volkmann > Subject: [Cuis-dev] ODBC error > > I really want to learn how to access relational databases like SQLite and Postgres from Cuis Smalltalk so I can do that as part of an HTTP endpoint implemented using the WebClient package. I have the Cuis ODBC package installed and have registered a DSN for my database which is "TodoDSN". I tested it by entering `isql TodoDSN` which supposedly verifies that it can be accessed using ODBC. That works great. I can enter "select * from todos;" and I see the records I expect. Then I tried this in a Workspace: > > conn := ODBCConnection dsn: dsn user: user password: password. > > That gives "Error: External module not found" which comes from this code in the class ODBCLibrary: > > sqlAllocEnv: environmentHandle > "SQLRETURN SQLAllocEnv(SQLHENV *EnvironmentHandle);" > > ^ self externalCallFailed > > Can anyone explain what this is doing and what "module" it is looking for? > > -- > R. Mark Volkmann > Object Computing, Inc. > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sun Oct 20 04:31:40 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sun, 20 Oct 2024 06:31:40 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: References: Message-ID: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> I should have asked ?Is it possible that nobody that uses Cuis Smalltalk in macOS accesses relational databases?? --- R. Mark Volkmann Object Computing, Inc. > On Oct 20, 2024, at 6:26?AM, Mark Volkmann wrote: > > ?Yikes! Sounds complicated. Can you point me to any documentation that describes how I could reference a lib path in the Open Smalltalk VM? > > Is it possible that nobody that uses Cuis Smalltalk accesses relational databases? > > --- > R. Mark Volkmann > Object Computing, Inc. > >>> On Oct 19, 2024, at 9:46?PM, Jon Raiford via Cuis-dev wrote: >>> >> ? >> I assume you are on a Mac. You are running into Apple ?courage? like when they removed headphone jacks. They stop applications from using library paths that weren?t explicitly allowed when the application was compiled. In the old days you could add to the library path in your bash profile but the only way to make it work now is to add to the library path in a launch script. One potential option is to explicitly reference the homebrew lib paths in the Open Smalltalk vm and recompile it, assuming you installed the drivers using homebrew. >> >> Jon >> From: Cuis-dev on behalf of Mark Volkmann via Cuis-dev >> Sent: Saturday, October 19, 2024 7:20:15 PM >> To: Discussion of Cuis Smalltalk >> Cc: Mark Volkmann >> Subject: [Cuis-dev] ODBC error >> >> I really want to learn how to access relational databases like SQLite and Postgres from Cuis Smalltalk so I can do that as part of an HTTP endpoint implemented using the WebClient package. I have the Cuis ODBC package installed and have registered a DSN for my database which is "TodoDSN". I tested it by entering `isql TodoDSN` which supposedly verifies that it can be accessed using ODBC. That works great. I can enter "select * from todos;" and I see the records I expect. Then I tried this in a Workspace: >> >> conn := ODBCConnection dsn: dsn user: user password: password. >> >> That gives "Error: External module not found" which comes from this code in the class ODBCLibrary: >> >> sqlAllocEnv: environmentHandle >> "SQLRETURN SQLAllocEnv(SQLHENV *EnvironmentHandle);" >> >> ^ self externalCallFailed >> >> Can anyone explain what this is doing and what "module" it is looking for? >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Sun Oct 20 07:48:50 2024 From: raiford at labware.com (Jon Raiford) Date: Sun, 20 Oct 2024 14:48:50 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> Message-ID: I think people in the open source world just become good problem solvers and fix things for themselves. In this case, is it correct for Cuis to add homebrew libs by default on the Mac? I?m not so sure. Maybe if it was installed via homebrew then it should be added, but the reason Apple added this restriction was specifically to prevent bad actors from adding compromised libraries and fiddling with the path in order to compromise applications. Technically things are more secure like this. Anyway, for your issue, just edit the RunCuisOnMacTerminal.sh script and add something like this at the beginning: export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:${DYLD_LIBRARY_PATH}" Jon From: Mark Volkmann Date: Sunday, October 20, 2024 at 7:32?AM To: Discussion of Cuis Smalltalk Cc: Jon Raiford Subject: Re: [Cuis-dev] ODBC error I should have asked ?Is it possible that nobody that uses Cuis Smalltalk in macOS accesses relational databases?? --- R. Mark Volkmann Object Computing, Inc. On Oct 20, 2024, at 6:26?AM, Mark Volkmann wrote: ?Yikes! Sounds complicated. Can you point me to any documentation that describes how I could reference a lib path in the Open Smalltalk VM? Is it possible that nobody that uses Cuis Smalltalk accesses relational databases? --- R. Mark Volkmann Object Computing, Inc. On Oct 19, 2024, at 9:46?PM, Jon Raiford via Cuis-dev wrote: ? I assume you are on a Mac. You are running into Apple ?courage? like when they removed headphone jacks. They stop applications from using library paths that weren?t explicitly allowed when the application was compiled. In the old days you could add to the library path in your bash profile but the only way to make it work now is to add to the library path in a launch script. One potential option is to explicitly reference the homebrew lib paths in the Open Smalltalk vm and recompile it, assuming you installed the drivers using homebrew. Jon ________________________________ From: Cuis-dev on behalf of Mark Volkmann via Cuis-dev Sent: Saturday, October 19, 2024 7:20:15 PM To: Discussion of Cuis Smalltalk Cc: Mark Volkmann Subject: [Cuis-dev] ODBC error I really want to learn how to access relational databases like SQLite and Postgres from Cuis Smalltalk so I can do that as part of an HTTP endpoint implemented using the WebClient package. I have the Cuis ODBC package installed and have registered a DSN for my database which is "TodoDSN". I tested it by entering `isql TodoDSN` which supposedly verifies that it can be accessed using ODBC. That works great. I can enter "select * from todos;" and I see the records I expect. Then I tried this in a Workspace: conn := ODBCConnection dsn: dsn user: user password: password. That gives "Error: External module not found" which comes from this code in the class ODBCLibrary: sqlAllocEnv: environmentHandle "SQLRETURN SQLAllocEnv(SQLHENV *EnvironmentHandle);" ^ self externalCallFailed Can anyone explain what this is doing and what "module" it is looking for? -- R. Mark Volkmann Object Computing, Inc. -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: From hfern at free.fr Sun Oct 20 08:06:55 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Sun, 20 Oct 2024 17:06:55 +0200 Subject: [Cuis-dev] Handwriting :-) Message-ID: <7c503235-12a0-4452-bdb6-34a90bcc23a7@free.fr> Hi, Some video demo on the note taker of Dybo https://mamot.fr/@drgeo/113340317300995188 -- GNU Dr. Geo http://gnu.org/s/dr-geo/ http://gnu-drgeo.blogspot.com/ From ken.dickey at whidbey.com Sun Oct 20 11:49:49 2024 From: ken.dickey at whidbey.com (ken.dickey at whidbey.com) Date: Sun, 20 Oct 2024 11:49:49 -0700 Subject: [Cuis-dev] TextParagraphMorph>>contents: Message-ID: In a Workspace: pm := TextParagraphMorph contents: 'They say I am RED' red. pm openInWorld. pm contents: 'They say I am RED' green. But text remains RED. However, pm contents: ''. pm contents: 'They say I am RED' green. displays properly in GREEN. ?!? -KenD From ken.dickey at whidbey.com Sun Oct 20 12:35:22 2024 From: ken.dickey at whidbey.com (ken.dickey at whidbey.com) Date: Sun, 20 Oct 2024 12:35:22 -0700 Subject: [Cuis-dev] CompassSampleCompareMorph Message-ID: <220cf32ba3ed006911a91ff79be2f467@whidbey.com> I just added a CompassSampleCompareMorph to compare gesture strokes and moved it and the other UI-StrokeRecognizer tools into a new Package: 'UI-StrokeRecognizer-Tools'. No need to get the construction and comparison tools when you just want to try out the EditorWithStrokeInput. FYI, -KenD From juan at cuis.st Sun Oct 20 15:48:31 2024 From: juan at cuis.st (Juan Vuletich) Date: Sun, 20 Oct 2024 18:48:31 -0400 Subject: [Cuis-dev] ODBC error In-Reply-To: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> Message-ID: <671588BF.6050904@cuis.st> Hi Mark, What follows may be an intricate reading involving language, manners, and how the Open Source world works. Please read carefully. On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: > I should have asked ?Is it possible that nobody that uses Cuis > Smalltalk in macOS accesses relational databases?? Who knows? Cuis Smalltalk is MIT license you get the whole system, free for any use, without any obligations. That means that you are not required to disclose what you do with it. As a consequence of that, the answer to "it is possible that nobody that uses Cuis Smalltalk does XXX?" is true, for any XXX. Does this matter? I don't think so. A much better way to react would be something like "Hi Folks. I'm trying to do XXX. I know the system is fully open and explicitly designed to make it easy for me to solve my technical problems, but I'm still unable to do so. Has anybody faced these kinds of problems I'm seeing before, and is willing to help me?". That will indeed work much better. Additionally, some comment from you revealing that you have already read the contents of the /Documentation/Technical folder would be appreciated. Your first message made me believe you hadn't realized you had trouble calling an API via FFI. But Jon's answer doesn't tell you that, and assumes you already know that. Your following message makes me now believe that you know that the problem may be "how to reference a lib path in the Open Smalltalk VM", indeed being aware that this is a problem with FFI. Once you realize that, you may also realize that this problem has almost nothing to do with Cuis Smalltalk. A bit of googling shows people asking similar (but better formed) questions in nginx and lua. I'm starting to have doubts about your intellectual honesty while asking these questions. I think the Cuis community deserves better than this. Thanks, > > --- > R. Mark Volkmann > Object Computing, Inc. > >> On Oct 20, 2024, at 6:26?AM, Mark Volkmann >> wrote: >> >> ? Yikes! Sounds complicated. Can you point me to any documentation >> that describes how I could reference a lib path in the Open Smalltalk >> VM? >> >> Is it possible that nobody that uses Cuis Smalltalk accesses >> relational databases? >> >> --- >> R. Mark Volkmann >> Object Computing, Inc. >> -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Sun Oct 20 16:09:09 2024 From: juan at cuis.st (Juan Vuletich) Date: Sun, 20 Oct 2024 19:09:09 -0400 Subject: [Cuis-dev] TextParagraphMorph>>contents: In-Reply-To: References: Message-ID: <67158D95.5020103@cuis.st> On 10/20/2024 2:49 PM, ken.dickey--- via Cuis-dev wrote: > In a Workspace: > > pm := TextParagraphMorph contents: 'They say I am RED' red. > pm openInWorld. > pm contents: 'They say I am RED' green. > > But text remains RED. > > However, > > pm contents: ''. > pm contents: 'They say I am RED' green. > > displays properly in GREEN. > > ?!? Hi Ken, This was a consequence of TextParagraphMorph not being aware of the weird Text>>#= we inherit from Smalltalk-80. Just pushed a fix. Thanks for reporting! -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich From juan at cuis.st Sun Oct 20 16:27:29 2024 From: juan at cuis.st (Juan Vuletich) Date: Sun, 20 Oct 2024 19:27:29 -0400 Subject: [Cuis-dev] Handwriting :-) In-Reply-To: <7c503235-12a0-4452-bdb6-34a90bcc23a7@free.fr> References: <7c503235-12a0-4452-bdb6-34a90bcc23a7@free.fr> Message-ID: <671591E1.9020805@cuis.st> On 10/20/2024 11:06 AM, Hilaire Fernandes via Cuis-dev wrote: > Hi, > > Some video demo on the note taker of Dybo > > https://mamot.fr/@drgeo/113340317300995188 > Very impressive! I love it. Thanks, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich From hernan.wilkinson at 10pines.com Sun Oct 20 16:35:12 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Sun, 20 Oct 2024 20:35:12 -0300 Subject: [Cuis-dev] Handwriting :-) In-Reply-To: <671591E1.9020805@cuis.st> References: <7c503235-12a0-4452-bdb6-34a90bcc23a7@free.fr> <671591E1.9020805@cuis.st> Message-ID: wow!!! impressive!!! congratulations!! On Sun, Oct 20, 2024 at 8:27?PM Juan Vuletich via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > On 10/20/2024 11:06 AM, Hilaire Fernandes via Cuis-dev wrote: > > Hi, > > > > Some video demo on the note taker of Dybo > > > > https://mamot.fr/@drgeo/113340317300995188 > > > > Very impressive! I love it. > > Thanks, > > -- > Juan Vuletich > cuis.st > github.com/jvuletich > researchgate.net/profile/Juan-Vuletich > independent.academia.edu/JuanVuletich > patents.justia.com/inventor/juan-manuel-vuletich > linkedin.com/in/juan-vuletich-75611b3 > twitter.com/JuanVuletich > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sun Oct 20 17:34:10 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sun, 20 Oct 2024 19:34:10 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: <671588BF.6050904@cuis.st> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> Message-ID: I apologize if the way I worded my question came across as rude. That was certainly not my intent. I think I should explain why I've tried to be a part of the Cuis Smalltalk community for the past eight months or so. I'm pretty new to Smalltalk and it turns out I love it. And so far Cuis Smalltalk is my favorite distribution. Early in my learning I had a lot of beginner questions for which I failed to easily find answers. So I frequently asked questions on this mailing list. Over time I learned that doing that is frowned on and there is a high expectation that beginners will read through the source code and try hard to find answers on their own. I've tried hard to do that, but haven't always been successful. I decided that I wanted to help future beginners find the answers to all the questions I had more easily. So I started documenting everything I learned about Smalltalk at https://mvolkmann.github.io/blog/ (select Smalltalk in the left nav to see a long list of subtopics). As you can see, I have spent a large amount of time on this. It's nothing compared to those of you that have been contributing to Cuis Smalltalk for years, but I think it provides a good resource for anyone new to Smalltalk in general and Cuis Smalltalk in particular. I do not have a particular app in mind that I want to build with Smalltalk. Instead I'm constantly thinking about how I would convince non-Smalltalk developers to give Cuis Smalltalk a try. A perfect example of that is my investigation into database access. Many of the developers I know are web developers. Accessing relational databases is a fundamental part of implementing most web applications. So I need to be able to demonstrate how that is done from Cuis Smalltalk to have any hope of convincing my web developer friends to try it. As far as I know, based on many searches, there is not currently a web page that shows step-by-step how to access a relational database using Cuis Smalltalk. I want to provide that if I can learn how to do it. While some in the community may have been annoyed by the number of questions I have asked, I do hope there is a feeling that my presence in the Cuis community has had a net positive impact. In addition to the documentation I've created in my blog I have identified a number of minor issues that have been fixed, contributed a small change set that added the ability to set a background image in cover and tile modes, and most recently contributed a library for implementing web servers that has many advantages over the WebClient library ( https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus). I really want to contribute via the documentation I'm creating and hope that at some point all of that content can be the basis for a book focused on Cuis Smalltalk. P.S. I honestly didn't know that the Cuis-Smalltalk-Dev/Documentation/Technical directory existed. Thanks for pointing that out. I'll read that now. On Sun, Oct 20, 2024 at 5:48?PM Juan Vuletich wrote: > Hi Mark, > > What follows may be an intricate reading involving language, manners, and > how the Open Source world works. Please read carefully. > > On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: > > I should have asked ?Is it possible that nobody that uses Cuis Smalltalk > in macOS accesses relational databases?? > > > Who knows? Cuis Smalltalk is MIT license you get the whole system, free > for any use, without any obligations. That means that you are not required > to disclose what you do with it. As a consequence of that, the answer to > "it is possible that nobody that uses Cuis Smalltalk does XXX?" is true, > for any XXX. Does this matter? I don't think so. > > A much better way to react would be something like "Hi Folks. I'm trying > to do XXX. I know the system is fully open and explicitly designed to make > it easy for me to solve my technical problems, but I'm still unable to do > so. Has anybody faced these kinds of problems I'm seeing before, and is > willing to help me?". > > That will indeed work much better. > > Additionally, some comment from you revealing that you have already read > the contents of the /Documentation/Technical folder would be appreciated. > Your first message made me believe you hadn't realized you had trouble > calling an API via FFI. But Jon's answer doesn't tell you that, and assumes > you already know that. Your following message makes me now believe that you > know that the problem may be "how to reference a lib path in the Open > Smalltalk VM", indeed being aware that this is a problem with FFI. > > Once you realize that, you may also realize that this problem has almost > nothing to do with Cuis Smalltalk. A bit of googling shows people asking > similar (but better formed) questions in nginx and lua. > > I'm starting to have doubts about your intellectual honesty while asking > these questions. I think the Cuis community deserves better than this. > > Thanks, > > > --- > R. Mark Volkmann > Object Computing, Inc. > > On Oct 20, 2024, at 6:26?AM, Mark Volkmann > wrote: > > ? Yikes! Sounds complicated. Can you point me to any documentation that > describes how I could reference a lib path in the Open Smalltalk VM? > > Is it possible that nobody that uses Cuis Smalltalk accesses relational > databases? > > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From vigabf at gmail.com Mon Oct 21 07:53:13 2024 From: vigabf at gmail.com (Victor Gabriel Fierro) Date: Mon, 21 Oct 2024 11:53:13 -0300 Subject: [Cuis-dev] Changes for class listing in the Code File Browser Message-ID: Hello, good morning! My name is Gabriel, and I wanted to make a contribution to Cuis. While working with it I found it very annoying to use the Code File Browser to browse the code before doing a file-in because it didn't display the classes hierarchically. This was very problematic because to understand how the code of the code file worked I had to see the definition of every class to understand from where it was subclassifying and make the hierarchy in my head. I changed this so that the Code File Browser displays classes in the same way that the Browser does, making it more uniform and understandable with just a glance. I hope you like this addition! -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 6788-ChangesToCodeFileBrowser-VictorGabrielFierro-2024Oct21-02h01m-VGF.001.cs.st Type: application/octet-stream Size: 2869 bytes Desc: not available URL: From mail at jaromir.net Mon Oct 21 09:25:11 2024 From: mail at jaromir.net (Jaromir Matas) Date: Mon, 21 Oct 2024 16:25:11 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> Message-ID: Hi Mark, all, I myself discovered Smalltalk as late as 2020 and found that, at least in my case, learning Smalltalk was pretty difficult despite the simplicity, consistency and overall beauty of the language. And I too love it :) (in my case it's both Squeak and Cuis) > Early in my learning I had a lot of beginner questions for which I failed to easily find answers. [...] and there is a high expectation that beginners will read through the source code and try hard to find answers on their own. I so much share your frustration! In my experience no amount of reading the code can replace guidelines from experienced users enlightening the **intentions** behind the code as some parts of the code are just implementation details and trade-offs while some other parts are the "good stuff", bear the ideas. But which is which?! This is where I struggle the most, to be able to extract the ideas and filter out the "noise", and where I consider expert advice irreplaceable. And this is one of the things I'd love to find in comments. > So I frequently asked questions on this mailing list. Over time I learned that doing that is frowned on [...] While some in the community may have been annoyed by the number of questions I have asked [...] I honestly don't believe it's the case! Otherwise I'd be afraid to ask next time :) > I really want to contribute via the documentation I'm creating and hope that at some point all of that content can be the basis for a book focused on Cuis Smalltalk. I wish you succeeded in this endeavor :) Again, my beginnings with Smalltalk were painful due to the lack of documentation and an availability of a vast knowledge base of the Stack Overflow type where you can sooner or later find a question similar to the one you're struggling with. I'm learning Rust at the moment and at least most of my beginner questions and confusion have been covered by the documentation so far. But I very much realize how much work it is to provide such a documentation and that it's only possible thanks to the size of the community; the amount of work to create (and maintain!) such a documentation is, I believe, about the same regardless of the language hence it's so much more difficult for small communities like Squeak/Cuis's where just a few individuals must carry the burden. Quite recently I've discovered that the github Copilot can be a tremendous help in learning a language (accelerates learning the syntax, explains features and bugs, auto-fills simple examples and even more complicated code snippets - not always correct but even that helps!). I wish such a tool was available for Smalltalk as a lot of beginner questions could be solved right away. I wish there were more up-to-date sources like the Cuis book, Squeak by example but also introductory books on more advanced stuff like Stephane Ducasse's books on concurrent programming in Smalltalk or Eliot Miranda's blog on contexts & friends. Best of luck, Jaromir On 21-Oct-24 2:34:10 AM, "Mark Volkmann via Cuis-dev" wrote: >I apologize if the way I worded my question came across as rude. That >was certainly not my intent. I think I should explain why I've tried to >be a part of the Cuis Smalltalk community for the past eight months or >so. > >I'm pretty new to Smalltalk and it turns out I love it. And so far Cuis >Smalltalk is my favorite distribution. > >Early in my learning I had a lot of beginner questions for which I >failed to easily find answers. So I frequently asked questions on this >mailing list. Over time I learned that doing that is frowned on and >there is a high expectation that beginners will read through the source >code and try hard to find answers on their own. I've tried hard to do >that, but haven't always been successful. > >I decided that I wanted to help future beginners find the answers to >all the questions I had more easily. So I started documenting >everything I learned about Smalltalk at >https://mvolkmann.github.io/blog/ (select Smalltalk in the left nav to >see a long list of subtopics). As you can see, I have spent a large >amount of time on this. It's nothing compared to those of you that have >been contributing to Cuis Smalltalk for years, but I think it provides >a good resource for anyone new to Smalltalk in general and Cuis >Smalltalk in particular. > >I do not have a particular app in mind that I want to build with >Smalltalk. Instead I'm constantly thinking about how I would convince >non-Smalltalk developers to give Cuis Smalltalk a try. A perfect >example of that is my investigation into database access. Many of the >developers I know are web developers. Accessing relational databases is >a fundamental part of implementing most web applications. So I need to >be able to demonstrate how that is done from Cuis Smalltalk to have any >hope of convincing my web developer friends to try it. As far as I >know, based on many searches, there is not currently a web page that >shows step-by-step how to access a relational database using Cuis >Smalltalk. I want to provide that if I can learn how to do it. > >While some in the community may have been annoyed by the number of >questions I have asked, I do hope there is a feeling that my presence >in the Cuis community has had a net positive impact. In addition to the >documentation I've created in my blog I have identified a number of >minor issues that have been fixed, contributed a small change set that >added the ability to set a background image in cover and tile modes, >and most recently contributed a library for implementing web servers >that has many advantages over the WebClient library >(https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus). > >I really want to contribute via the documentation I'm creating and hope >that at some point all of that content can be the basis for a book >focused on Cuis Smalltalk. > >P.S. I honestly didn't know that the >Cuis-Smalltalk-Dev/Documentation/Technical directory existed. Thanks >for pointing that out. I'll read that now. > >On Sun, Oct 20, 2024 at 5:48?PM Juan Vuletich wrote: >>Hi Mark, >> >>What follows may be an intricate reading involving language, manners, >>and how the Open Source world works. Please read carefully. >> >>On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: >>>I should have asked ?Is it possible that nobody that uses Cuis >>>Smalltalk in macOS accesses relational databases?? >> >>Who knows? Cuis Smalltalk is MIT license you get the whole system, >>free for any use, without any obligations. That means that you are not >>required to disclose what you do with it. As a consequence of that, >>the answer to "it is possible that nobody that uses Cuis Smalltalk >>does XXX?" is true, for any XXX. Does this matter? I don't think so. >> >>A much better way to react would be something like "Hi Folks. I'm >>trying to do XXX. I know the system is fully open and explicitly >>designed to make it easy for me to solve my technical problems, but >>I'm still unable to do so. Has anybody faced these kinds of problems >>I'm seeing before, and is willing to help me?". >> >>That will indeed work much better. >> >>Additionally, some comment from you revealing that you have already >>read the contents of the /Documentation/Technical folder would be >>appreciated. Your first message made me believe you hadn't realized >>you had trouble calling an API via FFI. But Jon's answer doesn't tell >>you that, and assumes you already know that. Your following message >>makes me now believe that you know that the problem may be "how to >>reference a lib path in the Open Smalltalk VM", indeed being aware >>that this is a problem with FFI. >> >>Once you realize that, you may also realize that this problem has >>almost nothing to do with Cuis Smalltalk. A bit of googling shows >>people asking similar (but better formed) questions in nginx and lua. >> >>I'm starting to have doubts about your intellectual honesty while >>asking these questions. I think the Cuis community deserves better >>than this. >> >>Thanks, >> >>> >>>--- >>>R. Mark Volkmann >>>Object Computing, Inc. >>> >>>>On Oct 20, 2024, at 6:26?AM, Mark Volkmann >>>> >>>>wrote: >>>> >>>>? Yikes! Sounds complicated. Can you point me to any documentation >>>>that describes how I could reference a lib path in the Open >>>>Smalltalk VM? >>>> >>>>Is it possible that nobody that uses Cuis Smalltalk accesses >>>>relational databases? >-- >R. Mark Volkmann >Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 21 10:58:27 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 21 Oct 2024 13:58:27 -0400 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> Message-ID: <67169643.1090405@cuis.st> Hi Mark, That is very much appreciated. I hope your book will be very useful for other people new to Cuis and Smalltalk! As you prepare material for your book, please keep in mind https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/blob/master/Documentation/AboutCuis.md#the-philosophy-behind-cuis and http://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html . These explain the ideas behind Smalltalk, and knowing about them from the start will be a great help when trying to understand any part of the system. They also explain why it is much better to learn the tools to explore the system that it is to ask someone questions. Asking questions is of course OK, but if you succeed in finding the answer before asking, your benefit is much bigger. Cheers, On 10/20/2024 8:34 PM, Mark Volkmann via Cuis-dev wrote: > I apologize if the way I worded my question came across as rude. That > was certainly not my intent. I think I should explain why I've tried > to be a part of the Cuis Smalltalk community for the past eight months > or so. > > I'm pretty new to Smalltalk and it turns out I love it. And so far > Cuis Smalltalk is my favorite distribution. > > Early in my learning I had a lot of beginner questions for which I > failed to easily find answers. So I frequently asked questions on this > mailing list. Over time I learned that doing that is frowned on and > there is a high expectation that beginners will read through the > source code and try hard to find answers on their own. I've tried hard > to do that, but haven't always been successful. > > I decided that I wanted to help future beginners find the answers to > all the questions I had more easily. So I started documenting > everything I learned about Smalltalk at > https://mvolkmann.github.io/blog/ (select Smalltalk in the left nav to > see a long list of subtopics). As you can see, I have spent a large > amount of time on this. It's nothing compared to those of you that > have been contributing to Cuis Smalltalk for years, but I think it > provides a good resource for anyone new to Smalltalk in general and > Cuis Smalltalk in particular. > > I do not have a particular app in mind that I want to build with > Smalltalk. Instead I'm constantly thinking about how I would convince > non-Smalltalk developers to give Cuis Smalltalk a try. A perfect > example of that is my investigation into database access. Many of the > developers I know are web developers. Accessing relational databases > is a fundamental part of implementing most web applications. So I need > to be able to demonstrate how that is done from Cuis Smalltalk to have > any hope of convincing my web developer friends to try it. As far as I > know, based on many searches, there is not currently a web page that > shows step-by-step how to access a relational database using Cuis > Smalltalk. I want to provide that if I can learn how to do it. > > While some in the community may have been annoyed by the number of > questions I have asked, I do hope there is a feeling that my presence > in the Cuis community has had a net positive impact. In addition to > the documentation I've created in my blog I have identified a number > of minor issues that have been fixed, contributed a small change set > that added the ability to set a background image in cover and tile > modes, and most recently contributed a library for implementing web > servers that has many advantages over the WebClient library > (https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus). > > I really want to contribute via the documentation I'm creating and > hope that at some point all of that content can be the basis for a > book focused on Cuis Smalltalk. > > P.S. I honestly didn't know that the > Cuis-Smalltalk-Dev/Documentation/Technical directory existed. Thanks > for pointing that out. I'll read that now. > > On Sun, Oct 20, 2024 at 5:48?PM Juan Vuletich > wrote: > > Hi Mark, > > What follows may be an intricate reading involving language, > manners, and how the Open Source world works. Please read carefully. > > On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: >> I should have asked ?Is it possible that nobody that uses Cuis >> Smalltalk in macOS accesses relational databases?? > > Who knows? Cuis Smalltalk is MIT license you get the whole system, > free for any use, without any obligations. That means that you are > not required to disclose what you do with it. As a consequence of > that, the answer to "it is possible that nobody that uses Cuis > Smalltalk does XXX?" is true, for any XXX. Does this matter? I > don't think so. > > A much better way to react would be something like "Hi Folks. I'm > trying to do XXX. I know the system is fully open and explicitly > designed to make it easy for me to solve my technical problems, > but I'm still unable to do so. Has anybody faced these kinds of > problems I'm seeing before, and is willing to help me?". > > That will indeed work much better. > > Additionally, some comment from you revealing that you have > already read the contents of the /Documentation/Technical folder > would be appreciated. Your first message made me believe you > hadn't realized you had trouble calling an API via FFI. But Jon's > answer doesn't tell you that, and assumes you already know that. > Your following message makes me now believe that you know that the > problem may be "how to reference a lib path in the Open Smalltalk > VM", indeed being aware that this is a problem with FFI. > > Once you realize that, you may also realize that this problem has > almost nothing to do with Cuis Smalltalk. A bit of googling shows > people asking similar (but better formed) questions in nginx and lua. > > I'm starting to have doubts about your intellectual honesty while > asking these questions. I think the Cuis community deserves better > than this. > > > Thanks, > >> >> --- >> R. Mark Volkmann >> Object Computing, Inc. >> >>> On Oct 20, 2024, at 6:26?AM, Mark Volkmann >>> >>> wrote: >>> >>> ? Yikes! Sounds complicated. Can you point me to any >>> documentation that describes how I could reference a lib path in >>> the Open Smalltalk VM? >>> >>> Is it possible that nobody that uses Cuis Smalltalk accesses >>> relational databases? > > -- > R. Mark Volkmann > Object Computing, Inc. -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 21 11:47:54 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 21 Oct 2024 14:47:54 -0400 Subject: [Cuis-dev] About learning Smalltalk. About documentation and &A. Re: ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> Message-ID: <6716A1DA.1050407@cuis.st> Hi Jaromir, Mark, all, Comments inline. Please read in detail. I think this is important. On 10/21/2024 12:25 PM, Jaromir Matas via Cuis-dev wrote: > Hi Mark, all, > > I myself discovered Smalltalk as late as 2020 and found that, at least > in my case, learning Smalltalk was pretty difficult despite the > simplicity, consistency and overall beauty of the language. And I too > love it :) (in my case it's both Squeak and Cuis) > I discovered Smalltalk in 1995. By that time, I had been programming for 10 years. After the obvious (at that time) start with Basic, I quickly moved to 6809 Assembly and did pretty advanced real time music stuff. Then, I moved to C, as a kind of "portable Assembly". When C++ seemed to take over the world, I assumed it was the obvious next step. Up to this moment, I had always learned by myself, reading books and experimenting with the computer. This approach failed completely with C++. I read 3 or four books, cover to cover. I did a lot of experiments, and could not see the value. Never understood the "TurboVision" library. I did value what is called C+, that is statically determined "polymorphism" based on parameter types. Then, I was lucky. I was around 3rd year in my CS studies at UniBuenosAires. An elective course called "Object Oriented Programming" was offered. I knew that was what I'd failed to grasp with C++, so I signed up for it. The teacher, M?ximo Prieto changed my life forever, as he changed the life of may of us then. He introduced us to Smalltalk, and the whole idea of dealing with complexity. He also started the thriving Smalltalk community in Buenos Aires. Today Smalltalk is taught at several universities here, there are several companies using it for real product development. Buenos Aires is the main source of Smalltalk talent for almost all the Smalltalk systems currently in active development, not just Cuis. So, I don't know how it is to discover Smalltalk without a great teacher! > > Early in my learning I had a lot of beginner questions for which I > failed to easily find answers. [...] and there is a high expectation > that beginners will read through the source code and try hard to find > answers on their own. > > I so much share your frustration! In my experience no amount of > reading the code can replace guidelines from experienced users > enlightening the **intentions** behind the code as some parts of the > code are just implementation details and trade-offs while some other > parts are the "good stuff", bear the ideas. But which is which?! This > is where I struggle the most, to be able to extract the ideas and > filter out the "noise", and where I consider expert advice > irreplaceable. And this is one of the things I'd love to find in > comments. I think it would be best to take a Smalltalk course with great teachers. I know, I know, that is even harder to find than good developers for your Smalltalk project (unless you look at Buenos Aires!). What is next best to that? I think that Dan Ingalls' "Design Principles Behind Smalltalk" is the best presentation of the ideas. I can't stress how important it is to read it and really try to understand it. There are many other good introductory books on Smalltalk, all freely available on the web. Adele Goldberg's "Smalltalk-80, the language and its implementation" is great. There are several others, including our own "The Cuis Book" by our friend Hilaire Fernandes. In the Documentation folder of our mail repo you can also find some good material, including lots of references for further reading. There are also many videos online that will help. Books, magazine articles and videos include descriptions of the ideas and intentions behind the code that are generally better than answers in the mail list, because they were written with great care. Questions on the mail list are better for filling in details, especially if they are specific to some dialect (like Cuis) not directly addressed in the book. For instance, this email is taking an hour to write, and the mail thread leading to this has had me thinking at least 5 times more. Maybe I'd turn this email into an .md document for the Cuis repo. Then, will people read it? > > So I frequently asked questions on this mailing list. Over time I > learned that doing that is frowned on [...] While some in the > community may have been annoyed by the number of questions I have > asked [...] > > I honestly don't believe it's the case! Otherwise I'd be afraid to ask > next time :) Questions are most welcome. In this space we value free speech, and at the same time we want an open and warm place where everybody can feel comfortable. For any Open Source project, questions are especially valuable if they point to some aspect not covered in enough clarity and detail in the documentation. Good questions help us refine documentation, or fix annoyances in the system. You know, we old timers don't read the documentation we wrote very often, and we tend to get used to annoyances in the system to the point where we don't see them any more. Good questions, complaints and bug reports are extremely helpful! Still, questions that can be addressed by reading the documentation, or a quick query to the system can sometimes feel annoying, at least to me. I can carefully write some explanation, investing several hours, and making that part of the documentation. Or I can write 10 times about the same issue, when someone asks, each time improvising a low quality ten minutes email. The first option results in higher quality material, that can benefit many people over the course of years. The second option gives a low quality answer to just one person, that will most likely not be read again. So, if you read the documentation first, and then point to flaws or missing parts, you are really helping us make a better system. I can't stress this enough. I really, really, really, very much, prefer this! > > I really want to contribute via the documentation I'm creating and > hope that at some point all of that content can be the basis for a > book focused on Cuis Smalltalk. > > I wish you succeeded in this endeavor :) Again, my beginnings with > Smalltalk were painful due to the lack of documentation and an > availability of a vast knowledge base of the Stack Overflow type where > you can sooner or later find a question similar to the one you're > struggling with. I'm learning Rust at the moment and at least most of > my beginner questions and confusion have been covered by the > documentation so far. But I very much realize how much work it is to > provide such a documentation and that it's only possible thanks to the > size of the community; the amount of work to create (and maintain!) > such a documentation is, I believe, about the same regardless of the > language hence it's so much more difficult for small communities like > Squeak/Cuis's where just a few individuals must carry the burden. While this is true, most languages and frameworks are what is called "black box". You only get the APIs or language constructs to use. If documentation is unclear or missing, your only resource is to ask someone for help. As Dan Ingalls says in his "Design Principles Behind Smalltalk", Smalltalk tries to offer a completely different experience. In Smalltalk, all the libraries are "white box". You are encouraged to see what they do. Time spent learning how to inspect and query the system is the best investment you can do in Smalltalk. > Quite recently I've discovered that the github Copilot can be a > tremendous help in learning a language (accelerates learning the > syntax, explains features and bugs, auto-fills simple examples and > even more complicated code snippets - not always correct but even that > helps!). I wish such a tool was available for Smalltalk as a lot of > beginner questions could be solved right away. > > I wish there were more up-to-date sources like the Cuis book, Squeak > by example but also introductory books on more advanced stuff like > Stephane Ducasse's books on concurrent programming in Smalltalk or > Eliot Miranda's blog on contexts & friends. Hey Jaromir, you are in a better position than almost anyone (me included!) to write about the areas where you digged really deep and made great contributions. I know your code is clear, and with great comments. Still, if you ever feel like writing some .md documents on the stuff you know better than most, it would be a very welcome contribution! > Best of luck, > > Jaromir Cheers, > > On 21-Oct-24 2:34:10 AM, "Mark Volkmann via Cuis-dev" > > wrote: > >> I apologize if the way I worded my question came across as rude. That >> was certainly not my intent. I think I should explain why I've tried >> to be a part of the Cuis Smalltalk community for the past eight >> months or so. >> >> I'm pretty new to Smalltalk and it turns out I love it. And so far >> Cuis Smalltalk is my favorite distribution. >> >> Early in my learning I had a lot of beginner questions for which I >> failed to easily find answers. So I frequently asked questions on >> this mailing list. Over time I learned that doing that is frowned on >> and there is a high expectation that beginners will read through the >> source code and try hard to find answers on their own. I've tried >> hard to do that, but haven't always been successful. >> >> I decided that I wanted to help future beginners find the answers to >> all the questions I had more easily. So I started documenting >> everything I learned about Smalltalk at >> https://mvolkmann.github.io/blog/ (select Smalltalk in the left nav >> to see a long list of subtopics). As you can see, I have spent a >> large amount of time on this. It's nothing compared to those of you >> that have been contributing to Cuis Smalltalk for years, but I think >> it provides a good resource for anyone new to Smalltalk in general >> and Cuis Smalltalk in particular. >> >> I do not have a particular app in mind that I want to build with >> Smalltalk. Instead I'm constantly thinking about how I would convince >> non-Smalltalk developers to give Cuis Smalltalk a try. A perfect >> example of that is my investigation into database access. Many of the >> developers I know are web developers. Accessing relational databases >> is a fundamental part of implementing most web applications. So I >> need to be able to demonstrate how that is done from Cuis Smalltalk >> to have any hope of convincing my web developer friends to try it. As >> far as I know, based on many searches, there is not currently a web >> page that shows step-by-step how to access a relational database >> using Cuis Smalltalk. I want to provide that if I can learn how to do it. >> >> While some in the community may have been annoyed by the number of >> questions I have asked, I do hope there is a feeling that my presence >> in the Cuis community has had a net positive impact. In addition to >> the documentation I've created in my blog I have identified a number >> of minor issues that have been fixed, contributed a small change set >> that added the ability to set a background image in cover and tile >> modes, and most recently contributed a library for implementing web >> servers that has many advantages over the WebClient library >> (https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus). >> >> I really want to contribute via the documentation I'm creating and >> hope that at some point all of that content can be the basis for a >> book focused on Cuis Smalltalk. >> >> P.S. I honestly didn't know that the >> Cuis-Smalltalk-Dev/Documentation/Technical directory existed. Thanks >> for pointing that out. I'll read that now. >> >> On Sun, Oct 20, 2024 at 5:48?PM Juan Vuletich > > wrote: >> >> Hi Mark, >> >> What follows may be an intricate reading involving language, >> manners, and how the Open Source world works. Please read carefully. >> >> On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: >>> I should have asked ?Is it possible that nobody that uses Cuis >>> Smalltalk in macOS accesses relational databases?? >> >> Who knows? Cuis Smalltalk is MIT license you get the whole >> system, free for any use, without any obligations. That means >> that you are not required to disclose what you do with it. As a >> consequence of that, the answer to "it is possible that nobody >> that uses Cuis Smalltalk does XXX?" is true, for any XXX. Does >> this matter? I don't think so. >> >> A much better way to react would be something like "Hi Folks. I'm >> trying to do XXX. I know the system is fully open and explicitly >> designed to make it easy for me to solve my technical problems, >> but I'm still unable to do so. Has anybody faced these kinds of >> problems I'm seeing before, and is willing to help me?". >> >> That will indeed work much better. >> >> Additionally, some comment from you revealing that you have >> already read the contents of the /Documentation/Technical folder >> would be appreciated. Your first message made me believe you >> hadn't realized you had trouble calling an API via FFI. But Jon's >> answer doesn't tell you that, and assumes you already know that. >> Your following message makes me now believe that you know that >> the problem may be "how to reference a lib path in the Open >> Smalltalk VM", indeed being aware that this is a problem with FFI. >> >> Once you realize that, you may also realize that this problem has >> almost nothing to do with Cuis Smalltalk. A bit of googling shows >> people asking similar (but better formed) questions in nginx and >> lua. >> >> I'm starting to have doubts about your intellectual honesty while >> asking these questions. I think the Cuis community deserves >> better than this. >> >> >> Thanks, >> >>> >>> --- >>> R. Mark Volkmann >>> Object Computing, Inc. >>> >>>> On Oct 20, 2024, at 6:26?AM, Mark Volkmann >>>> >>>> wrote: >>>> >>>> ? Yikes! Sounds complicated. Can you point me to any >>>> documentation that describes how I could reference a lib path >>>> in the Open Smalltalk VM? >>>> >>>> Is it possible that nobody that uses Cuis Smalltalk accesses >>>> relational databases? >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From mail at jaromir.net Mon Oct 21 14:14:11 2024 From: mail at jaromir.net (Jaromir Matas) Date: Mon, 21 Oct 2024 21:14:11 +0000 Subject: [Cuis-dev] About learning Smalltalk. About documentation and &A. Re: ODBC error In-Reply-To: <6716A1DA.1050407@cuis.st> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <6716A1DA.1050407@cuis.st> Message-ID: Hi Juan, > I had always learned by myself, reading books and experimenting with the computer. This approach failed completely with C++. I read 3 or four books, cover to cover. I did a lot of experiments, and could not see the value. Thanks very much for sharing this experience, Juan! I loved everything about computers and programming in the '80s but then I learned Pascal at school (no objects, just plain imperative) and was disappointed. Fast forward 30 years, I decided to learn OOP on my own and failed miserably (unfortunately tried Python... bad choice indeed). But then googled "best OOP language" and discovered Smalltalk at last :) > I don't know how it is to discover Smalltalk without a great teacher! Painful :D > I think it would be best to take a Smalltalk course with great teachers. Absolutely, if you're lucky to be near some. None here in Prague but I hear Smalltalk is taught in Potsdam (Berlin) where Squeak has a great support in case you're in Germany. > What is next best to that? I think that Dan Ingalls' "Design Principles Behind Smalltalk" is the best presentation of the ideas. Looking back, I should have taken a good OOP course at the university and then tackle Smalltalk, not the other way round :) Speaking of "ideas" in the code - I meant not only the "big" ones but also the small ones present in every non-trivial method. Understanding those is paramount when attempting to modify (fix or enhance, or just simplify) someone else's code without degrading it. These should get commented more thoroughly. > In Smalltalk, all the libraries are "white box". You are encouraged to see what they do. Time spent learning how to inspect and query the system is the best investment you can do in Smalltalk. > [...] if you succeed in finding the answer before asking, your benefit is much bigger. I agree absolutely; besides, studying the system is a joy BUT the time investment for a **beginner** (without a teacher) is just overwhelming (unfamiliar syntax and IDE, lack of "usual" mainstream knowledge sources - SO, documentation, etc.). This may be a deciding factor before one commits to Smalltalk rather than Python ;) > Hey Jaromir, you are in a better position than almost anyone (me included!) to write about the areas where you digged really deep and made great contributions. I know your code is clear, and with great comments. Still, if you ever feel like writing some .md documents on the stuff you know better than most, it would be a very welcome contribution! Thanks Juan, writing some sort of partial documentation is still on my mind. I'd like to figure out how to incorporate such an information directly into the image though. It's not a method comment, not even a class comment, let alone a "book" but my idea is such info should be as close to the code as possible and ideally accessible from the code (whether a hyperlink or a button or something else I don't know yet). Recently I've kind of stepped aside and took courses in Python, Haskell, Javascript and Rust to get the bigger picture but very much look forward to getting back to Smalltalk soon. Best regards and many thanks, Jaromir On 21-Oct-24 8:47:54 PM, "Juan Vuletich" wrote: >Hi Jaromir, Mark, all, > >Comments inline. Please read in detail. I think this is important. > >On 10/21/2024 12:25 PM, Jaromir Matas via Cuis-dev wrote: > >>Hi Mark, all, >> >>I myself discovered Smalltalk as late as 2020 and found that, at least >>in my case, learning Smalltalk was pretty difficult despite the >>simplicity, consistency and overall beauty of the language. And I too >>love it :) (in my case it's both Squeak and Cuis) >> > >I discovered Smalltalk in 1995. By that time, I had been programming >for 10 years. After the obvious (at that time) start with Basic, I >quickly moved to 6809 Assembly and did pretty advanced real time music >stuff. Then, I moved to C, as a kind of "portable Assembly". When C++ >seemed to take over the world, I assumed it was the obvious next step. >Up to this moment, I had always learned by myself, reading books and >experimenting with the computer. > >This approach failed completely with C++. I read 3 or four books, cover >to cover. I did a lot of experiments, and could not see the value. >Never understood the "TurboVision" library. I did value what is called >C+, that is statically determined "polymorphism" based on parameter >types. > >Then, I was lucky. I was around 3rd year in my CS studies at >UniBuenosAires. An elective course called "Object Oriented >Programming" was offered. I knew that was what I'd failed to grasp with >C++, so I signed up for it. The teacher, M?ximo Prieto changed my life >forever, as he changed the life of may of us then. He introduced us to >Smalltalk, and the whole idea of dealing with complexity. He also >started the thriving Smalltalk community in Buenos Aires. Today >Smalltalk is taught at several universities here, there are several >companies using it for real product development. Buenos Aires is the >main source of Smalltalk talent for almost all the Smalltalk systems >currently in active development, not just Cuis. > >So, I don't know how it is to discover Smalltalk without a great >teacher! > >> > Early in my learning I had a lot of beginner questions for which I >>failed to easily find answers. [...] and there is a high expectation >>that beginners will read through the source code and try hard to find >>answers on their own. >> >>I so much share your frustration! In my experience no amount of >>reading the code can replace guidelines from experienced users >>enlightening the **intentions** behind the code as some parts of the >>code are just implementation details and trade-offs while some other >>parts are the "good stuff", bear the ideas. But which is which?! This >>is where I struggle the most, to be able to extract the ideas and >>filter out the "noise", and where I consider expert advice >>irreplaceable. And this is one of the things I'd love to find in >>comments. > >I think it would be best to take a Smalltalk course with great >teachers. I know, I know, that is even harder to find than good >developers for your Smalltalk project (unless you look at Buenos >Aires!). > >What is next best to that? I think that Dan Ingalls' "Design Principles >Behind Smalltalk" is the best presentation of the ideas. I can't stress >how important it is to read it and really try to understand it. There >are many other good introductory books on Smalltalk, all freely >available on the web. Adele Goldberg's "Smalltalk-80, the language and >its implementation" is great. There are several others, including our >own "The Cuis Book" by our friend Hilaire Fernandes. In the >Documentation folder of our mail repo you can also find some good >material, including lots of references for further reading. There are >also many videos online that will help. > >Books, magazine articles and videos include descriptions of the ideas >and intentions behind the code that are generally better than answers >in the mail list, because they were written with great care. Questions >on the mail list are better for filling in details, especially if they >are specific to some dialect (like Cuis) not directly addressed in the >book. For instance, this email is taking an hour to write, and the mail >thread leading to this has had me thinking at least 5 times more. Maybe >I'd turn this email into an .md document for the Cuis repo. Then, will >people read it? > >> > So I frequently asked questions on this mailing list. Over time I >>learned that doing that is frowned on [...] While some in the >>community may have been annoyed by the number of questions I have >>asked [...] >> >>I honestly don't believe it's the case! Otherwise I'd be afraid to ask >>next time :) > >Questions are most welcome. In this space we value free speech, and at >the same time we want an open and warm place where everybody can feel >comfortable. > >For any Open Source project, questions are especially valuable if they >point to some aspect not covered in enough clarity and detail in the >documentation. Good questions help us refine documentation, or fix >annoyances in the system. You know, we old timers don't read the >documentation we wrote very often, and we tend to get used to >annoyances in the system to the point where we don't see them any more. >Good questions, complaints and bug reports are extremely helpful! > >Still, questions that can be addressed by reading the documentation, or >a quick query to the system can sometimes feel annoying, at least to >me. I can carefully write some explanation, investing several hours, >and making that part of the documentation. Or I can write 10 times >about the same issue, when someone asks, each time improvising a low >quality ten minutes email. The first option results in higher quality >material, that can benefit many people over the course of years. The >second option gives a low quality answer to just one person, that will >most likely not be read again. > >So, if you read the documentation first, and then point to flaws or >missing parts, you are really helping us make a better system. I can't >stress this enough. I really, really, really, very much, prefer this! > >> > I really want to contribute via the documentation I'm creating and >>hope that at some point all of that content can be the basis for a >>book focused on Cuis Smalltalk. >> >>I wish you succeeded in this endeavor :) Again, my beginnings with >>Smalltalk were painful due to the lack of documentation and an >>availability of a vast knowledge base of the Stack Overflow type where >>you can sooner or later find a question similar to the one you're >>struggling with. I'm learning Rust at the moment and at least most of >>my beginner questions and confusion have been covered by the >>documentation so far. But I very much realize how much work it is to >>provide such a documentation and that it's only possible thanks to the >>size of the community; the amount of work to create (and maintain!) >>such a documentation is, I believe, about the same regardless of the >>language hence it's so much more difficult for small communities like >>Squeak/Cuis's where just a few individuals must carry the burden. > >While this is true, most languages and frameworks are what is called >"black box". You only get the APIs or language constructs to use. If >documentation is unclear or missing, your only resource is to ask >someone for help. As Dan Ingalls says in his "Design Principles Behind >Smalltalk", Smalltalk tries to offer a completely different experience. >In Smalltalk, all the libraries are "white box". You are encouraged to >see what they do. Time spent learning how to inspect and query the >system is the best investment you can do in Smalltalk. > >>Quite recently I've discovered that the github Copilot can be a >>tremendous help in learning a language (accelerates learning the >>syntax, explains features and bugs, auto-fills simple examples and >>even more complicated code snippets - not always correct but even that >>helps!). I wish such a tool was available for Smalltalk as a lot of >>beginner questions could be solved right away. >> >>I wish there were more up-to-date sources like the Cuis book, Squeak >>by example but also introductory books on more advanced stuff like >>Stephane Ducasse's books on concurrent programming in Smalltalk or >>Eliot Miranda's blog on contexts & friends. > >Hey Jaromir, you are in a better position than almost anyone (me >included!) to write about the areas where you digged really deep and >made great contributions. I know your code is clear, and with great >comments. Still, if you ever feel like writing some .md documents on >the stuff you know better than most, it would be a very welcome >contribution! > >>Best of luck, >> >>Jaromir > >Cheers, > >> >>On 21-Oct-24 2:34:10 AM, "Mark Volkmann via Cuis-dev" >> wrote: >> >>>I apologize if the way I worded my question came across as rude. That >>>was certainly not my intent. I think I should explain why I've tried >>>to be a part of the Cuis Smalltalk community for the past eight >>>months or so. >>> >>>I'm pretty new to Smalltalk and it turns out I love it. And so far >>>Cuis Smalltalk is my favorite distribution. >>> >>>Early in my learning I had a lot of beginner questions for which I >>>failed to easily find answers. So I frequently asked questions on >>>this mailing list. Over time I learned that doing that is frowned on >>>and there is a high expectation that beginners will read through the >>>source code and try hard to find answers on their own. I've tried >>>hard to do that, but haven't always been successful. >>> >>>I decided that I wanted to help future beginners find the answers to >>>all the questions I had more easily. So I started documenting >>>everything I learned about Smalltalk at >>>https://mvolkmann.github.io/blog/ (select Smalltalk in the left nav >>>to see a long list of subtopics). As you can see, I have spent a >>>large amount of time on this. It's nothing compared to those of you >>>that have been contributing to Cuis Smalltalk for years, but I think >>>it provides a good resource for anyone new to Smalltalk in general >>>and Cuis Smalltalk in particular. >>> >>>I do not have a particular app in mind that I want to build with >>>Smalltalk. Instead I'm constantly thinking about how I would convince >>>non-Smalltalk developers to give Cuis Smalltalk a try. A perfect >>>example of that is my investigation into database access. Many of the >>>developers I know are web developers. Accessing relational databases >>>is a fundamental part of implementing most web applications. So I >>>need to be able to demonstrate how that is done from Cuis Smalltalk >>>to have any hope of convincing my web developer friends to try it. As >>>far as I know, based on many searches, there is not currently a web >>>page that shows step-by-step how to access a relational database >>>using Cuis Smalltalk. I want to provide that if I can learn how to do >>>it. >>> >>>While some in the community may have been annoyed by the number of >>>questions I have asked, I do hope there is a feeling that my presence >>>in the Cuis community has had a net positive impact. In addition to >>>the documentation I've created in my blog I have identified a number >>>of minor issues that have been fixed, contributed a small change set >>>that added the ability to set a background image in cover and tile >>>modes, and most recently contributed a library for implementing web >>>servers that has many advantages over the WebClient library ( >>>https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus). >>> >>>I really want to contribute via the documentation I'm creating and >>>hope that at some point all of that content can be the basis for a >>>book focused on Cuis Smalltalk. >>> >>>P.S. I honestly didn't know that the >>>Cuis-Smalltalk-Dev/Documentation/Technical directory existed. Thanks >>>for pointing that out. I'll read that now. >>> >>>On Sun, Oct 20, 2024 at 5:48?PM Juan Vuletich < juan at cuis.st> wrote: >>>>Hi Mark, >>>> >>>>What follows may be an intricate reading involving language, >>>>manners, and how the Open Source world works. Please read carefully. >>>> >>>>On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: >>>>>I should have asked ?Is it possible that nobody that uses Cuis >>>>>Smalltalk in macOS accesses relational databases?? >>>> >>>>Who knows? Cuis Smalltalk is MIT license you get the whole system, >>>>free for any use, without any obligations. That means that you are >>>>not required to disclose what you do with it. As a consequence of >>>>that, the answer to "it is possible that nobody that uses Cuis >>>>Smalltalk does XXX?" is true, for any XXX. Does this matter? I don't >>>>think so. >>>> >>>>A much better way to react would be something like "Hi Folks. I'm >>>>trying to do XXX. I know the system is fully open and explicitly >>>>designed to make it easy for me to solve my technical problems, but >>>>I'm still unable to do so. Has anybody faced these kinds of problems >>>>I'm seeing before, and is willing to help me?". >>>> >>>>That will indeed work much better. >>>> >>>>Additionally, some comment from you revealing that you have already >>>>read the contents of the /Documentation/Technical folder would be >>>>appreciated. Your first message made me believe you hadn't realized >>>>you had trouble calling an API via FFI. But Jon's answer doesn't >>>>tell you that, and assumes you already know that. Your following >>>>message makes me now believe that you know that the problem may be >>>>"how to reference a lib path in the Open Smalltalk VM", indeed being >>>>aware that this is a problem with FFI. >>>> >>>>Once you realize that, you may also realize that this problem has >>>>almost nothing to do with Cuis Smalltalk. A bit of googling shows >>>>people asking similar (but better formed) questions in nginx and >>>>lua. >>>> >>>>I'm starting to have doubts about your intellectual honesty while >>>>asking these questions. I think the Cuis community deserves better >>>>than this. >>>> >>>>Thanks, >>>> >>>>> >>>>>--- >>>>>R. Mark Volkmann >>>>>Object Computing, Inc. >>>>> >>>>>>On Oct 20, 2024, at 6:26?AM, Mark Volkmann >>>>>> >>>>>>wrote: >>>>>> >>>>>>? Yikes! Sounds complicated. Can you point me to any documentation >>>>>>that describes how I could reference a lib path in the Open >>>>>>Smalltalk VM? >>>>>> >>>>>>Is it possible that nobody that uses Cuis Smalltalk accesses >>>>>>relational databases? >>>-- >>>R. Mark Volkmann >>>Object Computing, Inc. > > >-- >Juan Vuletich >cuis.st >github.com/jvuletich >researchgate.net/profile/Juan-Vuletich >independent.academia.edu/JuanVuletich >patents.justia.com/inventor/juan-manuel-vuletich >linkedin.com/in/juan-vuletich-75611b3 >twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianomontone at gmail.com Mon Oct 21 15:50:30 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Mon, 21 Oct 2024 19:50:30 -0300 Subject: [Cuis-dev] ODBC error In-Reply-To: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> Message-ID: <2da70423-cd77-4e2e-b8dc-d76a4631e5c0@gmail.com> El 20/10/24 a las 08:31, Mark Volkmann via Cuis-dev escribi?: > I should have asked ?Is it possible that nobody that uses Cuis > Smalltalk in macOS accesses relational databases?? I think that's possible. I don't think there's good support for relational databases, or a fully featured web framework. I think the differences between Smalltalk dialects plus the small size of Cuis community is a problem here. Would be great if frameworks could be ported from Squeak easily. Then you could port Seaside and database driver packages. But that's not always the case, it can be either hard, or take considerable effort. Not blaming anybody, that's how things are. ???? Mariano From cuis.01 at klix.ch Tue Oct 22 03:07:32 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Tue, 22 Oct 2024 12:07:32 +0200 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? Message-ID: Hi all, Hi Juan, Is there interest in making the expansion of LaTex symbols like "\euro" optional? I just started to write a LaTex based report generator and found e.g. the automatic expansion "\euro" a pain in my bottom. The report should contain the LaTex command "\euro" and not "?". Best Regards, Gerald From luchiano at gmail.com Tue Oct 22 03:34:57 2024 From: luchiano at gmail.com (Luciano Notarfrancesco) Date: Tue, 22 Oct 2024 17:34:57 +0700 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? In-Reply-To: References: Message-ID: I don?t know what others think, but IMO we could make it a preference, or we could make Character class>>namedCharactersMap empty in the base image and have an optional package to load all the default table, or let individual packages add the symbols that they need (in my packages I add extra symbols sometimes, specially when they are not latex standard names). Gerald, you need to edit latex in a text editor inside Cuis? This is implemented only in SmalltalkEditor, so you could use a normal TextEditor instead? or you need to write latex in Smalltalk code? On Tue, Oct 22, 2024 at 17:07 Gerald Klix via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > Hi all, Hi Juan, > > Is there interest in making the expansion of LaTex symbols like > "\euro" optional? > > I just started to write a LaTex based report generator > and found e.g. the automatic expansion "\euro" a pain in > my bottom. The report should contain the LaTex command > "\euro" and not "?". > > > Best Regards, > > Gerald > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -------------- next part -------------- An HTML attachment was scrubbed... URL: From luchiano at gmail.com Tue Oct 22 03:42:37 2024 From: luchiano at gmail.com (Luciano Notarfrancesco) Date: Tue, 22 Oct 2024 17:42:37 +0700 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? In-Reply-To: References: Message-ID: Also, if I had to write \euro in a SmalltalkEditor I?d write euro first, then go back and add the \. And, in the mean time, if this is bothering you a lot you can set NamedCharactersMap to Dictionary new. On Tue, Oct 22, 2024 at 17:34 Luciano Notarfrancesco wrote: > I don?t know what others think, but IMO we could make it a preference, or > we could make Character class>>namedCharactersMap empty in the base image > and have an optional package to load all the default table, or let > individual packages add the symbols that they need (in my packages I add > extra symbols sometimes, specially when they are not latex standard names). > > Gerald, you need to edit latex in a text editor inside Cuis? This is > implemented only in SmalltalkEditor, so you could use a normal TextEditor > instead? or you need to write latex in Smalltalk code? > > On Tue, Oct 22, 2024 at 17:07 Gerald Klix via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > >> Hi all, Hi Juan, >> >> Is there interest in making the expansion of LaTex symbols like >> "\euro" optional? >> >> I just started to write a LaTex based report generator >> and found e.g. the automatic expansion "\euro" a pain in >> my bottom. The report should contain the LaTex command >> "\euro" and not "?". >> >> >> Best Regards, >> >> Gerald >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Tue Oct 22 04:55:30 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Tue, 22 Oct 2024 13:55:30 +0200 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? In-Reply-To: References: Message-ID: <4bd6759d-fc81-f58b-714a-47b9b5d6508b@klix.ch> On 10/22/24 12:34 PM, Luciano Notarfrancesco via Cuis-dev wrote: > I don?t know what others think, but IMO we could make it a preference, or > we could make Character class>>namedCharactersMap empty in the base image > and have an optional package to load all the default table, or let > individual packages add the symbols that they need (in my packages I add > extra symbols sometimes, specially when they are not latex standard names). > > Gerald, you need to edit latex in a text editor inside Cuis? This is > implemented only in SmalltalkEditor, so you could use a normal TextEditor > instead? or you need to write latex in Smalltalk code? > > On Tue, Oct 22, 2024 at 17:07 Gerald Klix via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > >> Hi all, Hi Juan, >> >> Is there interest in making the expansion of LaTex symbols like >> "\euro" optional? >> >> I just started to write a LaTex based report generator >> and found e.g. the automatic expansion "\euro" a pain in >> my bottom. The report should contain the LaTex command >> "\euro" and not "?". >> >> >> Best Regards, >> >> Gerald >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > Luciano, thanks for your fast response. I do not edit Latex code in a workspace, I write methods that write latex into a file(stream). Entering a code like this is, well, a bit complicated generateTextForTransaction: aTransaction ??? "Generate the text for aTransaction." ??? self latexStream ??? ??? newLine; ??? ??? nextPutAll: '\begin{tabular}{ll}'; ??? ??? newLine; ??? ??? nextPutAll: 'Datum:&'. ??? aTransaction entryDate printGermanOn: self latexStream. ??? self latexStream ??? ??? nextPutAll: '\\'; ??? ??? newLine; ??? ??? nextPutAll: 'Betrag:&'. ??? aTransaction amount abs printGermanOn: self latexStream fractionDigits: 2. ??? self latexStream ??? ??? nextPutAll: '\euro\\'; ??? ??? newLine; ??? ??? nextPutAll: 'Text:&'; ??? ??? nextPutAll: (aTransaction text asString replaceAll: $_ with: `Character space`); ??? ??? newLine; ??? ??? nextPutAll: '\end{tabular}' My first thought was that a preference might be useful, but on second thought a menu option in the Smalltalk editor and an additional preference is more useful. The best solution are two packages, one that adds a registry for text substitutions to various editor classes and another one that adds the Latex stuff. Considering that, we two guys, seem to be the only users of this features, this solution might be overkill. Currently I only had to fiddle with the Euro-Sign, maybe I can get away with this. Again thanks a lot, Gerald -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Tue Oct 22 05:13:24 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Tue, 22 Oct 2024 14:13:24 +0200 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? In-Reply-To: References: Message-ID: On 10/22/24 12:42 PM, Luciano Notarfrancesco via Cuis-dev wrote: > Also, if I had to write \euro in a SmalltalkEditor I?d write euro first, > then go back and add the \. And, in the mean time, if this is bothering you > a lot you can set NamedCharactersMap to Dictionary new. > > On Tue, Oct 22, 2024 at 17:34 Luciano Notarfrancesco > wrote: > >> I don?t know what others think, but IMO we could make it a preference, or >> we could make Character class>>namedCharactersMap empty in the base image >> and have an optional package to load all the default table, or let >> individual packages add the symbols that they need (in my packages I add >> extra symbols sometimes, specially when they are not latex standard names). >> >> Gerald, you need to edit latex in a text editor inside Cuis? This is >> implemented only in SmalltalkEditor, so you could use a normal TextEditor >> instead? or you need to write latex in Smalltalk code? >> >> On Tue, Oct 22, 2024 at 17:07 Gerald Klix via Cuis-dev < >> cuis-dev at lists.cuis.st> wrote: >> >>> Hi all, Hi Juan, >>> >>> Is there interest in making the expansion of LaTex symbols like >>> "\euro" optional? >>> >>> I just started to write a LaTex based report generator >>> and found e.g. the automatic expansion "\euro" a pain in >>> my bottom. The report should contain the LaTex command >>> "\euro" and not "?". >>> >>> >>> Best Regards, >>> >>> Gerald >>> -- >>> Cuis-dev mailing list >>> Cuis-dev at lists.cuis.st >>> https://lists.cuis.st/mailman/listinfo/cuis-dev >>> > Yes, thanks, I did something similar. Concerning this "?" confusion, the real culprit is Latex's. You can use "?" in your latex input, which is easy for me (I live in Germany and even while a use a US-keyboard layout, I have the Euro-Symbol mapped on AltGr-5). If you use the \euro command thinks look like this: If you use the Unicode symbol it looks like this: (Please disregard the differences in size) I can see that the font designer wants a symbol fitting into his/her font, but the EU has a very stern view on how a Euro-Sign should look. See: Taken form https://european-union.europa.eu/institutions-law-budget/euro/design_en Just my Fr. 0.00, Gerald -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: lgdplicmeeapmaeo.png Type: image/png Size: 3506 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: bcfmghdoefihpicd.png Type: image/png Size: 5114 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: euro_image_with_constructions_0.jpg Type: image/jpeg Size: 176628 bytes Desc: not available URL: From juan at cuis.st Tue Oct 22 07:17:42 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 22 Oct 2024 10:17:42 -0400 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? In-Reply-To: <4bd6759d-fc81-f58b-714a-47b9b5d6508b@klix.ch> References: <4bd6759d-fc81-f58b-714a-47b9b5d6508b@klix.ch> Message-ID: <6717B406.40703@cuis.st> Hi Folks, I just added a new preference. See update #6788. I don't think the extra complexity in Editor is worth until we see the need to have some editors doing the replacement and others not doing it, at the same time, and by several users... We'll see. In #normalCharacter: there are a couple of comments with expressions to enable / disable it, and also to make it persistant in UserPrefs.txt. I hope this helps. Thanks, On 10/22/2024 7:55 AM, Gerald Klix via Cuis-dev wrote: > > > On 10/22/24 12:34 PM, Luciano Notarfrancesco via Cuis-dev wrote: >> I don?t know what others think, but IMO we could make it a preference, or >> we could make Character class>>namedCharactersMap empty in the base image >> and have an optional package to load all the default table, or let >> individual packages add the symbols that they need (in my packages I add >> extra symbols sometimes, specially when they are not latex standard names). >> >> Gerald, you need to edit latex in a text editor inside Cuis? This is >> implemented only in SmalltalkEditor, so you could use a normal TextEditor >> instead? or you need to write latex in Smalltalk code? >> >> On Tue, Oct 22, 2024 at 17:07 Gerald Klix via Cuis-dev< >> cuis-dev at lists.cuis.st> wrote: >> >>> Hi all, Hi Juan, >>> >>> Is there interest in making the expansion of LaTex symbols like >>> "\euro" optional? >>> >>> I just started to write a LaTex based report generator >>> and found e.g. the automatic expansion "\euro" a pain in >>> my bottom. The report should contain the LaTex command >>> "\euro" and not "?". >>> >>> >>> Best Regards, >>> >>> Gerald >>> -- >>> Cuis-dev mailing list >>> Cuis-dev at lists.cuis.st >>> https://lists.cuis.st/mailman/listinfo/cuis-dev >>> >> > Luciano, thanks for your fast response. > > I do not edit Latex code in a workspace, I write > methods that write latex into a file(stream). > > Entering a code like this is, well, a bit complicated > > generateTextForTransaction: aTransaction > "Generate the text for aTransaction." > > self latexStream > newLine; > nextPutAll: '\begin{tabular}{ll}'; > newLine; > nextPutAll: 'Datum:&'. > aTransaction entryDate printGermanOn: self latexStream. > self latexStream > nextPutAll: '\\'; > newLine; > nextPutAll: 'Betrag:&'. > aTransaction amount abs printGermanOn: self latexStream > fractionDigits: 2. > self latexStream > nextPutAll: '\euro\\'; > newLine; > nextPutAll: 'Text:&'; > nextPutAll: (aTransaction text asString replaceAll: $_ with: > `Character space`); > newLine; > nextPutAll: '\end{tabular}' > > My first thought was that a preference might be useful, > but on second thought a menu option in the Smalltalk editor > and an additional preference is more useful. > > The best solution are two packages, > one that adds a registry for text substitutions to > various editor classes and another one that adds > the Latex stuff. > > Considering that, we two guys, seem to be the only users of this > features, this solution might be overkill. > Currently I only had to fiddle with the Euro-Sign, > maybe I can get away with this. > > > Again thanks a lot, > > Gerald -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Tue Oct 22 07:23:37 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 22 Oct 2024 10:23:37 -0400 Subject: [Cuis-dev] [RFC] Make \ expansion switchable? In-Reply-To: References: Message-ID: <6717B569.8080404@cuis.st> If I understand this correctly, you are either using two different fonts or two different code points in that example. Can you confirm? What is the UTF-8 for each one of them? What is the font? I'd like to reproduce and understand this, to know if there is something in Cuis that needs fixing. I'm asking for the actual UTF-8 in the UnicodeString instance, and not the keystrokes to produce them. Only after getting String representation and text rendering correct I can focus on keyboard input. Thanks, On 10/22/2024 8:13 AM, Gerald Klix via Cuis-dev wrote: > > Concerning this "?" confusion, the real culprit is Latex's. > You can use "?" in your latex input, which is easy for me > (I live in Germany and even while a use a US-keyboard layout, I > have the Euro-Symbol mapped on AltGr-5). > > If you use the \euro command thinks look like this: > > If you use the Unicode symbol it looks like this: > > (Please disregard the differences in size) > I can see that the font designer wants a symbol > fitting into his/her font, but the EU has a very stern > view on how a Euro-Sign should look. > > See: ... > > > Taken form > https://european-union.europa.eu/institutions-law-budget/euro/design_en > > Just my Fr. 0.00, > > Gerald -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/png Size: 3506 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/png Size: 5114 bytes Desc: not available URL: From cuis.01 at klix.ch Tue Oct 22 07:46:47 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Tue, 22 Oct 2024 16:46:47 +0200 Subject: [Cuis-dev] [OffTopic] Re: [RFC] Make \ expansion switchable? In-Reply-To: <6717B569.8080404@cuis.st> References: <6717B569.8080404@cuis.st> Message-ID: <09fa3d90-8e36-1c8f-4a23-fc1da110937b@klix.ch> On 10/22/24 4:23 PM, Juan Vuletich wrote: > If I understand this correctly, you are either using two different > fonts or two different code points in that example. Can you confirm? > What is the UTF-8 for each one of them? What is the font? > > I'd like to reproduce and understand this, to know if there is > something in Cuis that needs fixing. > > I'm asking for the actual UTF-8 in the UnicodeString instance, and not > the keystrokes to produce them. Only after getting String > representation and text rendering correct I can focus on keyboard input. > > Thanks, > > On 10/22/2024 8:13 AM, Gerald Klix via Cuis-dev wrote: > >> >> Concerning this "?" confusion, the real culprit is Latex's. >> You can use "?" in your latex input, which is easy for me >> (I live in Germany and even while a use a US-keyboard layout, I >> have the Euro-Symbol mapped on AltGr-5). >> >> If you use the \euro command thinks look like this: >> >> If you use the Unicode symbol it looks like this: >> >> (Please disregard the differences in size) >> I can see that the font designer wants a symbol >> fitting into his/her font, but the EU has a very stern >> view on how a Euro-Sign should look. >> >> See: > ... >> >> >> Taken form >> https://european-union.europa.eu/institutions-law-budget/euro/design_en >> >> Just my Fr. 0.00, >> >> Gerald > > Juan, nothing is wrong with Cuis. I apologize: This post was at least a bit off-topic. This post refers to LaTex only. The examples are taken from a simple piece of LaTex code, written with Emacs. I don't know what this \euro command does ? and admittedly I have no stomach to find out. I only look at the results. The tex-file looks like this: \documentclass{scrartcl} \usepackage{graphicx} \usepackage{eurosym} \renewcommand{\figurename}{Beleg} \begin{document} \begin{figure}[htb] ? \caption{KA0482} ? \begin{tabular}{ll} ??? Datum:&00.00.0000\\ ??? Betrag:&0,00\euro\\ ??? Betrag:&500,00?\\ ??? Buchungstext:&Orem lipsum und der ganze Shiet.\\ ? \end{tabular} \end{figure} \end{document} I also attached the resulting PDF-file. In a nutshell everything, especially Cuis replacement of \euro with ?, would be fine, if LaTex would adhere to (European) standards. Again sorry for bothering you and Best Regards, Gerald -------------- next part -------------- A non-text attachment was scrubbed... Name: simple.pdf Type: application/pdf Size: 26693 bytes Desc: not available URL: From 0800nacho at gmail.com Tue Oct 22 07:47:04 2024 From: 0800nacho at gmail.com (Ignacio Sniechowski) Date: Tue, 22 Oct 2024 11:47:04 -0300 Subject: [Cuis-dev] About learning Smalltalk. About documentation and &A. Re: ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <6716A1DA.1050407@cuis.st> Message-ID: Hi to all! This is a very interesting conversation. I feel totally identified with the difficulties posed by learning Smalltalk without a teacher / tutor. It's really hard despite the joy and fun that Smalltalk is. Regarding documentation Jaromir, I too, considered the same issues you mentioned. I found Erudite to be a very good choice. The ability to mix code with text and form "books" is ideal to document progress. It's the closest thing I found to "Literate Programming with Smalltalk" in Cuis. Best Nacho On Mon, Oct 21, 2024 at 6:22?PM Jaromir Matas via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > Hi Juan, > > > I had always learned by myself, reading books and experimenting with the > computer. This approach failed completely with C++. I read 3 or four books, > cover to cover. I did a lot of experiments, and could not see the value. > > Thanks very much for sharing this experience, Juan! I loved everything > about computers and programming in the '80s but then I learned Pascal at > school (no objects, just plain imperative) and was disappointed. Fast > forward 30 years, I decided to learn OOP on my own and failed miserably > (unfortunately tried Python... bad choice indeed). But then googled "best > OOP language" and discovered Smalltalk at last :) > > > I don't know how it is to discover Smalltalk without a great teacher! > > Painful :D > > > I think it would be best to take a Smalltalk course with great teachers. > > Absolutely, if you're lucky to be near some. None here in Prague but I > hear Smalltalk is taught in Potsdam (Berlin) where Squeak has a great > support in case you're in Germany. > > > What is next best to that? I think that Dan Ingalls' "Design Principles > Behind Smalltalk" is the best presentation of the ideas. > > Looking back, I should have taken a good OOP course at the university and > then tackle Smalltalk, not the other way round :) > > Speaking of "ideas" in the code - I meant not only the "big" ones but also > the small ones present in every non-trivial method. Understanding those is > paramount when attempting to modify (fix or enhance, or just simplify) > someone else's code without degrading it. These should get commented more > thoroughly. > > > In Smalltalk, all the libraries are "white box". You are encouraged to > see what they do. Time spent learning how to inspect and query the system > is the best investment you can do in Smalltalk. > > > [...] if you succeed in finding the answer before asking, your benefit > is much bigger. > > I agree absolutely; besides, studying the system is a joy BUT the time > investment for a **beginner** (without a teacher) is just overwhelming > (unfamiliar syntax and IDE, lack of "usual" mainstream knowledge sources - > SO, documentation, etc.). This may be a deciding factor before one commits > to Smalltalk rather than Python ;) > > > Hey Jaromir, you are in a better position than almost anyone (me > included!) to write about the areas where you digged really deep and made > great contributions. I know your code is clear, and with great comments. > Still, if you ever feel like writing some .md documents on the stuff you > know better than most, it would be a very welcome contribution! > > Thanks Juan, writing some sort of partial documentation is still on my > mind. I'd like to figure out how to incorporate such an information > directly into the image though. It's not a method comment, not even a class > comment, let alone a "book" but my idea is such info should be as close to > the code as possible and ideally accessible from the code (whether a > hyperlink or a button or something else I don't know yet). Recently I've > kind of stepped aside and took courses in Python, Haskell, Javascript and > Rust to get the bigger picture but very much look forward to getting back > to Smalltalk soon. > > Best regards and many thanks, > > Jaromir > > > > On 21-Oct-24 8:47:54 PM, "Juan Vuletich" wrote: > > Hi Jaromir, Mark, all, > > Comments inline. Please read in detail. I think this is important. > > On 10/21/2024 12:25 PM, Jaromir Matas via Cuis-dev wrote: > > Hi Mark, all, > > I myself discovered Smalltalk as late as 2020 and found that, at least in > my case, learning Smalltalk was pretty difficult despite the simplicity, > consistency and overall beauty of the language. And I too love it :) (in my > case it's both Squeak and Cuis) > > > I discovered Smalltalk in 1995. By that time, I had been programming for > 10 years. After the obvious (at that time) start with Basic, I quickly > moved to 6809 Assembly and did pretty advanced real time music stuff. Then, > I moved to C, as a kind of "portable Assembly". When C++ seemed to take > over the world, I assumed it was the obvious next step. Up to this moment, > I had always learned by myself, reading books and experimenting with the > computer. > > This approach failed completely with C++. I read 3 or four books, cover to > cover. I did a lot of experiments, and could not see the value. Never > understood the "TurboVision" library. I did value what is called C+, that > is statically determined "polymorphism" based on parameter types. > > Then, I was lucky. I was around 3rd year in my CS studies at > UniBuenosAires. An elective course called "Object Oriented Programming" > was offered. I knew that was what I'd failed to grasp with C++, so I signed > up for it. The teacher, M?ximo Prieto changed my life forever, as he > changed the life of may of us then. He introduced us to Smalltalk, and the > whole idea of dealing with complexity. He also started the thriving > Smalltalk community in Buenos Aires. Today Smalltalk is taught at several > universities here, there are several companies using it for real product > development. Buenos Aires is the main source of Smalltalk talent for almost > all the Smalltalk systems currently in active development, not just Cuis. > > So, I don't know how it is to discover Smalltalk without a great teacher! > > > Early in my learning I had a lot of beginner questions for which I > failed to easily find answers. [...] and there is a high expectation that > beginners will read through the source code and try hard to find answers on > their own. > > I so much share your frustration! In my experience no amount of reading > the code can replace guidelines from experienced users enlightening the > **intentions** behind the code as some parts of the code are just > implementation details and trade-offs while some other parts are the "good > stuff", bear the ideas. But which is which?! This is where I struggle the > most, to be able to extract the ideas and filter out the "noise", and where > I consider expert advice irreplaceable. And this is one of the things I'd > love to find in comments. > > > I think it would be best to take a Smalltalk course with great teachers. I > know, I know, that is even harder to find than good developers for your > Smalltalk project (unless you look at Buenos Aires!). > > What is next best to that? I think that Dan Ingalls' "Design Principles > Behind Smalltalk" is the best presentation of the ideas. I can't stress how > important it is to read it and really try to understand it. There are many > other good introductory books on Smalltalk, all freely available on the > web. Adele Goldberg's "Smalltalk-80, the language and its implementation" > is great. There are several others, including our own "The Cuis Book" by > our friend Hilaire Fernandes. In the Documentation folder of our mail repo > you can also find some good material, including lots of references for > further reading. There are also many videos online that will help. > > Books, magazine articles and videos include descriptions of the ideas and > intentions behind the code that are generally better than answers in the > mail list, because they were written with great care. Questions on the mail > list are better for filling in details, especially if they are specific to > some dialect (like Cuis) not directly addressed in the book. For instance, > this email is taking an hour to write, and the mail thread leading to this > has had me thinking at least 5 times more. Maybe I'd turn this email into > an .md document for the Cuis repo. Then, will people read it? > > > So I frequently asked questions on this mailing list. Over time I > learned that doing that is frowned on [...] While some in the community may > have been annoyed by the number of questions I have asked [...] > > I honestly don't believe it's the case! Otherwise I'd be afraid to ask > next time :) > > > Questions are most welcome. In this space we value free speech, and at the > same time we want an open and warm place where everybody can feel > comfortable. > > For any Open Source project, questions are especially valuable if they > point to some aspect not covered in enough clarity and detail in the > documentation. Good questions help us refine documentation, or fix > annoyances in the system. You know, we old timers don't read the > documentation we wrote very often, and we tend to get used to annoyances in > the system to the point where we don't see them any more. Good questions, > complaints and bug reports are extremely helpful! > > Still, questions that can be addressed by reading the documentation, or a > quick query to the system can sometimes feel annoying, at least to me. I > can carefully write some explanation, investing several hours, and making > that part of the documentation. Or I can write 10 times about the same > issue, when someone asks, each time improvising a low quality ten minutes > email. The first option results in higher quality material, that can > benefit many people over the course of years. The second option gives a low > quality answer to just one person, that will most likely not be read again. > > So, if you read the documentation first, and then point to flaws or > missing parts, you are really helping us make a better system. I can't > stress this enough. I really, really, really, very much, prefer this! > > > I really want to contribute via the documentation I'm creating and hope > that at some point all of that content can be the basis for a book focused > on Cuis Smalltalk. > > I wish you succeeded in this endeavor :) Again, my beginnings with > Smalltalk were painful due to the lack of documentation and an availability > of a vast knowledge base of the Stack Overflow type where you can sooner or > later find a question similar to the one you're struggling with. I'm > learning Rust at the moment and at least most of my beginner questions and > confusion have been covered by the documentation so far. But I very much > realize how much work it is to provide such a documentation and that it's > only possible thanks to the size of the community; the amount of work to > create (and maintain!) such a documentation is, I believe, about the same > regardless of the language hence it's so much more difficult for small > communities like Squeak/Cuis's where just a few individuals must carry the > burden. > > > While this is true, most languages and frameworks are what is called > "black box". You only get the APIs or language constructs to use. If > documentation is unclear or missing, your only resource is to ask someone > for help. As Dan Ingalls says in his "Design Principles Behind Smalltalk", > Smalltalk tries to offer a completely different experience. In Smalltalk, > all the libraries are "white box". You are encouraged to see what they do. > Time spent learning how to inspect and query the system is the best > investment you can do in Smalltalk. > > Quite recently I've discovered that the github Copilot can be a tremendous > help in learning a language (accelerates learning the syntax, explains > features and bugs, auto-fills simple examples and even more complicated > code snippets - not always correct but even that helps!). I wish such a > tool was available for Smalltalk as a lot of beginner questions could be > solved right away. > > I wish there were more up-to-date sources like the Cuis book, Squeak by > example but also introductory books on more advanced stuff like Stephane > Ducasse's books on concurrent programming in Smalltalk or Eliot Miranda's > blog on contexts & friends. > > > Hey Jaromir, you are in a better position than almost anyone (me > included!) to write about the areas where you digged really deep and made > great contributions. I know your code is clear, and with great comments. > Still, if you ever feel like writing some .md documents on the stuff you > know better than most, it would be a very welcome contribution! > > Best of luck, > > Jaromir > > > Cheers, > > > On 21-Oct-24 2:34:10 AM, "Mark Volkmann via Cuis-dev" < > cuis-dev at lists.cuis.st> wrote: > > I apologize if the way I worded my question came across as rude. That was > certainly not my intent. I think I should explain why I've tried to be a > part of the Cuis Smalltalk community for the past eight months or so. > > I'm pretty new to Smalltalk and it turns out I love it. And so far Cuis > Smalltalk is my favorite distribution. > > Early in my learning I had a lot of beginner questions for which I failed > to easily find answers. So I frequently asked questions on this mailing > list. Over time I learned that doing that is frowned on and there is a high > expectation that beginners will read through the source code and try hard > to find answers on their own. I've tried hard to do that, but haven't > always been successful. > > I decided that I wanted to help future beginners find the answers to all > the questions I had more easily. So I started documenting everything I > learned about Smalltalk at https://mvolkmann.github.io/blog/ (select > Smalltalk in the left nav to see a long list of subtopics). As you can see, > I have spent a large amount of time on this. It's nothing compared to those > of you that have been contributing to Cuis Smalltalk for years, but I think > it provides a good resource for anyone new to Smalltalk in general and Cuis > Smalltalk in particular. > > I do not have a particular app in mind that I want to build with > Smalltalk. Instead I'm constantly thinking about how I would convince > non-Smalltalk developers to give Cuis Smalltalk a try. A perfect example of > that is my investigation into database access. Many of the developers I > know are web developers. Accessing relational databases is a fundamental > part of implementing most web applications. So I need to be able to > demonstrate how that is done from Cuis Smalltalk to have any hope of > convincing my web developer friends to try it. As far as I know, based on > many searches, there is not currently a web page that shows step-by-step > how to access a relational database using Cuis Smalltalk. I want to provide > that if I can learn how to do it. > > While some in the community may have been annoyed by the number of > questions I have asked, I do hope there is a feeling that my presence in > the Cuis community has had a net positive impact. In addition to > the documentation I've created in my blog I have identified a number of > minor issues that have been fixed, contributed a small change set that > added the ability to set a background image in cover and tile modes, and > most recently contributed a library for implementing web servers that has > many advantages over the WebClient library ( > https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus). > > I really want to contribute via the documentation I'm creating and hope > that at some point all of that content can be the basis for a book focused > on Cuis Smalltalk. > > P.S. I honestly didn't know that the > Cuis-Smalltalk-Dev/Documentation/Technical directory existed. Thanks for > pointing that out. I'll read that now. > > On Sun, Oct 20, 2024 at 5:48?PM Juan Vuletich < juan at cuis.st> wrote: > >> Hi Mark, >> >> What follows may be an intricate reading involving language, manners, and >> how the Open Source world works. Please read carefully. >> >> On 10/20/2024 7:31 AM, Mark Volkmann via Cuis-dev wrote: >> >> I should have asked ?Is it possible that nobody that uses Cuis Smalltalk >> in macOS accesses relational databases?? >> >> >> Who knows? Cuis Smalltalk is MIT license you get the whole system, free >> for any use, without any obligations. That means that you are not required >> to disclose what you do with it. As a consequence of that, the answer to >> "it is possible that nobody that uses Cuis Smalltalk does XXX?" is true, >> for any XXX. Does this matter? I don't think so. >> >> A much better way to react would be something like "Hi Folks. I'm trying >> to do XXX. I know the system is fully open and explicitly designed to make >> it easy for me to solve my technical problems, but I'm still unable to do >> so. Has anybody faced these kinds of problems I'm seeing before, and is >> willing to help me?". >> >> That will indeed work much better. >> >> Additionally, some comment from you revealing that you have already read >> the contents of the /Documentation/Technical folder would be appreciated. >> Your first message made me believe you hadn't realized you had trouble >> calling an API via FFI. But Jon's answer doesn't tell you that, and assumes >> you already know that. Your following message makes me now believe that you >> know that the problem may be "how to reference a lib path in the Open >> Smalltalk VM", indeed being aware that this is a problem with FFI. >> >> Once you realize that, you may also realize that this problem has almost >> nothing to do with Cuis Smalltalk. A bit of googling shows people asking >> similar (but better formed) questions in nginx and lua. >> >> I'm starting to have doubts about your intellectual honesty while asking >> these questions. I think the Cuis community deserves better than this. >> > >> Thanks, >> >> >> --- >> R. Mark Volkmann >> Object Computing, Inc. >> >> On Oct 20, 2024, at 6:26?AM, Mark Volkmann >> wrote: >> >> ? Yikes! Sounds complicated. Can you point me to any documentation that >> describes how I could reference a lib path in the Open Smalltalk VM? >> >> Is it possible that nobody that uses Cuis Smalltalk accesses relational >> databases? >> >> -- > R. Mark Volkmann > Object Computing, Inc. > > > > -- > Juan Vuletichcuis.stgithub.com/jvuletichresearchgate.net/profile/Juan-Vuletichindependent.academia.edu/JuanVuletichpatents.justia.com/inventor/juan-manuel-vuletichlinkedin.com/in/juan-vuletich-75611b3twitter.com/JuanVuletich > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Tue Oct 22 08:16:12 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 22 Oct 2024 11:16:12 -0400 Subject: [Cuis-dev] [OffTopic] Re: [RFC] Make \ expansion switchable? In-Reply-To: <09fa3d90-8e36-1c8f-4a23-fc1da110937b@klix.ch> References: <6717B569.8080404@cuis.st> <09fa3d90-8e36-1c8f-4a23-fc1da110937b@klix.ch> Message-ID: <6717C1BC.5050403@cuis.st> On 10/22/2024 10:46 AM, Gerald Klix via Cuis-dev wrote: > Juan, nothing is wrong with Cuis. I apologize: > This post was at least a bit off-topic. > > This post refers to LaTex only. The examples are taken from a > simple piece of LaTex code, written with Emacs. > > I don't know what this \euro command does ? and > admittedly I have no stomach to find out. > I only look at the results. I see. Ok. Never mind. Thanks, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich From juan at cuis.st Tue Oct 22 08:47:17 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 22 Oct 2024 11:47:17 -0400 Subject: [Cuis-dev] Changes for class listing in the Code File Browser In-Reply-To: References: Message-ID: <6717C905.1090001@cuis.st> On 10/21/2024 10:53 AM, Victor Gabriel Fierro via Cuis-dev wrote: > Hello, good morning! > > My name is Gabriel, and I wanted to make a contribution to Cuis. > While working with it I found it very annoying to use the Code File > Browser to browse the code before doing a file-in because it didn't > display the classes hierarchically. This was very problematic because > to understand how the code of the code file worked I had to see the > definition of every class to understand from where it was > subclassifying and make the hierarchy in my head. I changed this so > that the Code File Browser displays classes in the same way that the > Browser does, making it more uniform and understandable with just a > glance. > I hope you like this addition! Hi Gabriel, Thanks for your contribution and welcome to the Cuis Community! I pushed your changes to GitHub. I also pushed a follow up that fixes a walkback when the file doesn't include class definitions, and also kept the option to show in alphabetical order, that is also available in regular browsers. You can check the updates I pushed if you wish. Cheers! -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From hfern at free.fr Tue Oct 22 10:16:57 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Tue, 22 Oct 2024 19:16:57 +0200 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> Message-ID: <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> You just have to keep going when you remain interested by the topic. Learning phase can be frustrating sometime, but I suspect you have a thick skin. I have some distant interest on using SQLite for the dybo project. -- http://mamot.fr/@drgeo -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Tue Oct 22 10:33:51 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 22 Oct 2024 12:33:51 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: I do plan to keep going, trying to learn how I can use ODBC from Cuis Smalltalk to access relational databases. And if I figure it out, I will document it so others don't have to go through as much effort. My main concern is that I could never convince web developers that are currently using languages (like JavaScript or Python) to use Smalltalk instead if so much effort is required just to access a database. I really want to fix that. On Tue, Oct 22, 2024 at 12:17?PM Hilaire Fernandes via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > You just have to keep going when you remain interested by the topic. > Learning phase can be frustrating sometime, but I suspect you have a thick > skin. > > I have some distant interest on using SQLite for the dybo project. > > -- http://mamot.fr/@drgeo > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Tue Oct 22 11:15:27 2024 From: raiford at labware.com (Jon Raiford) Date: Tue, 22 Oct 2024 18:15:27 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: Is it not working now? Did the launch script change not work? I helped get the old ODBC package working last year and had to use a similar trick to get the library loaded. There is quite a bit of change coming for ODBC but it won?t be made available for a while. Probably months away. Jon From: Cuis-dev on behalf of Mark Volkmann via Cuis-dev Date: Tuesday, October 22, 2024 at 1:34?PM To: Discussion of Cuis Smalltalk Cc: Mark Volkmann Subject: Re: [Cuis-dev] ODBC error I do plan to keep going, trying to learn how I can use ODBC from Cuis Smalltalk to access relational databases. And if I figure it out, I will document it so others don't have to go through as much effort. My main concern is that I could never convince web developers that are currently using languages (like JavaScript or Python) to use Smalltalk instead if so much effort is required just to access a database. I really want to fix that. On Tue, Oct 22, 2024 at 12:17?PM Hilaire Fernandes via Cuis-dev > wrote: You just have to keep going when you remain interested by the topic. Learning phase can be frustrating sometime, but I suspect you have a thick skin. I have some distant interest on using SQLite for the dybo project. -- http://mamot.fr/@drgeo -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From vigabf at gmail.com Tue Oct 22 13:07:19 2024 From: vigabf at gmail.com (Victor Gabriel Fierro) Date: Tue, 22 Oct 2024 17:07:19 -0300 Subject: [Cuis-dev] Changes for class listing in the Code File Browser In-Reply-To: <6717C905.1090001@cuis.st> References: <6717C905.1090001@cuis.st> Message-ID: Hi Juan, Thank you very much! I'm glad to see that you perfected it. Have a great day! El mar, 22 oct 2024 a la(s) 12:47?p.m., Juan Vuletich (juan at cuis.st) escribi?: > On 10/21/2024 10:53 AM, Victor Gabriel Fierro via Cuis-dev wrote: > > Hello, good morning! > > My name is Gabriel, and I wanted to make a contribution to Cuis. > While working with it I found it very annoying to use the Code File > Browser to browse the code before doing a file-in because it didn't display > the classes hierarchically. This was very problematic because to understand > how the code of the code file worked I had to see the definition of every > class to understand from where it was subclassifying and make the hierarchy > in my head. I changed this so that the Code File Browser displays classes > in the same way that the Browser does, making it more uniform and > understandable with just a glance. > I hope you like this addition! > > > Hi Gabriel, > > Thanks for your contribution and welcome to the Cuis Community! > > I pushed your changes to GitHub. I also pushed a follow up that fixes a > walkback when the file doesn't include class definitions, and also kept the > option to show in alphabetical order, that is also available in regular > browsers. You can check the updates I pushed if you wish. > > Cheers! > > -- > Juan Vuletichcuis.stgithub.com/jvuletichresearchgate.net/profile/Juan-Vuletichindependent.academia.edu/JuanVuletichpatents.justia.com/inventor/juan-manuel-vuletichlinkedin.com/in/juan-vuletich-75611b3twitter.com/JuanVuletich > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Tue Oct 22 13:36:38 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 22 Oct 2024 15:36:38 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: The change to the launch script you suggested was not enough to get it working for me. I'd love to pair with you over a screenshare on this if you're willing to do that. On Tue, Oct 22, 2024 at 1:15?PM Jon Raiford wrote: > Is it not working now? Did the launch script change not work? I helped get > the old ODBC package working last year and had to use a similar trick to > get the library loaded. There is quite a bit of change coming for ODBC but > it won?t be made available for a while. Probably months away. > > > > Jon > > > > *From: *Cuis-dev on behalf of Mark > Volkmann via Cuis-dev > *Date: *Tuesday, October 22, 2024 at 1:34?PM > *To: *Discussion of Cuis Smalltalk > *Cc: *Mark Volkmann > *Subject: *Re: [Cuis-dev] ODBC error > > I do plan to keep going, trying to learn how I can use ODBC from Cuis > Smalltalk to access relational databases. And if I figure it out, I will > document it so others don't have to go through as much effort. My main > concern is that I could never convince web developers that are currently > using languages (like JavaScript or Python) to use Smalltalk instead if so > much effort is required just to access a database. I really want to fix > that. > > > > On Tue, Oct 22, 2024 at 12:17?PM Hilaire Fernandes via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > > You just have to keep going when you remain interested by the topic. > Learning phase can be frustrating sometime, but I suspect you have a thick > skin. > > I have some distant interest on using SQLite for the dybo project. > > -- > > http://mamot.fr/@drgeo > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > > > > > -- > > R. Mark Volkmann > > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Tue Oct 22 13:56:35 2024 From: raiford at labware.com (Jon Raiford) Date: Tue, 22 Oct 2024 20:56:35 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: What exactly do you mean by not working? Is it not able to open the shared library? Or it is not able to connect to a database? The first thing that happens is allocating the environment by either calling SQLAllocHandle() (current versions of ODBC) or SQLAllocEnv() (old versions of ODBC). I don?t have an easy way to test that old ODBC code at the moment, but it should be easy enough to find the library class. It is a subclass of ExternalLibrary. From there you can find the alloc call and walk back through senders to figure out how it is called. From there you can see the order things are called. One annoying thing to note is that you cannot use the debugger to step through an FFI call. It will always say there is an invalid module or something like that. I?ve spoken to Eliot about this and we should be able to get it fixed at some point. But for now just put a self halt after the call and then look at the return code. Arranging a call would be difficult at the moment. I?m already burning the candle at both ends so not much time unfortunately. Jon From: Mark Volkmann Date: Tuesday, October 22, 2024 at 4:37?PM To: Jon Raiford Cc: Discussion of Cuis Smalltalk Subject: Re: [Cuis-dev] ODBC error The change to the launch script you suggested was not enough to get it working for me. I'd love to pair with you over a screenshare on this if you're willing to do that. On Tue, Oct 22, 2024 at 1:15?PM Jon Raiford > wrote: Is it not working now? Did the launch script change not work? I helped get the old ODBC package working last year and had to use a similar trick to get the library loaded. There is quite a bit of change coming for ODBC but it won?t be made available for a while. Probably months away. Jon From: Cuis-dev > on behalf of Mark Volkmann via Cuis-dev > Date: Tuesday, October 22, 2024 at 1:34?PM To: Discussion of Cuis Smalltalk > Cc: Mark Volkmann > Subject: Re: [Cuis-dev] ODBC error I do plan to keep going, trying to learn how I can use ODBC from Cuis Smalltalk to access relational databases. And if I figure it out, I will document it so others don't have to go through as much effort. My main concern is that I could never convince web developers that are currently using languages (like JavaScript or Python) to use Smalltalk instead if so much effort is required just to access a database. I really want to fix that. On Tue, Oct 22, 2024 at 12:17?PM Hilaire Fernandes via Cuis-dev > wrote: You just have to keep going when you remain interested by the topic. Learning phase can be frustrating sometime, but I suspect you have a thick skin. I have some distant interest on using SQLite for the dybo project. -- http://mamot.fr/@drgeo -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- R. Mark Volkmann Object Computing, Inc. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Tue Oct 22 16:31:51 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 22 Oct 2024 18:31:51 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: See my replies inline below. On Tue, Oct 22, 2024 at 3:56?PM Jon Raiford wrote: > What exactly do you mean by not working? Is it not able to open the shared > library? Or it is not able to connect to a database? The first thing that > happens is allocating the environment by either calling SQLAllocHandle() > (current versions of ODBC) or SQLAllocEnv() (old versions of ODBC). > I'll describe what I have tried below, but I'm not claiming that I have finished investigating this. It's just my progress so far. 1. Run the Homebrew command "brew install unixodbc" to install the ODBC dynamic library. That gives me the following files in /usr/local/lib: libodbc.2.dylib libodbc.a libodbc.dylib libodbccr.2.dylib libodbccr.a libodbccr.dylib libodbcinst.2.dylib libodbcinst.a libodbcinst.dylib 2. Run the command "brew install sqliteodbc" to install the SQLite-specific shared library. That gives me the file /usr/local/lib/libsqlite3odbc.dylib I'm not certain I need this file, but I reference it below. 3. Create the file /usr/local/etc/odbc.ini containing the following which refers to a dynamic library that exists and SQLite database file that exists. [TodoDSN] Description = SQLite ODBC Driver Driver = /usr/local/lib/libsqlite3odbc.dylib Database = /Users/volkmannm/Documents/dev/lang/smalltalk/Cuis-Smalltalk-Dev-UserFiles/todos.db Timeout = 2000 4. Clone the GitHub repository at https://github.com/Cuis-Smalltalk/DatabaseSupport.git into the same directory that holds the Cuis-Smalltalk-Dev directory. 5. Change the file RunCuisOnMacTerminal.sh to the following: export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:${DYLD_LIBRARY_PATH}" ./CuisVM.app/Contents/MacOS/Squeak CuisImage/Cuis?.?-????.image -u 5. Run that script. 6. Open a "File List", navigate to the DatabaseSupport directory, select ODBC.pck.st, and click "install package". 7. Open a Workspace and evaluate the following: conn := ODBCConnection dsn: 'TodoDSN' user: '' password: ''. This gives the error "External module not found". See the attached screenshot. I don?t have an easy way to test that old ODBC code at the moment, but it > should be easy enough to find the library class. It is a subclass of > ExternalLibrary. From there you can find the alloc call and walk back > through senders to figure out how it is called. From there you can see the > order things are called. > I only see one subclass of ExternalLibrary and it is ODBCLibrary. I think the alloc call you are referring to is the one in the attached screenshot, but I haven't been able to determine which external module it can't find. The line that fails is: One annoying thing to note is that you cannot use the debugger to step > through an FFI call. It will always say there is an invalid module or > something like that. I?ve spoken to Eliot about this and we should be able > to get it fixed at some point. But for now just put a self halt after the > call and then look at the return code. > > > > Arranging a call would be difficult at the moment. I?m already burning the > candle at both ends so not much time unfortunately. > I understand. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Screenshot 2024-10-22 at 6.23.37?PM.png Type: image/png Size: 264645 bytes Desc: not available URL: From r.mark.volkmann at gmail.com Tue Oct 22 18:34:25 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 22 Oct 2024 20:34:25 -0500 Subject: [Cuis-dev] .changes file Message-ID: I understand that the .changes file for an image contains a log of all the source code changes made and that this enables recovering changes if the VM crashes. But why doesn't it start as an empty file so I can only recover the changes I have made? I see that for both the Stable and Rolling releases, the initial .changes file contains many changes that I didn't make. Just trying to understand why those entries are needed. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From hernan.wilkinson at 10pines.com Wed Oct 23 04:25:37 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Wed, 23 Oct 2024 08:25:37 -0300 Subject: [Cuis-dev] .changes file In-Reply-To: References: Message-ID: Hi Mark! source code is stored in the .source file and in the .changes file. When a new version is released, for example moving from 6 to 7, the .changes file is "condensed" and the source code in there is moved to the .source file. That is the only moment when the .changes file has no changes. You can take a look at SystemDictionary>>condenseChanges and SystemDictionary>>condenseSources. If you want to have only the changes you made, you can use the .user.changes file. Depending on the configuration, one of them is created every time an image starts and saves only the changes you made while using that image. Lock at Utilities class>>logsUserChanges and its senders. Hope this helps! Hernan. On Tue, Oct 22, 2024 at 10:34?PM Mark Volkmann via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > I understand that the .changes file for an image contains a log of all the > source code changes made and that this enables recovering changes if the VM > crashes. But why doesn't it start as an empty file so I can only recover > the changes I have made? I see that for both the Stable and Rolling > releases, the initial .changes file contains many changes that I > didn't make. Just trying to understand why those entries are needed. > > -- > R. Mark Volkmann > Object Computing, Inc. > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Wed Oct 23 05:41:21 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Wed, 23 Oct 2024 07:41:21 -0500 Subject: [Cuis-dev] .changes file In-Reply-To: References: Message-ID: <370BFB2E-3471-4B80-AC50-8013CFCE97C6@gmail.com> An HTML attachment was scrubbed... URL: From juan at cuis.st Wed Oct 23 10:51:07 2024 From: juan at cuis.st (=?utf-8?q?juan=40cuis=2Est?=) Date: Wed, 23 Oct 2024 19:51:07 +0200 Subject: [Cuis-dev] =?utf-8?q?Alan_Kay_now_live_=40_Splash_conference?= Message-ID: <1454-67193780-d3-761f4080@212092150> Don't miss it! https://www.youtube.com/watch?v=_VF3pISRYRc Cheers, Juan Vuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Wed Oct 23 17:13:28 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Wed, 23 Oct 2024 19:13:28 -0500 Subject: [Cuis-dev] possible Socket method comment out of date Message-ID: The comment in the listenOn: method of the Socket class says "Listen for a connection on the given port. This operation will return immediately; follow it with waitForConnectionUntil: to wait until a connection is established." But it seems a waitForConnectionUtil: method doesn't exist. Perhaps that should be changed to waitForConnectionFor:. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Wed Oct 23 17:29:53 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Wed, 23 Oct 2024 19:29:53 -0500 Subject: [Cuis-dev] finding an open port Message-ID: I wrote the following code to take a port number and return the first port starting from that number that is open. For example, if ports 3000 and 3001 are in use and I send "MyClass openPortFrom: 3000" then I expect it to return 3002. Can you spot why this never finds an open port and loops forever? openPortFrom: aNumber | connected port socket | connected := false. port := aNumber. [ connected ] whileFalse: [ 'trying port {1}' format: { port } :: print. socket := Socket newTCP. socket listenOn: port. connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. ]. ^port. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From hfern at free.fr Thu Oct 24 03:22:48 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Thu, 24 Oct 2024 12:22:48 +0200 Subject: [Cuis-dev] finding an open port In-Reply-To: References: Message-ID: Hi Mark, Which package are you using? Hilaire -- http://mamot.fr/@drgeo -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Thu Oct 24 06:56:03 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 24 Oct 2024 08:56:03 -0500 Subject: [Cuis-dev] finding an open port In-Reply-To: References: Message-ID: I'm using the "Network-Kernel" package found in Cuis-Smalltalk-Dev/Packages/System/Network-Kernel.pck.st in the Cuis 7.1 distribution. The only class I'm using from that package is Socket. On Thu, Oct 24, 2024 at 5:23?AM Hilaire Fernandes via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > Hi Mark, > > Which package are you using? > > Hilaire > > -- http://mamot.fr/@drgeo > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Thu Oct 24 07:01:39 2024 From: raiford at labware.com (Jon Raiford) Date: Thu, 24 Oct 2024 14:01:39 +0000 Subject: [Cuis-dev] finding an open port In-Reply-To: References: Message-ID: I would try the latest vm and not just the one that is packaged with Cuis. I know there was a bug where an error was not sent back to the image if the listen call failed. I think this was fixed earlier this summer. Jon From: Cuis-dev on behalf of Mark Volkmann via Cuis-dev Date: Thursday, October 24, 2024 at 9:56?AM To: Discussion of Cuis Smalltalk Cc: Mark Volkmann Subject: Re: [Cuis-dev] finding an open port I'm using the "Network-Kernel" package found in Cuis-Smalltalk-Dev/Packages/System/Network-Kernel.pck.st in the Cuis 7.1 distribution. The only class I'm using from that package is Socket. On Thu, Oct 24, 2024 at 5:23?AM Hilaire Fernandes via Cuis-dev > wrote: Hi Mark, Which package are you using? Hilaire -- http://mamot.fr/@drgeo -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From hfern at free.fr Thu Oct 24 07:44:41 2024 From: hfern at free.fr (Hilaire Fernandes) Date: Thu, 24 Oct 2024 16:44:41 +0200 Subject: [Cuis-dev] FFI to execute shell command Message-ID: <527368fb-77a2-4230-873c-712dff0ff443@free.fr> Hi, Excuse my deep ignorance. Can FFI be used to execute shell command? Within Pharo I used to do that with a LibC class in UnifiedFFI package. Thanks Hilaire -- http://mamot.fr/@drgeo -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Thu Oct 24 09:03:37 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Thu, 24 Oct 2024 18:03:37 +0200 Subject: [Cuis-dev] FFI to execute shell command In-Reply-To: <527368fb-77a2-4230-873c-712dff0ff443@free.fr> References: <527368fb-77a2-4230-873c-712dff0ff443@free.fr> Message-ID: <7be4ffda-61ac-c168-dcf1-5d6b453450a8@klix.ch> Hi Hilaire, What do you mean by "shell command"? Do you mean a shell-script or one command built into a shell like "cd"? Of course you should be able to use the clib's? `system` function, to execute a shell-script, but that would just duplicate the functionality of OSProcess class>>#command:, provided by the OSProcess package. HTH, Gerald On 10/24/24 4:44 PM, Hilaire Fernandes via Cuis-dev wrote: > Hi, > > Excuse my deep ignorance. > > Can FFI be used to execute shell command? Within Pharo I used to do > that with a LibC class in UnifiedFFI package. > > Thanks > > Hilaire > > From cuis.01 at klix.ch Thu Oct 24 09:24:36 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Thu, 24 Oct 2024 18:24:36 +0200 Subject: [Cuis-dev] finding an open port In-Reply-To: References: Message-ID: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Dear Mark, why in name of Alan (Perlis) do you expect a connection to your newly created server socket pop out of nowhere? Increase the time out to 60 in `connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ].`, send the #openPortFrom: message to your object. Switch to Terminal window, and start telnet like this `telnet 127.0.0.1 3000` and marvel at the results. Sorry for my harsh words: This issue has nothing to do with Cuis, but a lot with socket, bind and listen. See man 2 bind, man 2 listen Just my 0,01?, Gerald On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > I wrote the following code to take a port number and return the first port > starting from that number that is open. For example, if ports 3000 and 3001 > are in use and I send "MyClass openPortFrom: 3000" then I expect it to > return 3002. Can you spot why this never finds an open port and loops > forever? > > openPortFrom: aNumber > | connected port socket | > > connected := false. > port := aNumber. > > [ connected ] whileFalse: [ > 'trying port {1}' format: { port } :: print. > socket := Socket newTCP. > socket listenOn: port. > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. > ]. > > ^port. > > From raiford at labware.com Thu Oct 24 09:45:18 2024 From: raiford at labware.com (Jon Raiford) Date: Thu, 24 Oct 2024 16:45:18 +0000 Subject: [Cuis-dev] finding an open port In-Reply-To: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: For what it?s worth, the way I looked at his code was that the ?listenOn: port? should have thrown an RTE as the OS knows immediately that the port is not available. Of course Mark?s code below doesn?t handle errors there, but that would have been resolved during debugging. Whether or not the rest of the code is sane is another matter entirely ?. Jon From: Cuis-dev on behalf of Gerald Klix via Cuis-dev Date: Thursday, October 24, 2024 at 12:25?PM To: cuis-dev at lists.cuis.st Cc: Gerald Klix Subject: Re: [Cuis-dev] finding an open port Dear Mark, why in name of Alan (Perlis) do you expect a connection to your newly created server socket pop out of nowhere? Increase the time out to 60 in `connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ].`, send the #openPortFrom: message to your object. Switch to Terminal window, and start telnet like this `telnet 127.0.0.1 3000` and marvel at the results. Sorry for my harsh words: This issue has nothing to do with Cuis, but a lot with socket, bind and listen. See man 2 bind, man 2 listen Just my 0,01?, Gerald On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > I wrote the following code to take a port number and return the first port > starting from that number that is open. For example, if ports 3000 and 3001 > are in use and I send "MyClass openPortFrom: 3000" then I expect it to > return 3002. Can you spot why this never finds an open port and loops > forever? > > openPortFrom: aNumber > | connected port socket | > > connected := false. > port := aNumber. > > [ connected ] whileFalse: [ > 'trying port {1}' format: { port } :: print. > socket := Socket newTCP. > socket listenOn: port. > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. > ]. > > ^port. > > -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Thu Oct 24 10:19:38 2024 From: raiford at labware.com (Jon Raiford) Date: Thu, 24 Oct 2024 17:19:38 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: I had a quick look at this on my M1 MBP. I did the following: * git clone Cuis-Smalltalk-Dev * git clone Cuis DatabaseSupport * modified the launch script as you described below * run the script: ./RunCuisOnMacTerminal.sh * open a workspace * doIt: Feature require: ?ODBC? * printIt: ODBCConnection new sqlAllocEnv => a SQLHENV . If I remove the DYLD_LIBRARY_PATH from the launch script then I get the module not found error. Based on your info below, your homebrew lib path is /usr/local/lib and libodbc.dylib exists in the directory, which is the moduleName defined in ODBCLibrary class>>moduleName. That all looks correct. What do you get if you run this from the command line? % otool -L /usr/local/lib/libodbc.dylib Jon From: Mark Volkmann Date: Tuesday, October 22, 2024 at 7:32?PM To: Jon Raiford Cc: Discussion of Cuis Smalltalk Subject: Re: [Cuis-dev] ODBC error See my replies inline below. On Tue, Oct 22, 2024 at 3:56?PM Jon Raiford > wrote: What exactly do you mean by not working? Is it not able to open the shared library? Or it is not able to connect to a database? The first thing that happens is allocating the environment by either calling SQLAllocHandle() (current versions of ODBC) or SQLAllocEnv() (old versions of ODBC). I'll describe what I have tried below, but I'm not claiming that I have finished investigating this. It's just my progress so far. 1. Run the Homebrew command "brew install unixodbc" to install the ODBC dynamic library. That gives me the following files in /usr/local/lib: libodbc.2.dylib libodbc.a libodbc.dylib libodbccr.2.dylib libodbccr.a libodbccr.dylib libodbcinst.2.dylib libodbcinst.a libodbcinst.dylib 2. Run the command "brew install sqliteodbc" to install the SQLite-specific shared library. That gives me the file /usr/local/lib/libsqlite3odbc.dylib I'm not certain I need this file, but I reference it below. 3. Create the file /usr/local/etc/odbc.ini containing the following which refers to a dynamic library that exists and SQLite database file that exists. [TodoDSN] Description = SQLite ODBC Driver Driver = /usr/local/lib/libsqlite3odbc.dylib Database = /Users/volkmannm/Documents/dev/lang/smalltalk/Cuis-Smalltalk-Dev-UserFiles/todos.db Timeout = 2000 4. Clone the GitHub repository at https://github.com/Cuis-Smalltalk/DatabaseSupport.git into the same directory that holds the Cuis-Smalltalk-Dev directory. 5. Change the file RunCuisOnMacTerminal.sh to the following: export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:${DYLD_LIBRARY_PATH}" ./CuisVM.app/Contents/MacOS/Squeak CuisImage/Cuis?.?-????.image -u 5. Run that script. 6. Open a "File List", navigate to the DatabaseSupport directory, select ODBC.pck.st, and click "install package". 7. Open a Workspace and evaluate the following: conn := ODBCConnection dsn: 'TodoDSN' user: '' password: ''. This gives the error "External module not found". See the attached screenshot. I don?t have an easy way to test that old ODBC code at the moment, but it should be easy enough to find the library class. It is a subclass of ExternalLibrary. From there you can find the alloc call and walk back through senders to figure out how it is called. From there you can see the order things are called. I only see one subclass of ExternalLibrary and it is ODBCLibrary. I think the alloc call you are referring to is the one in the attached screenshot, but I haven't been able to determine which external module it can't find. The line that fails is: One annoying thing to note is that you cannot use the debugger to step through an FFI call. It will always say there is an invalid module or something like that. I?ve spoken to Eliot about this and we should be able to get it fixed at some point. But for now just put a self halt after the call and then look at the return code. Arranging a call would be difficult at the moment. I?m already burning the candle at both ends so not much time unfortunately. I understand. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Thu Oct 24 10:46:34 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 24 Oct 2024 12:46:34 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: Thanks so much for looking into this! When I run that command I get the following: /usr/local/lib/libodbc.dylib: /usr/local/opt/unixodbc/lib/libodbc.2.dylib (compatibility version 3.0.0, current version 3.0.0) /usr/local/opt/libtool/lib/libltdl.7.dylib (compatibility version 11.0.0, current version 11.2.0) /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.0.0) On Thu, Oct 24, 2024 at 12:19?PM Jon Raiford wrote: > I had a quick look at this on my M1 MBP. > > > > I did the following: > > * git clone Cuis-Smalltalk-Dev > > * git clone Cuis DatabaseSupport > > * modified the launch script as you described below > > * run the script: ./RunCuisOnMacTerminal.sh > > * open a workspace > > * doIt: Feature require: ?ODBC? > > * printIt: ODBCConnection new sqlAllocEnv => a SQLHENV . > > > > If I remove the DYLD_LIBRARY_PATH from the launch script then I get the > module not found error. > > > > Based on your info below, your homebrew lib path is /usr/local/lib and > libodbc.dylib exists in the directory, which is the moduleName defined in > ODBCLibrary class>>moduleName. > > > > That all looks correct. > > > > What do you get if you run this from the command line? > > % otool -L /usr/local/lib/libodbc.dylib > > > > > > Jon > > > > *From: *Mark Volkmann > *Date: *Tuesday, October 22, 2024 at 7:32?PM > *To: *Jon Raiford > *Cc: *Discussion of Cuis Smalltalk > *Subject: *Re: [Cuis-dev] ODBC error > > See my replies inline below. > > > > On Tue, Oct 22, 2024 at 3:56?PM Jon Raiford wrote: > > What exactly do you mean by not working? Is it not able to open the shared > library? Or it is not able to connect to a database? The first thing that > happens is allocating the environment by either calling SQLAllocHandle() > (current versions of ODBC) or SQLAllocEnv() (old versions of ODBC). > > > > I'll describe what I have tried below, but I'm not claiming that I have > finished investigating this. It's just my progress so far. > > > > 1. Run the Homebrew command "brew install unixodbc" to install the ODBC > dynamic library. > > > > That gives me the following files in /usr/local/lib: > > > > libodbc.2.dylib > libodbc.a > libodbc.dylib > libodbccr.2.dylib > libodbccr.a > libodbccr.dylib > libodbcinst.2.dylib > libodbcinst.a > libodbcinst.dylib > > > > 2. Run the command "brew install sqliteodbc" to install the > SQLite-specific shared library. > > > > That gives me the file /usr/local/lib/libsqlite3odbc.dylib > > I'm not certain I need this file, but I reference it below. > > > > 3. Create the file /usr/local/etc/odbc.ini containing the following which > refers to a dynamic library that exists and SQLite database file that > exists. > > [TodoDSN] > Description = SQLite ODBC Driver > Driver = /usr/local/lib/libsqlite3odbc.dylib > Database = /Users/volkmannm/Documents/dev/lang/smalltalk/Cuis-Smalltalk-Dev-UserFiles/todos.db > Timeout = 2000 > > 4. Clone the GitHub repository at > https://github.com/Cuis-Smalltalk/DatabaseSupport.git into the same > directory that holds the Cuis-Smalltalk-Dev directory. > > > > 5. Change the file RunCuisOnMacTerminal.sh to the following: > > > > export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:${DYLD_LIBRARY_PATH}" > > ./CuisVM.app/Contents/MacOS/Squeak CuisImage/Cuis?.?-????.image -u > > > > 5. Run that script. > > > > 6. Open a "File List", navigate to the DatabaseSupport directory, select > ODBC.pck.st, and click "install package". > > > > 7. Open a Workspace and evaluate the following: > > conn := ODBCConnection dsn: 'TodoDSN' user: '' password: ''. > > This gives the error "External module not found". See the attached > screenshot. > > > > I don?t have an easy way to test that old ODBC code at the moment, but it > should be easy enough to find the library class. It is a subclass of > ExternalLibrary. From there you can find the alloc call and walk back > through senders to figure out how it is called. From there you can see the > order things are called. > > > > I only see one subclass of ExternalLibrary and it is ODBCLibrary. I think > the alloc call you are referring to is the one in the attached screenshot, > but I haven't been able to determine which external module it can't find. > The line that fails is: > > > > > > > > One annoying thing to note is that you cannot use the debugger to step > through an FFI call. It will always say there is an invalid module or > something like that. I?ve spoken to Eliot about this and we should be able > to get it fixed at some point. But for now just put a self halt after the > call and then look at the return code. > > > > Arranging a call would be difficult at the moment. I?m already burning the > candle at both ends so not much time unfortunately. > > > > I understand. > > > > -- > > R. Mark Volkmann > > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Thu Oct 24 17:01:17 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 24 Oct 2024 19:01:17 -0500 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: I landed on a solution that seems to work fine. Does this seem reasonable? When I pass this 3000 and port 3000 is in use, it returns 3001. openPortFrom: aNumber | hostAddress port socket | hostAddress := NetNameResolver addressForName: 'localhost'. port := aNumber. socket := Socket newTCP. [ true ] whileTrue: [ [ socket connectTo: hostAddress port: port waitForConnectionFor: 1. socket disconnect. port := port + 1. ] on: ConnectionTimedOut do: [ :ex | ^ port ]. ]. On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > For what it?s worth, the way I looked at his code was that the ?listenOn: > port? should have thrown an RTE as the OS knows immediately that the port > is not available. Of course Mark?s code below doesn?t handle errors there, > but that would have been resolved during debugging. Whether or not the rest > of the code is sane is another matter entirely ?. > > > > Jon > > > > *From: *Cuis-dev on behalf of Gerald > Klix via Cuis-dev > *Date: *Thursday, October 24, 2024 at 12:25?PM > *To: *cuis-dev at lists.cuis.st > *Cc: *Gerald Klix > *Subject: *Re: [Cuis-dev] finding an open port > > Dear Mark, > > why in name of Alan (Perlis) do you expect a connection to your newly > created server socket pop out of nowhere? > > Increase the time out to 60 in `connected := socket > waitForConnectionFor: 1 ifTimedOut: [ false ].`, > send the #openPortFrom: message to your object. > > Switch to Terminal window, and start telnet like this > `telnet 127.0.0.1 3000` and marvel at the results. > > Sorry for my harsh words: This issue has nothing to do with Cuis, > but a lot with socket, bind and listen. > > See man 2 bind, man 2 listen > > > Just my 0,01?, > > Gerald > > > > On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > > I wrote the following code to take a port number and return the first > port > > starting from that number that is open. For example, if ports 3000 and > 3001 > > are in use and I send "MyClass openPortFrom: 3000" then I expect it to > > return 3002. Can you spot why this never finds an open port and loops > > forever? > > > > openPortFrom: aNumber > > | connected port socket | > > > > connected := false. > > port := aNumber. > > > > [ connected ] whileFalse: [ > > 'trying port {1}' format: { port } :: print. > > socket := Socket newTCP. > > socket listenOn: port. > > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. > > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. > > ]. > > > > ^port. > > > > > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Fri Oct 25 02:29:25 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Fri, 25 Oct 2024 11:29:25 +0200 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: Hi Mark, Now you have written a scanner for open ports listening on 127.0.0.1. Since I do not know, whether you want to find an unbound port for a server socket or want to know which ports listen on localhost, I can't tell you whether your solution is reasonable. My advise is make a digression to C programming to learn the semantics of sockets. https://www.geeksforgeeks.org/socket-programming-cc/ was the first example that duckduckgo found. To me these a reasonable examples. As far as I understand the squeak VM uses asynchronous sockets, which interact with your Cuis image via semaphores. You can look at the socket plugins source here: https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/src/plugins/SocketPlugin/SocketPlugin.c Please do not ask me for details, because I do not understand them either. Looking at this plugin's code reminds me of this XKCD cartoon: https://commadot.com/wtf-per-minute/ Alas I am not sure in which of the two rooms we are sitting. Sorry, Gerald On 10/25/24 2:01 AM, Mark Volkmann via Cuis-dev wrote: > I landed on a solution that seems to work fine. Does this seem reasonable? > > When I pass this 3000 and port 3000 is in use, it returns 3001. > > openPortFrom: aNumber > | hostAddress port socket | > > hostAddress := NetNameResolver addressForName: 'localhost'. > port := aNumber. > socket := Socket newTCP. > > [ true ] whileTrue: [ > [ > socket connectTo: hostAddress port: port waitForConnectionFor: > 1. > socket disconnect. > port := port + 1. > ] on: ConnectionTimedOut do: [ :ex | ^ port ]. > ]. > > On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > >> For what it?s worth, the way I looked at his code was that the ?listenOn: >> port? should have thrown an RTE as the OS knows immediately that the port >> is not available. Of course Mark?s code below doesn?t handle errors there, >> but that would have been resolved during debugging. Whether or not the rest >> of the code is sane is another matter entirely ?. >> >> >> >> Jon >> >> >> >> *From: *Cuis-dev on behalf of Gerald >> Klix via Cuis-dev >> *Date: *Thursday, October 24, 2024 at 12:25?PM >> *To: *cuis-dev at lists.cuis.st >> *Cc: *Gerald Klix >> *Subject: *Re: [Cuis-dev] finding an open port >> >> Dear Mark, >> >> why in name of Alan (Perlis) do you expect a connection to your newly >> created server socket pop out of nowhere? >> >> Increase the time out to 60 in `connected := socket >> waitForConnectionFor: 1 ifTimedOut: [ false ].`, >> send the #openPortFrom: message to your object. >> >> Switch to Terminal window, and start telnet like this >> `telnet 127.0.0.1 3000` and marvel at the results. >> >> Sorry for my harsh words: This issue has nothing to do with Cuis, >> but a lot with socket, bind and listen. >> >> See man 2 bind, man 2 listen >> >> >> Just my 0,01?, >> >> Gerald >> >> >> >> On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: >>> I wrote the following code to take a port number and return the first >> port >>> starting from that number that is open. For example, if ports 3000 and >> 3001 >>> are in use and I send "MyClass openPortFrom: 3000" then I expect it to >>> return 3002. Can you spot why this never finds an open port and loops >>> forever? >>> >>> openPortFrom: aNumber >>> | connected port socket | >>> >>> connected := false. >>> port := aNumber. >>> >>> [ connected ] whileFalse: [ >>> 'trying port {1}' format: { port } :: print. >>> socket := Socket newTCP. >>> socket listenOn: port. >>> connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. >>> connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. >>> ]. >>> >>> ^port. >>> >>> >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> > > From raiford at labware.com Fri Oct 25 06:30:30 2024 From: raiford at labware.com (Jon Raiford) Date: Fri, 25 Oct 2024 13:30:30 +0000 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: I think you are much better off grabbing the latest vm and using the listenOn: code with an exception handler. Connecting to your machine in a loop seems to be a backwards way to look for an unused port. Jon From: Mark Volkmann Date: Thursday, October 24, 2024 at 8:01?PM To: Discussion of Cuis Smalltalk Cc: Jon Raiford , Gerald Klix Subject: Re: [Cuis-dev] finding an open port I landed on a solution that seems to work fine. Does this seem reasonable? When I pass this 3000 and port 3000 is in use, it returns 3001. openPortFrom: aNumber | hostAddress port socket | hostAddress := NetNameResolver addressForName: 'localhost'. port := aNumber. socket := Socket newTCP. [ true ] whileTrue: [ [ socket connectTo: hostAddress port: port waitForConnectionFor: 1. socket disconnect. port := port + 1. ] on: ConnectionTimedOut do: [ :ex | ^ port ]. ]. On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev > wrote: For what it?s worth, the way I looked at his code was that the ?listenOn: port? should have thrown an RTE as the OS knows immediately that the port is not available. Of course Mark?s code below doesn?t handle errors there, but that would have been resolved during debugging. Whether or not the rest of the code is sane is another matter entirely ?. Jon From: Cuis-dev > on behalf of Gerald Klix via Cuis-dev > Date: Thursday, October 24, 2024 at 12:25?PM To: cuis-dev at lists.cuis.st > Cc: Gerald Klix > Subject: Re: [Cuis-dev] finding an open port Dear Mark, why in name of Alan (Perlis) do you expect a connection to your newly created server socket pop out of nowhere? Increase the time out to 60 in `connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ].`, send the #openPortFrom: message to your object. Switch to Terminal window, and start telnet like this `telnet 127.0.0.1 3000` and marvel at the results. Sorry for my harsh words: This issue has nothing to do with Cuis, but a lot with socket, bind and listen. See man 2 bind, man 2 listen Just my 0,01?, Gerald On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > I wrote the following code to take a port number and return the first port > starting from that number that is open. For example, if ports 3000 and 3001 > are in use and I send "MyClass openPortFrom: 3000" then I expect it to > return 3002. Can you spot why this never finds an open port and loops > forever? > > openPortFrom: aNumber > | connected port socket | > > connected := false. > port := aNumber. > > [ connected ] whileFalse: [ > 'trying port {1}' format: { port } :: print. > socket := Socket newTCP. > socket listenOn: port. > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. > ]. > > ^port. > > -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Fri Oct 25 06:35:05 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Fri, 25 Oct 2024 08:35:05 -0500 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: I should have explained my use case. I'm using this in the setUp method for an SUnit test. It tests the endpoints of a web server. Previously the setUp method always started the server on a specific port. If that port was in use then the tests would fail. Now it always finds an available port and the tests pass regardless of whether specific ports are in use. If anyone is curious, you can see the code for the setUp and tearDown methods here: https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus/blob/3eea948bc803aad814cc18932d7c57d45188b031/WebClientPlus.pck.st#L101 On Fri, Oct 25, 2024 at 8:30?AM Jon Raiford wrote: > I think you are much better off grabbing the latest vm and using the > listenOn: code with an exception handler. Connecting to your machine in a > loop seems to be a backwards way to look for an unused port. > > > > Jon > > > > *From: *Mark Volkmann > *Date: *Thursday, October 24, 2024 at 8:01?PM > *To: *Discussion of Cuis Smalltalk > *Cc: *Jon Raiford , Gerald Klix > *Subject: *Re: [Cuis-dev] finding an open port > > I landed on a solution that seems to work fine. Does this seem reasonable? > > > > When I pass this 3000 and port 3000 is in use, it returns 3001. > > > > openPortFrom: aNumber > | hostAddress port socket | > > hostAddress := NetNameResolver addressForName: 'localhost'. > port := aNumber. > socket := Socket newTCP. > > [ true ] whileTrue: [ > [ > > socket connectTo: hostAddress port: port > waitForConnectionFor: 1. > > socket disconnect. > > port := port + 1. > > ] on: ConnectionTimedOut do: [ :ex | ^ port ]. > > ]. > > > > On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev < > cuis-dev at lists.cuis.st> wrote: > > For what it?s worth, the way I looked at his code was that the ?listenOn: > port? should have thrown an RTE as the OS knows immediately that the port > is not available. Of course Mark?s code below doesn?t handle errors there, > but that would have been resolved during debugging. Whether or not the rest > of the code is sane is another matter entirely ?. > > > > Jon > > > > *From: *Cuis-dev on behalf of Gerald > Klix via Cuis-dev > *Date: *Thursday, October 24, 2024 at 12:25?PM > *To: *cuis-dev at lists.cuis.st > *Cc: *Gerald Klix > *Subject: *Re: [Cuis-dev] finding an open port > > Dear Mark, > > why in name of Alan (Perlis) do you expect a connection to your newly > created server socket pop out of nowhere? > > Increase the time out to 60 in `connected := socket > waitForConnectionFor: 1 ifTimedOut: [ false ].`, > send the #openPortFrom: message to your object. > > Switch to Terminal window, and start telnet like this > `telnet 127.0.0.1 3000` and marvel at the results. > > Sorry for my harsh words: This issue has nothing to do with Cuis, > but a lot with socket, bind and listen. > > See man 2 bind, man 2 listen > > > Just my 0,01?, > > Gerald > > > > On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > > I wrote the following code to take a port number and return the first > port > > starting from that number that is open. For example, if ports 3000 and > 3001 > > are in use and I send "MyClass openPortFrom: 3000" then I expect it to > > return 3002. Can you spot why this never finds an open port and loops > > forever? > > > > openPortFrom: aNumber > > | connected port socket | > > > > connected := false. > > port := aNumber. > > > > [ connected ] whileFalse: [ > > 'trying port {1}' format: { port } :: print. > > socket := Socket newTCP. > > socket listenOn: port. > > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. > > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. > > ]. > > > > ^port. > > > > > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > > > > > -- > > R. Mark Volkmann > > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Fri Oct 25 06:46:12 2024 From: raiford at labware.com (Jon Raiford) Date: Fri, 25 Oct 2024 13:46:12 +0000 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: Yes, you are still trying to determine an available port by connecting to yourself and once you find a port that takes longer than a second to connect then you answer the port and then listen on it. This is not guaranteed to work. Imagine if you chose a local port that was being used on an open connection but not set up for listening. Another possibility is a service that requires port knocking. The listening port could be tied up but not allow a connection to succeed. The sockets support provided by the OS provides a mechanism to determine if a port is available or not. You should use that instead. Unfortunately the network plugin used by Cuis hides this call so you can?t test for it directly. With the current vm though the listen primitive does throw an error if the port is already in use regardless if the port is used for listening or for another connection. Jon From: Mark Volkmann Date: Friday, October 25, 2024 at 9:35?AM To: Jon Raiford Cc: Discussion of Cuis Smalltalk , Gerald Klix Subject: Re: [Cuis-dev] finding an open port I should have explained my use case. I'm using this in the setUp method for an SUnit test. It tests the endpoints of a web server. Previously the setUp method always started the server on a specific port. If that port was in use then the tests would fail. Now it always finds an available port and the tests pass regardless of whether specific ports are in use. If anyone is curious, you can see the code for the setUp and tearDown methods here: https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus/blob/3eea948bc803aad814cc18932d7c57d45188b031/WebClientPlus.pck.st#L101 On Fri, Oct 25, 2024 at 8:30?AM Jon Raiford > wrote: I think you are much better off grabbing the latest vm and using the listenOn: code with an exception handler. Connecting to your machine in a loop seems to be a backwards way to look for an unused port. Jon From: Mark Volkmann > Date: Thursday, October 24, 2024 at 8:01?PM To: Discussion of Cuis Smalltalk > Cc: Jon Raiford >, Gerald Klix > Subject: Re: [Cuis-dev] finding an open port I landed on a solution that seems to work fine. Does this seem reasonable? When I pass this 3000 and port 3000 is in use, it returns 3001. openPortFrom: aNumber | hostAddress port socket | hostAddress := NetNameResolver addressForName: 'localhost'. port := aNumber. socket := Socket newTCP. [ true ] whileTrue: [ [ socket connectTo: hostAddress port: port waitForConnectionFor: 1. socket disconnect. port := port + 1. ] on: ConnectionTimedOut do: [ :ex | ^ port ]. ]. On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev > wrote: For what it?s worth, the way I looked at his code was that the ?listenOn: port? should have thrown an RTE as the OS knows immediately that the port is not available. Of course Mark?s code below doesn?t handle errors there, but that would have been resolved during debugging. Whether or not the rest of the code is sane is another matter entirely ?. Jon From: Cuis-dev > on behalf of Gerald Klix via Cuis-dev > Date: Thursday, October 24, 2024 at 12:25?PM To: cuis-dev at lists.cuis.st > Cc: Gerald Klix > Subject: Re: [Cuis-dev] finding an open port Dear Mark, why in name of Alan (Perlis) do you expect a connection to your newly created server socket pop out of nowhere? Increase the time out to 60 in `connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ].`, send the #openPortFrom: message to your object. Switch to Terminal window, and start telnet like this `telnet 127.0.0.1 3000` and marvel at the results. Sorry for my harsh words: This issue has nothing to do with Cuis, but a lot with socket, bind and listen. See man 2 bind, man 2 listen Just my 0,01?, Gerald On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > I wrote the following code to take a port number and return the first port > starting from that number that is open. For example, if ports 3000 and 3001 > are in use and I send "MyClass openPortFrom: 3000" then I expect it to > return 3002. Can you spot why this never finds an open port and loops > forever? > > openPortFrom: aNumber > | connected port socket | > > connected := false. > port := aNumber. > > [ connected ] whileFalse: [ > 'trying port {1}' format: { port } :: print. > socket := Socket newTCP. > socket listenOn: port. > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. > ]. > > ^port. > > -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -- R. Mark Volkmann Object Computing, Inc. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From cuis.01 at klix.ch Fri Oct 25 06:49:13 2024 From: cuis.01 at klix.ch (Gerald Klix) Date: Fri, 25 Oct 2024 15:49:13 +0200 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: <43552b9e-4cf2-2f4a-7f56-283a3da62b92@klix.ch> IC, that explains a lot (of the confusion). Actually you need both methods. How about the following algorithm? Use our old code that opens a server socket and modify it like this: Before waiting for a connection, fork a process that tries to connect to that port, simulating a web client. Let the client send some magic string and string representation of both port numbers to the server. The server than checks the magic string and the port numbers. If? the ports number agree you can be quite sure that a connection is possible. HTH, Gerald On 10/25/24 3:35 PM, Mark Volkmann via Cuis-dev wrote: > I should have explained my use case. I'm using this in the setUp method for > an SUnit test. It tests the endpoints of a web server. Previously the setUp > method always started the server on a specific port. If that port was in > use then the tests would fail. Now it always finds an available port and > the tests pass regardless of whether specific ports are in use. If anyone > is curious, you can see the code for the setUp and tearDown methods here: > https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus/blob/3eea948bc803aad814cc18932d7c57d45188b031/WebClientPlus.pck.st#L101 > > On Fri, Oct 25, 2024 at 8:30?AM Jon Raiford wrote: > >> I think you are much better off grabbing the latest vm and using the >> listenOn: code with an exception handler. Connecting to your machine in a >> loop seems to be a backwards way to look for an unused port. >> >> >> >> Jon >> >> >> >> *From: *Mark Volkmann >> *Date: *Thursday, October 24, 2024 at 8:01?PM >> *To: *Discussion of Cuis Smalltalk >> *Cc: *Jon Raiford , Gerald Klix >> *Subject: *Re: [Cuis-dev] finding an open port >> >> I landed on a solution that seems to work fine. Does this seem reasonable? >> >> >> >> When I pass this 3000 and port 3000 is in use, it returns 3001. >> >> >> >> openPortFrom: aNumber >> | hostAddress port socket | >> >> hostAddress := NetNameResolver addressForName: 'localhost'. >> port := aNumber. >> socket := Socket newTCP. >> >> [ true ] whileTrue: [ >> [ >> >> socket connectTo: hostAddress port: port >> waitForConnectionFor: 1. >> >> socket disconnect. >> >> port := port + 1. >> >> ] on: ConnectionTimedOut do: [ :ex | ^ port ]. >> >> ]. >> >> >> >> On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev < >> cuis-dev at lists.cuis.st> wrote: >> >> For what it?s worth, the way I looked at his code was that the ?listenOn: >> port? should have thrown an RTE as the OS knows immediately that the port >> is not available. Of course Mark?s code below doesn?t handle errors there, >> but that would have been resolved during debugging. Whether or not the rest >> of the code is sane is another matter entirely ?. >> >> >> >> Jon >> >> >> >> *From: *Cuis-dev on behalf of Gerald >> Klix via Cuis-dev >> *Date: *Thursday, October 24, 2024 at 12:25?PM >> *To: *cuis-dev at lists.cuis.st >> *Cc: *Gerald Klix >> *Subject: *Re: [Cuis-dev] finding an open port >> >> Dear Mark, >> >> why in name of Alan (Perlis) do you expect a connection to your newly >> created server socket pop out of nowhere? >> >> Increase the time out to 60 in `connected := socket >> waitForConnectionFor: 1 ifTimedOut: [ false ].`, >> send the #openPortFrom: message to your object. >> >> Switch to Terminal window, and start telnet like this >> `telnet 127.0.0.1 3000` and marvel at the results. >> >> Sorry for my harsh words: This issue has nothing to do with Cuis, >> but a lot with socket, bind and listen. >> >> See man 2 bind, man 2 listen >> >> >> Just my 0,01?, >> >> Gerald >> >> >> >> On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: >>> I wrote the following code to take a port number and return the first >> port >>> starting from that number that is open. For example, if ports 3000 and >> 3001 >>> are in use and I send "MyClass openPortFrom: 3000" then I expect it to >>> return 3002. Can you spot why this never finds an open port and loops >>> forever? >>> >>> openPortFrom: aNumber >>> | connected port socket | >>> >>> connected := false. >>> port := aNumber. >>> >>> [ connected ] whileFalse: [ >>> 'trying port {1}' format: { port } :: print. >>> socket := Socket newTCP. >>> socket listenOn: port. >>> connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. >>> connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. >>> ]. >>> >>> ^port. >>> >>> >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> >> >> >> >> -- >> >> R. Mark Volkmann >> >> Object Computing, Inc. >> > > From marianomontone at gmail.com Sat Oct 26 07:42:01 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Sat, 26 Oct 2024 11:42:01 -0300 Subject: [Cuis-dev] Alan Kay now live @ Splash conference In-Reply-To: <1454-67193780-d3-761f4080@212092150> References: <1454-67193780-d3-761f4080@212092150> Message-ID: <103e9c93-889f-4213-83b7-662b91feff73@gmail.com> Thanks. I'm gonna watch. Also Gilad. El 23/10/24 a las 14:51, juan at cuis.st via Cuis-dev escribi?: > Don't miss it! > > https://www.youtube.com/watch?v=_VF3pISRYRc > > Cheers, > Juan Vuletich > From r.mark.volkmann at gmail.com Sat Oct 26 14:37:14 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sat, 26 Oct 2024 16:37:14 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: SUCCESS! Many thanks to Jon Raiford for supplying lots of tips that eventually resulted in me being able to access a SQLite database from Cuis Smalltalk! I have documented everything I learned about this at https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/. I welcome any corrections and suggested improvements. In particular, see the part near the beginning that describes a minor change that is required in the ODBCResultSet fetchRow method. I am using the Cuis rolling release. It's possible that this change is not needed when using the stable release. On Thu, Oct 24, 2024 at 12:46?PM Mark Volkmann wrote: > Thanks so much for looking into this! When I run that command I get the > following: > > /usr/local/lib/libodbc.dylib: > /usr/local/opt/unixodbc/lib/libodbc.2.dylib (compatibility version > 3.0.0, current version 3.0.0) > /usr/local/opt/libtool/lib/libltdl.7.dylib (compatibility version > 11.0.0, current version 11.2.0) > /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current > version 7.0.0) > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current > version 1336.0.0) > > On Thu, Oct 24, 2024 at 12:19?PM Jon Raiford wrote: > >> I had a quick look at this on my M1 MBP. >> >> >> >> I did the following: >> >> * git clone Cuis-Smalltalk-Dev >> >> * git clone Cuis DatabaseSupport >> >> * modified the launch script as you described below >> >> * run the script: ./RunCuisOnMacTerminal.sh >> >> * open a workspace >> >> * doIt: Feature require: ?ODBC? >> >> * printIt: ODBCConnection new sqlAllocEnv => a SQLHENV . >> >> >> >> If I remove the DYLD_LIBRARY_PATH from the launch script then I get the >> module not found error. >> >> >> >> Based on your info below, your homebrew lib path is /usr/local/lib and >> libodbc.dylib exists in the directory, which is the moduleName defined in >> ODBCLibrary class>>moduleName. >> >> >> >> That all looks correct. >> >> >> >> What do you get if you run this from the command line? >> >> % otool -L /usr/local/lib/libodbc.dylib >> >> >> >> >> >> Jon >> >> >> >> *From: *Mark Volkmann >> *Date: *Tuesday, October 22, 2024 at 7:32?PM >> *To: *Jon Raiford >> *Cc: *Discussion of Cuis Smalltalk >> *Subject: *Re: [Cuis-dev] ODBC error >> >> See my replies inline below. >> >> >> >> On Tue, Oct 22, 2024 at 3:56?PM Jon Raiford wrote: >> >> What exactly do you mean by not working? Is it not able to open the >> shared library? Or it is not able to connect to a database? The first thing >> that happens is allocating the environment by either calling >> SQLAllocHandle() (current versions of ODBC) or SQLAllocEnv() (old versions >> of ODBC). >> >> >> >> I'll describe what I have tried below, but I'm not claiming that I have >> finished investigating this. It's just my progress so far. >> >> >> >> 1. Run the Homebrew command "brew install unixodbc" to install the ODBC >> dynamic library. >> >> >> >> That gives me the following files in /usr/local/lib: >> >> >> >> libodbc.2.dylib >> libodbc.a >> libodbc.dylib >> libodbccr.2.dylib >> libodbccr.a >> libodbccr.dylib >> libodbcinst.2.dylib >> libodbcinst.a >> libodbcinst.dylib >> >> >> >> 2. Run the command "brew install sqliteodbc" to install the >> SQLite-specific shared library. >> >> >> >> That gives me the file /usr/local/lib/libsqlite3odbc.dylib >> >> I'm not certain I need this file, but I reference it below. >> >> >> >> 3. Create the file /usr/local/etc/odbc.ini containing the following which >> refers to a dynamic library that exists and SQLite database file that >> exists. >> >> [TodoDSN] >> Description = SQLite ODBC Driver >> Driver = /usr/local/lib/libsqlite3odbc.dylib >> Database = /Users/volkmannm/Documents/dev/lang/smalltalk/Cuis-Smalltalk-Dev-UserFiles/todos.db >> Timeout = 2000 >> >> 4. Clone the GitHub repository at >> https://github.com/Cuis-Smalltalk/DatabaseSupport.git into the same >> directory that holds the Cuis-Smalltalk-Dev directory. >> >> >> >> 5. Change the file RunCuisOnMacTerminal.sh to the following: >> >> >> >> export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:${DYLD_LIBRARY_PATH}" >> >> ./CuisVM.app/Contents/MacOS/Squeak CuisImage/Cuis?.?-????.image -u >> >> >> >> 5. Run that script. >> >> >> >> 6. Open a "File List", navigate to the DatabaseSupport directory, select >> ODBC.pck.st, and click "install package". >> >> >> >> 7. Open a Workspace and evaluate the following: >> >> conn := ODBCConnection dsn: 'TodoDSN' user: '' password: ''. >> >> This gives the error "External module not found". See the attached >> screenshot. >> >> >> >> I don?t have an easy way to test that old ODBC code at the moment, but it >> should be easy enough to find the library class. It is a subclass of >> ExternalLibrary. From there you can find the alloc call and walk back >> through senders to figure out how it is called. From there you can see the >> order things are called. >> >> >> >> I only see one subclass of ExternalLibrary and it is ODBCLibrary. I think >> the alloc call you are referring to is the one in the attached screenshot, >> but I haven't been able to determine which external module it can't find. >> The line that fails is: >> >> >> >> >> >> >> >> One annoying thing to note is that you cannot use the debugger to step >> through an FFI call. It will always say there is an invalid module or >> something like that. I?ve spoken to Eliot about this and we should be able >> to get it fixed at some point. But for now just put a self halt after the >> call and then look at the return code. >> >> >> >> Arranging a call would be difficult at the moment. I?m already burning >> the candle at both ends so not much time unfortunately. >> >> >> >> I understand. >> >> >> >> -- >> >> R. Mark Volkmann >> >> Object Computing, Inc. >> > > > -- > R. Mark Volkmann > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From martin at hand2mouse.com Sat Oct 26 20:15:42 2024 From: martin at hand2mouse.com (Martin McClure) Date: Sat, 26 Oct 2024 20:15:42 -0700 Subject: [Cuis-dev] finding an open port In-Reply-To: References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> Message-ID: <7e208309-716d-415e-ae65-801c182d55dd@hand2mouse.com> If you're just listening on an unused port for a test case, what would usually be done is to let the OS pick an open port for you. This is known as an ephemeral port or a sometimes a wildcard port. I don't know exactly how to do this in Cuis, but hopefully the VM used by Cuis allows you to do this. Typical APIs let you specify an ephemeral port by specifying 0 as the port number, and then provide some way to find what port number the system decided to use. Regards, -Martin On 10/25/24 06:35, Mark Volkmann via Cuis-dev wrote: > I should have explained my use case. I'm using this in the setUp > method for an SUnit test. It tests the endpoints of a web server. > Previously the setUp method always started the server on a specific > port. If that port was in use then the tests would fail. Now it always > finds an?available port and the tests pass regardless of whether > specific?ports are in use. If anyone is curious, you can see the code > for the setUp and tearDown methods here: > https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus/blob/3eea948bc803aad814cc18932d7c57d45188b031/WebClientPlus.pck.st#L101 > > On Fri, Oct 25, 2024 at 8:30?AM Jon Raiford wrote: > > I think you are much better off grabbing the latest vm and using > the listenOn: code with an exception handler. Connecting to your > machine in a loop seems to be a backwards way to look for an > unused port. > > Jon > > *From: *Mark Volkmann > *Date: *Thursday, October 24, 2024 at 8:01?PM > *To: *Discussion of Cuis Smalltalk > *Cc: *Jon Raiford , Gerald Klix > *Subject: *Re: [Cuis-dev] finding an open port > > I landed on a solution that seems to work fine. Does this seem > reasonable? > > When I pass this 3000 and port 3000 is in use, it returns 3001. > > openPortFrom: aNumber > ? ? | hostAddress port socket | > > hostAddress := NetNameResolver addressForName: 'localhost'. > port := aNumber. > socket := Socket newTCP. > > [ true ] whileTrue: [ > [ > > socket connectTo: hostAddress port: port waitForConnectionFor: 1. > > socket disconnect. > > port := port + 1. > > ] on: ConnectionTimedOut do: [ :ex | ^ port ]. > > ]. > > On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev > wrote: > > For what it?s worth, the way I looked at his code was that the > ?listenOn: port? should have thrown an RTE as the OS knows > immediately that the port is not available. Of course Mark?s > code below doesn?t handle errors there, but that would have > been resolved during debugging. Whether or not the rest of the > code is sane is another matter entirely ?. > > Jon > > *From: *Cuis-dev on behalf of > Gerald Klix via Cuis-dev > *Date: *Thursday, October 24, 2024 at 12:25?PM > *To: *cuis-dev at lists.cuis.st > *Cc: *Gerald Klix > *Subject: *Re: [Cuis-dev] finding an open port > > Dear Mark, > > why in name of Alan (Perlis) do you expect a connection to > your newly > created server socket pop out of nowhere? > > Increase the time out to 60 in `connected := socket > waitForConnectionFor: 1 ifTimedOut: [ false ].`, > send the #openPortFrom: message to your object. > > Switch to Terminal window, and start telnet like this > `telnet 127.0.0.1 3000` and marvel at the > results. > > Sorry for my harsh words: This issue has nothing to do with Cuis, > but a lot with socket, bind and listen. > > See man 2 bind, man 2 listen > > > Just my 0,01?, > > Gerald > > > > On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: > > I wrote the following code to take a port number and return > the first port > > starting from that number that is open. For example, if > ports 3000 and 3001 > > are in use and I send "MyClass openPortFrom: 3000" then I > expect it to > > return 3002. Can you spot why this never finds an open port > and loops > > forever? > > > > openPortFrom: aNumber > > | connected port socket | > > > > connected := false. > > port := aNumber. > > > > [ connected ] whileFalse: [ > > 'trying port {1}' format: { port } :: print. > > socket := Socket newTCP. > > socket listenOn: port. > > connected := socket waitForConnectionFor: 1 ifTimedOut: [ > false ]. > > connected ifTrue: [socket disconnect] ifFalse: [ port := > port + 1 ]. > > ]. > > > > ^port. > > > > > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > > > -- > > R. Mark Volkmann > > Object Computing, Inc. > > > > -- > R. Mark Volkmann > Object Computing, Inc. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Sun Oct 27 06:18:21 2024 From: raiford at labware.com (Jon Raiford) Date: Sun, 27 Oct 2024 13:18:21 +0000 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: I?m glad we were able to get it working. One last thing about the change to the ODBC package. Replacing ?ODBCRow new: columns size? with just ?ODBCRow new? should work both in the stable release and the current dev rolling release. I would suggest making the change, saving the package, and creating a pull request to fix the issue at the source. By the way, I did the same with the launch script and it was merged. Cuis will now work with the Homebrew lib directory by default. Jon From: Mark Volkmann Date: Saturday, October 26, 2024 at 5:38?PM To: Jon Raiford Cc: Discussion of Cuis Smalltalk Subject: Re: [Cuis-dev] ODBC error SUCCESS! Many thanks to Jon Raiford for supplying lots of tips that eventually resulted in me being able to access a SQLite database from Cuis Smalltalk! I have documented everything I learned about this at https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/. I welcome any corrections and suggested improvements. In particular, see the part near the beginning that describes a minor change that is required in the ODBCResultSet fetchRow method. I am using the Cuis rolling release. It's possible that this change is not needed when using the stable release. On Thu, Oct 24, 2024 at 12:46?PM Mark Volkmann > wrote: Thanks so much for looking into this! When I run that command I get the following: /usr/local/lib/libodbc.dylib: /usr/local/opt/unixodbc/lib/libodbc.2.dylib (compatibility version 3.0.0, current version 3.0.0) /usr/local/opt/libtool/lib/libltdl.7.dylib (compatibility version 11.0.0, current version 11.2.0) /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.0.0) On Thu, Oct 24, 2024 at 12:19?PM Jon Raiford > wrote: I had a quick look at this on my M1 MBP. I did the following: * git clone Cuis-Smalltalk-Dev * git clone Cuis DatabaseSupport * modified the launch script as you described below * run the script: ./RunCuisOnMacTerminal.sh * open a workspace * doIt: Feature require: ?ODBC? * printIt: ODBCConnection new sqlAllocEnv => a SQLHENV . If I remove the DYLD_LIBRARY_PATH from the launch script then I get the module not found error. Based on your info below, your homebrew lib path is /usr/local/lib and libodbc.dylib exists in the directory, which is the moduleName defined in ODBCLibrary class>>moduleName. That all looks correct. What do you get if you run this from the command line? % otool -L /usr/local/lib/libodbc.dylib Jon From: Mark Volkmann > Date: Tuesday, October 22, 2024 at 7:32?PM To: Jon Raiford > Cc: Discussion of Cuis Smalltalk > Subject: Re: [Cuis-dev] ODBC error See my replies inline below. On Tue, Oct 22, 2024 at 3:56?PM Jon Raiford > wrote: What exactly do you mean by not working? Is it not able to open the shared library? Or it is not able to connect to a database? The first thing that happens is allocating the environment by either calling SQLAllocHandle() (current versions of ODBC) or SQLAllocEnv() (old versions of ODBC). I'll describe what I have tried below, but I'm not claiming that I have finished investigating this. It's just my progress so far. 1. Run the Homebrew command "brew install unixodbc" to install the ODBC dynamic library. That gives me the following files in /usr/local/lib: libodbc.2.dylib libodbc.a libodbc.dylib libodbccr.2.dylib libodbccr.a libodbccr.dylib libodbcinst.2.dylib libodbcinst.a libodbcinst.dylib 2. Run the command "brew install sqliteodbc" to install the SQLite-specific shared library. That gives me the file /usr/local/lib/libsqlite3odbc.dylib I'm not certain I need this file, but I reference it below. 3. Create the file /usr/local/etc/odbc.ini containing the following which refers to a dynamic library that exists and SQLite database file that exists. [TodoDSN] Description = SQLite ODBC Driver Driver = /usr/local/lib/libsqlite3odbc.dylib Database = /Users/volkmannm/Documents/dev/lang/smalltalk/Cuis-Smalltalk-Dev-UserFiles/todos.db Timeout = 2000 4. Clone the GitHub repository at https://github.com/Cuis-Smalltalk/DatabaseSupport.git into the same directory that holds the Cuis-Smalltalk-Dev directory. 5. Change the file RunCuisOnMacTerminal.sh to the following: export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:${DYLD_LIBRARY_PATH}" ./CuisVM.app/Contents/MacOS/Squeak CuisImage/Cuis?.?-????.image -u 5. Run that script. 6. Open a "File List", navigate to the DatabaseSupport directory, select ODBC.pck.st, and click "install package". 7. Open a Workspace and evaluate the following: conn := ODBCConnection dsn: 'TodoDSN' user: '' password: ''. This gives the error "External module not found". See the attached screenshot. I don?t have an easy way to test that old ODBC code at the moment, but it should be easy enough to find the library class. It is a subclass of ExternalLibrary. From there you can find the alloc call and walk back through senders to figure out how it is called. From there you can see the order things are called. I only see one subclass of ExternalLibrary and it is ODBCLibrary. I think the alloc call you are referring to is the one in the attached screenshot, but I haven't been able to determine which external module it can't find. The line that fails is: One annoying thing to note is that you cannot use the debugger to step through an FFI call. It will always say there is an invalid module or something like that. I?ve spoken to Eliot about this and we should be able to get it fixed at some point. But for now just put a self halt after the call and then look at the return code. Arranging a call would be difficult at the moment. I?m already burning the candle at both ends so not much time unfortunately. I understand. -- R. Mark Volkmann Object Computing, Inc. -- R. Mark Volkmann Object Computing, Inc. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From info at uksmalltalk.org Sun Oct 27 16:24:50 2024 From: info at uksmalltalk.org (UK Smalltalk) Date: Sun, 27 Oct 2024 23:24:50 +0000 Subject: [Cuis-dev] =?utf-8?q?UKSTUG_meeting_-_Mariano_Guerra_/_Tudor_G?= =?utf-8?q?=C3=AErba=3A_-_Wed_30_October_2024_=40_7pm_GMT?= Message-ID: Join us for an engaging session on the latest in Generative AI and Large Language Models (LLMs), featuring two insightful presentations. *Introduction to Large Language Models and Gloodata* *Speaker: Mariano Guerra* Mariano will walk us through the fundamentals of LLMs and provide a behind-the-scenes look at building the Gloodata application. *A Unique Perspective on LLMs* *Speaker: Tudor Girba* Tudor will offer a distinct view on LLMs, showcasing demos based on GT that highlight their innovative approach. This will be an online meeting from home. If you'd like to join us, please sign up in advance on the meeting's Meetup page ( https://www.meetup.com/ukstug/events/303944944 ) to receive the meeting details. Don?t forget to bring your laptop and drinks! [1] http://gloodata.com [2] https://feenk.com PS: we have uploaded the videos for past presentations today. Christian Haider on Values -- https://vimeo.com/ukstug/values Javier Pimas on Live Metacircular Runtimes -- https://vimeo.com/ukstug/pocho David Buck on Beagle Smalltalk -- https://vimeo.com/ukstug/beagle -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Sun Oct 27 18:35:32 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Sun, 27 Oct 2024 20:35:32 -0500 Subject: [Cuis-dev] DatabaseSupport pull request Message-ID: Here's a pull request to fix an issue in the ODBCResultSet fetchRow method that was discussed in my journey to get ODBC working. It's a very simple change. https://github.com/Cuis-Smalltalk/DatabaseSupport/pull/1/files -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 28 06:55:38 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 28 Oct 2024 09:55:38 -0400 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> Message-ID: <671F97DA.8020406@cuis.st> Hi Mark, On 10/26/2024 5:37 PM, Mark Volkmann via Cuis-dev wrote: > SUCCESS! Many thanks to Jon Raiford for supplying lots of tips that > eventually resulted in me being able to access a SQLite database from > Cuis Smalltalk! Great! > > I have documented everything I learned about this at > https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/. > I welcome any corrections and suggested improvements. > > In particular, see the part near the beginning that describes a minor > change that is requiredin the |ODBCResultSet||fetchRow|method. > I am using the Cuis rolling release. It's possible that this change is > not needed when using the stable release. I've just merged your pull request to correct that method. Thanks. Some comments to your notes in the link above: 1) At https://github.com/Cuis-Smalltalk/DatabaseSupport, the file is correctly named ODBC.pck.st . Something weird on your local copy. 2) It loads correctly if you do `Feature require: 'ODBC'`. 3) The error of calling ODBCRow >> #new: is now corrected, after merging your pull request. Your notes look really helpful. Would you please add them to the README.md in DatabaseSupport repo, and do another pull request? In that way they will be easier to find by other people. > > -- > R. Mark Volkmann > Object Computing, Inc. Thanks, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 28 06:56:13 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 28 Oct 2024 09:56:13 -0400 Subject: [Cuis-dev] DatabaseSupport pull request In-Reply-To: References: Message-ID: <671F97FD.4060701@cuis.st> On 10/27/2024 9:35 PM, Mark Volkmann via Cuis-dev wrote: > Here's a pull request to fix an issue in the ODBCResultSet fetchRow > method that was discussed in my journey to get ODBC working. It's a > very simple change. > > https://github.com/Cuis-Smalltalk/DatabaseSupport/pull/1/files > > -- > R. Mark Volkmann > Object Computing, Inc. Merged. Thanks! -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 28 07:06:55 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 28 Oct 2024 10:06:55 -0400 Subject: [Cuis-dev] possible Socket method comment out of date In-Reply-To: References: Message-ID: <671F9A7F.4050502@cuis.st> On 10/23/2024 8:13 PM, Mark Volkmann via Cuis-dev wrote: > The comment in the listenOn: method of the Socket class says > "Listen for a connection on the given port. This operation will return > immediately; follow it with waitForConnectionUntil: to wait until a > connection is established." > But it seems a waitForConnectionUtil: method doesn't exist. Perhaps > that should be changed to waitForConnectionFor:. > > -- > R. Mark Volkmann > Object Computing, Inc. That method was added recently, as part of the update of the Network Package to Squeak 7.0-22148, work done by John McIntosh. Thanks John! Cheers, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From hernan.wilkinson at 10pines.com Mon Oct 28 08:15:10 2024 From: hernan.wilkinson at 10pines.com (=?UTF-8?Q?Hern=C3=A1n_Wilkinson?=) Date: Mon, 28 Oct 2024 12:15:10 -0300 Subject: [Cuis-dev] Small fix Message-ID: Hi, attached is a cs that removes an used var from Editor>>#wordRangeIncluding: Cheers Hernan. -- *Hern?n WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54-011*-4893-2057 *Twitter: @HernanWilkinson* *site: http://www.10Pines.com * Address: Alem 896, Floor 6, Buenos Aires, Argentina -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 6793-RemoveUnusedVarFromwordRangeIncluding-HernanWilkinson-2024Oct28-12h13m-HAW.001.cs.st Type: application/octet-stream Size: 1237 bytes Desc: not available URL: From vigabf at gmail.com Mon Oct 28 12:06:05 2024 From: vigabf at gmail.com (Victor Gabriel Fierro) Date: Mon, 28 Oct 2024 16:06:05 -0300 Subject: [Cuis-dev] Addition of buttons to the Code File Browser class list menu Message-ID: Hello again! I'm Gabriel, and I have a new contribution to make to Cuis. Last week I sent changes to the Code File Browser to show classes hierarchically. After playing with the new version a bit I realized that the Code File Browser lacked the buttons to alternate between alphabetical and hierarchical class organization when you right clicked on them, so I added them. While doing so I noticed that it also lacked a button to open a Change List Window to browse through the changes of the code of the file, so I added too and implemented the functionality. I hope that you find these additions useful! Have a nice day! -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 6794-CuisCore-GabrielFierro-2024Oct28-15h30m-VGF.001.cs.st Type: application/octet-stream Size: 4908 bytes Desc: not available URL: From r.mark.volkmann at gmail.com Mon Oct 28 16:48:25 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Mon, 28 Oct 2024 18:48:25 -0500 Subject: [Cuis-dev] ODBC error In-Reply-To: <671F97DA.8020406@cuis.st> References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> <671F97DA.8020406@cuis.st> Message-ID: I updated my blog page on database support in Cuis Smalltalk with new information from Juan. I also created a pull request that adds that content to the README.md file in the DatabaseSupport repository. See https://github.com/Cuis-Smalltalk/DatabaseSupport/pull/2. Feel free to modify the README however you see fit. On Mon, Oct 28, 2024 at 8:55?AM Juan Vuletich wrote: > Hi Mark, > > On 10/26/2024 5:37 PM, Mark Volkmann via Cuis-dev wrote: > > SUCCESS! Many thanks to Jon Raiford for supplying lots of tips that > eventually resulted in me being able to access a SQLite database from Cuis > Smalltalk! > > > Great! > > > I have documented everything I learned about this at > https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/50-databases/. > I welcome any corrections and suggested improvements. > > In particular, see the part near the beginning that describes a minor > change that is required in the ODBCResultSet fetchRow method. > I am using the Cuis rolling release. It's possible that this change is not > needed when using the stable release. > > > I've just merged your pull request to correct that method. Thanks. > > Some comments to your notes in the link above: > > 1) At https://github.com/Cuis-Smalltalk/DatabaseSupport, the file is > correctly named ODBC.pck.st . Something weird on your local copy. > 2) It loads correctly if you do `Feature require: 'ODBC'`. > 3) The error of calling ODBCRow >> #new: is now corrected, after merging > your pull request. > > Your notes look really helpful. Would you please add them to the README.md > in DatabaseSupport repo, and do another pull request? In that way they will > be easier to find by other people. > > > -- > R. Mark Volkmann > Object Computing, Inc. > > > Thanks, > > -- > Juan Vuletichcuis.stgithub.com/jvuletichresearchgate.net/profile/Juan-Vuletichindependent.academia.edu/JuanVuletichpatents.justia.com/inventor/juan-manuel-vuletichlinkedin.com/in/juan-vuletich-75611b3twitter.com/JuanVuletich > > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Mon Oct 28 16:54:44 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Mon, 28 Oct 2024 18:54:44 -0500 Subject: [Cuis-dev] handling message "There is a newer version that currently loaded" Message-ID: When installing updates made in the Cuis-Smalltalk-Dev repository, it sometimes outputs messages in the Transcript that say "Package: SomeName. There is a newer version than the currently loaded." It seems that I need to open an "Installed Packages" window, delete the package, and then reinstall it with "Feature require: SomeName". Is it correct that I must delete the package before I can install an updated version? And a very minor point ... the message would be more grammatically correct if the word "the" was removed. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 28 17:53:15 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 28 Oct 2024 20:53:15 -0400 Subject: [Cuis-dev] handling message "There is a newer version that currently loaded" In-Reply-To: References: Message-ID: <672031FB.8090201@cuis.st> Hi Mark, On 10/28/2024 7:54 PM, Mark Volkmann via Cuis-dev wrote: > When installing updates made in the Cuis-Smalltalk-Dev repository, it > sometimes outputs messages in the Transcript that say "Package: > SomeName. There is a newer version than the currently loaded." > > It seems that I need to open an "Installed Packages" window, delete > the package, and then reinstall it with "Feature require: SomeName". > Is it correct that I must delete the package before I can install an > updated version? No, just reinstall it. That's all. > > And a very minor point ... the message would be more grammatically > correct if the word "the" was removed. Thanks. Just pushed a fix for this. > > -- > R. Mark Volkmann > Object Computing, Inc. Cheers, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 28 17:54:21 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 28 Oct 2024 20:54:21 -0400 Subject: [Cuis-dev] ODBC error In-Reply-To: References: <91882DE2-53C2-449C-AB0C-975D355AD56A@gmail.com> <671588BF.6050904@cuis.st> <5c5148bd-79ab-4a77-8b87-17069a222e7a@free.fr> <671F97DA.8020406@cuis.st> Message-ID: <6720323D.8090703@cuis.st> On 10/28/2024 7:48 PM, Mark Volkmann via Cuis-dev wrote: > I updated my blog page on database support in Cuis Smalltalk with new > information from Juan. > I also created a pull request that adds that content to the README.md > file in the DatabaseSupport repository. > See https://github.com/Cuis-Smalltalk/DatabaseSupport/pull/2. > Feel free to modify the README however you see fit. > > -- > R. Mark Volkmann > Object Computing, Inc. This is very nice. Thank you. I'm sure it will be really helpful for those following your and Jon's steps! Cheers, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Mon Oct 28 17:54:42 2024 From: juan at cuis.st (Juan Vuletich) Date: Mon, 28 Oct 2024 20:54:42 -0400 Subject: [Cuis-dev] Small fix In-Reply-To: References: Message-ID: <67203252.8000106@cuis.st> On 10/28/2024 11:15 AM, Hern?n Wilkinson via Cuis-dev wrote: > Hi, > attached is a cs that removes an used var from > Editor>>#wordRangeIncluding: > > Cheers > Hernan. > > -- > *Hern?n Wilkinson > Agile Software Development, Teaching & Coaching* > *Phone: +54-011*-4893-2057 > *Twitter: @HernanWilkinson* > *site: http://www.10Pines.com * > Address: Alem 896, Floor 6, Buenos Aires, Argentina Integrated. Thanks, -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Mon Oct 28 18:36:11 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Mon, 28 Oct 2024 20:36:11 -0500 Subject: [Cuis-dev] possible issue in Network-Kernel package Message-ID: After pulling the latest on Cuis-Smalltalk-Dev, launching the base image, and selecting "Changes ... Install New Updates" from the World menu, I'm getting an error that says "Unsupported scheme: http" when I run the unit tests in my WebClientPlus package. I haven't been able to track down the cause yet, but I can explain how to reproduce it. 1. git clone https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus.git 2. Start the base image Cuis7.1-6770.image. 3. Do not "Install New Updates". 4. Evaluate "Feature require: 'WebClientPlus'." in a Workspace. 5. Open an SUnit Test Runner window. 6. Select "DogWebServerTests" and click the Run button. 7. Note that all the tests pass. 8. Open the World menu and select "Changes ... Install New Updates". 9. Run the tests again and note that they all fail with the error "Unsupported scheme: http:" I'll keep trying to track this down, but I wanted to share this in case someone recognizes this error and knows how to fix it. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Mon Oct 28 18:40:39 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Mon, 28 Oct 2024 20:40:39 -0500 Subject: [Cuis-dev] possible issue in Network-Kernel package In-Reply-To: References: Message-ID: The error comes from the WebClient method initializeFromUrl. That method checks that the value of the scheme variable is either 'http' or 'https'. But the value is 'http:' with a colon. Perhaps something changed with the way the scheme is extracted from URLs. I'll keep digging. On Mon, Oct 28, 2024 at 8:36?PM Mark Volkmann wrote: > After pulling the latest on Cuis-Smalltalk-Dev, launching the base image, > and selecting "Changes ... Install New Updates" from the World menu, I'm > getting an error that says "Unsupported scheme: http" when I run the unit > tests in my WebClientPlus package. I haven't been able to track down the > cause yet, but I can explain how to reproduce it. > > 1. git clone https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus.git > 2. Start the base image Cuis7.1-6770.image. > 3. Do not "Install New Updates". > 4. Evaluate "Feature require: 'WebClientPlus'." in a Workspace. > 5. Open an SUnit Test Runner window. > 6. Select "DogWebServerTests" and click the Run button. > 7. Note that all the tests pass. > 8. Open the World menu and select "Changes ... Install New Updates". > 9. Run the tests again and note that they all fail with the error > "Unsupported scheme: http:" > > I'll keep trying to track this down, but I wanted to share this in case > someone recognizes this error and knows how to fix it. > > -- > R. Mark Volkmann > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Mon Oct 28 18:52:37 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Mon, 28 Oct 2024 20:52:37 -0500 Subject: [Cuis-dev] possible issue in Network-Kernel package In-Reply-To: References: Message-ID: The error seems to be in this code: (scheme = 'http' or:[scheme = 'https']) ifFalse:[self error: 'Unsupported scheme: ', scheme]. If I comment that out, all the tests pass again. The scheme variable is set with this line: scheme := (urlStream upToAll: '://') asLowercase. I wonder if the upToAll: method changed recently. I see that there have been several commits to the Network-Kernel package recently. The WebClient package also implements the upToAll: method. On Mon, Oct 28, 2024 at 8:40?PM Mark Volkmann wrote: > The error comes from the WebClient method initializeFromUrl. > That method checks that the value of the scheme variable is either 'http' > or 'https'. > But the value is 'http:' with a colon. > Perhaps something changed with the way the scheme is extracted from URLs. > I'll keep digging. > > On Mon, Oct 28, 2024 at 8:36?PM Mark Volkmann > wrote: > >> After pulling the latest on Cuis-Smalltalk-Dev, launching the base image, >> and selecting "Changes ... Install New Updates" from the World menu, I'm >> getting an error that says "Unsupported scheme: http" when I run the unit >> tests in my WebClientPlus package. I haven't been able to track down the >> cause yet, but I can explain how to reproduce it. >> >> 1. git clone >> https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus.git >> 2. Start the base image Cuis7.1-6770.image. >> 3. Do not "Install New Updates". >> 4. Evaluate "Feature require: 'WebClientPlus'." in a Workspace. >> 5. Open an SUnit Test Runner window. >> 6. Select "DogWebServerTests" and click the Run button. >> 7. Note that all the tests pass. >> 8. Open the World menu and select "Changes ... Install New Updates". >> 9. Run the tests again and note that they all fail with the error >> "Unsupported scheme: http:" >> >> I'll keep trying to track this down, but I wanted to share this in case >> someone recognizes this error and knows how to fix it. >> >> -- >> R. Mark Volkmann >> Object Computing, Inc. >> > > > -- > R. Mark Volkmann > Object Computing, Inc. > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From juan at cuis.st Tue Oct 29 03:44:54 2024 From: juan at cuis.st (Juan Vuletich) Date: Tue, 29 Oct 2024 06:44:54 -0400 Subject: [Cuis-dev] possible issue in Network-Kernel package In-Reply-To: References: Message-ID: <6720BCA6.6010903@cuis.st> Hi Mark, It was me last night. While fixing #matchStart: I broke #upToall:. Thank you very much for tracking it down! You pointed exactly to the source of the problem. That made it easy to fix. I just pushed a fix to GitHub, together with a test. Apologies for the inconvenience. On 10/28/2024 9:52 PM, Mark Volkmann via Cuis-dev wrote: > The error seems to be in this code: > > (scheme = 'http' or:[scheme = 'https']) > ifFalse:[self error: 'Unsupported scheme: ', scheme]. > > If I comment that out, all the tests pass again. > > The scheme variable is set with this line: > > scheme := (urlStream upToAll: '://') asLowercase. > > I wonder if the upToAll: method changed recently. > I see that there have been several commits to the Network-Kernel > package recently. > The WebClient package also implements the upToAll: method. > > On Mon, Oct 28, 2024 at 8:40?PM Mark Volkmann > > wrote: > > The error comes from the WebClient method initializeFromUrl. > That method checks that the value of the scheme variable is either > 'http' or 'https'. > But the value is 'http:' with a colon. > Perhaps something changed with the way the scheme is extracted > from URLs. > I'll keep digging. > > On Mon, Oct 28, 2024 at 8:36?PM Mark Volkmann > > wrote: > > After pulling the latest on Cuis-Smalltalk-Dev, launching the > base image, and selecting "Changes ... Install New Updates" > from the World menu, I'm getting an error that says > "Unsupported scheme: http" when I run the unit tests in my > WebClientPlus package. I haven't been able to track down the > cause yet, but I can explain how to reproduce it. > > 1. git clone > https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus.git > 2. Start the base image Cuis7.1-6770.image. > 3. Do not "Install New Updates". > 4. Evaluate "Feature require: 'WebClientPlus'." in a Workspace. > 5. Open an SUnit Test Runner window. > 6. Select "DogWebServerTests" and click the Run button. > 7. Note that all the tests pass. > 8. Open the World menu and select "Changes ... Install New > Updates". > 9. Run the tests again and note that they all fail with the > error "Unsupported scheme: http:" > > I'll keep trying to track this down, but I wanted to share > this in case someone recognizes this error and knows how to > fix it. > > -- > R. Mark Volkmann > Object Computing, Inc. > > > > -- > R. Mark Volkmann > Object Computing, Inc. > > > > -- > R. Mark Volkmann > Object Computing, Inc. -- Juan Vuletich cuis.st github.com/jvuletich researchgate.net/profile/Juan-Vuletich independent.academia.edu/JuanVuletich patents.justia.com/inventor/juan-manuel-vuletich linkedin.com/in/juan-vuletich-75611b3 twitter.com/JuanVuletich -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Tue Oct 29 06:17:40 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 29 Oct 2024 08:17:40 -0500 Subject: [Cuis-dev] finding an open port In-Reply-To: <7e208309-716d-415e-ae65-801c182d55dd@hand2mouse.com> References: <7590cf31-a653-ce40-75c7-c6b762ab0734@klix.ch> <7e208309-716d-415e-ae65-801c182d55dd@hand2mouse.com> Message-ID: Martin, that was an excellent suggestion! The WebServerPlus class in my WebClientPlus package at https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus now has this class method which does exactly what I need. openPort "Answer an open port number" | port socket | socket := Socket newTCP. socket listenOn: 0. "gets an ephemeral port" port := socket localPort. socket close. ^port. On Sat, Oct 26, 2024 at 10:15?PM Martin McClure wrote: > If you're just listening on an unused port for a test case, what would > usually be done is to let the OS pick an open port for you. This is known > as an ephemeral port or a sometimes a wildcard port. > > I don't know exactly how to do this in Cuis, but hopefully the VM used by > Cuis allows you to do this. Typical APIs let you specify an ephemeral port > by specifying 0 as the port number, and then provide some way to find what > port number the system decided to use. > > Regards, > > -Martin > On 10/25/24 06:35, Mark Volkmann via Cuis-dev wrote: > > I should have explained my use case. I'm using this in the setUp method > for an SUnit test. It tests the endpoints of a web server. Previously the > setUp method always started the server on a specific port. If that port was > in use then the tests would fail. Now it always finds an available port and > the tests pass regardless of whether specific ports are in use. If anyone > is curious, you can see the code for the setUp and tearDown methods here: > https://github.com/mvolkmann/Cuis-Smalltalk-WebClientPlus/blob/3eea948bc803aad814cc18932d7c57d45188b031/WebClientPlus.pck.st#L101 > > On Fri, Oct 25, 2024 at 8:30?AM Jon Raiford wrote: > >> I think you are much better off grabbing the latest vm and using the >> listenOn: code with an exception handler. Connecting to your machine in a >> loop seems to be a backwards way to look for an unused port. >> >> >> >> Jon >> >> >> >> *From: *Mark Volkmann >> *Date: *Thursday, October 24, 2024 at 8:01?PM >> *To: *Discussion of Cuis Smalltalk >> *Cc: *Jon Raiford , Gerald Klix >> *Subject: *Re: [Cuis-dev] finding an open port >> >> I landed on a solution that seems to work fine. Does this seem reasonable? >> >> >> >> When I pass this 3000 and port 3000 is in use, it returns 3001. >> >> >> >> openPortFrom: aNumber >> | hostAddress port socket | >> >> hostAddress := NetNameResolver addressForName: 'localhost'. >> port := aNumber. >> socket := Socket newTCP. >> >> [ true ] whileTrue: [ >> [ >> >> socket connectTo: hostAddress port: port >> waitForConnectionFor: 1. >> >> socket disconnect. >> >> port := port + 1. >> >> ] on: ConnectionTimedOut do: [ :ex | ^ port ]. >> >> ]. >> >> >> >> On Thu, Oct 24, 2024 at 11:45?AM Jon Raiford via Cuis-dev < >> cuis-dev at lists.cuis.st> wrote: >> >> For what it?s worth, the way I looked at his code was that the ?listenOn: >> port? should have thrown an RTE as the OS knows immediately that the port >> is not available. Of course Mark?s code below doesn?t handle errors there, >> but that would have been resolved during debugging. Whether or not the rest >> of the code is sane is another matter entirely ?. >> >> >> >> Jon >> >> >> >> *From: *Cuis-dev on behalf of Gerald >> Klix via Cuis-dev >> *Date: *Thursday, October 24, 2024 at 12:25?PM >> *To: *cuis-dev at lists.cuis.st >> *Cc: *Gerald Klix >> *Subject: *Re: [Cuis-dev] finding an open port >> >> Dear Mark, >> >> why in name of Alan (Perlis) do you expect a connection to your newly >> created server socket pop out of nowhere? >> >> Increase the time out to 60 in `connected := socket >> waitForConnectionFor: 1 ifTimedOut: [ false ].`, >> send the #openPortFrom: message to your object. >> >> Switch to Terminal window, and start telnet like this >> `telnet 127.0.0.1 3000` and marvel at the results. >> >> Sorry for my harsh words: This issue has nothing to do with Cuis, >> but a lot with socket, bind and listen. >> >> See man 2 bind, man 2 listen >> >> >> Just my 0,01?, >> >> Gerald >> >> >> >> On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote: >> > I wrote the following code to take a port number and return the first >> port >> > starting from that number that is open. For example, if ports 3000 and >> 3001 >> > are in use and I send "MyClass openPortFrom: 3000" then I expect it to >> > return 3002. Can you spot why this never finds an open port and loops >> > forever? >> > >> > openPortFrom: aNumber >> > | connected port socket | >> > >> > connected := false. >> > port := aNumber. >> > >> > [ connected ] whileFalse: [ >> > 'trying port {1}' format: { port } :: print. >> > socket := Socket newTCP. >> > socket listenOn: port. >> > connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ]. >> > connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ]. >> > ]. >> > >> > ^port. >> > >> > >> >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> >> -- >> Cuis-dev mailing list >> Cuis-dev at lists.cuis.st >> https://lists.cuis.st/mailman/listinfo/cuis-dev >> >> >> >> >> -- >> >> R. Mark Volkmann >> >> Object Computing, Inc. >> > > > -- > R. Mark Volkmann > Object Computing, Inc. > > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From factotum at rclayton.org Tue Oct 29 10:40:29 2024 From: factotum at rclayton.org (r. clayton) Date: Tue, 29 Oct 2024 13:40:29 -0400 (EDT) Subject: [Cuis-dev] Cuis-dev Digest, Vol 67, Issue 44 Message-ID: <1929344815.284637.1730223629980@email.ionos.com> openPort "Answer an open port number" | port socket | socket := Socket newTCP. socket listenOn: 0. "gets an ephemeral port" port := socket localPort. socket close. ^port. Forgive me for asking a possibly dumb question, but how is this not a race condition waiting to happen? Ports are a system-wide resource (considering ports above 1023). What prevents a process elsewhere on the system, not necessarily within Cuis, from allocating the port returned by openPort? Also, since I'm being picky, "open" is probably not the best choice of words if I'm correctly understanding the code's intention. Despite being in the vernacular, "open" doesn't doesn't necessarily mean "available" or "unallocated." You could argue that "open" means "unavailable" and "allocated" (consider TCP to make this argument clear). From martin at hand2mouse.com Tue Oct 29 10:54:03 2024 From: martin at hand2mouse.com (Martin McClure) Date: Tue, 29 Oct 2024 10:54:03 -0700 Subject: [Cuis-dev] Cuis-dev Digest, Vol 67, Issue 44 In-Reply-To: <1929344815.284637.1730223629980@email.ionos.com> References: <1929344815.284637.1730223629980@email.ionos.com> Message-ID: Hi, A good question, and a very good point. Yes, what /should/ be done is to listenOn: 0, and then /use that socket/, not close it and then try to open another one on the same port number. Definitely a race condition; that port number could be grabbed by someone else in the intervening time. Regards, -Martin On 10/29/24 10:40, r. clayton via Cuis-dev wrote: > openPort > "Answer an open port number" > | port socket | > > socket := Socket newTCP. > socket listenOn: 0. "gets an ephemeral port" > port := socket localPort. > socket close. > ^port. > > Forgive me for asking a possibly dumb question, but how is this not a race condition waiting to happen? Ports are a system-wide resource (considering ports above 1023). What prevents a process elsewhere on the system, not necessarily within Cuis, from allocating the port returned by openPort? > > Also, since I'm being picky, "open" is probably not the best choice of words if I'm correctly understanding the code's intention. Despite being in the vernacular, "open" doesn't doesn't necessarily mean "available" or "unallocated." You could argue that "open" means "unavailable" and "allocated" (consider TCP to make this argument clear). -------------- next part -------------- An HTML attachment was scrubbed... URL: From raiford at labware.com Tue Oct 29 10:58:17 2024 From: raiford at labware.com (Jon Raiford) Date: Tue, 29 Oct 2024 17:58:17 +0000 Subject: [Cuis-dev] Cuis-dev Digest, Vol 67, Issue 44 In-Reply-To: <1929344815.284637.1730223629980@email.ionos.com> References: <1929344815.284637.1730223629980@email.ionos.com> Message-ID: Yes, that is certainly a race condition waiting to happen. I believe ?open? here is acting as an adjective and not a verb, as in, I?ll answer a port that happens to be open (available) right now. I?m not sure what the benefit is though. If you just want to listen on a random port that is guaranteed to be available then set the port to zero at the time you call listenOn: and don?t close the port until you are done with it. Jon From: Cuis-dev on behalf of r. clayton via Cuis-dev Date: Tuesday, October 29, 2024 at 1:46?PM To: cuis-dev at lists.cuis.st Cc: r. clayton Subject: Re: [Cuis-dev] Cuis-dev Digest, Vol 67, Issue 44 openPort "Answer an open port number" | port socket | socket := Socket newTCP. socket listenOn: 0. "gets an ephemeral port" port := socket localPort. socket close. ^port. Forgive me for asking a possibly dumb question, but how is this not a race condition waiting to happen? Ports are a system-wide resource (considering ports above 1023). What prevents a process elsewhere on the system, not necessarily within Cuis, from allocating the port returned by openPort? Also, since I'm being picky, "open" is probably not the best choice of words if I'm correctly understanding the code's intention. Despite being in the vernacular, "open" doesn't doesn't necessarily mean "available" or "unallocated." You could argue that "open" means "unavailable" and "allocated" (consider TCP to make this argument clear). -- Cuis-dev mailing list Cuis-dev at lists.cuis.st https://lists.cuis.st/mailman/listinfo/cuis-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Tue Oct 29 12:12:19 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Tue, 29 Oct 2024 14:12:19 -0500 Subject: [Cuis-dev] Cuis-dev Digest, Vol 67, Issue 44 In-Reply-To: References: <1929344815.284637.1730223629980@email.ionos.com> Message-ID: Thanks for the feedback! I learned that with the WebServer class in the WebClient package, once I have created an instance of WebServer I can do the following to listen on an open port and get that port number: server listenOn: 0. port := server listenerSocket port I changed the DogWebServerTests setup method in my WebClientPlus package to use this approach. On Tue, Oct 29, 2024 at 12:58?PM Jon Raiford via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > Yes, that is certainly a race condition waiting to happen. I believe > ?open? here is acting as an adjective and not a verb, as in, I?ll answer a > port that happens to be open (available) right now. I?m not sure what the > benefit is though. If you just want to listen on a random port that is > guaranteed to be available then set the port to zero at the time you call > listenOn: and don?t close the port until you are done with it. > > > > Jon > > > > *From: *Cuis-dev on behalf of r. clayton > via Cuis-dev > *Date: *Tuesday, October 29, 2024 at 1:46?PM > *To: *cuis-dev at lists.cuis.st > *Cc: *r. clayton > *Subject: *Re: [Cuis-dev] Cuis-dev Digest, Vol 67, Issue 44 > > openPort > "Answer an open port number" > | port socket | > > socket := Socket newTCP. > socket listenOn: 0. "gets an ephemeral port" > port := socket localPort. > socket close. > ^port. > > Forgive me for asking a possibly dumb question, but how is this not a race > condition waiting to happen? Ports are a system-wide resource (considering > ports above 1023). What prevents a process elsewhere on the system, not > necessarily within Cuis, from allocating the port returned by openPort? > > Also, since I'm being picky, "open" is probably not the best choice of > words if I'm correctly understanding the code's intention. Despite being in > the vernacular, "open" doesn't doesn't necessarily mean "available" or > "unallocated." You could argue that "open" means "unavailable" and > "allocated" (consider TCP to make this argument clear). > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Wed Oct 30 08:50:13 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Wed, 30 Oct 2024 10:50:13 -0500 Subject: [Cuis-dev] quick introduction to Smalltalk and Cuis Message-ID: I wrote an article this week that is a quick introduction to Smalltalk. It walks readers through getting started with Cuis Smalltalk. I tried to pack as much as I could in a small number of pages (currently 11) so as to not overwhelm readers. I'd love to get feedback on this. You can find it at https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/01-quick-introduction/ . -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From ken.dickey at whidbey.com Wed Oct 30 11:51:20 2024 From: ken.dickey at whidbey.com (ken.dickey at whidbey.com) Date: Wed, 30 Oct 2024 11:51:20 -0700 Subject: [Cuis-dev] quick introduction to Smalltalk and Cuis In-Reply-To: References: Message-ID: <5f814e64577b4bb8ace65df7fe4fb72c@whidbey.com> On 2024-10-30 08:50, Mark Volkmann via Cuis-dev wrote: > I wrote an article this week that is a quick introduction to Smalltalk. > It walks readers through getting started with Cuis Smalltalk. I tried > to pack as much as I could in a small number of pages (currently 11) so > as to not overwhelm readers. I'd love to get feedback on this. You can > find it at > https://mvolkmann.github.io/blog/topics/#/blog/smalltalk/01-quick-introduction/. Mark, Wonderful! I like it. Quick feedback: --------------------------- ... "Do not enter that text." There is no immediate instruction to get results. Perhaps add transition/setup like: "Before we show how to evaluate the expressions and print the results, let's talk about what you see here." --------------------------- The expression `cityToTeam := Dictionary new` sends the message `new` Needs better distinction between code and general text. (Color and/or e.g. typewriter font). --------------------------- "We can examine the implementation of the average method. To do so, open a Browser." Perhaps .."use the World Menu to Open a Browser." ? --------------------------- Very nice intro! -KenD From vigabf at gmail.com Wed Oct 30 13:20:49 2024 From: vigabf at gmail.com (Victor Gabriel Fierro) Date: Wed, 30 Oct 2024 17:20:49 -0300 Subject: [Cuis-dev] Addition of buttons to the Code File Browser class list menu In-Reply-To: References: Message-ID: Hello again! I'm sorry to bother you one more time, but I realized some mistakes in the changes I sent in the previous email. The problem is in the functionality of opening the Change List Window from the Code File Browser. I realized three problems in the earlier version: 1. Responsibilities were assigned incorrectly. I made the Code File have the responsibility of opening the Change List Window, which makes no sense. 2. It didn't take into account that the original file could be moved or removed. 3. It didn't take into account that the original file could be modified. When I realized these mistakes I started making a new version of the functionality to replace the previous one, but I could only solve the first and second problems (At least to some degree, more on that later). Firstly, in the new version the Code File Browser Window has the responsibility to open the Change List Window, which I think is better. Secondly, now the function checks whether the file still exists before doing anything, and if it doesn't then just throws a Pop Up that lets the user acknowledge the situation. The thing I couldn't do is solve the third problem, the new code ignores completely whether the file has been modified or not. Also, although technically the second problem is "solved", I don't find it satisfactory that if you remove the file then you can't browse the changes anymore, even though they are all there in the Code File browser! I just couldn't figure out a way to convert the information held by the Code File into a Change List (Actually I played around with the idea of storing the Change List that is created in the initialization of Code File to scan the file. This would solve the problems better but I don't really like the idea of storing a whole Change List 'just in case' and also that solution comes with a bunch of other problems, but I have an implementation of it if you are interested). Please let me know what you think of this new version, and share with me any comments or suggestions. Thank you very much! El lun, 28 oct 2024 a la(s) 4:06?p.m., Victor Gabriel Fierro ( vigabf at gmail.com) escribi?: > Hello again! > > I'm Gabriel, and I have a new contribution to make to Cuis. Last week I > sent changes to the Code File Browser to show classes hierarchically. After > playing with the new version a bit I realized that the Code File Browser > lacked the buttons to alternate between alphabetical and hierarchical class > organization when you right clicked on them, so I added them. While doing > so I noticed that it also lacked a button to open a Change List Window to > browse through the changes of the code of the file, so I added too and > implemented the functionality. > I hope that you find these additions useful! > Have a nice day! > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 6800-ChangeListFromBrowser-GabrielFierro-2024Oct30-14h06m-VGF.001.cs.st Type: application/octet-stream Size: 4060 bytes Desc: not available URL: From r.mark.volkmann at gmail.com Wed Oct 30 19:17:40 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Wed, 30 Oct 2024 21:17:40 -0500 Subject: [Cuis-dev] another DatabaseSupport pull request Message-ID: I improved the README, fixed bugs in the ODBCColumn class, and fixed a typo in an instance variable in that class. I have tested this with a PostgreSQL database and a SQLite database. See https://github.com/Cuis-Smalltalk/DatabaseSupport/pull/3. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Thu Oct 31 09:21:15 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 31 Oct 2024 11:21:15 -0500 Subject: [Cuis-dev] handling message "There is a newer version that currently loaded" In-Reply-To: <672031FB.8090201@cuis.st> References: <672031FB.8090201@cuis.st> Message-ID: On Mon, Oct 28, 2024 at 7:53?PM Juan Vuletich wrote: > Hi Mark, > > On 10/28/2024 7:54 PM, Mark Volkmann via Cuis-dev wrote: > > When installing updates made in the Cuis-Smalltalk-Dev repository, it > sometimes outputs messages in the Transcript that say "Package: SomeName. > There is a newer version than the currently loaded." > > It seems that I need to open an "Installed Packages" window, delete the > package, and then reinstall it with "Feature require: SomeName". Is it > correct that I must delete the package before I can install an updated > version? > > > No, just reinstall it. That's all. > This doesn't match the behavior I am seeing. For example, after selecting "Changes ... Install New Updates", I got a message in the Transcript that said "Package ODBC. There is a newer version than currently loaded". So I evaluated "Feature require: 'ODBC'" in a workspace and it seems nothing happened. Then I deleted the package from an "Installed Packages" window and reevaluated the "Feature require:". That gave me the updates. -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianomontone at gmail.com Thu Oct 31 11:44:11 2024 From: marianomontone at gmail.com (Mariano Montone) Date: Thu, 31 Oct 2024 15:44:11 -0300 Subject: [Cuis-dev] handling message "There is a newer version that currently loaded" In-Reply-To: References: <672031FB.8090201@cuis.st> Message-ID: <20de5b94-01ef-4420-9beb-abd6fa88edc3@gmail.com> El 31/10/24 a las 13:21, Mark Volkmann via Cuis-dev escribi?: > On Mon, Oct 28, 2024 at 7:53?PM Juan Vuletich wrote: > > Hi Mark, > > On 10/28/2024 7:54 PM, Mark Volkmann via Cuis-dev wrote: >> When installing updates made in the Cuis-Smalltalk-Dev >> repository, it sometimes outputs messages in the Transcript that >> say "Package: SomeName. There is a newer version than the >> currently loaded." >> >> It seems that I need to open an "Installed Packages" window, >> delete the package, and then reinstall it with "Feature require: >> SomeName". Is it correct that I must delete the package before I >> can install an updated version? > > No, just reinstall it. That's all. > > > This doesn't match the behavior I am seeing. For example, after > selecting "Changes ... Install New Updates", I got a message in the > Transcript that said "Package ODBC. There is a newer version than > currently loaded". So I evaluated "Feature require: 'ODBC'" in a > workspace and it seems nothing happened. Then I deleted the package > from an "Installed Packages" window and reevaluated the "Feature > require:". That gave me the updates. Feature require does not do a package install if the some version of the package is already loaded. Feature require checks if the feature is already present, if not, looks for a package and installs it, and registers it as "feature". When evaluated a second time, the feature is already present, so there's no package install to perform. If you want to refresh a package you need to explicitly install it from its file. No need to delete it first, just install the package again from its file. -------------- next part -------------- An HTML attachment was scrubbed... URL: From r.mark.volkmann at gmail.com Thu Oct 31 15:18:14 2024 From: r.mark.volkmann at gmail.com (Mark Volkmann) Date: Thu, 31 Oct 2024 17:18:14 -0500 Subject: [Cuis-dev] handling message "There is a newer version that currently loaded" In-Reply-To: <20de5b94-01ef-4420-9beb-abd6fa88edc3@gmail.com> References: <672031FB.8090201@cuis.st> <20de5b94-01ef-4420-9beb-abd6fa88edc3@gmail.com> Message-ID: Thanks so much for explaining that! Would it be a bad idea for "Install New Updates" to do that automatically? It seems like if you already have packages installed and you have asked to install new updates, you would want those packages to be updated as well. On Thu, Oct 31, 2024 at 1:44?PM Mariano Montone via Cuis-dev < cuis-dev at lists.cuis.st> wrote: > > El 31/10/24 a las 13:21, Mark Volkmann via Cuis-dev escribi?: > > On Mon, Oct 28, 2024 at 7:53?PM Juan Vuletich wrote: > >> Hi Mark, >> >> On 10/28/2024 7:54 PM, Mark Volkmann via Cuis-dev wrote: >> >> When installing updates made in the Cuis-Smalltalk-Dev repository, it >> sometimes outputs messages in the Transcript that say "Package: SomeName. >> There is a newer version than the currently loaded." >> >> It seems that I need to open an "Installed Packages" window, delete the >> package, and then reinstall it with "Feature require: SomeName". Is it >> correct that I must delete the package before I can install an updated >> version? >> >> >> No, just reinstall it. That's all. >> > > This doesn't match the behavior I am seeing. For example, after selecting > "Changes ... Install New Updates", I got a message in the Transcript that > said "Package ODBC. There is a newer version than currently loaded". So I > evaluated "Feature require: 'ODBC'" in a workspace and it seems nothing > happened. Then I deleted the package from an "Installed Packages" window > and reevaluated the "Feature require:". That gave me the updates. > > Feature require does not do a package install if the some version of the > package is already loaded. Feature require checks if the feature is already > present, if not, looks for a package and installs it, and registers it as > "feature". When evaluated a second time, the feature is already present, so > there's no package install to perform. If you want to refresh a package you > need to explicitly install it from its file. No need to delete it first, > just install the package again from its file. > -- > Cuis-dev mailing list > Cuis-dev at lists.cuis.st > https://lists.cuis.st/mailman/listinfo/cuis-dev > -- R. Mark Volkmann Object Computing, Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: