Hello!
I plan to make alternative package to existing Web package, with a but different, slimmer, more streamlined design, and built only on a few selected DOM calls known to work everywhere where Amber wants to work (all mobiles cca Android 2.2+, iOS4+, all desktops of last cca 5 years, IE8+), like createElement, createElementFragment, insertBefore, nextSibling, prevSibling, querySelector(All), hasAttribute, getAttribute, setAttribute; trying to keep used API to a minimum, to be as compatible as rationally available. The main design change would be eschewing HTMLCanvas + TagBrush, putting everything in one class (HTMLStream, maybe) and having tag generation completely dynamic, via dnu; also, creating canvas/tagbrush now directly is harder, the aim here would be on easy creating of them (a la `HTMLStream new render: [ :html | html P: 'Hello, world ]` adding it to the <body> or whenever cursor is now when used inside processing - using uppercased message to distinguish tags from other messages), and removing Widget class completely (anything that respondsTo: #renderOn: is a Widget). Are there some people who would want to be the 'pilot customers' and try to use it to build something (ideally what they already tried to v build with existing Web package), so I can hear the feedback on how it is usable compared to the existing one? Herby -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Yes I am interested ....
Hannes On 2/14/15, Herby Vojčík <[hidden email]> wrote: > Hello! > > I plan to make alternative package to existing Web package, with a but > different, slimmer, more streamlined design, and built only on a few > selected DOM calls known to work everywhere where Amber wants to work > (all mobiles cca Android 2.2+, iOS4+, all desktops of last cca 5 years, > IE8+), like createElement, createElementFragment, insertBefore, > nextSibling, prevSibling, querySelector(All), hasAttribute, > getAttribute, setAttribute; trying to keep used API to a minimum, to be > as compatible as rationally available. > > The main design change would be eschewing HTMLCanvas + TagBrush, putting > everything in one class (HTMLStream, maybe) and having tag generation > completely dynamic, via dnu; also, creating canvas/tagbrush now directly > is harder, the aim here would be on easy creating of them (a la > `HTMLStream new render: [ :html | html P: 'Hello, world ]` adding it to > the <body> or whenever cursor is now when used inside processing - using > uppercased message to distinguish tags from other messages), > and removing Widget class completely (anything that respondsTo: > #renderOn: is a Widget). > > Are there some people who would want to be the 'pilot customers' and try > to use it to build something (ideally what they already tried to v build > with existing Web package), so I can hear the feedback on how it is > usable compared to the existing one? > > Herby > > -- > You received this message because you are subscribed to the Google Groups > "amber-lang" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [hidden email]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
H. Hirzel wrote: > Yes I am interested .... Hi! Not ready yet, at all. But to those interested, I created a library with a very thin wrapper around basic DOM functionality, around which this new Web alternative will be built (probably subclassing the Domite class). It is capable of basic things, though it has not the fancy Seaside-like API and still lacks support for events or querySelector. That thing is at amber-smalltalk/domite repo and present in bower as domite. I will probably try to move trapped to stop use HTMLCanvas and use the raw Domite instead. Interesting thing is, this system may not need renderOn: [ :param | ... ] at all, because it can use to make detached fragment of HTML content easy with `content := Domite open. content ...` and insert this content likewise easily with `placeToInsert insertDomite: content`. No need to pass that param, but this is still the question if to pass it (it makes things harder a bit) or just take a content from it. > Hannes Herby > On 2/14/15, Herby Vojčík<[hidden email]> wrote: >> Hello! >> >> I plan to make alternative package to existing Web package, with a but >> different, slimmer, more streamlined design, and built only on a few >> selected DOM calls known to work everywhere where Amber wants to work >> (all mobiles cca Android 2.2+, iOS4+, all desktops of last cca 5 years, >> IE8+), like createElement, createElementFragment, insertBefore, >> nextSibling, prevSibling, querySelector(All), hasAttribute, >> getAttribute, setAttribute; trying to keep used API to a minimum, to be >> as compatible as rationally available. >> >> The main design change would be eschewing HTMLCanvas + TagBrush, putting >> everything in one class (HTMLStream, maybe) and having tag generation >> completely dynamic, via dnu; also, creating canvas/tagbrush now directly >> is harder, the aim here would be on easy creating of them (a la >> `HTMLStream new render: [ :html | html P: 'Hello, world ]` adding it to >> the<body> or whenever cursor is now when used inside processing - using >> uppercased message to distinguish tags from other messages), >> and removing Widget class completely (anything that respondsTo: >> #renderOn: is a Widget). >> >> Are there some people who would want to be the 'pilot customers' and try >> to use it to build something (ideally what they already tried to v build >> with existing Web package), so I can hear the feedback on how it is >> usable compared to the existing one? >> >> Herby >> >> -- >> You received this message because you are subscribed to the Google Groups >> "amber-lang" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [hidden email]. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Thank you Herby, this lightweight solution is useful for me.
I have added an issue about creating a test case https://github.com/amber-smalltalk/domite/issues/1 On 2/20/15, Herby Vojčík <[hidden email]> wrote: > > > H. Hirzel wrote: >> Yes I am interested .... > > Hi! > > Not ready yet, at all. But to those interested, I created a library with > a very thin wrapper around basic DOM functionality, around which this > new Web alternative will be built (probably subclassing the Domite > class). It is capable of basic things, though it has not the fancy > Seaside-like API and still lacks support for events or querySelector. > > That thing is at amber-smalltalk/domite repo and present in bower as > domite. I will probably try to move trapped to stop use HTMLCanvas and > use the raw Domite instead. > > Interesting thing is, this system may not need renderOn: [ :param | ... > ] at all, because it can use to make detached fragment of HTML content > easy with `content := Domite open. content ...` and insert this content > likewise easily with `placeToInsert insertDomite: content`. No need to > pass that param, but this is still the question if to pass it (it makes > things harder a bit) or just take a content from it. > >> Hannes > > Herby > >> On 2/14/15, Herby Vojčík<[hidden email]> wrote: >>> Hello! >>> >>> I plan to make alternative package to existing Web package, with a but >>> different, slimmer, more streamlined design, and built only on a few >>> selected DOM calls known to work everywhere where Amber wants to work >>> (all mobiles cca Android 2.2+, iOS4+, all desktops of last cca 5 years, >>> IE8+), like createElement, createElementFragment, insertBefore, >>> nextSibling, prevSibling, querySelector(All), hasAttribute, >>> getAttribute, setAttribute; trying to keep used API to a minimum, to be >>> as compatible as rationally available. >>> >>> The main design change would be eschewing HTMLCanvas + TagBrush, putting >>> everything in one class (HTMLStream, maybe) and having tag generation >>> completely dynamic, via dnu; also, creating canvas/tagbrush now directly >>> is harder, the aim here would be on easy creating of them (a la >>> `HTMLStream new render: [ :html | html P: 'Hello, world ]` adding it to >>> the<body> or whenever cursor is now when used inside processing - using >>> uppercased message to distinguish tags from other messages), >>> and removing Widget class completely (anything that respondsTo: >>> #renderOn: is a Widget). >>> >>> Are there some people who would want to be the 'pilot customers' and try >>> to use it to build something (ideally what they already tried to v build >>> with existing Web package), so I can hear the feedback on how it is >>> usable compared to the existing one? >>> >>> Herby >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups >>> "amber-lang" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an >>> email to [hidden email]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> > > -- > You received this message because you are subscribed to the Google Groups > "amber-lang" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [hidden email]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
H. Hirzel wrote: > Thank you Herby, this lightweight solution is useful for me. > > I have added an issue about creating a test case > https://github.com/amber-smalltalk/domite/issues/1 Added tests for basic things (insertion, document fragments), added support and tests for querySelector, and added untested support for attrs/props and events and released as 0.1.1. This should be probably enough for the raw Domite. The Web replacement with more fancy API will likely be subclass of Domite and will be in different library. > On 2/20/15, Herby Vojčík<[hidden email]> wrote: >> >> H. Hirzel wrote: >>> Yes I am interested .... >> Hi! >> >> Not ready yet, at all. But to those interested, I created a library with >> a very thin wrapper around basic DOM functionality, around which this >> new Web alternative will be built (probably subclassing the Domite >> class). It is capable of basic things, though it has not the fancy >> Seaside-like API and still lacks support for events or querySelector. >> >> That thing is at amber-smalltalk/domite repo and present in bower as >> domite. I will probably try to move trapped to stop use HTMLCanvas and >> use the raw Domite instead. >> >> Interesting thing is, this system may not need renderOn: [ :param | ... >> ] at all, because it can use to make detached fragment of HTML content >> easy with `content := Domite open. content ...` and insert this content >> likewise easily with `placeToInsert insertDomite: content`. No need to >> pass that param, but this is still the question if to pass it (it makes >> things harder a bit) or just take a content from it. >> >>> Hannes >> Herby >> >>> On 2/14/15, Herby Vojčík<[hidden email]> wrote: >>>> Hello! >>>> >>>> I plan to make alternative package to existing Web package, with a but >>>> different, slimmer, more streamlined design, and built only on a few >>>> selected DOM calls known to work everywhere where Amber wants to work >>>> (all mobiles cca Android 2.2+, iOS4+, all desktops of last cca 5 years, >>>> IE8+), like createElement, createElementFragment, insertBefore, >>>> nextSibling, prevSibling, querySelector(All), hasAttribute, >>>> getAttribute, setAttribute; trying to keep used API to a minimum, to be >>>> as compatible as rationally available. >>>> >>>> The main design change would be eschewing HTMLCanvas + TagBrush, putting >>>> everything in one class (HTMLStream, maybe) and having tag generation >>>> completely dynamic, via dnu; also, creating canvas/tagbrush now directly >>>> is harder, the aim here would be on easy creating of them (a la >>>> `HTMLStream new render: [ :html | html P: 'Hello, world ]` adding it to >>>> the<body> or whenever cursor is now when used inside processing - using >>>> uppercased message to distinguish tags from other messages), >>>> and removing Widget class completely (anything that respondsTo: >>>> #renderOn: is a Widget). >>>> >>>> Are there some people who would want to be the 'pilot customers' and try >>>> to use it to build something (ideally what they already tried to v build >>>> with existing Web package), so I can hear the feedback on how it is >>>> usable compared to the existing one? >>>> >>>> Herby >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups >>>> "amber-lang" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an >>>> email to [hidden email]. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >> -- >> You received this message because you are subscribed to the Google Groups >> "amber-lang" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [hidden email]. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
The idea of DOMite is quite nice. I don't like the uppercase tags, though. They interrupt my reading flow. I know it's this way to distinguish between tags and normal messages, but still I'd prefer HTMLStream new render: [ :html | html p: 'Hello, world' ] to HTMLStream new render: [ :html | html P: 'Hello, world' ]. On Fri, Feb 20, 2015 at 9:00 PM, Herby Vojčík <[hidden email]> wrote:
You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Amber Milan Eskridge wrote: > The idea of DOMite is quite nice. I don't like the uppercase tags, > though. They interrupt my reading flow. I know it's this way to > distinguish between tags and normal messages, but still I'd prefer > HTMLStream new render: [ :html | html p: 'Hello, world' ] to HTMLStream > new render: [ :html | html P: 'Hello, world' ]. Well, it already materialized in Silk (github.com/herby/silk) (DOMite is just the low-level layer), and what you do is omit the block entirely: Silk new P: 'Hello, world' Yes, uppercase selectors are used to distinguish selectors in DNU. That said, you can create any tag consisting of letter by just writing Silk new MYCUSTOMTAG: 'contents' As I already wrote somewhere, the fact that tags stick out is something I see as a plus: you see the tag-structure easier, while you can visually ignore other messages sent in the process. Herby > On Fri, Feb 20, 2015 at 9:00 PM, Herby Vojčík <[hidden email] > <mailto:[hidden email]>> wrote: > > > > H. Hirzel wrote: > > Thank you Herby, this lightweight solution is useful for me. > > I have added an issue about creating a test case > https://github.com/amber-__smalltalk/domite/issues/1 > <https://github.com/amber-smalltalk/domite/issues/1> > > > Added tests for basic things (insertion, document fragments), added > support and tests for querySelector, and added untested support for > attrs/props and events and released as 0.1.1. > > This should be probably enough for the raw Domite. The Web > replacement with more fancy API will likely be subclass of Domite > and will be in different library. > > > On 2/20/15, Herby Vojčík<[hidden email] > <mailto:[hidden email]>> wrote: > > > H. Hirzel wrote: > > Yes I am interested .... > > Hi! > > Not ready yet, at all. But to those interested, I created a > library with > a very thin wrapper around basic DOM functionality, around > which this > new Web alternative will be built (probably subclassing the > Domite > class). It is capable of basic things, though it has not the > fancy > Seaside-like API and still lacks support for events or > querySelector. > > That thing is at amber-smalltalk/domite repo and present in > bower as > domite. I will probably try to move trapped to stop use > HTMLCanvas and > use the raw Domite instead. > > Interesting thing is, this system may not need renderOn: [ > :param | ... > ] at all, because it can use to make detached fragment of > HTML content > easy with `content := Domite open. content ...` and insert > this content > likewise easily with `placeToInsert insertDomite: content`. > No need to > pass that param, but this is still the question if to pass > it (it makes > things harder a bit) or just take a content from it. > > Hannes > > Herby > > On 2/14/15, Herby Vojčík<[hidden email] > <mailto:[hidden email]>> wrote: > > Hello! > > I plan to make alternative package to existing Web > package, with a but > different, slimmer, more streamlined design, and > built only on a few > selected DOM calls known to work everywhere where > Amber wants to work > (all mobiles cca Android 2.2+, iOS4+, all desktops > of last cca 5 years, > IE8+), like createElement, createElementFragment, > insertBefore, > nextSibling, prevSibling, querySelector(All), > hasAttribute, > getAttribute, setAttribute; trying to keep used API > to a minimum, to be > as compatible as rationally available. > > The main design change would be eschewing HTMLCanvas > + TagBrush, putting > everything in one class (HTMLStream, maybe) and > having tag generation > completely dynamic, via dnu; also, creating > canvas/tagbrush now directly > is harder, the aim here would be on easy creating of > them (a la > `HTMLStream new render: [ :html | html P: 'Hello, > world ]` adding it to > the<body> or whenever cursor is now when used > inside processing - using > uppercased message to distinguish tags from other > messages), > and removing Widget class completely (anything that > respondsTo: > #renderOn: is a Widget). > > Are there some people who would want to be the > 'pilot customers' and try > to use it to build something (ideally what they > already tried to v build > with existing Web package), so I can hear the > feedback on how it is > usable compared to the existing one? > > Herby > > -- > You received this message because you are subscribed > to the Google > Groups > "amber-lang" group. > To unsubscribe from this group and stop receiving > emails from it, send > an > email to [hidden email] > <mailto:amber-lang%[hidden email]>. > For more options, visit > https://groups.google.com/d/__optout > <https://groups.google.com/d/optout>. > > -- > You received this message because you are subscribed to the > Google Groups > "amber-lang" group. > To unsubscribe from this group and stop receiving emails > from it, send an > email to [hidden email] > <mailto:amber-lang%[hidden email]>. > For more options, visit https://groups.google.com/d/__optout > <https://groups.google.com/d/optout>. > > > > -- > You received this message because you are subscribed to the Google > Groups "amber-lang" group. > To unsubscribe from this group and stop receiving emails from it, > send an email to [hidden email] > <mailto:amber-lang%[hidden email]>. > For more options, visit https://groups.google.com/d/__optout > <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google > Groups "amber-lang" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to [hidden email] > <mailto:[hidden email]>. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Hello again,
After installing Amber version 0.14.13 and following the README https://github.com/amber-smalltalk/domite bower install domite --save npm install bower install grunt devel amber serve the Domite category does not show up in the the categories list. Besides Use of getPreventDefault() is deprecated. Use defaultPrevented instead. jquery.js:4923 No particular error is indicated in the browser web console. Do you have any suggestions how to fix this? Thank you in advance. --Hannes On 4/5/15, Herby Vojčík <[hidden email]> wrote: > > > Amber Milan Eskridge wrote: >> The idea of DOMite is quite nice. I don't like the uppercase tags, >> though. They interrupt my reading flow. I know it's this way to >> distinguish between tags and normal messages, but still I'd prefer >> HTMLStream new render: [ :html | html p: 'Hello, world' ] to HTMLStream >> new render: [ :html | html P: 'Hello, world' ]. > > Well, it already materialized in Silk (github.com/herby/silk) (DOMite is > just the low-level layer), and what you do is omit the block entirely: > > Silk new P: 'Hello, world' > > Yes, uppercase selectors are used to distinguish selectors in DNU. That > said, you can create any tag consisting of letter by just writing > > Silk new MYCUSTOMTAG: 'contents' > > As I already wrote somewhere, the fact that tags stick out is something > I see as a plus: you see the tag-structure easier, while you can > visually ignore other messages sent in the process. > > Herby > >> On Fri, Feb 20, 2015 at 9:00 PM, Herby Vojčík <[hidden email] >> <mailto:[hidden email]>> wrote: >> >> >> >> H. Hirzel wrote: >> >> Thank you Herby, this lightweight solution is useful for me. >> >> I have added an issue about creating a test case >> https://github.com/amber-__smalltalk/domite/issues/1 >> <https://github.com/amber-smalltalk/domite/issues/1> >> >> >> Added tests for basic things (insertion, document fragments), added >> support and tests for querySelector, and added untested support for >> attrs/props and events and released as 0.1.1. >> >> This should be probably enough for the raw Domite. The Web >> replacement with more fancy API will likely be subclass of Domite >> and will be in different library. >> >> >> On 2/20/15, Herby Vojčík<[hidden email] >> <mailto:[hidden email]>> wrote: >> >> >> H. Hirzel wrote: >> >> Yes I am interested .... >> >> Hi! >> >> Not ready yet, at all. But to those interested, I created a >> library with >> a very thin wrapper around basic DOM functionality, around >> which this >> new Web alternative will be built (probably subclassing the >> Domite >> class). It is capable of basic things, though it has not the >> fancy >> Seaside-like API and still lacks support for events or >> querySelector. >> >> That thing is at amber-smalltalk/domite repo and present in >> bower as >> domite. I will probably try to move trapped to stop use >> HTMLCanvas and >> use the raw Domite instead. >> >> Interesting thing is, this system may not need renderOn: [ >> :param | ... >> ] at all, because it can use to make detached fragment of >> HTML content >> easy with `content := Domite open. content ...` and insert >> this content >> likewise easily with `placeToInsert insertDomite: content`. >> No need to >> pass that param, but this is still the question if to pass >> it (it makes >> things harder a bit) or just take a content from it. >> >> Hannes >> >> Herby >> >> On 2/14/15, Herby Vojčík<[hidden email] >> <mailto:[hidden email]>> wrote: >> >> Hello! >> >> I plan to make alternative package to existing Web >> package, with a but >> different, slimmer, more streamlined design, and >> built only on a few >> selected DOM calls known to work everywhere where >> Amber wants to work >> (all mobiles cca Android 2.2+, iOS4+, all desktops >> of last cca 5 years, >> IE8+), like createElement, createElementFragment, >> insertBefore, >> nextSibling, prevSibling, querySelector(All), >> hasAttribute, >> getAttribute, setAttribute; trying to keep used API >> to a minimum, to be >> as compatible as rationally available. >> >> The main design change would be eschewing HTMLCanvas >> + TagBrush, putting >> everything in one class (HTMLStream, maybe) and >> having tag generation >> completely dynamic, via dnu; also, creating >> canvas/tagbrush now directly >> is harder, the aim here would be on easy creating of >> them (a la >> `HTMLStream new render: [ :html | html P: 'Hello, >> world ]` adding it to >> the<body> or whenever cursor is now when used >> inside processing - using >> uppercased message to distinguish tags from other >> messages), >> and removing Widget class completely (anything that >> respondsTo: >> #renderOn: is a Widget). >> >> Are there some people who would want to be the >> 'pilot customers' and try >> to use it to build something (ideally what they >> already tried to v build >> with existing Web package), so I can hear the >> feedback on how it is >> usable compared to the existing one? >> >> Herby >> >> -- >> You received this message because you are subscribed >> to the Google >> Groups >> "amber-lang" group. >> To unsubscribe from this group and stop receiving >> emails from it, send >> an >> email to [hidden email] >> <mailto:amber-lang%[hidden email]>. >> For more options, visit >> https://groups.google.com/d/__optout >> <https://groups.google.com/d/optout>. >> >> -- >> You received this message because you are subscribed to the >> Google Groups >> "amber-lang" group. >> To unsubscribe from this group and stop receiving emails >> from it, send an >> email to [hidden email] >> <mailto:amber-lang%[hidden email]>. >> For more options, visit https://groups.google.com/d/__optout >> <https://groups.google.com/d/optout>. >> >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "amber-lang" group. >> To unsubscribe from this group and stop receiving emails from it, >> send an email to [hidden email] >> <mailto:amber-lang%[hidden email]>. >> For more options, visit https://groups.google.com/d/__optout >> <https://groups.google.com/d/optout>. >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "amber-lang" group. >> To unsubscribe from this group and stop receiving emails from it, send >> an email to [hidden email] >> <mailto:[hidden email]>. >> For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "amber-lang" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [hidden email]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
H. Hirzel wrote: > Hello again, > > After installing Amber version 0.14.13 and following the README > > https://github.com/amber-smalltalk/domite > > bower install domite --save In newly created project or in clone of the url above? > npm install > bower install > grunt devel > amber serve > > the Domite category does not show up in the the categories list. > > > Besides > Use of getPreventDefault() is deprecated. Use defaultPrevented > instead. jquery.js:4923 That's jQuery's problem, not ours, afaict ;-) > No particular error is indicated in the browser web console. > > Do you have any suggestions how to fix this? > > Thank you in advance. > > --Hannes P.S.: Why in this thread? It was about the idea, not about particulars... -- You received this message because you are subscribed to the Google Groups "amber-lang" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Free forum by Nabble | Edit this page |