<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;}
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;}
.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:1516844046;
        mso-list-template-ids:1451229966;}
@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><o:p> </o:p></p><p class=MsoNormal>James:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Well , the need is arguably subjective <span style='font-family:"Segoe UI Emoji",sans-serif'>😊</span>i.e. I may prefer a number of cooperating lightweight services sprawled in whatever topology I may wish,  we have currently for example microservices that handle stuff from smtp notifications i.e. even FIX integrations , trade data STP/ETL integrations which in turn push stuff thru MQ , where there’s persistence for monitoring, audit purposes and a myriad of scenarios. Bundling all that stuff into GS seems “uncomfortable” for one.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Now, of course, although my email was a bit verbose I was still summarizing.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>There are scenarios where it would be perfectly fine for the UI to talk to a “specific” microservice which may indeed be running within Gemstone.<o:p></o:p></p><p class=MsoNormal>I gather from your reply that the way that works is indeed thru a “rest”-ish API and the fact that a web socket implementation exists is great.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Yet I would still have a similar need from a headless Pharo process and it would seem that probably the “standard” comm is via REST i.e. to Gemstone?<o:p></o:p></p><p class=MsoNormal>No local FFI supported semantics ? I guess that’s ok. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>BTW, I’m quite acquainted with Flutter and I do like it , i.e. mostly for what it delivers i.e. from one code base , its “pretty “ good at delivering multiple deployment outputs i.e. your desktop, web, iOS, android which look quite good.<o:p></o:p></p><p class=MsoNormal>However, Svelte is super fast but more importantly for me its data binding is so straightforward and clean that I can just RAD over it quicker, I’m looking also at using Svelte over Electron , and now there’s Tauri which seems interesting.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ll definitely look at your repo, it seems it may get me closer to where I want to go.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks<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@01D80C5B.B9F1D2E0"><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> Tuesday, January 18, 2022 10:49 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><p class=MsoNormal>Hi Charles,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Could you say a bit more about what role Pharo would take in this? I see that you describe “micro service(s) which in turn will talk to” GemStone. How thin is the Pharo layer? I understand that you don’t want something as heavy as Seaside, but I’m wondering if you would consider having the micro services hosted in GemStone so that you have only one Smalltalk layer. The reason I ask is because my current programming model is a SPA client using Flutter that makes calls to a GemStone API (I’ll have to look into Svelte!). The backend (<a href="https://github.com/jgfoster/WebGS">https://github.com/jgfoster/WebGS</a>) supports REST and WebSockets, so your front-end can be quite sophisticated and there is no need to have another layer.<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></body></html>