<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Martin/ Charles,<br>
<br>
I've started working on an open source package that will let
GemStone talk to Rabbitmq. It will be awhile before I have anything
to publish.<br>
<br>
BTW, the whole amqp space is quite a mess. amqp 0.9 (rabbitmq) is
incompatible with amqp 1.0 (used by MS Azure and other things).<br>
<br>
Norm<br>
<br>
<br>
<div class="moz-cite-prefix">On 1/20/2022 6:28 AM, Charles Monteiro
via Glass wrote:<br>
</div>
<blockquote type="cite"
cite="mid:016401d80e09$f1503650$d3f0a2f0$@tradeblazer.com">
<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-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;}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;}div.WordSection1
{page:WordSection1;}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]-->
<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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true">tradeblazer.com</a><o:p></o:p></span></b></p>
<p class="MsoNormal"><img style="width:1.9895in;height:.5in"
id="Picture_x0020_2"
src="cid:part1.2aKlQyaC.5KOc0THm@gemtalksystems.com"
class="" width="191" height="48" border="0"><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
<a class="moz-txt-link-rfc2396E" href="mailto:Smalltalk@JGFoster.net"><Smalltalk@JGFoster.net></a> <br>
<b>Sent:</b> Thursday, January 20, 2022 3:25 AM<br>
<b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:charles@tradeblazer.com">charles@tradeblazer.com</a><br>
<b>Cc:</b> GLASS Mailing List
<a class="moz-txt-link-rfc2396E" href="mailto:glass@lists.gemtalksystems.com"><glass@lists.gemtalksystems.com></a><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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">https://github.com/GemTalk/Jadeite</a>
or its predecessor, Jade (<a
href="https://github.com/jgfoster/Jade"
moz-do-not-send="true" class="moz-txt-link-freetext">https://github.com/jgfoster/Jade</a>)),
or experiment with Sparkle (<a
href="https://github.com/GemTalk/Sparkle"
moz-do-not-send="true" class="moz-txt-link-freetext">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/"
moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true"
class="moz-txt-link-freetext">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" type="1" start="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" type="1" start="1">
<ol style="margin-top:0in" type="a" start="1">
<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" type="1" start="2">
<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" type="1" start="2">
<ol style="margin-top:0in" type="a" start="1">
<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" type="1" start="3">
<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/"
moz-do-not-send="true">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"
moz-do-not-send="true"><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"
moz-do-not-send="true"><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>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Glass mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Glass@lists.gemtalksystems.com">Glass@lists.gemtalksystems.com</a>
<a class="moz-txt-link-freetext" href="https://lists.gemtalksystems.com/mailman/listinfo/glass">https://lists.gemtalksystems.com/mailman/listinfo/glass</a>
</pre>
</blockquote>
<br>
</body>
</html>