<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Calibri Light";
        panose-1:2 15 3 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.MsoQuote, li.MsoQuote, div.MsoQuote
        {mso-style-priority:29;
        mso-style-link:"Quote Char";
        margin-top:10.0pt;
        margin-right:.6in;
        margin-bottom:8.0pt;
        margin-left:.6in;
        text-align:center;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:#404040;
        font-style:italic;}
span.heading2char
        {mso-style-name:heading2char;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.QuoteChar
        {mso-style-name:"Quote Char";
        mso-style-priority:29;
        mso-style-link:Quote;
        font-family:"Calibri",sans-serif;
        color:#404040;
        font-style:italic;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:505829209;
        mso-list-template-ids:-1781248002;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>James:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you for your responses, to fine tune a bit:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoQuote>1. To talk to GemStone from Pharo you can use the GCI library (with something like SparkleFFI (<a href="https://github.com/GemTalk/SparkleFFI">https://github.com/GemTalk/SparkleFFI</a>) or something that talks directly to a Gem that has its own API (such as <a href="https://github.com/jgfoster/WebGS">https://github.com/jgfoster/WebGS</a>).<o:p></o:p></p><p class=MsoNormal>What I mean is stuff like setting transaction blocks within the client process i.e. what I was used to with GemBuilder/VW , never mind the use of forwarders etc i.e. which used the underlying GCI behind a local proxy. <o:p></o:p></p><p class=MsoNormal>This might not be necessary upon further thought i.e. that was just the model I became used to from working with GemStone in the past. I think what’s there already for example your WebGS should work fine and its more in step with what I have been doing with for example JVM based microservices.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoQuote>2. A Gem can be notified if an object changes and then it could notify a client. I believe that RemoteServiceReplication (<a href="https://github.com/GemTalk/RemoteServiceReplication">https://github.com/GemTalk/RemoteServiceReplication</a>) will (eventually) provide synchronization between GemStone and Pharo, but I’m not able to answer questions about it. With respect to supporting Web Sockets, WebGS (see #1) does have that capability. I’m not aware of any other messaging implementations.<o:p></o:p></p><p class=MsoQuote><o:p> </o:p></p><p class=MsoNormal>Yes, I remember this feature , very useful, but indeed I’m referring to how to notify the client, I understand you have WebSockets but I’m more inclined to use some sort of pub/sub mechanism , not sure how to glue it from GemStone yet but I’m guessing it should not be too much work. RemoteServiceReplication looks interesting and I can see how it works for tooling support not sure yet if that would work for my scenarios i.e. I don’t necessarily want a counterpart local object, maybe.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoQuote>4. The performance for MFC has _vastly_ improved. A job that took several days can now be done in a few hours with minimal disruption on regular operation. It is now very realistic to plan for 24x7 uptime (I understand that one customer schedules 1 day per year of downtime for upgrades, etc.).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Segoe UI Emoji",sans-serif'>😊</span>, I’m very glad to hear that, yes I exaggerated a bit in our case, all sorts of bank holidays and weekends, although I was really counting on MFC running under 18 hours which is what at one point in time is what we were encountering at BUG.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am already registered for Martin’s meetup presentation.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you for your time in answering my questions. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I do look forward to playing again with the database that I was weaned on which has made me biased and disgusted with just about everything else and in particular RDMS <span style='font-family:"Segoe UI Emoji",sans-serif'>😊</span><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><b><span style='font-family:"Arial",sans-serif'>Charles A. Monteiro<br>Chief Technology Officer<br>Datasoft, Inc<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Arial",sans-serif'>Phone: 347-853-7349<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Arial",sans-serif'>Web:<a href="http://www.tradeblazer.com">tradeblazer.com</a><o:p></o:p></span></b></p><p class=MsoNormal><img border=0 width=191 height=48 style='width:1.9895in;height:.5in' id="Picture_x0020_2" src="cid:image001.png@01D80DDB.FC74EDB0"><b><span style='font-family:"Arial",sans-serif'><o:p></o:p></span></b></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> James Foster <Smalltalk@JGFoster.net> <br><b>Sent:</b> Thursday, January 20, 2022 3:25 AM<br><b>To:</b> charles@tradeblazer.com<br><b>Cc:</b> GLASS Mailing List <glass@lists.gemtalksystems.com><br><b>Subject:</b> Re: [Glass] How to start an eval of Gemsatone/S<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Hi Charles,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>In response to your specific question:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>1. To talk to GemStone from Pharo you can use the GCI library (with something like SparkleFFI (<a href="https://github.com/GemTalk/SparkleFFI">https://github.com/GemTalk/SparkleFFI</a>) or something that talks directly to a Gem that has its own API (such as <a href="https://github.com/jgfoster/WebGS">https://github.com/jgfoster/WebGS</a>).<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>2. A Gem can be notified if an object changes and then it could notify a client. I believe that RemoteServiceReplication (<a href="https://github.com/GemTalk/RemoteServiceReplication">https://github.com/GemTalk/RemoteServiceReplication</a>) will (eventually) provide synchronization between GemStone and Pharo, but I’m not able to answer questions about it. With respect to supporting Web Sockets, WebGS (see #1) does have that capability. I’m not aware of any other messaging implementations.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>3. As noted by others, GemConnect for Postgres (<a href="https://github.com/GemTalk/GemConnect-for-Postgres">https://github.com/GemTalk/GemConnect-for-Postgres</a>) is available under the MIT license.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>4. The performance for MFC has _vastly_ improved. A job that took several days can now be done in a few hours with minimal disruption on regular operation. It is now very realistic to plan for 24x7 uptime (I understand that one customer schedules 1 day per year of downtime for upgrades, etc.).<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>5. GemStone runs fine under WSL 2. It runs under WSL 1 but required a special keyfile to get around WSL 1 bugs.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>6. For an IDE you can use Topaz (for old-school vim/gdb users), GBS (if you have a license for VA or VW), Jadeite (<a href="https://github.com/GemTalk/Jadeite">https://github.com/GemTalk/Jadeite</a> or its predecessor, Jade (<a href="https://github.com/jgfoster/Jade">https://github.com/jgfoster/Jade</a>)), or experiment with Sparkle (<a href="https://github.com/GemTalk/Sparkle">https://github.com/GemTalk/Sparkle</a>). To learn more about Sparkle I suggest you watch Martin McClure’s upcoming presentation (<a href="https://www.meetup.com/UKSTUG/events/282299228/">https://www.meetup.com/UKSTUG/events/282299228/</a>).<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>James<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><br><br><o:p></o:p></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Jan 18, 2022, at 7:03 AM, Charles Monteiro via Glass <<a href="mailto:glass@lists.gemtalksystems.com">glass@lists.gemtalksystems.com</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Hi all,<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Not sure if this is the right spot to ask,let me know if not, this is more of sales evaluation i.e. that’s the intent.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal><span class=heading2char><span style='font-size:13.0pt;font-family:"Calibri Light",sans-serif;color:#2F5496'>Context</span></span>:<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>I wish to evaluate Gemstone/S at first for some more tangential needs that are currently targeted for Mongo.<o:p></o:p></p></div><div><p class=MsoNormal>Our core product actually runs over Oracle and soon over any RDMS but for practical purposes we are targetting Postgres.<o:p></o:p></p></div><div><p class=MsoNormal>However, potentially the bigger need.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>From my FPL and Brooklyn Union Gas days I became quite familiar with using GemBuilder for VW however instead I want to engage Gemstone from Pharo and I understand that not to work the same way.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Recently , (yesterday) I discovered Sparkle which led me to discovering SparkleFFI , so there’s apparently some efforts under way to provide comm from Pharo to Gemstone i.e. more akin to Gembuilder/VW.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Anyhow, to cut to the chase.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal><span class=heading2char><span style='font-size:13.0pt;font-family:"Calibri Light",sans-serif;color:#2F5496'>Objectives</span></span>:<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>I’m not interested in building a Seaside app that uses Gemstone for its persistence.<o:p></o:p></p></div><div><p class=MsoNormal>Rather, very thin , quite dumb Svelte/JS UIs will talk to Pharo microservice(s) which in turn will talk to Gemstone i.e. that’s the hope.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>I would prefer some rpc mechanism where transaction boundaries are controlled from Pharo but I”ll be happy with whatever mechanism I can use to pass objects to Gemstone.<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>So:<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo1'>How do I talk to Gemstone from Pharo ?<span class=apple-converted-space> </span><o:p></o:p></li></ol><ol style='margin-top:0in' start=1 type=1><ol style='margin-top:0in' start=1 type=a><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level2 lfo1'>I believe that Zinc can actually run on Gemstone so json/http(s) would be one way ? Any other way ? best way ?<o:p></o:p></li></ol></ol><ol style='margin-top:0in' start=2 type=1><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo1'>Is there a notification / push mechanism now in place e.g. change to a Gemstone collection could be notified to interested parties (Pharo)<o:p></o:p></li></ol><ol style='margin-top:0in' start=2 type=1><ol style='margin-top:0in' start=1 type=a><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level2 lfo2'>Is there a web socket implementation?<o:p></o:p></li><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level2 lfo2'>Any other messaging implementation ? MQTT ? RabbitMQ etc ?<span class=apple-converted-space> </span><o:p></o:p></li></ol></ol><ol style='margin-top:0in' start=3 type=1><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo2'>GemConnect / Postgres , would there be a separate additional license fee ?<o:p></o:p></li><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo2'>Has the performance of markForCollection changed much in all of these years i.e. does one have to allocate downtime ? i.e. what if the app actually needed to run 24x7, what are the accommodations for said scenario under current Gemstone/S.<o:p></o:p></li><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo2'>I assume that for development use that one can install Gemstone under WSL ? If so any issues to be aware of ?<o:p></o:p></li><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo2'>Sparkle is the new IDE ? but I see there’s also IoDE ?<span class=apple-converted-space> </span><o:p></o:p></li></ol><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Finally , given all of the above , and never mind Gemstone/ S setup itself , is there some doc that illustrates a simple hello world scenario where a Pharo image is sending to Gemstone objects for persistence ?<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal>A cursory review of the Glass posts seem Seaside centric.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Thanks in advance,<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal><b><span style='font-family:"Arial",sans-serif'>Charles A. Monteiro<br>Chief Technology Officer<br>Datasoft, Inc</span></b><o:p></o:p></p></div><div><p class=MsoNormal><b><span style='font-family:"Arial",sans-serif'>Phone: 347-853-7349</span></b><o:p></o:p></p></div><div><p class=MsoNormal><b><span style='font-family:"Arial",sans-serif'>Web:<a href="http://www.tradeblazer.com/">tradeblazer.com</a></span></b><o:p></o:p></p></div><div><p class=MsoNormal><image001.png><o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Helvetica",sans-serif'>_______________________________________________<br>Glass mailing list<br></span><a href="mailto:Glass@lists.gemtalksystems.com"><span style='font-size:10.5pt;font-family:"Helvetica",sans-serif'>Glass@lists.gemtalksystems.com</span></a><span style='font-size:10.5pt;font-family:"Helvetica",sans-serif'><br></span><a href="https://lists.gemtalksystems.com/mailman/listinfo/glass"><span style='font-size:10.5pt;font-family:"Helvetica",sans-serif'>https://lists.gemtalksystems.com/mailman/listinfo/glass</span></a><o:p></o:p></p></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>