From erlang@REDACTED Fri Dec 1 12:48:42 2017 From: erlang@REDACTED (Joe Armstrong) Date: Fri, 1 Dec 2017 12:48:42 +0100 Subject: [erlang-questions] Erlang Language Specification In-Reply-To: <6f4976c2-8a19-97c5-097e-489145926149@cs.otago.ac.nz> References: <6e411f7e-fb31-539c-3ecd-9e904b942aa7@erlang.org> <93F6768D-EA66-483D-8E54-E6D7D18775DD@gmail.com> <0156C2A0-1919-45D0-A693-16EC62D6E80D@kent.ac.uk> <6f4976c2-8a19-97c5-097e-489145926149@cs.otago.ac.nz> Message-ID: On Thu, Nov 30, 2017 at 11:17 PM, Richard A. O'Keefe wrote: > > > On 1/12/17 5:58 AM, Simon Thompson wrote: >> >> Yes, I?ve done this, but did trip up with some of the escaping >> conventions for multiple languages ? > > > One approach goes like this. > You have two DTDs. One includes this: > > > src CDATA #REQUIRED > in NMTOKEN #REQUIRED> > > So you do things like > > > > You have a program that reads the parsed form of the > file in either a SAX-like or DOM-like manner, and > processes the elements, generating whatever > markup is appropriate, and emits the complete result > as XML, ready for formatting. This is a great approach - my erlang book is marked up in xml with code includes, for example, The the code in foo.erl is tagged like this %% START:connecting .... %% END:connecting The XML is validated - and a simple program extracts the Erlang and color codes it and does whatever you want. Very simple and works beautifully. I'm very much in favor of making ad hoc tools that do little things like exactly as you want them, rather than relying on generic masterpieces (like docbook). Cheers /Joe /Joe > > *Manual* escaping is tedious and error-prone. > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From denc716@REDACTED Fri Dec 1 19:33:50 2017 From: denc716@REDACTED (derek) Date: Fri, 1 Dec 2017 10:33:50 -0800 Subject: [erlang-questions] Patch Package: OTP 19.3.6.4 In-Reply-To: <1512075986.3545.37.camel@ericsson.com> References: <0a953d81-6984-e875-211f-990dd3dd7495@ericsson.com> <1512075986.3545.37.camel@ericsson.com> Message-ID: On Thu, Nov 30, 2017 at 1:06 PM, Sverker Eriksson < sverker.eriksson@REDACTED> wrote: > All announced patches on 19 will have versions OTP-19.3.6.x But wait, will there be more 19.3.7+.x versions? > > Any other pushed OTP-19 tag is some sort of special customer request > of backporting fix or feature. ok, so I think I can skip this OTP-19.2.y.z. > > If something is fixed for example on OTP-19.2.y.z, then it will also > be fixed or already have been fixed on OTP-19.3.6.x. > > /Sverker And Ingela or Sverker can comment on the long term maintenance plan? or generic rules https://github.com/nodejs/Release#release-schedule Something like this for nodejs, it clearly mentioned Maintenance LTS End for each major node version; I just wonder when can I drop support of Erlang 17, 18, ... ? > > > On tor, 2017-11-30 at 12:15 -0800, derek wrote: >> To Ingela and if sverker also on the list: >> >> This morning I just found OTP-19.2.3.1 release is available, for the >> only changed application is erts-8.2.2.1; I'm trying to understand >> why is this needed? when you already have OTP 19.3.6.3 which included >> erts-8.3.5.3; >> how many users are there sticking with 19.2 and can upgrade >> 19.2.X.Y.latest but can't upgrade to 19.3.X.Y.latest ? >> as a downstream OS distribution packager, I want to know if this need >> a packaging as well >> >> Could you also talk on what are the Erlang OTP release rules? if not >> have recorded on some link? and what's the maintenance plan for each >> past release? how long will each release be supported? like 19 will >> be >> supported till Month-Year? 18 till what Month-Year? and is 17 >> already no longer maintained? >> >> >> https://github.com/erlang/otp/releases >> https://github.com/erlang/otp/releases/tag/OTP-19.2.3.1 -------------- next part -------------- An HTML attachment was scrubbed... URL: From t.greenwoodgeer@REDACTED Fri Dec 1 20:45:00 2017 From: t.greenwoodgeer@REDACTED (Todd Greenwood-Geer) Date: Fri, 1 Dec 2017 11:45:00 -0800 Subject: [erlang-questions] Erlang + Climate Change + Brainstorming Message-ID: Climate change discussion... About a year ago I emailed the Erlang list to see if anyone was interested in discussing how we, as distributed systems engineers, could affect climate change. I had about 8 or so folks respond to me directly that they were interested. I created a google group and suggested we all start chatting there, but no one signed up. I was a bit discouraged, and let this idea move to my back-burner... until recently. A couple of weeks ago, Den Drown pinged me about the climate change discussion group, so I am taking another another run at starting this :-). I've created a private chat/channel using keybase.io. There are about 3 or 4 of us on there now, and we are basically at the point of introducing ourselves to see how we might assist each other. BTW - I'm not married to keybase.io, and if folks have a strong opinion as to a better forum, then let me know and we can migrate as necessary. My only reason for moving this discussion off of the Erlang mailing list is that much of the discussion might be off-topic for this forum. If you would like an invitation to the climate_change chat/channel, then please email me directly. -Todd Todd Greenwood-Geer t.greenwoodgeer@REDACTED toddg@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric.pailleau@REDACTED Sat Dec 2 11:36:43 2017 From: eric.pailleau@REDACTED (PAILLEAU Eric) Date: Sat, 2 Dec 2017 11:36:43 +0100 Subject: [erlang-questions] Strings - deprecated functions In-Reply-To: <162e7a61217974fcaea64106a5f5513b.squirrel@chasm.otago.ac.nz> References: <7326453.QddQBcBGA1@changa> <0a4f11fd-bdd3-f70b-c165-81f94314d47b@ninenines.eu> <3ac3be52-a69b-054e-a7fc-dca152639146@ninenines.eu> <162e7a61217974fcaea64106a5f5513b.squirrel@chasm.otago.ac.nz> Message-ID: <94fac353-184c-51df-03f6-70f5dc019f03@wanadoo.fr> +1 Erlang release version of first introduction would be as well very usefull for people wanting to let their code compatible with some releases. Edoc tag @since exists... Another annoying thing I think is that documentation does not help to write your code quickly : in documentation you got for instance for maps module : find(Key, Map) -> {ok, Value} | error I offen copy and paste possible return values for a 'case' and have to rewrite all. As well module name is missing, having to always think to add it. Would be very nice to have a prepared case statement with all possible return value in clipboard when clicking on function. case maps:find(Key, Map) of {ok, Value} -> ; error -> end Le 27/11/2017 ? 08:06, ok@REDACTED a ?crit?: > An alphabetic list has two uses: > 1. find a function with (approximately) known semantics > but unknown name > 2. find the documentation for a known name. > > Splitting the documentation into two lists hurts 2 without > actually helping 1. > > A more informative approach would be to have a line > added: 12.3 deprecated: 20.3 to be removed: 24.0 > perhaps with dates, and it should be possible to generate at > least the 'added:' and 'deprecated:' parts automatically. > > "added" = JavaDoc "since". Compare also the macOS X > __OSX_AVAILABLE_STARTING(, ) > __OSX_AVAILABLE_BUT_DEPRECATED(, , > , ) > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From pierrefenoll@REDACTED Sat Dec 2 16:30:06 2017 From: pierrefenoll@REDACTED (Pierre Fenoll) Date: Sat, 2 Dec 2017 16:30:06 +0100 Subject: [erlang-questions] Strings - deprecated functions In-Reply-To: <94fac353-184c-51df-03f6-70f5dc019f03@wanadoo.fr> References: <7326453.QddQBcBGA1@changa> <0a4f11fd-bdd3-f70b-c165-81f94314d47b@ninenines.eu> <3ac3be52-a69b-054e-a7fc-dca152639146@ninenines.eu> <162e7a61217974fcaea64106a5f5513b.squirrel@chasm.otago.ac.nz> <94fac353-184c-51df-03f6-70f5dc019f03@wanadoo.fr> Message-ID: ter+1 on that clipboard idea! I really need to get to work on *https://github.com/erldocs/erldocs_other * and to incorporate your https://github.com/crownedgrouse/geas project Eric! I have been spending some time in golang doc pages... they have examples as well as links to source code. Erldocs.com should be more like that. I don?t have a bounty to suggest but I?ll review pull requests. WRT doing some ML on the corpus of open source Erlang projects: the other.erldocs.com project aims to aggregate the data & to help anyone process it for the greater good. It just needs finishing... On Sat 2 Dec 2017 at 11:36, PAILLEAU Eric wrote: > +1 > > Erlang release version of first introduction would be as well very > usefull for people wanting to let their code compatible with some releases. > Edoc tag @since exists... > > Another annoying thing I think is that documentation does not help to > write your code quickly : > > in documentation you got for instance for maps module : > > find(Key, Map) -> {ok, Value} | error > > I offen copy and paste possible return values for a 'case' and have to > rewrite all. As well module name is missing, having to always think to > add it. > > Would be very nice to have a prepared case statement with all possible > return value in clipboard when clicking on function. > case maps:find(Key, Map) of > {ok, Value} -> ; > error -> > end > > > Le 27/11/2017 ? 08:06, ok@REDACTED a ?crit : > > An alphabetic list has two uses: > > 1. find a function with (approximately) known semantics > > but unknown name > > 2. find the documentation for a known name. > > > > Splitting the documentation into two lists hurts 2 without > > actually helping 1. > > > > A more informative approach would be to have a line > > added: 12.3 deprecated: 20.3 to be removed: 24.0 > > perhaps with dates, and it should be possible to generate at > > least the 'added:' and 'deprecated:' parts automatically. > > > > "added" = JavaDoc "since". Compare also the macOS X > > __OSX_AVAILABLE_STARTING(, ) > > __OSX_AVAILABLE_BUT_DEPRECATED(, , > > , ) > > > > > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From rickard@REDACTED Sun Dec 3 00:23:13 2017 From: rickard@REDACTED (Rickard Green) Date: Sun, 3 Dec 2017 00:23:13 +0100 Subject: [erlang-questions] OTP Versions and Maint Branches Message-ID: Since there lately have been at least two questions about OTP versions and branches I thought that I'll give a short description on how OTP versions relate to our maint- branches. As of the OTP 17 release we changed the version scheme used. Due to this the following only applies to OTP releases from OTP 17 and onwards. We have one main track of OTP versions. Such versions are on the form OTP X.Y[.Z] and we call these versions normal versions. New normal versions are only assigned to the latest release. When we release a new release of OTP, the next new version on the previous release has to branch off from the latest version of that release. When this happens, the code mass will branch off from the main track and the versions issued will also reflect that. We call these versions branched versions and these are on the form OTP X.Y.Z.U[.V ...] The following "graph" shows the most interesting parts of the version tree as of today. The main track is in the left column. OTP 17.0 | ... | OTP 17.5.6 | \ OTP 18.0 OTP 17.5.6.1 | | ... ... | | ... OTP 17.5.6.9 (Current head of maint-17) | OTP 18.3.4 | \ OTP 19.0 OTP 18.3.4.1 | | ... ... | | ... OTP 18.3.4.7 (Current head of maint-18) | OTP 19.3.6 | \ OTP 20.0 OTP 19.3.6.1 | | ... ... | | ... OTP 19.3.6.4 (Current head of maint-19) | ... | OTP 20.1.7 (Current head of maint-20) The maint-17 branch will always have version numbers on the form OTP 17.5.6.U, maint-18 on the form OTP 18.3.4.U, and maint-19 on the form OTP 19.3.6.U. That is, versions like for example OTP 19.3.7 will *never* ever show up. When we release OTP 21, the maint-20 branch will branch off from the main track and will then get branched version numbers as well. We do however not now until that happens what those version numbers will look like. All patches released on the maint-R branches will be announced on the erlang-questions list. Appart from new versions on the maint-R branches there might appear new branched versions more or less anywhere in the version tree. Those patches address specific issues for specific customers and can be ignored by others. We do also *not* announce such patches on the erlang-questions list. The easiest way to keep track of patches that you are interested in should be to track the maint-R branches that you are interested in. We more or less support three releases. The latest and the two older just before that one. There might however show up patches on releases older than that. For more info in the version scheme see http://erlang.org/doc/system_principles/versions.html Regards, Rickard -- Rickard Green, Erlang/OTP, Ericsson AB -------------- next part -------------- An HTML attachment was scrubbed... URL: From rickard@REDACTED Sun Dec 3 00:24:43 2017 From: rickard@REDACTED (Rickard Green) Date: Sun, 3 Dec 2017 00:24:43 +0100 Subject: [erlang-questions] Patch Package: OTP 19.3.6.4 In-Reply-To: References: <0a953d81-6984-e875-211f-990dd3dd7495@ericsson.com> <1512075986.3545.37.camel@ericsson.com> Message-ID: On Fri, Dec 1, 2017 at 7:33 PM, derek wrote: > > On Thu, Nov 30, 2017 at 1:06 PM, Sverker Eriksson < > sverker.eriksson@REDACTED> wrote: > > All announced patches on 19 will have versions OTP-19.3.6.x > > But wait, will there be more 19.3.7+.x versions? > > > > > Any other pushed OTP-19 tag is some sort of special customer request > > of backporting fix or feature. > > ok, so I think I can skip this OTP-19.2.y.z. > > > > > If something is fixed for example on OTP-19.2.y.z, then it will also > > be fixed or already have been fixed on OTP-19.3.6.x. > > > > /Sverker > > > And Ingela or Sverker can comment on the long term maintenance plan? or > generic rules > > https://github.com/nodejs/Release#release-schedule Something like this > for nodejs, it clearly mentioned Maintenance LTS End for each major node > version; > > I just wonder when can I drop support of Erlang 17, 18, ... ? > > > > > > > On tor, 2017-11-30 at 12:15 -0800, derek wrote: > >> To Ingela and if sverker also on the list: > >> > >> This morning I just found OTP-19.2.3.1 release is available, for the > >> only changed application is erts-8.2.2.1; I'm trying to understand > >> why is this needed? when you already have OTP 19.3.6.3 which included > >> erts-8.3.5.3; > >> how many users are there sticking with 19.2 and can upgrade > >> 19.2.X.Y.latest but can't upgrade to 19.3.X.Y.latest ? > >> as a downstream OS distribution packager, I want to know if this need > >> a packaging as well > >> > >> Could you also talk on what are the Erlang OTP release rules? if not > >> have recorded on some link? and what's the maintenance plan for each > >> past release? how long will each release be supported? like 19 will > >> be > >> supported till Month-Year? 18 till what Month-Year? and is 17 > >> already no longer maintained? > >> > >> > >> https://github.com/erlang/otp/releases > >> https://github.com/erlang/otp/releases/tag/OTP-19.2.3.1 > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > See my mail to erlang-question with subject "OTP Versions and Maint Branches". Regards, Rickard -- Rickard Green, Erlang/OTP, Ericsson AB -------------- next part -------------- An HTML attachment was scrubbed... URL: From sdl.web@REDACTED Sun Dec 3 04:43:30 2017 From: sdl.web@REDACTED (Leo Liu) Date: Sun, 03 Dec 2017 11:43:30 +0800 Subject: [erlang-questions] OTP Versions and Maint Branches References: Message-ID: On 2017-12-03 00:23 +0100, Rickard Green wrote: > The following "graph" shows the most interesting parts of the version tree > as of today. The main track is in the left column. Thanks for the clarification. It makes sense. Another issue is what is the life-span of a major version? Is there some sort of end-of-life? 3rd party applications often support way more major versions than necessary. Such information may help them decide when to drop a version when it is not receiving critical fixes. Thanks. Leo From essen@REDACTED Sun Dec 3 08:57:13 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Sun, 3 Dec 2017 08:57:13 +0100 Subject: [erlang-questions] OTP Versions and Maint Branches In-Reply-To: References: Message-ID: <66bf8d1b-6aa4-bf24-b497-d682e7ba680b@ninenines.eu> Thanks for the clarifications. It is unfortunate that the customer-specific versions do not have a part identifying them like 20.0.7.1-potato. That would make it completely obvious. On 12/03/2017 12:23 AM, Rickard Green wrote: > Since there lately have been at least two questions about OTP versions > and branches I thought that I'll give a short description on how OTP > versions relate to our maint- branches. > > As of the OTP 17 release we changed the version scheme used. Due to this > the following only applies to OTP releases from OTP 17 and onwards. > > We have one main track of OTP versions. Such versions are on the form > OTP X.Y[.Z] and we call these versions normal versions. New normal > versions are only assigned to the latest release. When we release a new > release of OTP, the next new version on the previous release has to > branch off from the latest version of that release. When this happens, > the code mass will branch off from the main track and the versions > issued will also reflect that. We call these versions branched versions > and these are on the form OTP X.Y.Z.U[.V ...] > > The following "graph" shows the most interesting parts of the version > tree as of today. The main track is in the left column. > > OTP 17.0 > ?| > ... > ?| > OTP 17.5.6 > ?| ? ? ? ? ? \ > OTP 18.0 ? ? ?OTP 17.5.6.1 > ?| ? ? ? ? ? ? | > ... ? ? ? ? ? ... > ?| ? ? ? ? ? ? | > ... ? ? ? ? ? OTP 17.5.6.9 ?(Current head of maint-17) > ?| > OTP 18.3.4 > ?| ? ? ? ? ? \ > OTP 19.0 ? ? ?OTP 18.3.4.1 > ?| ? ? ? ? ? ? | > ... ? ? ? ? ? ... > ?| ? ? ? ? ? ? | > ... ? ? ? ? ? OTP 18.3.4.7 ?(Current head of maint-18) > ?| > OTP 19.3.6 > ?| ? ? ? ? ? \ > OTP 20.0 ? ? ?OTP 19.3.6.1 > ?| ? ? ? ? ? ? | > ... ? ? ? ? ? ... > ?| ? ? ? ? ? ? | > ... ? ? ? ? ? OTP 19.3.6.4 ?(Current head of maint-19) > ?| > ... > ?| > OTP 20.1.7 (Current head of maint-20) > > > The maint-17 branch will always have version numbers on the form OTP > 17.5.6.U, maint-18 on the form OTP 18.3.4.U, and maint-19 on the form > OTP 19.3.6.U. That is, versions like for example OTP 19.3.7 will *never* > ever show up. > > When we release OTP 21, the maint-20 branch will branch off from the > main track and will then get branched version numbers as well. We do > however not now until that happens what those version numbers will look > like. > > All patches released on the maint-R branches will be announced on the > erlang-questions list. > > Appart from new versions on the maint-R branches there might appear new > branched versions more or less anywhere in the version tree. Those > patches address specific issues for specific customers and can be > ignored by others. We do also *not* announce such patches on the > erlang-questions list. > > The easiest way to keep track of patches that you are interested in > should be to track the maint-R branches that you are interested in. > > We more or less support three releases. The latest and the two older > just before that one. There might however show up patches on releases > older than that. > > For more info in the version scheme see > http://erlang.org/doc/system_principles/versions.html > > Regards, > Rickard > > -- > Rickard Green, Erlang/OTP, Ericsson AB > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -- Lo?c Hoguin https://ninenines.eu From christopher.meiklejohn@REDACTED Mon Dec 4 00:55:00 2017 From: christopher.meiklejohn@REDACTED (Christopher Meiklejohn) Date: Sun, 03 Dec 2017 23:55:00 +0000 Subject: [erlang-questions] disksup crashing when spawned/forked from process In-Reply-To: References: Message-ID: Hi Luke, Sorry for the delay in responding. Yes, this is a relx/distillery wrapper around launching beam.smp. Thanks, Christopher On Thu, Nov 23, 2017 at 10:21 PM Luke Bakken wrote: > Hi Chris - > > What is "path_to_app_executable"? erl itself or a relx-type shell script > sort of thing? > > On Nov 23, 2017 1:54 PM, "Christopher Meiklejohn" < > christopher.meiklejohn@REDACTED> wrote: > > I've got an Erlang/Elixir application that's being invoked via > child_process in Node.js. Outside of Node.js, it's fine. Inside, the node > crashes on startup with a badarg from disksup -- this is because the > application requires that os_mon be started. > > A trivial reproducer is the following: > > var child_process = require('child_process'); > child_process.spawn(path_to_app_executable, ['foreground'], > { stdio: ignore, > detached: true }); > > Included is the crash: > > 2017-11-23 21:26:04 =ERROR REPORT==== > ** Generic server disksup terminating > ** Last message in was timeout > ** When Server state == [{data,[{"OS",{unix,linux}},{"Timeout",1800000},{"Threshold",80},{"D > iskData",[]}]}] > ** Reason for termination == > ** {badarg,[{erlang,port_close,[#Port<0.2000>],[]},{disksup,terminate,2,[{file,"disksup.erl" > },{line,169}]},{gen_server,try_terminate,3,[{file,"gen_server.erl"},{line,629}]},{gen_server > ,terminate,7,[{file,"gen_server.erl"},{line,795}]},{proc_lib,init_p_do_apply,3,[{file,"proc_ > lib.erl"},{line,247}]}]} > 2017-11-23 21:26:04 =CRASH REPORT==== > crasher: > initial call: disksup:init/1 > pid: <0.913.0> > registered_name: disksup > exception exit: {{badarg,[{erlang,port_close,[#Port<0.2000>],[]},{disksup,terminate,2,[{ > file,"disksup.erl"},{line,169}]},{gen_server,try_terminate,3,[{file,"gen_server.erl"},{line, > 629}]},{gen_server,terminate,7,[{file,"gen_server.erl"},{line,795}]},{proc_lib,init_p_do_app > ly,3,[{file,"proc_lib.erl"},{line,247}]}]},[{gen_server,terminate,7,[{file,"gen_server.erl"} > ,{line,800}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]} > ancestors: [os_mon_sup,<0.911.0>] > messages: [] > links: [<0.912.0>] > dictionary: [] > trap_exit: true > status: running > heap_size: 610 > stack_size: 27 > reductions: 368 > neighbours: > 2017-11-23 21:26:04 =SUPERVISOR REPORT==== > Supervisor: {local,os_mon_sup} > Context: child_terminated > Reason: {badarg,[{erlang,port_close,[#Port<0.2000>],[]},{disksup,terminate,2,[{file > ,"disksup.erl"},{line,169}]},{gen_server,try_terminate,3,[{file,"gen_server.erl"},{line,629} > ]},{gen_server,terminate,7,[{file,"gen_server.erl"},{line,795}]},{proc_lib,init_p_do_apply,3 > ,[{file,"proc_lib.erl"},{line,247}]}]} > Offender: [{pid,<0.913.0>},{id,disksup},{mfargs,{disksup,start_link,[]}},{restart_typ > e,permanent},{shutdown,2000},{child_type,worker}] > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ok@REDACTED Mon Dec 4 01:09:03 2017 From: ok@REDACTED (Richard A. O'Keefe) Date: Mon, 4 Dec 2017 13:09:03 +1300 Subject: [erlang-questions] Some ideas for the shell. Message-ID: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> There are two things that would make life easier for me using the Erlang shell, and I thought I'd ask for thoughts here before writing them up as EEPs. (1) import(Module, Functions) where Functions is a list of {Name,Arity} pairs. Effect: calls to that function from the shell don't need a Module prefix, just like -import directives in files. Reason: I often want to call a function or a small number of functions many times to explore it or test it. (2) include(FileName) Effect: reads FileName as a sequence of Erlang expressions and interprets them as if typed into the same shell. Reason: set up constants and imports. From g@REDACTED Mon Dec 4 01:51:41 2017 From: g@REDACTED (Guilherme Andrade) Date: Mon, 4 Dec 2017 00:51:41 +0000 Subject: [erlang-questions] steady_vector - Array-like collection of values optimized for tail manipulation Message-ID: Hi list, I'm please to announce the release of steady_vector 1.0.0, an Erlang port of Dmitry Kakurin's work on PersistentVector[1] for Elixir, which in turn was based on Clojure's implementation[2]. The ideal use case for steady_vector is when one needs to build an array-like structure by repeatedly appending values to the end *and* random-access reads and writes are frequent; the benchmark results are interesting[3]. Useful links: * API reference: https://github.com/g-andrade/steady_vector/blob/master/doc/steady_vector.md * Hex.pm package: https://hex.pm/packages/steady_vector * Source code: https://github.com/g-andrade/steady_vector Cheers, [1]: https://github.com/Dimagog/persistent_vector [2]: http://hypirion.com/musings/understanding-persistent-vector-pt-1 [3]: https://github.com/g-andrade/steady_vector/blob/master/benchmarks.md#user-content-raw-benchmarking-results-for-100-erlangotp-193 -- Guilherme -------------- next part -------------- An HTML attachment was scrubbed... URL: From alangingras@REDACTED Sun Dec 3 20:43:28 2017 From: alangingras@REDACTED (Alan Gingras) Date: Sun, 3 Dec 2017 14:43:28 -0500 Subject: [erlang-questions] GUI development with Erlang Message-ID: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I'm looking for something similar to Python's "import" and C#'s "using" features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I've used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I'm trying to see what else is available. I followed Joe Armstrong's quest earlier this year and didn't see where he came up with anything. Thanks. Alan -------------- next part -------------- An HTML attachment was scrubbed... URL: From henrik.x.nord@REDACTED Mon Dec 4 07:48:45 2017 From: henrik.x.nord@REDACTED (Henrik Nord X) Date: Mon, 4 Dec 2017 06:48:45 +0000 Subject: [erlang-questions] OTP Versions and Maint Branches In-Reply-To: References: Message-ID: <1512370124.19057.3.camel@ericsson.com> On s?n, 2017-12-03 at 11:43 +0800, Leo Liu wrote: > On 2017-12-03 00:23 +0100, Rickard Green wrote: > > > > The following "graph" shows the most interesting parts of the > > version tree > > as of today. The main track is in the left column. > Thanks for the clarification. It makes sense. > > Another issue is what is the life-span of a major version? Is there > some > sort of end-of-life? 3rd party applications often support way more > major > versions than necessary. Such information may help them decide when > to > drop a version when it is not receiving critical fixes. Thanks. > > Leo --snip from Rickard > > We more or less support three releases. The latest and the two > > older? > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From cean.ebengt@REDACTED Mon Dec 4 08:21:49 2017 From: cean.ebengt@REDACTED (bengt e) Date: Mon, 4 Dec 2017 08:21:49 +0100 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> Message-ID: Greetings, Is 2) similar enough to file:consult/1, to maybe warrant it to be called 'consult' instead? bengt On Mon, Dec 4, 2017 at 1:09 AM, Richard A. O'Keefe wrote: > There are two things that would make life easier for me using the > Erlang shell, and I thought I'd ask for thoughts here before writing > them up as EEPs. > > (1) import(Module, Functions) > where Functions is a list of {Name,Arity} pairs. > Effect: calls to that function from the shell don't need a > Module prefix, just like -import directives in files. > > Reason: I often want to call a function or a small number of > functions many times to explore it or test it. > > (2) include(FileName) > Effect: reads FileName as a sequence of Erlang expressions and > interprets them as if typed into the same shell. > > Reason: set up constants and imports. > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pierrefenoll@REDACTED Mon Dec 4 11:48:50 2017 From: pierrefenoll@REDACTED (Pierre Fenoll) Date: Mon, 04 Dec 2017 10:48:50 +0000 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> Message-ID: On the REPL enhancements wishlist train, I have opened an issue on the bug tracker a while ago to add tab completion for variable names. One of the comments on it was asking for documentation access too, as the Python REPL has been offering for some time. Since some things may be undesirable on production REPLs, maybe a flag that can be set from a rebar3 profile can help toggle some features thus allowing more enhancements for dev REPLs. On Mon 4 Dec 2017 at 08:22, bengt e wrote: > Greetings, > > Is 2) similar enough to file:consult/1, to maybe warrant it to be called > 'consult' instead? > > bengt > > On Mon, Dec 4, 2017 at 1:09 AM, Richard A. O'Keefe > wrote: > >> There are two things that would make life easier for me using the >> Erlang shell, and I thought I'd ask for thoughts here before writing >> them up as EEPs. >> >> (1) import(Module, Functions) >> where Functions is a list of {Name,Arity} pairs. >> Effect: calls to that function from the shell don't need a >> Module prefix, just like -import directives in files. >> >> Reason: I often want to call a function or a small number of >> functions many times to explore it or test it. >> >> (2) include(FileName) >> Effect: reads FileName as a sequence of Erlang expressions and >> interprets them as if typed into the same shell. >> >> Reason: set up constants and imports. >> >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -- Cheers, -- Pierre Fenoll -------------- next part -------------- An HTML attachment was scrubbed... URL: From ewdpb@REDACTED Mon Dec 4 12:22:07 2017 From: ewdpb@REDACTED (=?UTF-8?Q?Wilmar_P=C3=A9rez?=) Date: Mon, 4 Dec 2017 06:22:07 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Message-ID: Hi Alan, Unless you have a very pressing need to create a fat GUI client that you can install per machine I'd encourage you to better focus on a Web interface for your application. There are several frameworks you can use. This would allow you to offer a friendly interface which you can run on one or more servers to which all users would connect simply using a browser. Best regards, Wilmar 2017-12-03 14:43 GMT-05:00 Alan Gingras : > Has anyone tried using Windows Forms (.net) with Erlang? This would be in > a similar fashion to way Python can use Windows Forms. On Linux I believe > this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s ?import? > and C#?s ?using? features. If no one has anything, any hints on how a > feature like this might be implemented. > > > > Basically, I have been working on implementing genetic programming in > Erlang and would like to provide a GUI front end. The WxWidgets front end > that comes with Erlang is difficult at best. I?ve used several different > GUI kits on *nix and Windows platforms but WxWidgets seems the most > difficult for me. So I?m trying to see what else is available. I followed > Joe Armstrong?s quest earlier this year and didn?t see where he came up > with anything. > > > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From vances@REDACTED Mon Dec 4 12:36:46 2017 From: vances@REDACTED (Vance Shipley) Date: Mon, 4 Dec 2017 17:06:46 +0530 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> Message-ID: On Mon, Dec 4, 2017 at 4:18 PM, Pierre Fenoll wrote: > Since some things may be undesirable on production REPLs, maybe a flag that > can be set from a rebar3 profile can help toggle some features thus allowing > more enhancements for dev REPLs. A little known feature is the Restricted Shell: http://erlang.org/doc/man/shell#id262296 which allows you to tailor what can and cannot be run from the shell. The shell_default is also handy as it allows you to create your own short form commands (no module name): http://erlang.org/doc/man/shell_default.html Create an erl alias which add the '+Bi' argument and you can have a quasi-safe REPL for non-programmer operators. -- -Vance From lavrin@REDACTED Mon Dec 4 13:58:16 2017 From: lavrin@REDACTED (=?UTF-8?Q?Rados=C5=82aw_Szymczyszyn?=) Date: Mon, 4 Dec 2017 13:58:16 +0100 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> Message-ID: > One of the comments on it was asking for documentation access too, as the Python REPL has been offering for some time. "Some time" like, hmmm, almost 20 years? ;) There's a PEP on docstring conventions from 2001 [1]. I assume that docstrings as a language feature predate the conventions PEP, but I don't really know when they had been introduced. [1]: https://www.python.org/dev/peps/pep-0257/ Anyway, I've authored a shell documentation access tool for erl, which currently is "good enough" for my daily use: https://github.com/erszcz/docsh It provides EDoc docs, function specs, and type definitions with one-letter helper functions. It can be installed directly with an install.sh or with kerl which now has an 'install-docsh' subcommand. The cost is sacrificing one's own user_default.erl and $HOME/.erlang customizations (or, if one really wants to, doing some work on merging the stuff required by docsh with personal modifications - and there's documentation telling exactly what needs to be done). The caveat is that it doesn't (yet) work with Erlang 20 due to new Abst chunk format. Alas, my time is finite, and I'm working on this thing outside my job. 2017-12-04 11:48 GMT+01:00 Pierre Fenoll : > On the REPL enhancements wishlist train, I have opened an issue on the bug > tracker a while ago to add tab completion for variable names. > One of the comments on it was asking for documentation access too, as the > Python REPL has been offering for some time. > > Since some things may be undesirable on production REPLs, maybe a flag that > can be set from a rebar3 profile can help toggle some features thus allowing > more enhancements for dev REPLs. > > On Mon 4 Dec 2017 at 08:22, bengt e wrote: >> >> Greetings, >> >> Is 2) similar enough to file:consult/1, to maybe warrant it to be called >> 'consult' instead? >> >> bengt >> >> On Mon, Dec 4, 2017 at 1:09 AM, Richard A. O'Keefe >> wrote: >>> >>> There are two things that would make life easier for me using the >>> Erlang shell, and I thought I'd ask for thoughts here before writing >>> them up as EEPs. >>> >>> (1) import(Module, Functions) >>> where Functions is a list of {Name,Arity} pairs. >>> Effect: calls to that function from the shell don't need a >>> Module prefix, just like -import directives in files. >>> >>> Reason: I often want to call a function or a small number of >>> functions many times to explore it or test it. >>> >>> (2) include(FileName) >>> Effect: reads FileName as a sequence of Erlang expressions and >>> interprets them as if typed into the same shell. >>> >>> Reason: set up constants and imports. >>> >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions > > -- > > Cheers, > -- > Pierre Fenoll > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From mononcqc@REDACTED Mon Dec 4 15:55:27 2017 From: mononcqc@REDACTED (Fred Hebert) Date: Mon, 4 Dec 2017 09:55:27 -0500 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> Message-ID: I've toyed with the shell a whole lot over the years -- implemented history storage (twice) and the ctrl+r search in there, along with the stuff related to rebar3's shell. The useful information I could give to people willing to spend the time to develop these things is in a blog post I've written a few years ago: https://ferd.ca/repl-a-bit-more-and-less-than-that.html The structure is not necessarily quite obvious for the tricky requirements of say, capturing input on one node, but evaluating it in the context of another one (except for some signals like ctrl+g, which are evaluated locally). If anyone feels like hacking on the shell, this could be decent preliminary reading. On Mon, Dec 4, 2017 at 7:58 AM, Rados?aw Szymczyszyn wrote: > > One of the comments on it was asking for documentation access too, as > the Python REPL has been offering for some time. > > "Some time" like, hmmm, almost 20 years? ;) There's a PEP on docstring > conventions from 2001 [1]. I assume that docstrings as a language > feature predate the conventions PEP, but I don't really know when they > had been introduced. > > [1]: https://www.python.org/dev/peps/pep-0257/ > > Anyway, I've authored a shell documentation access tool for erl, which > currently is "good enough" for my daily use: > > https://github.com/erszcz/docsh > > It provides EDoc docs, function specs, and type definitions with > one-letter helper functions. It can be installed directly with an > install.sh or with kerl which now has an 'install-docsh' subcommand. > The cost is sacrificing one's own user_default.erl and $HOME/.erlang > customizations (or, if one really wants to, doing some work on merging > the stuff required by docsh with personal modifications - and there's > documentation telling exactly what needs to be done). > The caveat is that it doesn't (yet) work with Erlang 20 due to new > Abst chunk format. Alas, my time is finite, and I'm working on this > thing outside my job. > > 2017-12-04 11:48 GMT+01:00 Pierre Fenoll : > > On the REPL enhancements wishlist train, I have opened an issue on the > bug > > tracker a while ago to add tab completion for variable names. > > One of the comments on it was asking for documentation access too, as the > > Python REPL has been offering for some time. > > > > Since some things may be undesirable on production REPLs, maybe a flag > that > > can be set from a rebar3 profile can help toggle some features thus > allowing > > more enhancements for dev REPLs. > > > > On Mon 4 Dec 2017 at 08:22, bengt e wrote: > >> > >> Greetings, > >> > >> Is 2) similar enough to file:consult/1, to maybe warrant it to be called > >> 'consult' instead? > >> > >> bengt > >> > >> On Mon, Dec 4, 2017 at 1:09 AM, Richard A. O'Keefe > >> wrote: > >>> > >>> There are two things that would make life easier for me using the > >>> Erlang shell, and I thought I'd ask for thoughts here before writing > >>> them up as EEPs. > >>> > >>> (1) import(Module, Functions) > >>> where Functions is a list of {Name,Arity} pairs. > >>> Effect: calls to that function from the shell don't need a > >>> Module prefix, just like -import directives in files. > >>> > >>> Reason: I often want to call a function or a small number of > >>> functions many times to explore it or test it. > >>> > >>> (2) include(FileName) > >>> Effect: reads FileName as a sequence of Erlang expressions and > >>> interprets them as if typed into the same shell. > >>> > >>> Reason: set up constants and imports. > >>> > >>> > >>> > >>> _______________________________________________ > >>> erlang-questions mailing list > >>> erlang-questions@REDACTED > >>> http://erlang.org/mailman/listinfo/erlang-questions > >> > >> > >> _______________________________________________ > >> erlang-questions mailing list > >> erlang-questions@REDACTED > >> http://erlang.org/mailman/listinfo/erlang-questions > > > > -- > > > > Cheers, > > -- > > Pierre Fenoll > > > > > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From elbrujohalcon@REDACTED Mon Dec 4 16:43:21 2017 From: elbrujohalcon@REDACTED (Brujo Benavides) Date: Mon, 4 Dec 2017 12:43:21 -0300 Subject: [erlang-questions] [ANN] SpawnFest starts in less than a week! Message-ID: <63BED4B6-2E29-411E-8E10-EF3141A429D4@gmail.com> Hi folks, Have you already signed up for SpawnFest ? Remember: you can register for free, play from wherever in the world you want to be next weekend and win amazing prizes provided by our sponsors . SpawnFest is a 48-hour online hackathon-style contest for Erlang, Elixir, LFE, etc. developers. The rules are simple. In a nutshell: You build your team, we give you a GitHub repo, you work on it for 48 hours and present it to the judges. We will pick multiple winners and each one of them will have a prize! Join us, it will be fun()! (I'll see my way out?) Brujo Benavides -------------- next part -------------- An HTML attachment was scrubbed... URL: From luke@REDACTED Tue Dec 5 00:39:06 2017 From: luke@REDACTED (Luke Bakken) Date: Mon, 4 Dec 2017 15:39:06 -0800 Subject: [erlang-questions] "Unknown CA" with ssl:connect/3 but "openssl s_client" succeeds Message-ID: Hello everyone, I'm having a heck of a time getting ssl:connect/3 to verify the server certificate correctly using my system CA bundle. I'm using kerl-built Erlang 20.1.7 on Arch Linux. I also see the same behavior using the ESL-packaged Erlang 20 on Ubuntu 16. This is what is failing (on Ubuntu the cacertfile path is "/etc/ssl/certs/ca-certificates.crt"): ---- application:ensure_all_started(ssl), ssl:connect("google.com", 443, [{verify,verify_peer},{reuse_sessions,false},{cacertfile,"/etc/ssl/cert.pem"},{depth,99}]). =INFO REPORT==== 4-Dec-2017::15:07:45 === TLS client: In state certify at ssl_handshake.erl:1626 generated CLIENT ALERT: Fatal - Unknown CA {error,{tls_alert,"unknown ca"}} ---- However, the following succeeds on both Arch Linux as well as Ubuntu 16: Arch Linux command: openssl s_client -verify 99 -connect google.com:443 -CAfile /etc/ssl/cert.pem Ubuntu 16 command: openssl s_client -verify 99 -connect google.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt The command returns success: "Verify return code: 0 (ok)" If I run ssl_pkix_db:extract_trusted_certs("/etc/ssl/cert.pem") it does return 140 decoded certificates, which is the expected number: $ fgrep BEGIN /etc/ssl/cert.pem |wc -l 140 I did a little bit of digging and found that ssl_certificate:find_issuer/4 is returning {error,issuer_not_found}. Thanks in advance and let me know how I can help further, or if I missed something obvious! Luke From luke@REDACTED Tue Dec 5 03:31:23 2017 From: luke@REDACTED (Luke Bakken) Date: Mon, 4 Dec 2017 18:31:23 -0800 Subject: [erlang-questions] "Unknown CA" with ssl:connect/3 but "openssl s_client" succeeds In-Reply-To: References: Message-ID: Hello again - With more investigation, this appears to be related to the certificate bundles themselves. The commands I provide below work fine on OS X 10.12.6, for instance. But, they fail using the following CA bundle: https://curl.haxx.se/docs/caextract.html curl works fine with that file when connecting to google.com:443, but openssl and Erlang don't. Anyway, if I figure out exactly what certs are missing in these files, or what formatting within them causes issues, or what people can look out for I will follow up here. Luke On Mon, Dec 4, 2017 at 3:39 PM, Luke Bakken wrote: > Hello everyone, > > I'm having a heck of a time getting ssl:connect/3 to verify the server > certificate correctly using my system CA bundle. > > I'm using kerl-built Erlang 20.1.7 on Arch Linux. I also see the same > behavior using the ESL-packaged Erlang 20 on Ubuntu 16. > > This is what is failing (on Ubuntu the cacertfile path is > "/etc/ssl/certs/ca-certificates.crt"): > > ---- > > application:ensure_all_started(ssl), ssl:connect("google.com", 443, > [{verify,verify_peer},{reuse_sessions,false},{cacertfile,"/etc/ssl/cert.pem"},{depth,99}]). > > =INFO REPORT==== 4-Dec-2017::15:07:45 === > TLS client: In state certify at ssl_handshake.erl:1626 generated > CLIENT ALERT: Fatal - Unknown CA > > {error,{tls_alert,"unknown ca"}} > > ---- > > However, the following succeeds on both Arch Linux as well as Ubuntu 16: > > Arch Linux command: > > openssl s_client -verify 99 -connect google.com:443 -CAfile /etc/ssl/cert.pem > > Ubuntu 16 command: > > openssl s_client -verify 99 -connect google.com:443 -CAfile > /etc/ssl/certs/ca-certificates.crt > > The command returns success: "Verify return code: 0 (ok)" > > If I run ssl_pkix_db:extract_trusted_certs("/etc/ssl/cert.pem") it > does return 140 decoded certificates, which is the expected number: > > $ fgrep BEGIN /etc/ssl/cert.pem |wc -l > 140 > > I did a little bit of digging and found that > ssl_certificate:find_issuer/4 is returning {error,issuer_not_found}. > > Thanks in advance and let me know how I can help further, or if I > missed something obvious! > Luke From ok@REDACTED Tue Dec 5 04:51:29 2017 From: ok@REDACTED (Richard A. O'Keefe) Date: Tue, 5 Dec 2017 16:51:29 +1300 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> Message-ID: <16b4e2b8-472e-d544-e964-71ad09b92c8f@cs.otago.ac.nz> On 4/12/17 8:21 PM, bengt e wrote: > Greetings, > > Is 2) similar enough to file:consult/1, to maybe warrant it to be called > 'consult' instead? file:consult/1 reads a file and (all going well) *returns a list of the terms* but does not process them. This isn't all _that_ much like what (shell):include/1 is supposed to do. import(...) was designed to mimic the -import directive and include(...) was designed to mimic the -include directive. I was actually thinking of it as analogous to the 'source ' command in dbx, but using a name already familiar to Erlang programmers. From alex0player@REDACTED Tue Dec 5 09:07:33 2017 From: alex0player@REDACTED (Alex S.) Date: Tue, 5 Dec 2017 11:07:33 +0300 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Message-ID: For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras : > Has anyone tried using Windows Forms (.net) with Erlang? This would be in > a similar fashion to way Python can use Windows Forms. On Linux I believe > this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s ?import? > and C#?s ?using? features. If no one has anything, any hints on how a > feature like this might be implemented. > > > > Basically, I have been working on implementing genetic programming in > Erlang and would like to provide a GUI front end. The WxWidgets front end > that comes with Erlang is difficult at best. I?ve used several different > GUI kits on *nix and Windows platforms but WxWidgets seems the most > difficult for me. So I?m trying to see what else is available. I followed > Joe Armstrong?s quest earlier this year and didn?t see where he came up > with anything. > > > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sergej.jurecko@REDACTED Tue Dec 5 09:13:39 2017 From: sergej.jurecko@REDACTED (=?utf-8?Q?Sergej_Jure=C4=8Dko?=) Date: Tue, 5 Dec 2017 09:13:39 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Message-ID: <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> What we did when we wanted to ship a GUI app with Erlang was running erl in the background and communicate over stdin/stdout. Regards, Sergej > On 5 Dec 2017, at 09:07, Alex S. wrote: > > For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. > > 2017-12-03 22:43 GMT+03:00 Alan Gingras >: > Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/ ). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. > > > > Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. > > > > Thanks. > > Alan > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From sperber@REDACTED Tue Dec 5 11:16:41 2017 From: sperber@REDACTED (Michael Sperber) Date: Tue, 05 Dec 2017 11:16:41 +0100 Subject: [erlang-questions] Call for Participation: BOB 2018 (February 23, Berlin) Message-ID: ================================================================ BOB 2018 Conference ?What happens if we simply use what?s best?? February 23, 2018, Berlin http://bobkonf.de/2018/ Program: http://bobkonf.de/2018/en/program.html Registration: http://bobkonf.de/2018/en/registration.html ================================================================ BOB is the conference for developers, architects and decision-makers to explore technologies beyond the mainstream in software development, and to find the best tools available to software developers today. Our goal is for all participants of BOB to return home with new insights that enable them to improve their own software development experiences. The program features 14 talks and 8 tutorials on current topics: http://bobkonf.de/2018/en/program.html The subject range of talks includes functional programming, verticalization, formal methods, and data analytics. The tutorials feature introductions to Haskell, Clojure, Livecoding, terminal programming, Liquid Haskell, functional reactive programming, and domain-driven design. Leif Andersen will give the keynote talk. Registration is open online: http://bobkonf.de/2018/en/registration.html NOTE: The early-bird rates expire on January 22, 2018! BOB cooperates with the :clojured conference on the following day. There is a registration discount available for participants of both events. http://www.clojured.de/ From carlsson.richard@REDACTED Tue Dec 5 13:59:40 2017 From: carlsson.richard@REDACTED (Richard Carlsson) Date: Tue, 5 Dec 2017 13:59:40 +0100 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: <16b4e2b8-472e-d544-e964-71ad09b92c8f@cs.otago.ac.nz> References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> <16b4e2b8-472e-d544-e964-71ad09b92c8f@cs.otago.ac.nz> Message-ID: You also have file:eval/1 and file:script/1. (And "path_..." versions of the same.) /Richard 2017-12-05 4:51 GMT+01:00 Richard A. O'Keefe : > > > On 4/12/17 8:21 PM, bengt e wrote: > >> Greetings, >> >> Is 2) similar enough to file:consult/1, to maybe warrant it to be called >> 'consult' instead? >> > > file:consult/1 reads a file and (all going well) *returns a list of the > terms* but does not process them. This isn't all _that_ much like what > (shell):include/1 is supposed to do. import(...) was designed to mimic > the -import directive and include(...) was designed to mimic the > -include directive. > > I was actually thinking of it as analogous to the > 'source ' command in dbx, but using a name > already familiar to Erlang programmers. > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pepm.workshop@REDACTED Wed Dec 6 05:56:35 2017 From: pepm.workshop@REDACTED (PEPM Workshop) Date: Wed, 6 Dec 2017 13:56:35 +0900 Subject: [erlang-questions] PEPM 2018 Final Call for Poster/Demo Abstracts and Participation Message-ID: PEPM 2018 Final Call for Poster/Demo Abstracts and Participation ================================================================ A tentative programme is available, with two invited talks decided. Poster/demo abstracts are due this Friday (8th December, AoE). See below for the submission guideline. Registration ------------ * Web page : https://popl18.sigplan.org/attending/Registration * Early registration deadline : 10th December 2017 Programme --------- * https://popl18.sigplan.org/track/PEPM-2018#program Monday, 8th January 2018 10:30 - 11:30 Developments in Property-Based Testing (Invited Talk) Jan Midtgaard 11:30 - 12:00 Selective CPS Transformation for Shift and Reset Kenichi Asai, Chihiro Uehara Lunch 14:00 - 14:30 A Guess-and-Assume Approach to Loop Fusion for Program Verification Akifumi Imanishi, Kohei Suenaga, Atsushi Igarashi 14:30 - 15:00 Gradually Typed Symbolic Expressions David Broman, Jeremy G. Siek 15:00 - 15:30 On the Cost of Type-Tag Soundness Ben Greenman, Zeina Migeed Break 16:00 - 17:00 TBA (Invited Talk) Conal Elliott Tuesday, 9th January 2018 10:30 - 11:30 Challenges in the Design and Compilation of Programming Languages for Exascale Machines (Invited Talk) Alex Aiken 11:30 - 12:00 Checking Cryptographic API Usage with Composable Annotations (Short Paper) Duncan Mitchell, L. Thomas van Binsbergen, Blake Loring, Johannes Kinder Lunch 14:00 - 14:30 Partially Static Data as Free Extension of Algebras (Short Paper) Jeremy Yallop, Tamara von Glehn, Ohad Kammar 14:30 - 15:00 Program Generation for ML Modules (Short Paper) Takahisa Watanabe, Yukiyoshi Kameyama 15:00 - 15:30 Recursive Programs in Normal Form (Short Paper) Barry Jay Break 16:00 - 17:30 Posters/demos (TBA) Poster/demo abstract submission guideline ----------------------------------------- * https://popl18.sigplan.org/track/PEPM-2018#Call-for-Poster-Demo-Abstracts To maintain PEPM?s dynamic and interactive nature, PEPM 2018 will continue to have special sessions for poster/demo presentations. In addition to the main interactive poster/demo session, there will also be a scheduled short-talk session where each poster/demo can be advertised to the audience in, say, 5?10 minutes. Poster/demo abstracts should describe work relevant to PEPM (whose scope is detailed below), typeset as a one-page PDF using the two-column ?sigplan? sub-format of the new ?acmart? format available at: http://sigplan.org/Resources/Author/ and sent by email to the programme co-chairs, Fritz Henglein and Josh Ko, at: henglein@REDACTED, hsiang-shang@REDACTED Please also include in the email: * a short summary of the abstract (in plain text), * the type(s) of proposed presentation (poster and/or demo), and * whether you would like to give a scheduled short talk (in addition to the poster/demo presentation). Abstracts should be sent no later than: Friday, 8th December 2017, anywhere on earth and will be considered for acceptance on a rolling basis. Accepted abstracts, along with their short summary, will be posted on PEPM 2018?s website. At least one author of each accepted abstract must attend the workshop and present the work during the poster/demo session. Student participants with accepted posters/demos can apply for a SIGPLAN PAC grant to help cover travel expenses and other support. PAC also offers other support, such as for child-care expenses during the meeting or for travel costs for companions of SIGPLAN members with physical disabilities, as well as for travel from locations outside of North America and Europe. For details on the PAC programme, see its web page. Scope ----- In addition to the traditional PEPM topics (see below), PEPM 2018 welcomes submissions in new domains, in particular: * Semantics based and machine-learning based program synthesis and program optimisation. * Modelling, analysis, and transformation techniques for distributed and concurrent protocols and programs, such as session types, linear types, and contract specifications. More generally, topics of interest for PEPM 2018 include, but are not limited to: * Program and model manipulation techniques such as: supercompilation, partial evaluation, fusion, on-the-fly program adaptation, active libraries, program inversion, slicing, symbolic execution, refactoring, decompilation, and obfuscation. * Techniques that treat programs/models as data objects including metaprogramming, generative programming, embedded domain-specific languages, program synthesis by sketching and inductive programming, staged computation, and model-driven program generation and transformation. * Program analysis techniques that are used to drive program/model manipulation such as: abstract interpretation, termination checking, binding-time analysis, constraint solving, type systems, automated testing and test case generation. * Application of the above techniques including case studies of program manipulation in real-world (industrial, open-source) projects and software development processes, descriptions of robust tools capable of effectively handling realistic applications, benchmarking. Examples of application domains include legacy program understanding and transformation, DSL implementations, visual languages and end-user programming, scientific computing, middleware frameworks and infrastructure needed for distributed and web-based applications, embedded and resource-limited computation, and security. This list of categories is not exhaustive, and we encourage submissions describing new theories and applications related to semantics-based program manipulation in general. If you have a question as to whether a potential submission is within the scope of the workshop, please contact the programme co-chairs, Fritz Henglein and Josh Ko (henglein@REDACTED, hsiang-shang@REDACTED). From zkessin@REDACTED Wed Dec 6 09:04:12 2017 From: zkessin@REDACTED (Zachary Kessin) Date: Wed, 6 Dec 2017 10:04:12 +0200 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> Message-ID: I had thought it would be an interesting idea to build a GUI toolset around Erlang such that each widget on screen was a process. That being said I think to develop such a toolkit would probably cost on the order of $1,000,000 (Total guess on the number). If I had to develop a desktop app with Erlang I would probably use something like Electra to do a virtual browser with an Elm Frontend. Zach ? On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko wrote: > What we did when we wanted to ship a GUI app with Erlang was running erl > in the background and communicate over stdin/stdout. > > Regards, > Sergej > > > On 5 Dec 2017, at 09:07, Alex S. wrote: > > For what it's worth, you can always implement your view and controller in > something like C#/F#, and your model in Erlang, and hook them up via TCP. > Alternatively, there was an Erlang-toF# compiler floating around I believe. > > 2017-12-03 22:43 GMT+03:00 Alan Gingras : > >> Has anyone tried using Windows Forms (.net) with Erlang? This would be >> in a similar fashion to way Python can use Windows Forms. On Linux I >> believe this would be Mono (http://www.mono-project.com/d >> ocs/gui/winforms/). Basically I think I?m looking for something similar >> to Python?s ?import? and C#?s ?using? features. If no one has anything, >> any hints on how a feature like this might be implemented. >> >> >> >> Basically, I have been working on implementing genetic programming in >> Erlang and would like to provide a GUI front end. The WxWidgets front end >> that comes with Erlang is difficult at best. I?ve used several different >> GUI kits on *nix and Windows platforms but WxWidgets seems the most >> difficult for me. So I?m trying to see what else is available. I followed >> Joe Armstrong?s quest earlier this year and didn?t see where he came up >> with anything. >> >> >> >> Thanks. >> >> Alan >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -- Zach Kessin Reduce project risk with training in Elm For web teams Skype: zachkessin +972 54 234 3956 / +44 203 734 9790 / +1 617 778 7213 -------------- next part -------------- An HTML attachment was scrubbed... URL: From carlsson.richard@REDACTED Wed Dec 6 10:26:07 2017 From: carlsson.richard@REDACTED (Richard Carlsson) Date: Wed, 6 Dec 2017 10:26:07 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> Message-ID: Joe did that back in 2004 - See https://dl.acm.org/citation.cfm?id=1022472 /Richard 2017-12-06 9:04 GMT+01:00 Zachary Kessin : > I had thought it would be an interesting idea to build a GUI toolset > around Erlang such that each widget on screen was a process. That being > said I think to develop such a toolkit would probably cost on the order of > $1,000,000 (Total guess on the number). > > If I had to develop a desktop app with Erlang I would probably use > something like Electra to do a virtual browser with an Elm Frontend. > > Zach > ? > > On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko > wrote: > >> What we did when we wanted to ship a GUI app with Erlang was running erl >> in the background and communicate over stdin/stdout. >> >> Regards, >> Sergej >> >> >> On 5 Dec 2017, at 09:07, Alex S. wrote: >> >> For what it's worth, you can always implement your view and controller in >> something like C#/F#, and your model in Erlang, and hook them up via TCP. >> Alternatively, there was an Erlang-toF# compiler floating around I believe. >> >> 2017-12-03 22:43 GMT+03:00 Alan Gingras : >> >>> Has anyone tried using Windows Forms (.net) with Erlang? This would be >>> in a similar fashion to way Python can use Windows Forms. On Linux I >>> believe this would be Mono (http://www.mono-project.com/d >>> ocs/gui/winforms/). Basically I think I?m looking for something >>> similar to Python?s ?import? and C#?s ?using? features. If no one has >>> anything, any hints on how a feature like this might be implemented. >>> >>> >>> >>> Basically, I have been working on implementing genetic programming in >>> Erlang and would like to provide a GUI front end. The WxWidgets front end >>> that comes with Erlang is difficult at best. I?ve used several different >>> GUI kits on *nix and Windows platforms but WxWidgets seems the most >>> difficult for me. So I?m trying to see what else is available. I followed >>> Joe Armstrong?s quest earlier this year and didn?t see where he came up >>> with anything. >>> >>> >>> >>> Thanks. >>> >>> Alan >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> > > > -- > Zach Kessin > Reduce project risk with training in Elm For web teams > Skype: zachkessin > +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 > <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alangingras@REDACTED Wed Dec 6 12:43:04 2017 From: alangingras@REDACTED (Alan Gingras) Date: Wed, 6 Dec 2017 06:43:04 -0500 (EST) Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> Message-ID: <753767474.203780.1512560584862@connect.xfinity.com> Thanks for the suggestion. I've been trying to keep the work totally in Erlang. Partly because I am trying to become better with Erlang itself and partly out of stubbornness. I had looked at using a browser based GUI but for what I'm doing I really don't want (or need) to be too complicated. One of the other responses suggested using C# to create the front end and communicate with Erlang via TCP. I had thought of that as well, but decided to pursue using pure Erlang but have become stymied by wxErlang and its difficulty. Most likely I will end up pursing the C# (or similar) front end. Alan > On December 6, 2017 at 3:04 AM Zachary Kessin wrote: > > I had thought it would be an interesting idea to build a GUI toolset around Erlang such that each widget on screen was a process. That being said I think to develop such a toolkit would probably cost on the order of $1,000,000 (Total guess on the number). > > If I had to develop a desktop app with Erlang I would probably use something like Electra to do a virtual browser with an Elm Frontend. > > Zach > ? > > On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko wrote: > > > > What we did when we wanted to ship a GUI app with Erlang was running erl in the background and communicate over stdin/stdout. > > > > Regards, > > Sergej > > > > > > > > > > > On 5 Dec 2017, at 09:07, Alex S. wrote: > > > > > > For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. > > > > > > 2017-12-03 22:43 GMT+03:00 Alan Gingras : > > > > > > > > > > > > > > Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/ http://www.mono-project.com/docs/gui/winforms/ ). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. > > > > > > > > > > > > > > > > Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. > > > > > > > > > > > > > > > > Thanks. > > > > > > > > Alan > > > > > > > > > > > > _______________________________________________ > > > > erlang-questions mailing list > > > > erlang-questions@REDACTED mailto:erlang-questions@REDACTED > > > > http://erlang.org/mailman/listinfo/erlang-questions http://erlang.org/mailman/listinfo/erlang-questions > > > > > > > > > > > > > > > > > > _______________________________________________ > > > erlang-questions mailing list > > > erlang-questions@REDACTED mailto:erlang-questions@REDACTED > > > http://erlang.org/mailman/listinfo/erlang-questions http://erlang.org/mailman/listinfo/erlang-questions > > > > > > > > > > > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED mailto:erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions http://erlang.org/mailman/listinfo/erlang-questions > > > > > > > > > > -- > Zach Kessin > Reduce project risk with training in Elm For web teams > Skype: zachkessin > +972 54 234 3956 / +44 203 734 9790 / +1 617 778 7213 > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ivancarmenates@REDACTED Wed Dec 6 15:34:49 2017 From: ivancarmenates@REDACTED (=?UTF-8?Q?Iv=C3=A1n_Carmenates?=) Date: Wed, 6 Dec 2017 09:34:49 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Message-ID: Regards, a while a go I did a little framework to easily communicate Erlang with C#, here is the documentation if you get interested we can update it to match the current times. On Sun, Dec 3, 2017 at 2:43 PM, Alan Gingras wrote: > Has anyone tried using Windows Forms (.net) with Erlang? This would be in > a similar fashion to way Python can use Windows Forms. On Linux I believe > this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s ?import? > and C#?s ?using? features. If no one has anything, any hints on how a > feature like this might be implemented. > > > > Basically, I have been working on implementing genetic programming in > Erlang and would like to provide a GUI front end. The WxWidgets front end > that comes with Erlang is difficult at best. I?ve used several different > GUI kits on *nix and Windows platforms but WxWidgets seems the most > difficult for me. So I?m trying to see what else is available. I followed > Joe Armstrong?s quest earlier this year and didn?t see where he came up > with anything. > > > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ExtendedVisualOtp (English Version).pdf Type: application/pdf Size: 519759 bytes Desc: not available URL: From alangingras@REDACTED Wed Dec 6 21:08:39 2017 From: alangingras@REDACTED (Alan Gingras) Date: Wed, 6 Dec 2017 15:08:39 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> Thanks Alex. I had thought of that but was trying to make this a pure Erlang application. This is most likely the approach I will end up taking unless I decide to pursue wxErlang, but that is probably a little unlikely. From: Alex S. [mailto:alex0player@REDACTED] Sent: Tuesday, December 05, 2017 03:08 To: Alan Gingras Cc: Erlang Subject: Re: [erlang-questions] GUI development with Erlang For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras >: Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. Thanks. Alan _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From alangingras@REDACTED Wed Dec 6 21:11:25 2017 From: alangingras@REDACTED (Alan Gingras) Date: Wed, 6 Dec 2017 15:11:25 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> Message-ID: <002e01d36ece$656eb9b0$304c2d10$@comcast.net> Thanks Alex. I had thought of that but was trying to make this a pure Erlang application. I had even thought of using an Erlang Port but again, this would lead me outside of a strictly Erlang solution. From: erlang-questions-bounces@REDACTED [mailto:erlang-questions-bounces@REDACTED] On Behalf Of Sergej Jurecko Sent: Tuesday, December 05, 2017 03:14 To: Erlang Subject: Re: [erlang-questions] GUI development with Erlang What we did when we wanted to ship a GUI app with Erlang was running erl in the background and communicate over stdin/stdout. Regards, Sergej On 5 Dec 2017, at 09:07, Alex S. > wrote: For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras >: Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. Thanks. Alan _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From lloyd@REDACTED Wed Dec 6 22:08:48 2017 From: lloyd@REDACTED (lloyd@REDACTED) Date: Wed, 6 Dec 2017 16:08:48 -0500 (EST) Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <002901d36ece$026702a0$073507e0$@comcast.net> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <002901d36ece$026702a0$073507e0$@comcast.net> Message-ID: <1512594528.6293196@apps.rackspace.com> Hi Alan, Perhaps a browser front-end would suit your purposes. And, if so, you might look into Nitrogen. It provides a rich set of GUI elements with the additional benefit of making your genetic models accessible through the web. All the best, LRP -----Original Message----- From: "Alan Gingras" Sent: Wednesday, December 6, 2017 3:08pm To: "'Alex S.'" Cc: "'Erlang'" Subject: Re: [erlang-questions] GUI development with Erlang _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions Thanks Alex. I had thought of that but was trying to make this a pure Erlang application. This is most likely the approach I will end up taking unless I decide to pursue wxErlang, but that is probably a little unlikely. From: Alex S. [mailto:alex0player@REDACTED] Sent: Tuesday, December 05, 2017 03:08 To: Alan Gingras Cc: Erlang Subject: Re: [erlang-questions] GUI development with Erlang For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras >: Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. Thanks. Alan _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions From ok@REDACTED Thu Dec 7 02:23:57 2017 From: ok@REDACTED (Richard A. O'Keefe) Date: Thu, 7 Dec 2017 14:23:57 +1300 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> <16b4e2b8-472e-d544-e964-71ad09b92c8f@cs.otago.ac.nz> Message-ID: <844d58a6-f438-e351-b184-792b5063d08d@cs.otago.ac.nz> On 6/12/17 1:59 AM, Richard Carlsson wrote: > You also have file:eval/1 and file:script/1. (And "path_..." versions of > the same.) Yes, but file:eval/1 does something *DIFFERENT* from what the shell command include/1 would. And so does file:/script/1. There is much overlap, but they are not the same. If the argument is to use one of those functions, that won't fly. If the argument is to use the *name* eval/1 or script/1 in the shell for what I want include/1 to do, yeah, sure, why not? You see, the thing is that include/1 is supposed to read a sequence of full-stop-terminated forms from the named file, and process them *as shell commands*, some of which are normal Erlang expressions, and some of which are *not*. I mean, I did know about file:eval/1 (but admittedly not file:script/1) and there's a reason I wanted something else... From ok@REDACTED Thu Dec 7 02:45:57 2017 From: ok@REDACTED (Richard A. O'Keefe) Date: Thu, 7 Dec 2017 14:45:57 +1300 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> Message-ID: On 6/12/17 9:04 PM, Zachary Kessin wrote: > I had thought it would be an interesting idea to build a GUI toolset > around Erlang such that each widget on screen was a process. That being > said I think to develop such a toolkit would probably cost on the order > of $1,000,000 (Total guess on the number). I once saw this done in Flat Concurrent Prolog. It worked very well, and was done by one person in about a year. I was quite impressed by it, and ever since have been struggling to try to remember the name of the author. This was more than 20 years ago, so I have *some* excuse for not remembering. Mind you, this was in the era when people thought a 4MB computer was *plenty* to run OS, GUI, Emacs, and compiler all at once..., so we aren't talking about a *lot* of code. Which I guess is the point. Start with just enough GUI for the task at hand and grow it. > > If I had to develop a desktop app with Erlang I would probably use > something like Electra to do a virtual browser with an Elm Frontend. Links? From carlsson.richard@REDACTED Thu Dec 7 10:23:02 2017 From: carlsson.richard@REDACTED (Richard Carlsson) Date: Thu, 7 Dec 2017 10:23:02 +0100 Subject: [erlang-questions] Some ideas for the shell. In-Reply-To: <844d58a6-f438-e351-b184-792b5063d08d@cs.otago.ac.nz> References: <85ea7dfa-8f2b-db05-230a-cf91d1ca8ec3@cs.otago.ac.nz> <16b4e2b8-472e-d544-e964-71ad09b92c8f@cs.otago.ac.nz> <844d58a6-f438-e351-b184-792b5063d08d@cs.otago.ac.nz> Message-ID: Apparently, path_eval/1 is also what Erlang ends up using to execute your ~/.erlang file if you have one (via the undocumented c:erlangrc/0). There doesn't seem to be a way to run a script in the context of the shell. /Richard 2017-12-07 2:23 GMT+01:00 Richard A. O'Keefe : > > > On 6/12/17 1:59 AM, Richard Carlsson wrote: > >> You also have file:eval/1 and file:script/1. (And "path_..." versions of >> the same.) >> > > Yes, but file:eval/1 does something *DIFFERENT* from what > the shell command include/1 would. And so does file:/script/1. > There is much overlap, but they are not the same. > If the argument is to use one of those functions, that won't fly. > If the argument is to use the *name* eval/1 or script/1 in the > shell for what I want include/1 to do, yeah, sure, why not? > > You see, the thing is that include/1 is supposed to read a sequence > of full-stop-terminated forms from the named file, and process them > *as shell commands*, some of which are normal Erlang expressions, > and some of which are *not*. I mean, I did know about file:eval/1 > (but admittedly not file:script/1) and there's a reason I wanted > something else... > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erlang@REDACTED Thu Dec 7 13:33:36 2017 From: erlang@REDACTED (Joe Armstrong) Date: Thu, 7 Dec 2017 13:33:36 +0100 Subject: [erlang-questions] How to find Pids of the children of a supervisor Message-ID: I was asked the following in a direct mail to me: "Given two worker processes in a supervision tree, A and B, if A wants to message B, how should it obtain the pid of B ?" Pretty good question. I think the answer is to use supervisor:which_children/1 and to name the supervisor and all the children. Is the the best way? - does anybody have an example? Cheers /Joe From erlang@REDACTED Thu Dec 7 13:50:27 2017 From: erlang@REDACTED (Joe Armstrong) Date: Thu, 7 Dec 2017 13:50:27 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <753767474.203780.1512560584862@connect.xfinity.com> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: If you want something that just works and is reasonably simple to implement Browser based GUI's are pretty good. The combination of web sockets + SVG/Canavas/DOM manipulation in JS is pretty easy to setup and loads of people understand JS/Browser things. Stand-alone outside the browser is tricky. TCL/Tk is really easy to get going and interface (yes it's old but works well) Java Swing is what it is - and if you're good at Java might be an alternative but you'd have to interface it to Erlang. QT is brilliant but you'd need to write the GUI in C++ and interface it to Erlang WxWidgets is actually pretty good but has a steep learning curve (a cliff) - I did actually manage to build some interfaces with it and concluded that it was pretty good but that it needed a *lot* of examples and getting started tutorials. Cheers /Joe On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras wrote: > Thanks for the suggestion. I've been trying to keep the work totally in > Erlang. Partly because I am trying to become better with Erlang itself and > partly out of stubbornness. I had looked at using a browser based GUI but > for what I'm doing I really don't want (or need) to be too complicated. > One of the other responses suggested using C# to create the front end and > communicate with Erlang via TCP. I had thought of that as well, but > decided to pursue using pure Erlang but have become stymied by wxErlang and > its difficulty. Most likely I will end up pursing the C# (or similar) > front end. > > > Alan > > On December 6, 2017 at 3:04 AM Zachary Kessin wrote: > > I had thought it would be an interesting idea to build a GUI toolset > around Erlang such that each widget on screen was a process. That being > said I think to develop such a toolkit would probably cost on the order of > $1,000,000 (Total guess on the number). > > If I had to develop a desktop app with Erlang I would probably use > something like Electra to do a virtual browser with an Elm Frontend. > > Zach > ? > > On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko > wrote: > > What we did when we wanted to ship a GUI app with Erlang was running erl > in the background and communicate over stdin/stdout. > > Regards, > Sergej > > > On 5 Dec 2017, at 09:07, Alex S. wrote: > > For what it's worth, you can always implement your view and controller in > something like C#/F#, and your model in Erlang, and hook them up via TCP. > Alternatively, there was an Erlang-toF# compiler floating around I believe. > > 2017-12-03 22:43 GMT+03:00 Alan Gingras : > > Has anyone tried using Windows Forms (.net) with Erlang? This would be in > a similar fashion to way Python can use Windows Forms. On Linux I believe > this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s ?import? > and C#?s ?using? features. If no one has anything, any hints on how a > feature like this might be implemented. > > > > Basically, I have been working on implementing genetic programming in > Erlang and would like to provide a GUI front end. The WxWidgets front end > that comes with Erlang is difficult at best. I?ve used several different > GUI kits on *nix and Windows platforms but WxWidgets seems the most > difficult for me. So I?m trying to see what else is available. I followed > Joe Armstrong?s quest earlier this year and didn?t see where he came up > with anything. > > > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > > -- > Zach Kessin > Reduce project risk with training in Elm For web teams > Skype: zachkessin > +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 > <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From arif@REDACTED Thu Dec 7 14:04:07 2017 From: arif@REDACTED (arif@REDACTED) Date: Thu, 07 Dec 2017 05:04:07 -0800 Subject: [erlang-questions] GUI development with Erlang Message-ID: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> Hi, I have been using wxErlang on some projects and I don't find it too hard. I make the GUI in separate processes and communicate with the application using regular erlang message passing. Using the wx_object, it is practically a breeze. It is like programming a gen_server. I even run the GUI processes supervised, to allow me to "let it crash". Also, you can use wxFormBuilder to do the layout and use the generated PHP or LUA code to figure out what you need to do in wxErlang. I suppose you could even write a parser to generate your erlang code from those. So I am curious. What is that you find so hard about it? And what makes it easier with C# or the like? Thanks Arif Date: Wed, 6 Dec 2017 15:08:39 -0500 From: "Alan Gingras" To: "'Alex S.'" Cc: 'Erlang' Subject: Re: [erlang-questions] GUI development with Erlang Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> Content-Type: text/plain; charset="utf-8" Thanks Alex. I had thought of that but was trying to make this a pure Erlang application. This is most likely the approach I will end up taking unless I decide to pursue wxErlang, but that is probably a little unlikely. From: Alex S. [mailto:alex0player@REDACTED] Sent: Tuesday, December 05, 2017 03:08 To: Alan Gingras Cc: Erlang Subject: Re: [erlang-questions] GUI development with Erlang For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras >: Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. Thanks. Alan From vances@REDACTED Thu Dec 7 14:19:14 2017 From: vances@REDACTED (Vance Shipley) Date: Thu, 7 Dec 2017 18:49:14 +0530 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> Message-ID: I'm very pleased with the approach we took in github.com/sigscale/ocs where we implemented simple web components using Polymer over our standard REST APIs. It's a really low impedance match if you have an "API first" design. On Dec 7, 2017 18:34, wrote: > Hi, > I have been using wxErlang on some projects and I don't find it too > hard. I make the GUI in separate processes and communicate with the > application using regular erlang message passing. > Using the wx_object, it is practically a breeze. It is like programming > a gen_server. I even run the GUI processes supervised, to allow me to > "let it crash". > Also, you can use wxFormBuilder to do the layout and use the generated > PHP or LUA code to figure out what you need to do in wxErlang. I suppose > you could even write a parser to generate your erlang code from those. > So I am curious. What is that you find so hard about it? And what makes > it easier with C# or the like? > Thanks > Arif > > > Date: Wed, 6 Dec 2017 15:08:39 -0500 > From: "Alan Gingras" > To: "'Alex S.'" > Cc: 'Erlang' > Subject: Re: [erlang-questions] GUI development with Erlang > Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> > Content-Type: text/plain; charset="utf-8" > > Thanks Alex. I had thought of that but was trying to make this a pure > Erlang application. This is most likely the approach I will end up > taking unless I decide to pursue wxErlang, but that is probably a little > unlikely. > > > From: Alex S. [mailto:alex0player@REDACTED] > Sent: Tuesday, December 05, 2017 03:08 > To: Alan Gingras > Cc: Erlang > Subject: Re: [erlang-questions] GUI development with Erlang > > For what it's worth, you can always implement your view and controller > in something like C#/F#, and your model in Erlang, and hook them up via > TCP. Alternatively, there was an Erlang-toF# compiler floating around I > believe. > > > 2017-12-03 22:43 GMT+03:00 Alan Gingras >: > > Has anyone tried using Windows Forms (.net) with Erlang? This would be > in a similar fashion to way Python can use Windows Forms. On Linux I > believe this would be Mono > (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m > looking for something similar to Python?s ?import? and C#?s ?using? > features. If no one has anything, any hints on how a feature like this > might be implemented. > > Basically, I have been working on implementing genetic programming in > Erlang and would like to provide a GUI front end. The WxWidgets front > end that comes with Erlang is difficult at best. I?ve used several > different GUI kits on *nix and Windows platforms but WxWidgets seems the > most difficult for me. So I?m trying to see what else is available. I > followed Joe Armstrong?s quest earlier this year and didn?t see where he > came up with anything. > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Catenacci@REDACTED Thu Dec 7 14:21:29 2017 From: Catenacci@REDACTED (Onorio Catenacci) Date: Thu, 7 Dec 2017 08:21:29 -0500 Subject: [erlang-questions] [ANN] Erlang 20.1 Now Available On Chocolatey NuGet Message-ID: I just wanted to insure that those few of us who care :) are made aware that I've updated the Chocolatey NuGet (CNG) package for Erlang to 20.1. https://chocolatey.org/packages/erlang/20.1 I am sorry it's taken me a while to get to it--life has been extra "eventful" lately. But I've taken some steps to automate the package creation process so next time it should be a bit quicker. Anyway for those of you who use Erlang on Windows, enjoy! BTW I've also submitted an update for the Rebar CNG package but it's still under review. I hope to have it available within the next couple of days or so. -- Onorio Catenacci http://onor.io http://www.google.com/+OnorioCatenacci -------------- next part -------------- An HTML attachment was scrubbed... URL: From vances@REDACTED Thu Dec 7 14:26:45 2017 From: vances@REDACTED (Vance Shipley) Date: Thu, 7 Dec 2017 18:56:45 +0530 Subject: [erlang-questions] How to find Pids of the children of a supervisor In-Reply-To: References: Message-ID: On Thu, Dec 7, 2017 at 6:03 PM, Joe Armstrong wrote: > I was asked the following in a direct mail to me: > > "Given two worker processes in a supervision tree, A and B, if A wants > to message B, how should it obtain the pid of B ?" > > Pretty good question. > > I think the answer is to use supervisor:which_children/1 and to name > the supervisor and all the children. > > Is the the best way? - does anybody have an example? Sure, I don't bother to name the supervisor though, pass the pid() down: Here's an example of a gen_server which locates it's sibling simple_one_for_one supervisors after initializing: https://github.com/sigscale/ocs/blob/8aafd48fd876b7434517b512d79d2c12559889bb/src/ocs_radius_auth_port_server.erl#L157 -- -Vance From zkessin@REDACTED Thu Dec 7 15:32:36 2017 From: zkessin@REDACTED (Zachary Kessin) Date: Thu, 7 Dec 2017 16:32:36 +0200 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: I was thinking of something like Electron https://electronjs.org/ with an Erlang backend. Mind I have no idea how to actually build that Zach ? On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong wrote: > If you want something that just works and is reasonably simple to implement > Browser based GUI's are pretty good. > > The combination of web sockets + SVG/Canavas/DOM manipulation in JS > is pretty easy to setup and loads of people understand JS/Browser things. > > Stand-alone outside the browser is tricky. > > TCL/Tk is really easy to get going and interface (yes it's old but works > well) > > Java Swing is what it is - and if you're good at Java might be an > alternative > but you'd have to interface it to Erlang. > > QT is brilliant but you'd need to write the GUI in C++ and interface it to > Erlang > > WxWidgets is actually pretty good but has a steep learning curve (a cliff) > - > I did actually manage to build some interfaces with it and concluded that > it was pretty good but that it needed a *lot* of examples and getting > started > tutorials. > > Cheers > > /Joe > > > On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras > wrote: > >> Thanks for the suggestion. I've been trying to keep the work totally in >> Erlang. Partly because I am trying to become better with Erlang itself and >> partly out of stubbornness. I had looked at using a browser based GUI but >> for what I'm doing I really don't want (or need) to be too complicated. >> One of the other responses suggested using C# to create the front end and >> communicate with Erlang via TCP. I had thought of that as well, but >> decided to pursue using pure Erlang but have become stymied by wxErlang and >> its difficulty. Most likely I will end up pursing the C# (or similar) >> front end. >> >> >> Alan >> >> On December 6, 2017 at 3:04 AM Zachary Kessin wrote: >> >> I had thought it would be an interesting idea to build a GUI toolset >> around Erlang such that each widget on screen was a process. That being >> said I think to develop such a toolkit would probably cost on the order of >> $1,000,000 (Total guess on the number). >> >> If I had to develop a desktop app with Erlang I would probably use >> something like Electra to do a virtual browser with an Elm Frontend. >> >> Zach >> ? >> >> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko >> wrote: >> >> What we did when we wanted to ship a GUI app with Erlang was running erl >> in the background and communicate over stdin/stdout. >> >> Regards, >> Sergej >> >> >> On 5 Dec 2017, at 09:07, Alex S. wrote: >> >> For what it's worth, you can always implement your view and controller in >> something like C#/F#, and your model in Erlang, and hook them up via TCP. >> Alternatively, there was an Erlang-toF# compiler floating around I believe. >> >> 2017-12-03 22:43 GMT+03:00 Alan Gingras : >> >> Has anyone tried using Windows Forms (.net) with Erlang? This would be >> in a similar fashion to way Python can use Windows Forms. On Linux I >> believe this would be Mono (http://www.mono-project.com/d >> ocs/gui/winforms/). Basically I think I?m looking for something similar >> to Python?s ?import? and C#?s ?using? features. If no one has anything, >> any hints on how a feature like this might be implemented. >> >> >> >> Basically, I have been working on implementing genetic programming in >> Erlang and would like to provide a GUI front end. The WxWidgets front end >> that comes with Erlang is difficult at best. I?ve used several different >> GUI kits on *nix and Windows platforms but WxWidgets seems the most >> difficult for me. So I?m trying to see what else is available. I followed >> Joe Armstrong?s quest earlier this year and didn?t see where he came up >> with anything. >> >> >> >> Thanks. >> >> Alan >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> >> >> -- >> Zach Kessin >> Reduce project risk with training in Elm For web teams >> Skype: zachkessin >> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> > -- Zach Kessin Reduce project risk with training in Elm For web teams Skype: zachkessin +972 54 234 3956 / +44 203 734 9790 / +1 617 778 7213 -------------- next part -------------- An HTML attachment was scrubbed... URL: From pierrefenoll@REDACTED Thu Dec 7 15:34:00 2017 From: pierrefenoll@REDACTED (Pierre Fenoll) Date: Thu, 7 Dec 2017 15:34:00 +0100 Subject: [erlang-questions] How to find Pids of the children of a supervisor In-Reply-To: References: Message-ID: > supervisor:which_children/1 > Is the the best way? - does anybody have an example? That and using erlang:process_info(Pid, links) are the only ways. The supervisor module lacks a child(SupRef, Name) function that would now be able to fetch children by Name with a complexity better than O(n) now that the module can use maps. I started writing a PR for that but then got confused by the code that can either use sets or maps: I couldn't understand which backend would be used when... My use case is to not register names for child processes (using erlang:register via {local,Name}). Cheers, -- Pierre Fenoll On 7 December 2017 at 14:26, Vance Shipley wrote: > On Thu, Dec 7, 2017 at 6:03 PM, Joe Armstrong wrote: > > I was asked the following in a direct mail to me: > > > > "Given two worker processes in a supervision tree, A and B, if A wants > > to message B, how should it obtain the pid of B ?" > > > > Pretty good question. > > > > I think the answer is to use supervisor:which_children/1 and to name > > the supervisor and all the children. > > > > Is the the best way? - does anybody have an example? > > Sure, I don't bother to name the supervisor though, pass the pid() down: > > Here's an example of a gen_server which locates it's sibling > simple_one_for_one supervisors after initializing: > https://github.com/sigscale/ocs/blob/8aafd48fd876b7434517b512d79d2c > 12559889bb/src/ocs_radius_auth_port_server.erl#L157 > > > > -- > -Vance > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erlang@REDACTED Thu Dec 7 16:10:32 2017 From: erlang@REDACTED (Joe Armstrong) Date: Thu, 7 Dec 2017 16:10:32 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: How big are the applications built with Electron? /Joe On Thu, Dec 7, 2017 at 3:32 PM, Zachary Kessin wrote: > I was thinking of something like Electron https://electronjs.org/ with an > Erlang backend. > > Mind I have no idea how to actually build that > > Zach > ? > > On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong wrote: > >> If you want something that just works and is reasonably simple to >> implement >> Browser based GUI's are pretty good. >> >> The combination of web sockets + SVG/Canavas/DOM manipulation in JS >> is pretty easy to setup and loads of people understand JS/Browser things. >> >> Stand-alone outside the browser is tricky. >> >> TCL/Tk is really easy to get going and interface (yes it's old but works >> well) >> >> Java Swing is what it is - and if you're good at Java might be an >> alternative >> but you'd have to interface it to Erlang. >> >> QT is brilliant but you'd need to write the GUI in C++ and interface it >> to Erlang >> >> WxWidgets is actually pretty good but has a steep learning curve (a >> cliff) - >> I did actually manage to build some interfaces with it and concluded that >> it was pretty good but that it needed a *lot* of examples and getting >> started >> tutorials. >> >> Cheers >> >> /Joe >> >> >> On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras >> wrote: >> >>> Thanks for the suggestion. I've been trying to keep the work totally in >>> Erlang. Partly because I am trying to become better with Erlang itself and >>> partly out of stubbornness. I had looked at using a browser based GUI but >>> for what I'm doing I really don't want (or need) to be too complicated. >>> One of the other responses suggested using C# to create the front end and >>> communicate with Erlang via TCP. I had thought of that as well, but >>> decided to pursue using pure Erlang but have become stymied by wxErlang and >>> its difficulty. Most likely I will end up pursing the C# (or similar) >>> front end. >>> >>> >>> Alan >>> >>> On December 6, 2017 at 3:04 AM Zachary Kessin wrote: >>> >>> I had thought it would be an interesting idea to build a GUI toolset >>> around Erlang such that each widget on screen was a process. That being >>> said I think to develop such a toolkit would probably cost on the order of >>> $1,000,000 (Total guess on the number). >>> >>> If I had to develop a desktop app with Erlang I would probably use >>> something like Electra to do a virtual browser with an Elm Frontend. >>> >>> Zach >>> ? >>> >>> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko < >>> sergej.jurecko@REDACTED> wrote: >>> >>> What we did when we wanted to ship a GUI app with Erlang was running erl >>> in the background and communicate over stdin/stdout. >>> >>> Regards, >>> Sergej >>> >>> >>> On 5 Dec 2017, at 09:07, Alex S. wrote: >>> >>> For what it's worth, you can always implement your view and controller >>> in something like C#/F#, and your model in Erlang, and hook them up via >>> TCP. Alternatively, there was an Erlang-toF# compiler floating around I >>> believe. >>> >>> 2017-12-03 22:43 GMT+03:00 Alan Gingras : >>> >>> Has anyone tried using Windows Forms (.net) with Erlang? This would be >>> in a similar fashion to way Python can use Windows Forms. On Linux I >>> believe this would be Mono (http://www.mono-project.com/d >>> ocs/gui/winforms/). Basically I think I?m looking for something >>> similar to Python?s ?import? and C#?s ?using? features. If no one has >>> anything, any hints on how a feature like this might be implemented. >>> >>> >>> >>> Basically, I have been working on implementing genetic programming in >>> Erlang and would like to provide a GUI front end. The WxWidgets front end >>> that comes with Erlang is difficult at best. I?ve used several different >>> GUI kits on *nix and Windows platforms but WxWidgets seems the most >>> difficult for me. So I?m trying to see what else is available. I followed >>> Joe Armstrong?s quest earlier this year and didn?t see where he came up >>> with anything. >>> >>> >>> >>> Thanks. >>> >>> Alan >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >>> >>> >>> -- >>> Zach Kessin >>> Reduce project risk with training in Elm For web teams >>> Skype: zachkessin >>> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >>> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >> > > > -- > Zach Kessin > Reduce project risk with training in Elm For web teams > Skype: zachkessin > +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 > <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jesper.louis.andersen@REDACTED Thu Dec 7 16:47:07 2017 From: jesper.louis.andersen@REDACTED (Jesper Louis Andersen) Date: Thu, 07 Dec 2017 15:47:07 +0000 Subject: [erlang-questions] How to find Pids of the children of a supervisor In-Reply-To: References: Message-ID: I tend to use one out of the following solutions: * If the processes are truly "singletons" then I tend to register them in the registry (locally or globally) and then look them up there by name. * Sometimes, A spawns B in the same supervisor. In that case, you obtain B's pid() as part of the spawn and can store it. Of course, if B goes away, so does A need to so you need to handle crashing in the right way here. * Use a registry: either a process, or just pick up the excellent `gproc` system by Ulf Wiger if needed and use that. * In a distributed system, I think there is enough interesting stuff going on right now that I'd resurvey the area and pick a registry with the guarantees I need in the system. * Some of my old code used `supervisor:which_children()` but the more experience I have, the more often I tend to use a registry application for these kinds of things. Keeping a manager process, or an ETS table (gproc) is usually an easier way to obtain other pids(). * Do not underestimate having *another* process who passes the information around. Solve stuff with an indirection! On Thu, Dec 7, 2017 at 3:34 PM Pierre Fenoll wrote: > > supervisor:which_children/1 > > Is the the best way? - does anybody have an example? > > That and using erlang:process_info(Pid, links) are the only ways. > > The supervisor module lacks a child(SupRef, Name) function that would now > be able to fetch children by Name > with a complexity better than O(n) now that the module can use maps. > I started writing a PR for that but then got confused by the code that can > either use sets or maps: I couldn't understand which backend would be > used when... > > My use case is to not register names for child processes (using > erlang:register via {local,Name}). > > > > Cheers, > -- > Pierre Fenoll > > On 7 December 2017 at 14:26, Vance Shipley wrote: > >> On Thu, Dec 7, 2017 at 6:03 PM, Joe Armstrong wrote: >> > I was asked the following in a direct mail to me: >> > >> > "Given two worker processes in a supervision tree, A and B, if A wants >> > to message B, how should it obtain the pid of B ?" >> > >> > Pretty good question. >> > >> > I think the answer is to use supervisor:which_children/1 and to name >> > the supervisor and all the children. >> > >> > Is the the best way? - does anybody have an example? >> >> Sure, I don't bother to name the supervisor though, pass the pid() down: >> >> Here's an example of a gen_server which locates it's sibling >> simple_one_for_one supervisors after initializing: >> >> https://github.com/sigscale/ocs/blob/8aafd48fd876b7434517b512d79d2c12559889bb/src/ocs_radius_auth_port_server.erl#L157 >> >> >> >> -- >> -Vance >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From vances@REDACTED Thu Dec 7 17:28:04 2017 From: vances@REDACTED (Vance Shipley) Date: Thu, 7 Dec 2017 21:58:04 +0530 Subject: [erlang-questions] How to find Pids of the children of a supervisor In-Reply-To: References: Message-ID: On Thu, Dec 7, 2017 at 9:17 PM, Jesper Louis Andersen wrote: > * Some of my old code used `supervisor:which_children()` but the more > experience I have, the more often I tend to use a registry application for > these kinds of things. Keeping a manager process, or an ETS table (gproc) is > usually an easier way to obtain other pids(). I like to stick to functional programming as much as possible, if a function needs some data pass it in as an argument. -- -Vance From thomas.elsgaard@REDACTED Thu Dec 7 18:46:42 2017 From: thomas.elsgaard@REDACTED (Thomas Elsgaard) Date: Thu, 07 Dec 2017 17:46:42 +0000 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: Hello World is 115 MB ;-) tor. 7. dec. 2017 kl. 16.10 skrev Joe Armstrong : > How big are the applications built with Electron? > > /Joe > > > > On Thu, Dec 7, 2017 at 3:32 PM, Zachary Kessin wrote: > >> I was thinking of something like Electron https://electronjs.org/ with >> an Erlang backend. >> >> Mind I have no idea how to actually build that >> >> Zach >> ? >> >> On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong wrote: >> >>> If you want something that just works and is reasonably simple to >>> implement >>> Browser based GUI's are pretty good. >>> >>> The combination of web sockets + SVG/Canavas/DOM manipulation in JS >>> is pretty easy to setup and loads of people understand JS/Browser things. >>> >>> Stand-alone outside the browser is tricky. >>> >>> TCL/Tk is really easy to get going and interface (yes it's old but works >>> well) >>> >>> Java Swing is what it is - and if you're good at Java might be an >>> alternative >>> but you'd have to interface it to Erlang. >>> >>> QT is brilliant but you'd need to write the GUI in C++ and interface it >>> to Erlang >>> >>> WxWidgets is actually pretty good but has a steep learning curve (a >>> cliff) - >>> I did actually manage to build some interfaces with it and concluded that >>> it was pretty good but that it needed a *lot* of examples and getting >>> started >>> tutorials. >>> >>> Cheers >>> >>> /Joe >>> >>> >>> On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras >>> wrote: >>> >>>> Thanks for the suggestion. I've been trying to keep the work totally >>>> in Erlang. Partly because I am trying to become better with Erlang itself >>>> and partly out of stubbornness. I had looked at using a browser based GUI >>>> but for what I'm doing I really don't want (or need) to be too >>>> complicated. One of the other responses suggested using C# to create the >>>> front end and communicate with Erlang via TCP. I had thought of that as >>>> well, but decided to pursue using pure Erlang but have become stymied by >>>> wxErlang and its difficulty. Most likely I will end up pursing the C# (or >>>> similar) front end. >>>> >>>> >>>> Alan >>>> >>>> On December 6, 2017 at 3:04 AM Zachary Kessin >>>> wrote: >>>> >>>> I had thought it would be an interesting idea to build a GUI toolset >>>> around Erlang such that each widget on screen was a process. That being >>>> said I think to develop such a toolkit would probably cost on the order of >>>> $1,000,000 (Total guess on the number). >>>> >>>> If I had to develop a desktop app with Erlang I would probably use >>>> something like Electra to do a virtual browser with an Elm Frontend. >>>> >>>> Zach >>>> ? >>>> >>>> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko < >>>> sergej.jurecko@REDACTED> wrote: >>>> >>>> What we did when we wanted to ship a GUI app with Erlang was running >>>> erl in the background and communicate over stdin/stdout. >>>> >>>> Regards, >>>> Sergej >>>> >>>> >>>> On 5 Dec 2017, at 09:07, Alex S. wrote: >>>> >>>> For what it's worth, you can always implement your view and controller >>>> in something like C#/F#, and your model in Erlang, and hook them up via >>>> TCP. Alternatively, there was an Erlang-toF# compiler floating around I >>>> believe. >>>> >>>> 2017-12-03 22:43 GMT+03:00 Alan Gingras : >>>> >>>> Has anyone tried using Windows Forms (.net) with Erlang? This would be >>>> in a similar fashion to way Python can use Windows Forms. On Linux I >>>> believe this would be Mono ( >>>> http://www.mono-project.com/docs/gui/winforms/). Basically I think >>>> I?m looking for something similar to Python?s ?import? and C#?s ?using? >>>> features. If no one has anything, any hints on how a feature like this >>>> might be implemented. >>>> >>>> >>>> >>>> Basically, I have been working on implementing genetic programming in >>>> Erlang and would like to provide a GUI front end. The WxWidgets front end >>>> that comes with Erlang is difficult at best. I?ve used several different >>>> GUI kits on *nix and Windows platforms but WxWidgets seems the most >>>> difficult for me. So I?m trying to see what else is available. I followed >>>> Joe Armstrong?s quest earlier this year and didn?t see where he came up >>>> with anything. >>>> >>>> >>>> >>>> Thanks. >>>> >>>> Alan >>>> >>>> _______________________________________________ >>>> erlang-questions mailing list >>>> erlang-questions@REDACTED >>>> http://erlang.org/mailman/listinfo/erlang-questions >>>> >>>> >>>> _______________________________________________ >>>> erlang-questions mailing list >>>> erlang-questions@REDACTED >>>> http://erlang.org/mailman/listinfo/erlang-questions >>>> >>>> >>>> >>>> _______________________________________________ >>>> erlang-questions mailing list >>>> erlang-questions@REDACTED >>>> http://erlang.org/mailman/listinfo/erlang-questions >>>> >>>> >>>> >>>> >>>> -- >>>> Zach Kessin >>>> Reduce project risk with training in Elm For web teams >>>> Skype: zachkessin >>>> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >>>> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >>>> >>>> _______________________________________________ >>>> erlang-questions mailing list >>>> erlang-questions@REDACTED >>>> http://erlang.org/mailman/listinfo/erlang-questions >>>> >>>> >>>> _______________________________________________ >>>> erlang-questions mailing list >>>> erlang-questions@REDACTED >>>> http://erlang.org/mailman/listinfo/erlang-questions >>>> >>>> >>> >> >> >> -- >> Zach Kessin >> Reduce project risk with training in Elm For web teams >> Skype: zachkessin >> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >> >> > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Catenacci@REDACTED Thu Dec 7 20:27:52 2017 From: Catenacci@REDACTED (Onorio Catenacci) Date: Thu, 7 Dec 2017 14:27:52 -0500 Subject: [erlang-questions] [ANN] Rebar 3 3.4.7 On Chocolatey NuGet Message-ID: Just to add to my earlier message; the Rebar3 package on Chocolatey NuGet is now updated to 3.4.7 https://chocolatey.org/packages/rebar3/3.4.7 -- Onorio Catenacci http://onor.io http://www.google.com/+OnorioCatenacci -------------- next part -------------- An HTML attachment was scrubbed... URL: From list1@REDACTED Thu Dec 7 21:10:50 2017 From: list1@REDACTED (Grzegorz Junka) Date: Thu, 7 Dec 2017 20:10:50 +0000 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: <1a5cbb01-eeab-dd8a-0535-a26943fb2f5e@gjunka.com> Electron is mainly an executable, which is a customized Chrome browser. The UI itself is only as heavy as a typical HTML/JavaScript page. See here for an overview: https://electronjs.org/docs/tutorial/quick-start It's very similar to Erlang. In Erlang you have the VM and OTP. Your application is lightweight but when you create a distribution you have to package the VM, libraries and your application into it. It's the same with Electron. The Electron executable is loading and executing your application, which is a web-based JavaScript application. That application could connect to your running Erlang VM like any other web-based application running locally in a browser. GrzegorzJ On 07/12/2017 17:46, Thomas Elsgaard wrote: > Hello World is 115 MB ;-) > tor. 7. dec. 2017 kl. 16.10 skrev Joe Armstrong >: > > How big are the applications built with Electron? > > /Joe > > > > On Thu, Dec 7, 2017 at 3:32 PM, Zachary Kessin > wrote: > > I was thinking of something like Electron > https://electronjs.org/ with an Erlang backend. > > Mind I have no idea how to actually build that > > Zach > ? > > On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong > > wrote: > > If you want something that just works and is reasonably > simple to implement > Browser based GUI's are pretty good. > > The combination of web sockets + SVG/Canavas/DOM > manipulation in JS > is pretty easy to setup and loads of people understand > JS/Browser things. > > Stand-alone outside the browser is tricky. > > TCL/Tk is really easy to get going and interface (yes it's > old but works well) > > Java Swing is what it is - and if you're good at Java > might be an alternative > but you'd have to interface it to Erlang. > > QT is brilliant but you'd need to write the GUI in C++ and > interface it to Erlang > > WxWidgets is actually pretty good but has a steep learning > curve (a cliff) - > I did actually manage to build some interfaces with it and > concluded that > it was pretty good but that it needed a *lot* of examples > and getting started > tutorials. > > Cheers > > /Joe > > > On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras > > > wrote: > > Thanks for the suggestion.? I've been trying to keep > the work totally in Erlang.? Partly because I am > trying to become better with Erlang itself and partly > out of stubbornness.? I had looked at using a browser > based GUI but for what I'm doing I really don't want > (or need) to be too complicated.? One of the other > responses suggested using C# to create the front end > and communicate with Erlang via TCP.? I had thought of > that as well, but decided to pursue using pure Erlang > but have become stymied by wxErlang and its > difficulty.? Most likely I will end up pursing the C# > (or similar) front end. > > > Alan > >> On December 6, 2017 at 3:04 AM Zachary Kessin >> > wrote: >> >> I had thought it would be an interesting idea to >> build a GUI toolset around Erlang such that each >> widget on screen was a process. That being said I >> think to develop such a toolkit would probably cost >> on the order of $1,000,000 (Total guess on the number). >> >> If I had to develop a desktop app with Erlang I would >> probably use something like Electra to do a virtual >> browser with an Elm Frontend. >> >> Zach >> ? >> >> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko >> > > wrote: >> >> What we did when we wanted to ship a GUI app with >> Erlang was running erl in the background and >> communicate over stdin/stdout. >> >> Regards, >> Sergej >> >> >>> On 5 Dec 2017, at 09:07, Alex S. >>> >> > wrote: >>> >>> For what it's worth, you can always implement >>> your view and controller in something like >>> C#/F#, and your model in Erlang, and hook them >>> up via TCP. Alternatively, there was an >>> Erlang-toF# compiler floating around I believe. >>> >>> 2017-12-03 22:43 GMT+03:00 Alan Gingras >>> >> >: >>> >>> Has anyone tried using Windows Forms (.net) >>> with Erlang? This would be in a similar >>> fashion to way Python can use Windows >>> Forms.? On Linux I believe this would be >>> Mono >>> (http://www.mono-project.com/docs/gui/winforms/). >>> Basically I think I?m looking for something >>> similar to Python?s ?import? and C#?s >>> ?using? features.? If no one has anything, >>> any hints on how a feature like this might >>> be implemented. >>> >>> Basically, I have been working on >>> implementing genetic programming in Erlang >>> and would like to provide a GUI front end. >>> The WxWidgets front end that comes with >>> Erlang is difficult at best.? I?ve used >>> several different GUI kits on *nix and >>> Windows platforms but WxWidgets seems the >>> most difficult for me.? So I?m trying to see >>> what else is available.? I followed Joe >>> Armstrong?s quest earlier this year and >>> didn?t see where he came up with anything. >>> >>> Thanks. >>> >>> Alan >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> >>> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> >> >> -- >> Zach Kessin >> Reduce project risk with training in Elm For web teams >> Skype: zachkessin >> +972 54 234 3956 / +44 203 >> 734 9790 / +1 617 778 >> 7213 >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> >> http://erlang.org/mailman/listinfo/erlang-questions > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > > > > -- > Zach Kessin > Reduce project risk with training in Elm For web teams > Skype: zachkessin > +972 54 234 3956 / +44 203 734 9790 > / +1 617 778 7213 > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From erlang@REDACTED Thu Dec 7 21:51:14 2017 From: erlang@REDACTED (Joe Armstrong) Date: Thu, 7 Dec 2017 21:51:14 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: Hello world (or rather a little window with a couple of buttons) in Qt is 33KB - only 3484 times smaller. Which probably explain why Qt is more popular for building apps than Electron. Being an old timer I recall a time when the entire OS including the windowing system and a large number of applications all fitted in under 640KB :-) Where did we go wrong ? On Thu, Dec 7, 2017 at 6:46 PM, Thomas Elsgaard wrote: > Hello World is 115 MB ;-) > > tor. 7. dec. 2017 kl. 16.10 skrev Joe Armstrong : > >> How big are the applications built with Electron? >> >> /Joe >> >> >> >> On Thu, Dec 7, 2017 at 3:32 PM, Zachary Kessin wrote: >> >>> I was thinking of something like Electron https://electronjs.org/ with >>> an Erlang backend. >>> >>> Mind I have no idea how to actually build that >>> >>> Zach >>> ? >>> >>> On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong wrote: >>> >>>> If you want something that just works and is reasonably simple to >>>> implement >>>> Browser based GUI's are pretty good. >>>> >>>> The combination of web sockets + SVG/Canavas/DOM manipulation in JS >>>> is pretty easy to setup and loads of people understand JS/Browser >>>> things. >>>> >>>> Stand-alone outside the browser is tricky. >>>> >>>> TCL/Tk is really easy to get going and interface (yes it's old but >>>> works well) >>>> >>>> Java Swing is what it is - and if you're good at Java might be an >>>> alternative >>>> but you'd have to interface it to Erlang. >>>> >>>> QT is brilliant but you'd need to write the GUI in C++ and interface it >>>> to Erlang >>>> >>>> WxWidgets is actually pretty good but has a steep learning curve (a >>>> cliff) - >>>> I did actually manage to build some interfaces with it and concluded >>>> that >>>> it was pretty good but that it needed a *lot* of examples and getting >>>> started >>>> tutorials. >>>> >>>> Cheers >>>> >>>> /Joe >>>> >>>> >>>> On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras >>>> wrote: >>>> >>>>> Thanks for the suggestion. I've been trying to keep the work totally >>>>> in Erlang. Partly because I am trying to become better with Erlang itself >>>>> and partly out of stubbornness. I had looked at using a browser based GUI >>>>> but for what I'm doing I really don't want (or need) to be too >>>>> complicated. One of the other responses suggested using C# to create the >>>>> front end and communicate with Erlang via TCP. I had thought of that as >>>>> well, but decided to pursue using pure Erlang but have become stymied by >>>>> wxErlang and its difficulty. Most likely I will end up pursing the C# (or >>>>> similar) front end. >>>>> >>>>> >>>>> Alan >>>>> >>>>> On December 6, 2017 at 3:04 AM Zachary Kessin >>>>> wrote: >>>>> >>>>> I had thought it would be an interesting idea to build a GUI toolset >>>>> around Erlang such that each widget on screen was a process. That being >>>>> said I think to develop such a toolkit would probably cost on the order of >>>>> $1,000,000 (Total guess on the number). >>>>> >>>>> If I had to develop a desktop app with Erlang I would probably use >>>>> something like Electra to do a virtual browser with an Elm Frontend. >>>>> >>>>> Zach >>>>> ? >>>>> >>>>> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko < >>>>> sergej.jurecko@REDACTED> wrote: >>>>> >>>>> What we did when we wanted to ship a GUI app with Erlang was running >>>>> erl in the background and communicate over stdin/stdout. >>>>> >>>>> Regards, >>>>> Sergej >>>>> >>>>> >>>>> On 5 Dec 2017, at 09:07, Alex S. wrote: >>>>> >>>>> For what it's worth, you can always implement your view and controller >>>>> in something like C#/F#, and your model in Erlang, and hook them up via >>>>> TCP. Alternatively, there was an Erlang-toF# compiler floating around I >>>>> believe. >>>>> >>>>> 2017-12-03 22:43 GMT+03:00 Alan Gingras : >>>>> >>>>> Has anyone tried using Windows Forms (.net) with Erlang? This would >>>>> be in a similar fashion to way Python can use Windows Forms. On Linux I >>>>> believe this would be Mono (http://www.mono-project.com/ >>>>> docs/gui/winforms/). Basically I think I?m looking for something >>>>> similar to Python?s ?import? and C#?s ?using? features. If no one has >>>>> anything, any hints on how a feature like this might be implemented. >>>>> >>>>> >>>>> >>>>> Basically, I have been working on implementing genetic programming in >>>>> Erlang and would like to provide a GUI front end. The WxWidgets front end >>>>> that comes with Erlang is difficult at best. I?ve used several different >>>>> GUI kits on *nix and Windows platforms but WxWidgets seems the most >>>>> difficult for me. So I?m trying to see what else is available. I followed >>>>> Joe Armstrong?s quest earlier this year and didn?t see where he came up >>>>> with anything. >>>>> >>>>> >>>>> >>>>> Thanks. >>>>> >>>>> Alan >>>>> >>>>> _______________________________________________ >>>>> erlang-questions mailing list >>>>> erlang-questions@REDACTED >>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>> >>>>> >>>>> _______________________________________________ >>>>> erlang-questions mailing list >>>>> erlang-questions@REDACTED >>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> erlang-questions mailing list >>>>> erlang-questions@REDACTED >>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Zach Kessin >>>>> Reduce project risk with training in Elm For web teams >>>>> Skype: zachkessin >>>>> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >>>>> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >>>>> >>>>> _______________________________________________ >>>>> erlang-questions mailing list >>>>> erlang-questions@REDACTED >>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>> >>>>> >>>>> _______________________________________________ >>>>> erlang-questions mailing list >>>>> erlang-questions@REDACTED >>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>> >>>>> >>>> >>> >>> >>> -- >>> Zach Kessin >>> Reduce project risk with training in Elm For web teams >>> Skype: zachkessin >>> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >>> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >>> >>> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From essen@REDACTED Thu Dec 7 21:53:20 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Thu, 7 Dec 2017 21:53:20 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: <9e69618a-ba35-7531-09c9-e258453ff7ac@ninenines.eu> We gave people more memory. On 12/07/2017 09:51 PM, Joe Armstrong wrote: > Hello world (or rather a little window with a couple of buttons) > in Qt is 33KB - only 3484 times smaller. > > Which probably explain why Qt is more popular for building apps than > Electron. > > Being an old timer I recall a time when the entire OS including the > windowing system and a large number of applications all fitted in > under 640KB :-) > > Where did we go wrong ? > > > > > > On Thu, Dec 7, 2017 at 6:46 PM, Thomas Elsgaard > > wrote: > > Hello World is 115 MB ;-) > > tor. 7. dec. 2017 kl. 16.10 skrev Joe Armstrong >: > > How big are the applications built with Electron? > > /Joe > > > > On Thu, Dec 7, 2017 at 3:32 PM, Zachary Kessin > > wrote: > > I was thinking of something like Electron > https://electronjs.org/ with an > Erlang backend. > > Mind I have no idea how to actually build that > > Zach > ? > > On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong > > wrote: > > If you want something that just works and is reasonably > simple to implement > Browser based GUI's are pretty good. > > The combination of web sockets + SVG/Canavas/DOM > manipulation in JS > is pretty easy to setup and loads of people understand > JS/Browser things. > > Stand-alone outside the browser is tricky. > > TCL/Tk is really easy to get going and interface (yes > it's old but works well) > > Java Swing is what it is - and if you're good at Java > might be an alternative > but you'd have to interface it to Erlang. > > QT is brilliant but you'd need to write the GUI in C++ > and interface it to Erlang > > WxWidgets is actually pretty good but has a steep > learning curve (a cliff) - > I did actually manage to build some interfaces with it > and concluded that > it was pretty good but that it needed a *lot* of > examples and getting started > tutorials. > > Cheers > > /Joe > > > On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras > > wrote: > > __ > > Thanks for the suggestion.? I've been trying to keep > the work totally in Erlang.? Partly because I am > trying to become better with Erlang itself and > partly out of stubbornness.? I had looked at using a > browser based GUI but for what I'm doing I really > don't want (or need) to be too complicated.? One of > the other responses suggested using C# to create the > front end and communicate with Erlang via TCP.? I > had thought of that as well, but decided to pursue > using pure Erlang but have become stymied by > wxErlang and its difficulty.? Most likely I will end > up pursing the C# (or similar) front end. > > > Alan > >> On December 6, 2017 at 3:04 AM Zachary Kessin >> > wrote: >> >> I had thought it would be an interesting idea to >> build a GUI toolset around Erlang such that each >> widget on screen was a process. That being said I >> think to develop such a toolkit would probably >> cost on the order of $1,000,000 (Total guess on >> the number). >> >> If I had to develop a desktop app with Erlang I >> would probably use something like Electra to do a >> virtual browser with an Elm Frontend. >> >> Zach >> ? >> >> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko >> > > wrote: >> >> What we did when we wanted to ship a GUI app >> with Erlang was running erl in the background >> and communicate over stdin/stdout. >> >> Regards, >> Sergej >> >> >>> On 5 Dec 2017, at 09:07, Alex S. >>> >> > wrote: >>> >>> For what it's worth, you can always implement >>> your view and controller in something like >>> C#/F#, and your model in Erlang, and hook >>> them up via TCP. Alternatively, there was an >>> Erlang-toF# compiler floating around I believe. >>> >>> 2017-12-03 22:43 GMT+03:00 Alan Gingras >>> >> >: >>> >>> Has anyone tried using Windows Forms >>> (.net) with Erlang?? This would be in a >>> similar fashion to way Python can use >>> Windows Forms.? On Linux I believe this >>> would be Mono >>> (http://www.mono-project.com/docs/gui/winforms/ >>> ). >>> Basically I think I?m looking for >>> something similar to Python?s ?import? >>> and C#?s ?using? features.? If no one has >>> anything, any hints on how a feature like >>> this might be implemented.____ >>> >>> __ __ >>> >>> Basically, I have been working on >>> implementing genetic programming in >>> Erlang and would like to provide a GUI >>> front end.? The WxWidgets front end that >>> comes with Erlang is difficult at best. >>> I?ve used several different GUI kits on >>> *nix and Windows platforms but WxWidgets >>> seems the most difficult for me.? So I?m >>> trying to see what else is available.? I >>> followed Joe Armstrong?s quest earlier >>> this year and didn?t see where he came up >>> with anything.____ >>> >>> __ __ >>> >>> Thanks.____ >>> >>> Alan____ >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> >> http://erlang.org/mailman/listinfo/erlang-questions >> >> >> >> >> >> -- >> Zach Kessin >> Reduce project risk with training in Elm For web teams >> Skype: zachkessin >> +972 54 234 3956 / +44 >> 203 734 9790 / +1 617 >> 778 7213 >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> >> http://erlang.org/mailman/listinfo/erlang-questions > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > > > > > -- > Zach Kessin > Reduce project risk with training in Elm For web teams > Skype: zachkessin > +972 54 234 3956 / +44 203 734 9790 > / +1 617 778 7213 > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -- Lo?c Hoguin https://ninenines.eu From Eric.desCourtis@REDACTED Fri Dec 8 01:52:10 2017 From: Eric.desCourtis@REDACTED (Eric des Courtis) Date: Thu, 7 Dec 2017 19:52:10 -0500 Subject: [erlang-questions] [ANN] Erlang 20.1 Now Available On Chocolatey NuGet In-Reply-To: References: Message-ID: Great! FYI our company has deployed hundreds of thousands (perhaps millions) or Erlang instance on Windows as part of an app. And this is much appreciated! On Thu, Dec 7, 2017 at 8:21 AM, Onorio Catenacci wrote: > I just wanted to insure that those few of us who care :) are made aware > that I've updated the Chocolatey NuGet (CNG) package for Erlang to 20.1. > > https://chocolatey.org/packages/erlang/20.1 > > I am sorry it's taken me a while to get to it--life has been extra > "eventful" lately. But I've taken some steps to automate the package > creation process so next time it should be a bit quicker. > > Anyway for those of you who use Erlang on Windows, enjoy! > > BTW I've also submitted an update for the Rebar CNG package but it's still > under review. I hope to have it available within the next couple of days > or so. > > -- > Onorio Catenacci > > http://onor.io > http://www.google.com/+OnorioCatenacci > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From vances@REDACTED Fri Dec 8 04:49:15 2017 From: vances@REDACTED (Vance Shipley) Date: Fri, 8 Dec 2017 09:19:15 +0530 Subject: [erlang-questions] Today is the 19th Anniversary of the Open Source Release of Erlang/OTP In-Reply-To: References: Message-ID: http://web.archive.org/web/19991009002753/www.erlang.se/onlinenews/ErlangOTPos.shtml I would like to take this opportunity to thank all the great folks, past and present, on the OTP team for their hard work and impressive accomplishments. -------------- next part -------------- An HTML attachment was scrubbed... URL: From elbrujohalcon@REDACTED Fri Dec 8 04:52:26 2017 From: elbrujohalcon@REDACTED (Brujo Benavides) Date: Fri, 8 Dec 2017 00:52:26 -0300 Subject: [erlang-questions] Today is the 19th Anniversary of the Open Source Release of Erlang/OTP In-Reply-To: References: Message-ID: <7BA99671-8D16-4E15-AA4B-4019A11FEBD8@gmail.com> I second that :) Brujo Benavides > On 8 Dec 2017, at 00:49, Vance Shipley wrote: > > http://web.archive.org/web/19991009002753/www.erlang.se/onlinenews/ErlangOTPos.shtml > > I would like to take this opportunity to thank all the great folks, past and present, on the OTP team for their hard work and impressive accomplishments. > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From ok@REDACTED Fri Dec 8 04:52:47 2017 From: ok@REDACTED (Richard A. O'Keefe) Date: Fri, 8 Dec 2017 16:52:47 +1300 Subject: [erlang-questions] Today is the 19th Anniversary of the Open Source Release of Erlang/OTP In-Reply-To: References: Message-ID: <45f63a9c-d0d9-0337-02ac-e698fec37ab6@cs.otago.ac.nz> On 8/12/17 4:49 PM, Vance Shipley wrote: > http://web.archive.org/web/19991009002753/www.erlang.se/onlinenews/ErlangOTPos.shtml > > I would like to take this opportunity to thank all the great folks, past > and present, on the OTP team for their hard work and impressive > accomplishments. +1 From eric.des.courtis@REDACTED Fri Dec 8 06:42:08 2017 From: eric.des.courtis@REDACTED (Eric des Courtis) Date: Fri, 8 Dec 2017 00:42:08 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: My guess is that it might have something to do with time being linear and Moore's law not. Don't worry however Rock's law will force us to revisit this soon. On Thu, Dec 7, 2017 at 3:51 PM, Joe Armstrong wrote: > Hello world (or rather a little window with a couple of buttons) > in Qt is 33KB - only 3484 times smaller. > > Which probably explain why Qt is more popular for building apps than > Electron. > > Being an old timer I recall a time when the entire OS including the > windowing system and a large number of applications all fitted in > under 640KB :-) > > Where did we go wrong ? > > > > > > On Thu, Dec 7, 2017 at 6:46 PM, Thomas Elsgaard > wrote: > >> Hello World is 115 MB ;-) >> >> tor. 7. dec. 2017 kl. 16.10 skrev Joe Armstrong : >> >>> How big are the applications built with Electron? >>> >>> /Joe >>> >>> >>> >>> On Thu, Dec 7, 2017 at 3:32 PM, Zachary Kessin >>> wrote: >>> >>>> I was thinking of something like Electron https://electronjs.org/ with >>>> an Erlang backend. >>>> >>>> Mind I have no idea how to actually build that >>>> >>>> Zach >>>> ? >>>> >>>> On Thu, Dec 7, 2017 at 2:50 PM, Joe Armstrong wrote: >>>> >>>>> If you want something that just works and is reasonably simple to >>>>> implement >>>>> Browser based GUI's are pretty good. >>>>> >>>>> The combination of web sockets + SVG/Canavas/DOM manipulation in JS >>>>> is pretty easy to setup and loads of people understand JS/Browser >>>>> things. >>>>> >>>>> Stand-alone outside the browser is tricky. >>>>> >>>>> TCL/Tk is really easy to get going and interface (yes it's old but >>>>> works well) >>>>> >>>>> Java Swing is what it is - and if you're good at Java might be an >>>>> alternative >>>>> but you'd have to interface it to Erlang. >>>>> >>>>> QT is brilliant but you'd need to write the GUI in C++ and interface >>>>> it to Erlang >>>>> >>>>> WxWidgets is actually pretty good but has a steep learning curve (a >>>>> cliff) - >>>>> I did actually manage to build some interfaces with it and concluded >>>>> that >>>>> it was pretty good but that it needed a *lot* of examples and getting >>>>> started >>>>> tutorials. >>>>> >>>>> Cheers >>>>> >>>>> /Joe >>>>> >>>>> >>>>> On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras >>>> > wrote: >>>>> >>>>>> Thanks for the suggestion. I've been trying to keep the work totally >>>>>> in Erlang. Partly because I am trying to become better with Erlang itself >>>>>> and partly out of stubbornness. I had looked at using a browser based GUI >>>>>> but for what I'm doing I really don't want (or need) to be too >>>>>> complicated. One of the other responses suggested using C# to create the >>>>>> front end and communicate with Erlang via TCP. I had thought of that as >>>>>> well, but decided to pursue using pure Erlang but have become stymied by >>>>>> wxErlang and its difficulty. Most likely I will end up pursing the C# (or >>>>>> similar) front end. >>>>>> >>>>>> >>>>>> Alan >>>>>> >>>>>> On December 6, 2017 at 3:04 AM Zachary Kessin >>>>>> wrote: >>>>>> >>>>>> I had thought it would be an interesting idea to build a GUI toolset >>>>>> around Erlang such that each widget on screen was a process. That being >>>>>> said I think to develop such a toolkit would probably cost on the order of >>>>>> $1,000,000 (Total guess on the number). >>>>>> >>>>>> If I had to develop a desktop app with Erlang I would probably use >>>>>> something like Electra to do a virtual browser with an Elm Frontend. >>>>>> >>>>>> Zach >>>>>> ? >>>>>> >>>>>> On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko < >>>>>> sergej.jurecko@REDACTED> wrote: >>>>>> >>>>>> What we did when we wanted to ship a GUI app with Erlang was running >>>>>> erl in the background and communicate over stdin/stdout. >>>>>> >>>>>> Regards, >>>>>> Sergej >>>>>> >>>>>> >>>>>> On 5 Dec 2017, at 09:07, Alex S. wrote: >>>>>> >>>>>> For what it's worth, you can always implement your view and >>>>>> controller in something like C#/F#, and your model in Erlang, and hook them >>>>>> up via TCP. Alternatively, there was an Erlang-toF# compiler floating >>>>>> around I believe. >>>>>> >>>>>> 2017-12-03 22:43 GMT+03:00 Alan Gingras : >>>>>> >>>>>> Has anyone tried using Windows Forms (.net) with Erlang? This would >>>>>> be in a similar fashion to way Python can use Windows Forms. On Linux I >>>>>> believe this would be Mono (http://www.mono-project.com/d >>>>>> ocs/gui/winforms/). Basically I think I?m looking for something >>>>>> similar to Python?s ?import? and C#?s ?using? features. If no one has >>>>>> anything, any hints on how a feature like this might be implemented. >>>>>> >>>>>> >>>>>> >>>>>> Basically, I have been working on implementing genetic programming in >>>>>> Erlang and would like to provide a GUI front end. The WxWidgets front end >>>>>> that comes with Erlang is difficult at best. I?ve used several different >>>>>> GUI kits on *nix and Windows platforms but WxWidgets seems the most >>>>>> difficult for me. So I?m trying to see what else is available. I followed >>>>>> Joe Armstrong?s quest earlier this year and didn?t see where he came up >>>>>> with anything. >>>>>> >>>>>> >>>>>> >>>>>> Thanks. >>>>>> >>>>>> Alan >>>>>> >>>>>> _______________________________________________ >>>>>> erlang-questions mailing list >>>>>> erlang-questions@REDACTED >>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> erlang-questions mailing list >>>>>> erlang-questions@REDACTED >>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> erlang-questions mailing list >>>>>> erlang-questions@REDACTED >>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Zach Kessin >>>>>> Reduce project risk with training in Elm For web teams >>>>>> Skype: zachkessin >>>>>> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >>>>>> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >>>>>> >>>>>> _______________________________________________ >>>>>> erlang-questions mailing list >>>>>> erlang-questions@REDACTED >>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> erlang-questions mailing list >>>>>> erlang-questions@REDACTED >>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Zach Kessin >>>> Reduce project risk with training in Elm For web teams >>>> Skype: zachkessin >>>> +972 54 234 3956 <+972%2054-234-3956> / +44 203 734 9790 >>>> <+44%2020%203734%209790> / +1 617 778 7213 <(617)%20778-7213> >>>> >>>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >> > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From by@REDACTED Fri Dec 8 05:06:29 2017 From: by@REDACTED (by) Date: Fri, 8 Dec 2017 12:06:29 +0800 Subject: [erlang-questions] Today is the 19th Anniversary of the Open Source Release of Erlang/OTP In-Reply-To: References: Message-ID: erlang ! cheers. > ? 2017?12?8??11:49?Vance Shipley ??? > > http://web.archive.org/web/19991009002753/www.erlang.se/onlinenews/ErlangOTPos.shtml > > I would like to take this opportunity to thank all the great folks, past and present, on the OTP team for their hard work and impressive accomplishments. > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From ye02@REDACTED Fri Dec 8 05:07:01 2017 From: ye02@REDACTED (=?GBK?B?0rbJ2bKo?=) Date: Fri, 8 Dec 2017 12:07:01 +0800 (CST) Subject: [erlang-questions] Question about TCP connection and drv_binary memory allocation Message-ID: <57700c8a.510b.160344e1843.Coremail.ye02@163.com> Hi erlang experts, I did a testing about tcp connection. The scenario is simple: 1) start two erlang nodes (let us say "node C" and "node S") with flag "+Mim true" to enable the instrument; 2) on "node S" I start a TCP server which accepts connections; 3) on "node C" I spawn 10000 processes to connect to "node S"; all the connections were successful; 4) I use instrument to lookat the "drv_binary" and "binary" memory status, I found on "node S", there was a 419461 bytes drv_binary item corresponded to per TCP connection; but there was NOT a same drv_binary item on "node C". The total memory usage on "node S" is 419461 * 10000, about 4G, too huge. My question is: who allocated the 419461 drv_binary memory? This is the tcp options on "node S" I used: -define(TCP_OPTS, [ binary, {backlog, 256}, {packet, 0}, {active, false}, {reuseaddr, true}, {nodelay, false}, {delay_send, true}, {keepalive, true}, {send_timeout, 60000}, {exit_on_close, true} ]). This is the memory status that I use instrument:memory_data/0 and instrument:descr/1 to lookat: [ ....... ....... ........ {drv_binary,2737203904,419461,undefined}, {drv_binary,2743914464,419461,undefined}, {drv_binary,2746012024,419461,undefined}, {drv_binary,2746851048,419461,undefined}, {drv_binary,2748109584,419461,undefined}, {drv_binary,2751883560,419461,undefined}, {drv_binary,2753561608,419461,undefined}, {drv_binary,2753981120,419461,undefined}, {drv_binary,2760691680,419461,undefined}, {drv_binary,2761111192,419461,undefined}, {drv_binary,2762789240,419461,undefined}, {drv_binary,2764047776,419461,undefined}, {drv_binary,2778307920,419461,undefined}, {drv_binary,2781244504,419461,undefined}, {drv_binary,2787955064,419461,undefined}, {drv_binary,2789633112,419461,undefined}, {drv_binary,2790052624,419461,undefined}, {drv_binary,2796343672,419461,undefined}, {drv_binary,2809764792,419461,undefined}, {drv_binary,2810603816,419461,undefined}, {drv_binary,2813540400,419461,undefined}] Thanks very much. -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.r.nohl@REDACTED Fri Dec 8 08:50:02 2017 From: attila.r.nohl@REDACTED (Attila Rajmund Nohl) Date: Fri, 8 Dec 2017 08:50:02 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: 2017-12-07 21:51 GMT+01:00 Joe Armstrong : > > Hello world (or rather a little window with a couple of buttons) > in Qt is 33KB - only 3484 times smaller. > > Which probably explain why Qt is more popular for building apps than > Electron. > > Being an old timer I recall a time when the entire OS including the > windowing system and a large number of applications all fitted in > under 640KB :-) > > Where did we go wrong ? I believe back in those days we were using displays with 320x200 pixels, 8 bits color depth. Nowadays we're using 1680x1050 with 32 bits color depth. Instead of 64 KB now it's takes more than 7 MB for a single display frame. From carlsson.richard@REDACTED Fri Dec 8 08:56:21 2017 From: carlsson.richard@REDACTED (Richard Carlsson) Date: Fri, 8 Dec 2017 08:56:21 +0100 Subject: [erlang-questions] Today is the 19th Anniversary of the Open Source Release of Erlang/OTP In-Reply-To: References: Message-ID: Great call! Marking calendar for next year's 20th anniversary! /Richard 2017-12-08 4:49 GMT+01:00 Vance Shipley : > http://web.archive.org/web/19991009002753/www.erlang.se/ > onlinenews/ErlangOTPos.shtml > > I would like to take this opportunity to thank all the great folks, past > and present, on the OTP team for their hard work and impressive > accomplishments. > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From vances@REDACTED Fri Dec 8 10:07:52 2017 From: vances@REDACTED (Vance Shipley) Date: Fri, 8 Dec 2017 14:37:52 +0530 Subject: [erlang-questions] Today is the 19th Anniversary of the Open Source Release of Erlang/OTP In-Reply-To: References: Message-ID: On Dec 8, 2017 13:26, "Richard Carlsson" wrote: Marking calendar for next year's 20th anniversary! Let's all get together and have a party! -------------- next part -------------- An HTML attachment was scrubbed... URL: From zxq9@REDACTED Fri Dec 8 10:45:02 2017 From: zxq9@REDACTED (zxq9) Date: Fri, 08 Dec 2017 18:45:02 +0900 Subject: [erlang-questions] How to find Pids of the children of a supervisor In-Reply-To: References: Message-ID: <1831998.4ybLr1nK3O@changa> On 2017?12?07? ??? 13:33:36 Joe Armstrong wrote: > I was asked the following in a direct mail to me: > > "Given two worker processes in a supervision tree, A and B, if A wants > to message B, how should it obtain the pid of B ?" > > Pretty good question. > > I think the answer is to use supervisor:which_children/1 and to name > the supervisor and all the children. > > Is the the best way? - does anybody have an example? I tend to use a (semi) standard template of: service_sup service_manager worker_sup workers I wrote about it in a (poorly structured and unrevised) post here: https://zxq9.com/archives/1311 I'm going to take a stab at this frequently asked question here in email first, and maybe refine it into something worthy of a post on this specific subject later. The worker_sup may or may not even be started, things might be linked/monitored together in arbitrary ways, etc, but the basic pattern seems to always wind up forming one way or another regardless how the project is designed to start with (before assumptions have been subjected to reality). SOMETHING must be a named, universal interface to the service (from the perspective of other services in the system, assuming there is more than one), and very often the nature of the service itself is one where workers form arbitrary relationships amongst themselves. In the case of a broadcast-type service amongst processes (a chat service or update notification system, for example) the connection handlers are one service and the channels themselves are components of another: no peer lookup is necessary except when it comes time to find the pid of a channel to send a subscription request to -- then you send the lookup request to the named service manager of the chat service. In the case that the same chat or channelized service also supports private messaging, it would be natural for the connection handler's service manager to keep a registry of connected and active pids (which you would do anyway if you want to be able to inspect the system's active state in more interesting ways than merely looking up a list of child pids from the supervisor). So how to resolve a chat username to a pid? Any chat_client worker asks the chat_client_man -- and finds out maybe not just the pid, but also how long he's been logged on, whether he's logged on, IP, or whatever other `finger` type data might be tracked by the system. The bottom line is that this little pyramid of processes seems to nearly always be needed to define a discrete service, and every time you need to find a sibling's pid the reason for finding it dictates that you have some custom tracking and query code surrounding the lookup -- and that means the natural place for a lookup is in the service manager in nearly every case. -Craig From zxq9@REDACTED Fri Dec 8 10:48:49 2017 From: zxq9@REDACTED (zxq9) Date: Fri, 08 Dec 2017 18:48:49 +0900 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <9e69618a-ba35-7531-09c9-e258453ff7ac@ninenines.eu> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <9e69618a-ba35-7531-09c9-e258453ff7ac@ninenines.eu> Message-ID: <5866106.Akkkg4W9tW@changa> On 2017?12?07? ??? 21:53:20 Lo?c Hoguin wrote: > On 12/07/2017 09:51 PM, Joe Armstrong wrote: > > Where did we go wrong ? > > We gave people more memory. Not just more memory. Here, let me pay you for that memory chip in bitcoin... brb... -Craig From zxq9@REDACTED Fri Dec 8 10:53:20 2017 From: zxq9@REDACTED (zxq9) Date: Fri, 08 Dec 2017 18:53:20 +0900 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> Message-ID: <21308836.KjXHXWZuub@changa> On 2017?12?08? ??? 08:50:02 Attila Rajmund Nohl wrote: > 2017-12-07 21:51 GMT+01:00 Joe Armstrong : > > > > Hello world (or rather a little window with a couple of buttons) > > in Qt is 33KB - only 3484 times smaller. > > > > Which probably explain why Qt is more popular for building apps than > > Electron. > > > > Being an old timer I recall a time when the entire OS including the > > windowing system and a large number of applications all fitted in > > under 640KB :-) > > > > Where did we go wrong ? > > I believe back in those days we were using displays with 320x200 > pixels, 8 bits color depth. Nowadays we're using 1680x1050 with 32 > bits color depth. Instead of 64 KB now it's takes more than 7 MB for a > single display frame. In the graphics controller's state, not your program. From erlang@REDACTED Fri Dec 8 12:38:31 2017 From: erlang@REDACTED (Joe Armstrong) Date: Fri, 8 Dec 2017 12:38:31 +0100 Subject: [erlang-questions] Erlang Inside Message-ID: Erlang is often deployed as a major component in a program, but this fact is often not widely known. "Erlang inside" means an Erlang run-time is a part of the system. So an App written in Elixir, with cowboy, or riak can be in the list. I'd like to keep a list of systems with "Erlang Inside" - this is useful for PR. I'd like: 1) The information to be public (no commercial secrets please) [urls, or references please] 2) Name and description of product/program and [short summary] 3) Dates when the information was known to be true 4) Estimates of #systems shipped with Erlang inside 5) Estimates of the number of users served by the SW 6) Contact person [some person who can be contacted occasionally to update the information] - No essential but better than "I heard it from a dev in a pub" 7) The major dependencies (ie uses cowboy, riak, or Appname -> Elixir -> cowboy) 8) Other [what is missing?] Examples (off the top of my head) Sonic Pi, NHS database Spine2, WhatsApp. You can add to this list by adding a post to this thread or by mailing me (off-list). Cheers /Joe From michal@REDACTED Fri Dec 8 12:44:54 2017 From: michal@REDACTED (=?utf-8?Q?Micha=C5=82_Muska=C5=82a?=) Date: Fri, 8 Dec 2017 12:44:54 +0100 Subject: [erlang-questions] Erlang Inside In-Reply-To: References: Message-ID: <3f34fe65-72bc-4cc1-aaf2-ee0e60f8f2c9@Spark> Hi Joe, You might find the list of companies that claim to use Elixir in some way useful in this context. It can be found on GitHub:?https://github.com/doomspork/elixir-companies Micha?. On 8 Dec 2017, 12:38 +0100, Joe Armstrong , wrote: > Erlang is often deployed as a major component in a program, but this > fact is often not widely known. > > "Erlang inside" means an Erlang run-time is a part of the system. > So an App written in Elixir, with cowboy, or riak can be in the list. > > I'd like to keep a list of systems with "Erlang Inside" - this is useful > for PR. > > I'd like: > > 1) The information to be public (no commercial secrets please) > [urls, or references please] > 2) Name and description of product/program and > [short summary] > 3) Dates when the information was known to be true > 4) Estimates of #systems shipped with Erlang inside > 5) Estimates of the number of users served by the SW > 6) Contact person > [some person who can be contacted occasionally to > update the information] - > No essential but better than "I heard it from a dev in a pub" > 7) The major dependencies (ie uses cowboy, riak, or > Appname -> Elixir -> cowboy) > 8) Other > [what is missing?] > > Examples (off the top of my head) Sonic Pi, NHS database Spine2, > WhatsApp. > > You can add to this list by adding a post to this thread or by mailing > me (off-list). > > Cheers > > /Joe > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From erlang@REDACTED Fri Dec 8 13:02:53 2017 From: erlang@REDACTED (Joe Armstrong) Date: Fri, 8 Dec 2017 13:02:53 +0100 Subject: [erlang-questions] Erlang Inside In-Reply-To: <3f34fe65-72bc-4cc1-aaf2-ee0e60f8f2c9@Spark> References: <3f34fe65-72bc-4cc1-aaf2-ee0e60f8f2c9@Spark> Message-ID: Thanks - it was a long list. It would be nice to know the #users and the commercial status of the program (ie prototype, few users, millions of users) so we could sort it by #users /Joe On Fri, Dec 8, 2017 at 12:44 PM, Micha? Muska?a wrote: > Hi Joe, > > You might find the list of companies that claim to use Elixir in some way > useful in this context. It can be found on GitHub: > https://github.com/doomspork/elixir-companies > > Micha?. > > On 8 Dec 2017, 12:38 +0100, Joe Armstrong , wrote: > > Erlang is often deployed as a major component in a program, but this > fact is often not widely known. > > "Erlang inside" means an Erlang run-time is a part of the system. > So an App written in Elixir, with cowboy, or riak can be in the list. > > I'd like to keep a list of systems with "Erlang Inside" - this is useful > for PR. > > I'd like: > > 1) The information to be public (no commercial secrets please) > [urls, or references please] > 2) Name and description of product/program and > [short summary] > 3) Dates when the information was known to be true > 4) Estimates of #systems shipped with Erlang inside > 5) Estimates of the number of users served by the SW > 6) Contact person > [some person who can be contacted occasionally to > update the information] - > No essential but better than "I heard it from a dev in a pub" > 7) The major dependencies (ie uses cowboy, riak, or > Appname -> Elixir -> cowboy) > 8) Other > [what is missing?] > > Examples (off the top of my head) Sonic Pi, NHS database Spine2, > WhatsApp. > > You can add to this list by adding a post to this thread or by mailing > me (off-list). > > Cheers > > /Joe > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From marc@REDACTED Fri Dec 8 13:55:24 2017 From: marc@REDACTED (Marc Worrell) Date: Fri, 8 Dec 2017 13:55:24 +0100 Subject: [erlang-questions] Erlang Inside In-Reply-To: References: <3f34fe65-72bc-4cc1-aaf2-ee0e60f8f2c9@Spark> Message-ID: There are quite some website running Zotonic: * Social network for schools https://www.maxclass.com/ * Working together for courses https://www.learningstone.com/ * Co-browsing and chat for helpdesks https://www.channel.me/ * Women?s Health - Women on Waves https://www.womenonwaves.org/ - Women on Web https://www.womenonweb.org/ - Abortion Pill Information https://abortionpillinfo.org/ - Women Help Women https://www.womenhelp.org/ - Women Help Women - consultation https:/ consult.womenhelp.org/ * 40+ sites developed by Driebit ( https://www.driebit.nl/nl/portfoliol , among them - Jewish Monument for the Dutch Jews https://www.joodsmonument.nl/ - Dutch history https://www.entoen.nu/ And many more, which I don?t know the URLs from the top of my head. - Marc > On 8 Dec 2017, at 13:02, Joe Armstrong wrote: > > Thanks - it was a long list. > > It would be nice to know the #users and the commercial status of the > program (ie prototype, few users, millions of users) so we could sort > it by #users > > /Joe > > On Fri, Dec 8, 2017 at 12:44 PM, Micha? Muska?a wrote: >> Hi Joe, >> >> You might find the list of companies that claim to use Elixir in some way >> useful in this context. It can be found on GitHub: >> https://github.com/doomspork/elixir-companies >> >> Micha?. >> >> On 8 Dec 2017, 12:38 +0100, Joe Armstrong , wrote: >> >> Erlang is often deployed as a major component in a program, but this >> fact is often not widely known. >> >> "Erlang inside" means an Erlang run-time is a part of the system. >> So an App written in Elixir, with cowboy, or riak can be in the list. >> >> I'd like to keep a list of systems with "Erlang Inside" - this is useful >> for PR. >> >> I'd like: >> >> 1) The information to be public (no commercial secrets please) >> [urls, or references please] >> 2) Name and description of product/program and >> [short summary] >> 3) Dates when the information was known to be true >> 4) Estimates of #systems shipped with Erlang inside >> 5) Estimates of the number of users served by the SW >> 6) Contact person >> [some person who can be contacted occasionally to >> update the information] - >> No essential but better than "I heard it from a dev in a pub" >> 7) The major dependencies (ie uses cowboy, riak, or >> Appname -> Elixir -> cowboy) >> 8) Other >> [what is missing?] >> >> Examples (off the top of my head) Sonic Pi, NHS database Spine2, >> WhatsApp. >> >> You can add to this list by adding a post to this thread or by mailing >> me (off-list). >> >> Cheers >> >> /Joe >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From marc@REDACTED Fri Dec 8 13:57:29 2017 From: marc@REDACTED (Marc Worrell) Date: Fri, 8 Dec 2017 13:57:29 +0100 Subject: [erlang-questions] Erlang Inside In-Reply-To: References: <3f34fe65-72bc-4cc1-aaf2-ee0e60f8f2c9@Spark> Message-ID: <99DE0671-B65F-44A7-91C4-EB398B61DA26@worrell.nl> > On 8 Dec 2017, at 13:55, Marc Worrell wrote: > > * 40+ sites developed by Driebit ( https://www.driebit.nl/nl/portfoliol , among them Typo, should be: https://www.driebit.nl/nl/portfolio -------------- next part -------------- An HTML attachment was scrubbed... URL: From n.oxyde@REDACTED Fri Dec 8 14:10:20 2017 From: n.oxyde@REDACTED (Anthony Ramine) Date: Fri, 8 Dec 2017 14:10:20 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: <319890C4-1F9E-4319-AC91-C80953D9D288@gmail.com> I'll wait for a 640KB OS that is accessible and can be used by disabled people before saying we went wrong somewhere. > Le 7 d?c. 2017 ? 21:51, Joe Armstrong a ?crit : > > Where did we go wrong ? From attila.r.nohl@REDACTED Fri Dec 8 15:30:41 2017 From: attila.r.nohl@REDACTED (Attila Rajmund Nohl) Date: Fri, 8 Dec 2017 15:30:41 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <21308836.KjXHXWZuub@changa> References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <21308836.KjXHXWZuub@changa> Message-ID: 2017-12-08 10:53 GMT+01:00 zxq9 : > > On 2017?12?08? ??? 08:50:02 Attila Rajmund Nohl wrote: > > 2017-12-07 21:51 GMT+01:00 Joe Armstrong : [...] > > > Being an old timer I recall a time when the entire OS including the > > > windowing system and a large number of applications all fitted in > > > under 640KB :-) > > > > > > Where did we go wrong ? > > > > I believe back in those days we were using displays with 320x200 > > pixels, 8 bits color depth. Nowadays we're using 1680x1050 with 32 > > bits color depth. Instead of 64 KB now it's takes more than 7 MB for a > > single display frame. > > In the graphics controller's state, not your program. But that still needs to be created in the program. From eric.des.courtis@REDACTED Fri Dec 8 15:32:31 2017 From: eric.des.courtis@REDACTED (Eric des Courtis) Date: Fri, 8 Dec 2017 09:32:31 -0500 Subject: [erlang-questions] Fwd: Erlang Inside In-Reply-To: References: Message-ID: ---------- Forwarded message ---------- From: Eric des Courtis Date: Fri, Dec 8, 2017 at 9:31 AM Subject: Re: [erlang-questions] Erlang Inside To: Joe Armstrong 1) Erlang is running inside our Mitel Mass Notification product (was historically Benbria BlazeCast). Also inside the Mitel Mass Notification Desktop Client which is deployed on Desktop on customer computers (especially popular in schools and universities across America). http://mitel.ca/products/mitel-mass-notification 2) Mitel Mass Notification enables faster delivery and acknowledgement of vital information across a wide range of channels and devices. From crisis communications (Emergency Notification System) to routine day-to-day activities such as billing notices, employee communications and announcements, Mitel Mass Notification enables staff to easily and quickly send multi-modal messages in real-time. 3) December 2017 4) 100 000+ (Mostly Windows instances of the Mitel Mass Notification Desktop Client, some Mac and a smaller number of server instances) 5) Millions 6) eric.descourtis@REDACTED 7) OTP, exmpp, lager On Dec 8, 2017 6:38 AM, "Joe Armstrong" wrote: Erlang is often deployed as a major component in a program, but this fact is often not widely known. "Erlang inside" means an Erlang run-time is a part of the system. So an App written in Elixir, with cowboy, or riak can be in the list. I'd like to keep a list of systems with "Erlang Inside" - this is useful for PR. I'd like: 1) The information to be public (no commercial secrets please) [urls, or references please] 2) Name and description of product/program and [short summary] 3) Dates when the information was known to be true 4) Estimates of #systems shipped with Erlang inside 5) Estimates of the number of users served by the SW 6) Contact person [some person who can be contacted occasionally to update the information] - No essential but better than "I heard it from a dev in a pub" 7) The major dependencies (ie uses cowboy, riak, or Appname -> Elixir -> cowboy) 8) Other [what is missing?] Examples (off the top of my head) Sonic Pi, NHS database Spine2, WhatsApp. You can add to this list by adding a post to this thread or by mailing me (off-list). Cheers /Joe _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From lloyd@REDACTED Fri Dec 8 16:50:48 2017 From: lloyd@REDACTED (Lloyd R. Prentice) Date: Fri, 8 Dec 2017 10:50:48 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <21308836.KjXHXWZuub@changa> Message-ID: Way back in the day my company developed Apple II educational and consumer software products delivered on Apple II single-sided floppy discs. These included interactive games, delightful full-screen graphics and animation, and music. http://apple-history.com/aii https://books.google.com/books?id=wS8EAAAAMBAJ&pg=PA75&lpg=PA75&dq=trickster+coyote+%2B+Apple+II&source=bl&ots=oghv66xAmh&sig=J0e-LFWssEtsO9f_OuMIbz3knEc&hl=en&sa=X&ved=0ahUKEwjNqbe73_rXAhWIYt8KHRtrCNQQ6AEIUTAL#v=onepage&q=trickster%20coyote%20%2B%20Apple%20II&f=false Folks swore that you couldn't do music on the Apple II, but we did. The secrets: Forth '79, which provided an incredibly small footprint and its own operating system. All the best, LRP Sent from my iPad > On Dec 8, 2017, at 9:30 AM, Attila Rajmund Nohl wrote: > > 2017-12-08 10:53 GMT+01:00 zxq9 : >> >>> On 2017?12?08? ??? 08:50:02 Attila Rajmund Nohl wrote: >>> 2017-12-07 21:51 GMT+01:00 Joe Armstrong : > [...] >>>> Being an old timer I recall a time when the entire OS including the >>>> windowing system and a large number of applications all fitted in >>>> under 640KB :-) >>>> >>>> Where did we go wrong ? >>> >>> I believe back in those days we were using displays with 320x200 >>> pixels, 8 bits color depth. Nowadays we're using 1680x1050 with 32 >>> bits color depth. Instead of 64 KB now it's takes more than 7 MB for a >>> single display frame. >> >> In the graphics controller's state, not your program. > > But that still needs to be created in the program. > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From pfisher@REDACTED Fri Dec 8 17:42:00 2017 From: pfisher@REDACTED (Fisher, Paul) Date: Fri, 8 Dec 2017 16:42:00 +0000 Subject: [erlang-questions] Erlang Inside In-Reply-To: References: Message-ID: Alert Logic uses Erlang almost exclusively for developing our products (www.alertlogic.com). These products provide security monitoring, protection and 24/7 security analyst services for cloud workloads running on AWS, Azure, GCP, as well as on-premise and Colo environments. Some interesting technical facts about what we do: - 4100+ customers, 10k+ appliances, 300k+ agents - 2PB of customer data per month, with 25PB under management - Processing 1.2M messages/second average, peaking at 3M - Data volume grows at over 110% per year - Nearly 100 services and lambda are composed into more than a dozen major subsystems - Over 100 engineers writing Erlang code daily - Maintainers of ercloud application providing AWS SDK for Erlang - Many many Erlang applications are used I can be listed as contact for this information. [https://www.alertlogic.com/assets/img/logo-alertlogic-dark.png] Security As A Service ? Cloud Security Provider | Alert Logic www.alertlogic.com Alert Logic managed Security as a Service (SaaS) solutions provide world-class network, system, and web application security, wherever your infrastructure resides. -- paul Fellow, Engineering ________________________________ From: erlang-questions-bounces@REDACTED on behalf of Joe Armstrong Sent: Friday, December 8, 2017 5:38:31 AM To: Erlang Subject: [erlang-questions] Erlang Inside Erlang is often deployed as a major component in a program, but this fact is often not widely known. "Erlang inside" means an Erlang run-time is a part of the system. So an App written in Elixir, with cowboy, or riak can be in the list. I'd like to keep a list of systems with "Erlang Inside" - this is useful for PR. I'd like: 1) The information to be public (no commercial secrets please) [urls, or references please] 2) Name and description of product/program and [short summary] 3) Dates when the information was known to be true 4) Estimates of #systems shipped with Erlang inside 5) Estimates of the number of users served by the SW 6) Contact person [some person who can be contacted occasionally to update the information] - No essential but better than "I heard it from a dev in a pub" 7) The major dependencies (ie uses cowboy, riak, or Appname -> Elixir -> cowboy) 8) Other [what is missing?] Examples (off the top of my head) Sonic Pi, NHS database Spine2, WhatsApp. You can add to this list by adding a post to this thread or by mailing me (off-list). Cheers /Joe _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED https://urldefense.proofpoint.com/v2/url?u=http-3A__erlang.org_mailman_listinfo_erlang-2Dquestions&d=DwICAg&c=L_h2OePR2UWWefmqrezxOsP9Uqw55rRfX5bRtw9S4KY&r=PevFox_7LK44ZV_jlS5jRM2WItKtsHV4zN_CrbdT2aM&m=r0z5TBhjtOSRsXznzzEj9q1Lh21pjvhPcXfYY-jV6jc&s=x-bGX5LWr8yyFyCg3uiYzEVyczhLUHd2tSy2YlRXN4Y&e= Confidentiality Notice | This email and any included attachments may be privileged, confidential and/or otherwise protected from disclosure. Access to this email by anyone other than the intended recipient is unauthorized. If you believe you have received this email in error, please contact the sender immediately and delete all copies. If you are not the intended recipient, you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited. -------------- next part -------------- An HTML attachment was scrubbed... URL: From scott_ribe@REDACTED Fri Dec 8 21:31:51 2017 From: scott_ribe@REDACTED (scott ribe) Date: Fri, 8 Dec 2017 13:31:51 -0700 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <21308836.KjXHXWZuub@changa> Message-ID: Hey, if we're playing that game, I once contracted to develop grammar reference which had to fit on a floppy disk along with the OS & MS Word. The effort/code size ratio was obscene. > On Dec 8, 2017, at 8:50 AM, Lloyd R. Prentice wrote: > > Way back in the day my company developed Apple II educational and consumer software products delivered on Apple II single-sided floppy discs. These included interactive games, delightful full-screen graphics and animation, and music. > -- Scott Ribe https://www.linkedin.com/in/scottribe/ (303) 722-0567 From alangingras@REDACTED Sat Dec 9 13:27:05 2017 From: alangingras@REDACTED (Alan Gingras) Date: Sat, 9 Dec 2017 07:27:05 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <000001d36c6e$fe83f6e0$fb8be4a0$@comcast.net> <2323D534-11E7-43A0-882A-AEBF70DAA460@gmail.com> <753767474.203780.1512560584862@connect.xfinity.com> Message-ID: <000001d370e9$0697f830$13c7e890$@comcast.net> Thanks Joe. I appreciate yours (and others) suggestions. I have actually worked through some wxErlang and agree that WxWidgets can produce a decent user interface but as you said there is a cliff there. I am trying to avoid getting bogged down in learning wxWidgets. My preference is a stand-alone application but it looks like that is not really going to be possible. My genetic programming code is in Erlang and I must say it was a joy to implement it there. Out of curiosity and for comparison of languages I implemented it in both C++ and Erlang at the same time. The Erlang was less effort to get right and ended up being a fraction of the code. The C++ version still has issues (memory issues mostly) and crashes more often than not. I had originally implemented it in C++ but after getting exposed to Erlang was convinced it would work better. As I said I implemented it in Erlang and re-implemented it in C++. Sure the C++ is faster but doesn?t work 100% yet. Erlang works wonderfully. A point to note here is that I have been working in C/C++ for both desktop and embedded development for 20+ years and was actually shocked that as a novice in Erlang I was able to implement it better there than in C++ where I am much more experienced. Sorry for the digression. Most likely I will end up using C# to implement my GUI and connect to the Erlang using a port or TCP. Again, my thanks to you and others for your advice. Alan From: Joe Armstrong [mailto:erlang@REDACTED] Sent: Thursday, December 07, 2017 07:50 To: Alan Gingras Cc: Sergej Jure?ko ; Zachary Kessin ; Erlang Subject: Re: [erlang-questions] GUI development with Erlang If you want something that just works and is reasonably simple to implement Browser based GUI's are pretty good. The combination of web sockets + SVG/Canavas/DOM manipulation in JS is pretty easy to setup and loads of people understand JS/Browser things. Stand-alone outside the browser is tricky. TCL/Tk is really easy to get going and interface (yes it's old but works well) Java Swing is what it is - and if you're good at Java might be an alternative but you'd have to interface it to Erlang. QT is brilliant but you'd need to write the GUI in C++ and interface it to Erlang WxWidgets is actually pretty good but has a steep learning curve (a cliff) - I did actually manage to build some interfaces with it and concluded that it was pretty good but that it needed a *lot* of examples and getting started tutorials. Cheers /Joe On Wed, Dec 6, 2017 at 12:43 PM, Alan Gingras > wrote: Thanks for the suggestion. I've been trying to keep the work totally in Erlang. Partly because I am trying to become better with Erlang itself and partly out of stubbornness. I had looked at using a browser based GUI but for what I'm doing I really don't want (or need) to be too complicated. One of the other responses suggested using C# to create the front end and communicate with Erlang via TCP. I had thought of that as well, but decided to pursue using pure Erlang but have become stymied by wxErlang and its difficulty. Most likely I will end up pursing the C# (or similar) front end. Alan On December 6, 2017 at 3:04 AM Zachary Kessin > wrote: I had thought it would be an interesting idea to build a GUI toolset around Erlang such that each widget on screen was a process. That being said I think to develop such a toolkit would probably cost on the order of $1,000,000 (Total guess on the number). If I had to develop a desktop app with Erlang I would probably use something like Electra to do a virtual browser with an Elm Frontend. Zach ? On Tue, Dec 5, 2017 at 10:13 AM, Sergej Jure?ko > wrote: What we did when we wanted to ship a GUI app with Erlang was running erl in the background and communicate over stdin/stdout. Regards, Sergej On 5 Dec 2017, at 09:07, Alex S. > wrote: For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras >: Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. Thanks. Alan _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions -- Zach Kessin Reduce project risk with training in Elm For web teams Skype: zachkessin +972 54 234 3956 / +44 203 734 9790 / +1 617 778 7213 _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From alangingras@REDACTED Sat Dec 9 13:39:48 2017 From: alangingras@REDACTED (Alan Gingras) Date: Sat, 9 Dec 2017 07:39:48 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> Message-ID: <000501d370ea$cde23ad0$69a6b070$@comcast.net> Arif, Perhaps my difficulty lies in the documentation for wxErlang and WxWidgets combined with my experience with Windows.Forms, TCL/Tk and others. I have been able to find excellent documentation and examples easily for pretty much everything I have wanted or needed to do. Not diminishing WxWidgets, but getting the layouts correct and working as desired has been faster and easier for me in every other GUI package I've used. The others (for the most part) seemed more intuitive to me than the windows/panels etc. of wxWidgets. And I have worked through what little I can find on the wxErlang, i.e. http://www.idiom.com/~turner/wxtut/wxwidgets.html http://wxerlang.dougedmunds.com/ In the end, I think better documentation - not written for someone who already knows how to use either WxWidgets or wxErlang - would be a key improvement. Regards, Alan -----Original Message----- From: erlang-questions-bounces@REDACTED [mailto:erlang-questions-bounces@REDACTED] On Behalf Of arif@REDACTED Sent: Thursday, December 07, 2017 08:04 To: erlang-questions@REDACTED Subject: Re: [erlang-questions] GUI development with Erlang Hi, I have been using wxErlang on some projects and I don't find it too hard. I make the GUI in separate processes and communicate with the application using regular erlang message passing. Using the wx_object, it is practically a breeze. It is like programming a gen_server. I even run the GUI processes supervised, to allow me to "let it crash". Also, you can use wxFormBuilder to do the layout and use the generated PHP or LUA code to figure out what you need to do in wxErlang. I suppose you could even write a parser to generate your erlang code from those. So I am curious. What is that you find so hard about it? And what makes it easier with C# or the like? Thanks Arif Date: Wed, 6 Dec 2017 15:08:39 -0500 From: "Alan Gingras" To: "'Alex S.'" Cc: 'Erlang' Subject: Re: [erlang-questions] GUI development with Erlang Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> Content-Type: text/plain; charset="utf-8" Thanks Alex. I had thought of that but was trying to make this a pure Erlang application. This is most likely the approach I will end up taking unless I decide to pursue wxErlang, but that is probably a little unlikely. From: Alex S. [mailto:alex0player@REDACTED] Sent: Tuesday, December 05, 2017 03:08 To: Alan Gingras Cc: Erlang Subject: Re: [erlang-questions] GUI development with Erlang For what it's worth, you can always implement your view and controller in something like C#/F#, and your model in Erlang, and hook them up via TCP. Alternatively, there was an Erlang-toF# compiler floating around I believe. 2017-12-03 22:43 GMT+03:00 Alan Gingras >: Has anyone tried using Windows Forms (.net) with Erlang? This would be in a similar fashion to way Python can use Windows Forms. On Linux I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). Basically I think I?m looking for something similar to Python?s ?import? and C#?s ?using? features. If no one has anything, any hints on how a feature like this might be implemented. Basically, I have been working on implementing genetic programming in Erlang and would like to provide a GUI front end. The WxWidgets front end that comes with Erlang is difficult at best. I?ve used several different GUI kits on *nix and Windows platforms but WxWidgets seems the most difficult for me. So I?m trying to see what else is available. I followed Joe Armstrong?s quest earlier this year and didn?t see where he came up with anything. Thanks. Alan _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions From martin.sumner@REDACTED Sat Dec 9 14:17:06 2017 From: martin.sumner@REDACTED (Martin Sumner) Date: Sat, 9 Dec 2017 13:17:06 +0000 Subject: [erlang-questions] Erlang Inside Message-ID: Joe, The NHS Spine 2 Core system was built on two Erlang products (Riak and RabbitMQ). Almost all of the bespoke code is written in Python, but the message-passing architecture of the system and the approach to managing availability was directly inspired by reading about Erlang (in particular your book). 1. There's a presentation that I gave at ICFP 2017 on Spine 2 and Erlang here: http://martinsumner.github.io/presentations/spine2_erlang#/. The architectural links between Spine 2 and Erlang aren't talked about much publicly, as it was only really me as the lead engineer/designer who was thinking about it. Spine 2 was a big transformational shock for NHS IT in many ways, and so tended to grab headlines for reasons other than Erlang being inside. 2. Spine 2 provides the central data storage system and messaging system for the NHS - covering electronic prescriptions (primary care), demographic records, summary care records, subject access records, access alerting, consent recording, distribution of pathology results, child protection information, GP to GP record transfers, distribution of electronic referrals and plenty more. It handles close to 50M messages on a busy day, and holds around 2 billion records and documents. 3. Go live was August 2014 (replacing a system originally released July 2004), and the system is expected to have a long life, as it is deeply integrated into a slow-moving eco-system. 4. There are around 80 servers running Erlang in the production system. 5. Most users are indirect behind other applications, but it is accessed this way by more than 100K users each day, who are sat behind over 20K application instances from more than 20 different integrated applications. 6. I no longer work directly on the project, which is now led on the technology side by Azhar Nisar. For any formal comms about the project you would be best contacting the comms team @NHSDigital. 7. Riak KV and RabbitMQ 8. There are two other projects in the NHS with Erlang inside (through Riak KV). SuS Plus (http://content.digital.nhs.uk/sus/replacement) which uses Riak for object storage. There is also a service for auditing the application of opt-outs ( http://content.digital.nhs.uk/article/7092/Information-on-type-2-opt-outs) which is built on Riak and uses some bespoke Erlang for querying. Following the demise of Basho, there are now a number of engineers within the NHS Digital team who are building up Erlang skills, to ensure they can effectively manage these services in house in the future. There is some increasing awareness of the presence of Erlang inside of the NHS IT infrastructure. Many thanks Martin (@masleeds) -------------- next part -------------- An HTML attachment was scrubbed... URL: From essen@REDACTED Sat Dec 9 14:31:48 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Sat, 9 Dec 2017 14:31:48 +0100 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <000501d370ea$cde23ad0$69a6b070$@comcast.net> References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> <000501d370ea$cde23ad0$69a6b070$@comcast.net> Message-ID: <81967185-981d-0655-b720-cfeeee5953fc@ninenines.eu> I used to have the book https://www.wxwidgets.org/docs/book/ It's a really good resource to learn wxWidgets. I don't know how well it aged exactly but it should still be very relevant as the interface has not changed that much. On 12/09/2017 01:39 PM, Alan Gingras wrote: > Arif, > > Perhaps my difficulty lies in the documentation for wxErlang and WxWidgets > combined with my experience with Windows.Forms, TCL/Tk and others. I have > been able to find excellent documentation and examples easily for pretty > much everything I have wanted or needed to do. Not diminishing WxWidgets, > but getting the layouts correct and working as desired has been faster and > easier for me in every other GUI package I've used. The others (for the > most part) seemed more intuitive to me than the windows/panels etc. of > wxWidgets. And I have worked through what little I can find on the > wxErlang, i.e. > http://www.idiom.com/~turner/wxtut/wxwidgets.html > http://wxerlang.dougedmunds.com/ > > In the end, I think better documentation - not written for someone who > already knows how to use either WxWidgets or wxErlang - would be a key > improvement. > > Regards, > Alan > > > -----Original Message----- > From: erlang-questions-bounces@REDACTED > [mailto:erlang-questions-bounces@REDACTED] On Behalf Of arif@REDACTED > Sent: Thursday, December 07, 2017 08:04 > To: erlang-questions@REDACTED > Subject: Re: [erlang-questions] GUI development with Erlang > > Hi, > I have been using wxErlang on some projects and I don't find it too hard. I > make the GUI in separate processes and communicate with the application > using regular erlang message passing. > Using the wx_object, it is practically a breeze. It is like programming a > gen_server. I even run the GUI processes supervised, to allow me to "let it > crash". > Also, you can use wxFormBuilder to do the layout and use the generated PHP > or LUA code to figure out what you need to do in wxErlang. I suppose you > could even write a parser to generate your erlang code from those. > So I am curious. What is that you find so hard about it? And what makes it > easier with C# or the like? > Thanks > Arif > > > Date: Wed, 6 Dec 2017 15:08:39 -0500 > From: "Alan Gingras" > To: "'Alex S.'" > Cc: 'Erlang' > Subject: Re: [erlang-questions] GUI development with Erlang > Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> > Content-Type: text/plain; charset="utf-8" > > Thanks Alex. I had thought of that but was trying to make this a pure > Erlang application. This is most likely the approach I will end up taking > unless I decide to pursue wxErlang, but that is probably a little unlikely. > > > From: Alex S. [mailto:alex0player@REDACTED] > Sent: Tuesday, December 05, 2017 03:08 > To: Alan Gingras > Cc: Erlang > Subject: Re: [erlang-questions] GUI development with Erlang > > For what it's worth, you can always implement your view and controller in > something like C#/F#, and your model in Erlang, and hook them up via TCP. > Alternatively, there was an Erlang-toF# compiler floating around I believe. > > > 2017-12-03 22:43 GMT+03:00 Alan Gingras >: > > Has anyone tried using Windows Forms (.net) with Erlang? This would be in a > similar fashion to way Python can use Windows Forms. On Linux I believe > this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s ?import? and > C#?s ?using? > features. If no one has anything, any hints on how a feature like this > might be implemented. > > Basically, I have been working on implementing genetic programming in Erlang > and would like to provide a GUI front end. The WxWidgets front end that > comes with Erlang is difficult at best. I?ve used several different GUI > kits on *nix and Windows platforms but WxWidgets seems the most difficult > for me. So I?m trying to see what else is available. I followed Joe > Armstrong?s quest earlier this year and didn?t see where he came up with > anything. > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -- Lo?c Hoguin https://ninenines.eu From erlang@REDACTED Sun Dec 10 11:53:20 2017 From: erlang@REDACTED (Joe Armstrong) Date: Sun, 10 Dec 2017 11:53:20 +0100 Subject: [erlang-questions] Erlang Inside In-Reply-To: References: Message-ID: Brilliant, thanks for the detailed reply and for forwarding it to the list this make it public and searchable. Newspaper articles usually don't go into this level of detail and so are not much use from a PR point of view. Thanks again /Joe On Sat, Dec 9, 2017 at 2:17 PM, Martin Sumner wrote: > Joe, > > The NHS Spine 2 Core system was built on two Erlang products (Riak and > RabbitMQ). Almost all of the bespoke code is written in Python, but the > message-passing architecture of the system and the approach to managing > availability was directly inspired by reading about Erlang (in particular > your book). > > 1. There's a presentation that I gave at ICFP 2017 on Spine 2 and Erlang > here: http://martinsumner.github.io/presentations/spine2_erlang#/. The > architectural links between Spine 2 and Erlang aren't talked about much > publicly, as it was only really me as the lead engineer/designer who was > thinking about it. Spine 2 was a big transformational shock for NHS IT in > many ways, and so tended to grab headlines for reasons other than Erlang > being inside. > > 2. Spine 2 provides the central data storage system and messaging system for > the NHS - covering electronic prescriptions (primary care), demographic > records, summary care records, subject access records, access alerting, > consent recording, distribution of pathology results, child protection > information, GP to GP record transfers, distribution of electronic referrals > and plenty more. It handles close to 50M messages on a busy day, and holds > around 2 billion records and documents. > > 3. Go live was August 2014 (replacing a system originally released July > 2004), and the system is expected to have a long life, as it is deeply > integrated into a slow-moving eco-system. > > 4. There are around 80 servers running Erlang in the production system. > > 5. Most users are indirect behind other applications, but it is accessed > this way by more than 100K users each day, who are sat behind over 20K > application instances from more than 20 different integrated applications. > > 6. I no longer work directly on the project, which is now led on the > technology side by Azhar Nisar. For any formal comms about the project you > would be best contacting the comms team @NHSDigital. > > 7. Riak KV and RabbitMQ > > 8. There are two other projects in the NHS with Erlang inside (through Riak > KV). SuS Plus (http://content.digital.nhs.uk/sus/replacement) which uses > Riak for object storage. There is also a service for auditing the > application of opt-outs > (http://content.digital.nhs.uk/article/7092/Information-on-type-2-opt-outs) > which is built on Riak and uses some bespoke Erlang for querying. > > Following the demise of Basho, there are now a number of engineers within > the NHS Digital team who are building up Erlang skills, to ensure they can > effectively manage these services in house in the future. There is some > increasing awareness of the presence of Erlang inside of the NHS IT > infrastructure. > > Many thanks > > Martin (@masleeds) > > From attila.r.nohl@REDACTED Tue Dec 12 17:25:53 2017 From: attila.r.nohl@REDACTED (Attila Rajmund Nohl) Date: Tue, 12 Dec 2017 17:25:53 +0100 Subject: [erlang-questions] rebar3 ct doesn't generate coverage data Message-ID: Hello! I'm running common_test from rebar3 and try to generate coverage data, but the generated cover.html only contains "Cover tool is not used". There's a ct.coverdata file generated in _build/test/cover/ directory, but no human-readable result. I execute rebar3 ct --cover --verbose and I also have {cover_enabled, true}. {cover_print_enabled, true}. {cover_export_enabled, true}. in the rebar.config file. Do I miss some other setting? From t@REDACTED Tue Dec 12 17:32:27 2017 From: t@REDACTED (Tristan Sloughter) Date: Tue, 12 Dec 2017 08:32:27 -0800 Subject: [erlang-questions] rebar3 ct doesn't generate coverage data In-Reply-To: References: Message-ID: <1513096347.3551849.1202621848.2A66BDAF@webmail.messagingengine.com> That is right, it is generating coverage data it just isn't creating the human readable output based on parsing all the cover data. Run `rebar3 cover` to generate it, which will include any `*.coverdata` file found in `_build/test/cover` so it aggregates ct and eunit test coverage. -- Tristan Sloughter "I am not a crackpot" - Abe Simpson t@REDACTED On Tue, Dec 12, 2017, at 08:25 AM, Attila Rajmund Nohl wrote: > Hello! > > I'm running common_test from rebar3 and try to generate coverage data, > but the generated cover.html only contains "Cover tool is not used". > There's a ct.coverdata file generated in _build/test/cover/ directory, > but no human-readable result. I execute > > rebar3 ct --cover --verbose > > and I also have > > {cover_enabled, true}. > {cover_print_enabled, true}. > {cover_export_enabled, true}. > > in the rebar.config file. Do I miss some other setting? > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From attila.r.nohl@REDACTED Tue Dec 12 17:37:00 2017 From: attila.r.nohl@REDACTED (Attila Rajmund Nohl) Date: Tue, 12 Dec 2017 17:37:00 +0100 Subject: [erlang-questions] rebar3 ct doesn't generate coverage data In-Reply-To: <1513096347.3551849.1202621848.2A66BDAF@webmail.messagingengine.com> References: <1513096347.3551849.1202621848.2A66BDAF@webmail.messagingengine.com> Message-ID: Thanks, this is what I was missing. 2017-12-12 17:32 GMT+01:00 Tristan Sloughter : > That is right, it is generating coverage data it just isn't creating the > human readable output based on parsing all the cover data. > > Run `rebar3 cover` to generate it, which will include any `*.coverdata` > file found in `_build/test/cover` so it aggregates ct and eunit test > coverage. > > -- > Tristan Sloughter > "I am not a crackpot" - Abe Simpson > t@REDACTED > > On Tue, Dec 12, 2017, at 08:25 AM, Attila Rajmund Nohl wrote: >> Hello! >> >> I'm running common_test from rebar3 and try to generate coverage data, >> but the generated cover.html only contains "Cover tool is not used". >> There's a ct.coverdata file generated in _build/test/cover/ directory, >> but no human-readable result. I execute >> >> rebar3 ct --cover --verbose >> >> and I also have >> >> {cover_enabled, true}. >> {cover_print_enabled, true}. >> {cover_export_enabled, true}. >> >> in the rebar.config file. Do I miss some other setting? >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From by@REDACTED Wed Dec 13 09:01:56 2017 From: by@REDACTED (by) Date: Wed, 13 Dec 2017 16:01:56 +0800 Subject: [erlang-questions] =?gb2312?b?YmFkX3JldHVybl9mcm9tX3N0YXRlX2Z1?= =?gb2312?b?bmN0aW9uIG9uICIzLjIxIENvbXBsZXggU3RhdGWhsSBvZiAiT1RQIGRlc2ln?= =?gb2312?b?biBwcmluY2lwbGVzIg==?= Message-ID: <42CF73CB-86F8-4941-8377-32EF0938F572@meetlost.com> Hi, I am trying the example on http://erlang.org/doc/design_principles/statem.html#id77558 "3.21 Complex State? But I got exception below: ==================================== Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Eshell V9.0 (abort with ^G) 1> c(code_lock3). {ok,code_lock3} 2> code_lock3:start_link([1,2,3], 4). Locked {ok,<0.67.0>} 3> code_lock3:button(1). Locked ** exception exit: {bad_return_from_state_function, {keep_state, #{code => [1,2,3],remaining => [2,3]}, 30000, [{reply, {<0.60.0>,#Ref<0.235851222.49545217.215838>}, ok}]}} in function gen_statem:parse_event_result/8 (gen_statem.erl, line 1318) in call from gen_statem:loop_event/6 (gen_statem.erl, line 1015) in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 4> =ERROR REPORT==== 13-Dec-2017::15:46:09 === ** State machine code_lock3 terminating ** Last event = {{call,{<0.60.0>,#Ref<0.235851222.49545217.215838>}}, {button,1}} ** When server state = {{locked,4},#{}} ** Reason for termination = error:{bad_return_from_state_function, {keep_state, #{code => [1,2,3],remaining => [2,3]}, 30000, [{reply, {<0.60.0>, #Ref<0.235851222.49545217.215838>}, ok}]}} ** Callback mode = [handle_event_function,state_enter] ** Stacktrace = ** [{gen_statem,parse_event_result,8,[{file,"gen_statem.erl"},{line,1318}]}, {gen_statem,loop_event,6,[{file,"gen_statem.erl"},{line,1015}]}, {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}] ==================================== I think the problem is on this: [Digit|Rest] -> % Incomplete {keep_state, Data#{remaining := Rest, 30000}, [{reply,From,ok}]}; Change code to below got the **exception [Digit|Rest] -> % Incomplete {keep_state, Data#{remaining := Rest}, 30000, [{reply,From,ok}]}; Actually, this is apparently wrong, since the map can not got ?30000" in this case. I tried move ?30000" out of the map, then the above exception occurs. And, I also tried just remove the ?30000?, and it works fine. [Digit|Rest] -> % Incomplete {keep_state, Data#{remaining := Rest}, [{reply,From,ok}]}; My question is: Is this a typo in the documentation? Or Am I missing something? Thanks by -------------- next part -------------- An HTML attachment was scrubbed... URL: From g@REDACTED Wed Dec 13 09:19:08 2017 From: g@REDACTED (Guilherme Andrade) Date: Wed, 13 Dec 2017 08:19:08 +0000 Subject: [erlang-questions] =?utf-8?q?bad=5Freturn=5Ffrom=5Fstate=5Ffuncti?= =?utf-8?q?on_on_=223=2E21_Complex_State=E2=80=9D_of_=22OTP_design_?= =?utf-8?q?principles=22?= In-Reply-To: <42CF73CB-86F8-4941-8377-32EF0938F572@meetlost.com> References: <42CF73CB-86F8-4941-8377-32EF0938F572@meetlost.com> Message-ID: It seems to be a typo. I believe the intention is to set up an event timeout[1] of 30 seconds, but if so then the timeout interval should be bundled with the call reply - "{reply,From,ok}" - in order to make it a part of the list of actions to perform. Maybe the following will do the trick: {keep_state, Data#{remaining := Rest}, [30000, {reply,From,ok}]} [1]: http://erlang.org/doc/man/gen_statem.html#type-event_timeout On 13 December 2017 at 08:01, by wrote: > Hi, > > I am trying the example on http://erlang.org/doc/ > design_principles/statem.html#id77558 > "3.21 Complex State? > > But I got exception below: > ==================================== > Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] > [async-threads:10] [hipe] [kernel-poll:false] [dtrace] > > Eshell V9.0 (abort with ^G) > 1> c(code_lock3). > {ok,code_lock3} > 2> code_lock3:start_link([1,2,3], 4). > Locked > {ok,<0.67.0>} > 3> code_lock3:button(1). > Locked > ** exception exit: {bad_return_from_state_function, > {keep_state, > #{code => [1,2,3],remaining => [2,3]}, > 30000, > [{reply, > {<0.60.0>,#Ref<0.235851222. > 49545217.215838>}, > ok}]}} > in function gen_statem:parse_event_result/8 (gen_statem.erl, line > 1318) > in call from gen_statem:loop_event/6 (gen_statem.erl, line 1015) > in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) > 4> > =ERROR REPORT==== 13-Dec-2017::15:46:09 === > ** State machine code_lock3 terminating > ** Last event = {{call,{<0.60.0>,#Ref<0.235851222.49545217.215838>}}, > {button,1}} > ** When server state = {{locked,4},#{}} > ** Reason for termination = error:{bad_return_from_state_function, > {keep_state, > #{code => [1,2,3],remaining => [2,3]}, > 30000, > [{reply, > {<0.60.0>, > #Ref<0.235851222.49545217.215838>}, > ok}]}} > ** Callback mode = [handle_event_function,state_enter] > ** Stacktrace = > ** [{gen_statem,parse_event_result,8,[{file,"gen_statem. > erl"},{line,1318}]}, > {gen_statem,loop_event,6,[{file,"gen_statem.erl"},{line,1015}]}, > {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}] > ==================================== > > I think the problem is on this: > > [Digit|Rest] -> % Incomplete > {keep_state, Data#{remaining := Rest, 30000}, > [{reply,From,ok}]}; > > Change code to below got the **exception > > [Digit|Rest] -> % Incomplete > {keep_state, Data#{remaining := Rest}, 30000, > [{reply,From,ok}]}; > > > Actually, this is apparently wrong, since the map can not got ?30000" in > this case. I tried move ?30000" out of the map, then the above exception > occurs. > And, I also tried just remove the ?30000?, and it works fine. > > [Digit|Rest] -> % Incomplete > {keep_state, Data#{remaining := Rest}, > [{reply,From,ok}]}; > > > My question is: > Is this a typo in the documentation? > Or > Am I missing something? > > Thanks > by > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -- Guilherme -------------- next part -------------- An HTML attachment was scrubbed... URL: From henrik.x.nord@REDACTED Wed Dec 13 10:46:19 2017 From: henrik.x.nord@REDACTED (Henrik Nord X) Date: Wed, 13 Dec 2017 09:46:19 +0000 Subject: [erlang-questions] Erlang/OTP 20.2 has been released Message-ID: <1513158379.3203.0.camel@ericsson.com> Erlang/OTP 20.2 is the second service release for the 20 major release. The service release contains mostly bug fixes and characteristics improvements but also some new features. Some highlights for 20.2 Application(s): crypto, ssl ???????????????The crypto API is extended to use private/public keys ???????????????stored in an Engine for sign/verify or encrypt/decrypt ???????????????operations. ???????????????The ssl application provides an API to use this new ???????????????engine concept in TLS. Application(s): ssh ???????????????SSH can now fetch the host key from the private keys ???????????????stored in an Engine. See the crypto application for ???????????????details about Engines. Application(s): ssl ???????????????A new command line option -ssl_dist_optfile has been ???????????????added to facilitate specifying the many options needed ???????????????when using SSL as the distribution protocol. Application(s): stdlib ???????????????Improve performance of the new string functionality ???????????????when handling ASCII characters. You can find the README and the full listing of changes for this service release at http://www.erlang.org/download/otp_src_20.2.readme The source distribution and binary distributions for Windows can be downloaded from http://www.erlang.org/download/otp_src_20.2.tar.gz http://www.erlang.org/download/otp_win32_20.2.exe http://www.erlang.org/download/otp_win64_20.2.exe Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please consult the README file that is part of the distribution. The Erlang/OTP source can also be found at GitHub on the official Erlang repository, https://github.com/erlang/otp with tag OTP-20.2 The on-line documentation can be found at: http://www.erlang.org/doc/ You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_20.2.tar.gz http://www.erlang.org/download/otp_doc_man_20.2.tar.gz Please report any new issues via Erlang/OTPs public issue tracker https://bugs.erlang.org We want to thank all of those who sent us patches, suggestions and bug reports! Thank you! The Erlang/OTP Team at Ericsson From raimo+erlang-questions@REDACTED Wed Dec 13 11:35:28 2017 From: raimo+erlang-questions@REDACTED (Raimo Niskanen) Date: Wed, 13 Dec 2017 11:35:28 +0100 Subject: [erlang-questions] =?utf-8?q?bad=5Freturn=5Ffrom=5Fstate=5Ffuncti?= =?utf-8?q?on_on_=223=2E21_Complex_State=E2=80=9D_of_=22OTP_design_princip?= =?utf-8?q?les=22?= In-Reply-To: References: <42CF73CB-86F8-4941-8377-32EF0938F572@meetlost.com> Message-ID: <20171213103528.GA35576@erix.ericsson.se> On Wed, Dec 13, 2017 at 08:19:08AM +0000, Guilherme Andrade wrote: > It seems to be a typo. I believe the intention is to set up an event > timeout[1] of 30 seconds, but if so then the timeout interval should be > bundled with the call reply - "{reply,From,ok}" - in order to make it a > part of the list of actions to perform. > > Maybe the following will do the trick: > > {keep_state, Data#{remaining := Rest}, [30000, {reply,From,ok}]} Yes - that fixes the typo. Thank you! / Raimo Niskanen (I wrote that example) > > [1]: http://erlang.org/doc/man/gen_statem.html#type-event_timeout > > On 13 December 2017 at 08:01, by wrote: > > > Hi, > > > > I am trying the example on http://erlang.org/doc/ > > design_principles/statem.html#id77558 > > "3.21 Complex State? > > > > But I got exception below: > > ==================================== > > Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] > > [async-threads:10] [hipe] [kernel-poll:false] [dtrace] > > > > Eshell V9.0 (abort with ^G) > > 1> c(code_lock3). > > {ok,code_lock3} > > 2> code_lock3:start_link([1,2,3], 4). > > Locked > > {ok,<0.67.0>} > > 3> code_lock3:button(1). > > Locked > > ** exception exit: {bad_return_from_state_function, > > {keep_state, > > #{code => [1,2,3],remaining => [2,3]}, > > 30000, > > [{reply, > > {<0.60.0>,#Ref<0.235851222. > > 49545217.215838>}, > > ok}]}} > > in function gen_statem:parse_event_result/8 (gen_statem.erl, line > > 1318) > > in call from gen_statem:loop_event/6 (gen_statem.erl, line 1015) > > in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) > > 4> > > =ERROR REPORT==== 13-Dec-2017::15:46:09 === > > ** State machine code_lock3 terminating > > ** Last event = {{call,{<0.60.0>,#Ref<0.235851222.49545217.215838>}}, > > {button,1}} > > ** When server state = {{locked,4},#{}} > > ** Reason for termination = error:{bad_return_from_state_function, > > {keep_state, > > #{code => [1,2,3],remaining => [2,3]}, > > 30000, > > [{reply, > > {<0.60.0>, > > #Ref<0.235851222.49545217.215838>}, > > ok}]}} > > ** Callback mode = [handle_event_function,state_enter] > > ** Stacktrace = > > ** [{gen_statem,parse_event_result,8,[{file,"gen_statem. > > erl"},{line,1318}]}, > > {gen_statem,loop_event,6,[{file,"gen_statem.erl"},{line,1015}]}, > > {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}] > > ==================================== > > > > I think the problem is on this: > > > > [Digit|Rest] -> % Incomplete > > {keep_state, Data#{remaining := Rest, 30000}, > > [{reply,From,ok}]}; > > > > Change code to below got the **exception > > > > [Digit|Rest] -> % Incomplete > > {keep_state, Data#{remaining := Rest}, 30000, > > [{reply,From,ok}]}; > > > > > > Actually, this is apparently wrong, since the map can not got ?30000" in > > this case. I tried move ?30000" out of the map, then the above exception > > occurs. > > And, I also tried just remove the ?30000?, and it works fine. > > > > [Digit|Rest] -> % Incomplete > > {keep_state, Data#{remaining := Rest}, > > [{reply,From,ok}]}; > > > > > > My question is: > > Is this a typo in the documentation? > > Or > > Am I missing something? > > > > Thanks > > by > > > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > > > > > -- > Guilherme > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -- / Raimo Niskanen, Erlang/OTP, Ericsson AB From by@REDACTED Wed Dec 13 09:28:21 2017 From: by@REDACTED (by) Date: Wed, 13 Dec 2017 16:28:21 +0800 Subject: [erlang-questions] =?gb2312?b?YmFkX3JldHVybl9mcm9tX3N0YXRlX2Z1?= =?gb2312?b?bmN0aW9uIG9uICIzLjIxIENvbXBsZXggU3RhdGWhsSBvZiAiT1RQIGRlc2ln?= =?gb2312?b?biBwcmluY2lwbGVzIg==?= In-Reply-To: References: <42CF73CB-86F8-4941-8377-32EF0938F572@meetlost.com> Message-ID: Yes, it works with: [Digit|Rest] -> {keep_state, Data#{remaining := Rest}, [30000, {reply, From, ok}]}; Thanks by > ? 2017?12?13??16:19?Guilherme Andrade ??? > > It seems to be a typo. I believe the intention is to set up an event timeout[1] of 30 seconds, but if so then the timeout interval should be bundled with the call reply - "{reply,From,ok}" - in order to make it a part of the list of actions to perform. > > Maybe the following will do the trick: > > {keep_state, Data#{remaining := Rest}, [30000, {reply,From,ok}]} > > [1]: http://erlang.org/doc/man/gen_statem.html#type-event_timeout > > On 13 December 2017 at 08:01, by > wrote: > Hi, > > I am trying the example on http://erlang.org/doc/design_principles/statem.html#id77558 > "3.21 Complex State? > > But I got exception below: > ==================================== > Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] > > Eshell V9.0 (abort with ^G) > 1> c(code_lock3). > {ok,code_lock3} > 2> code_lock3:start_link([1,2,3], 4). > Locked > {ok,<0.67.0>} > 3> code_lock3:button(1). > Locked > ** exception exit: {bad_return_from_state_function, > {keep_state, > #{code => [1,2,3],remaining => [2,3]}, > 30000, > [{reply, > {<0.60.0>,#Ref<0.235851222.49545217.215838>}, > ok}]}} > in function gen_statem:parse_event_result/8 (gen_statem.erl, line 1318) > in call from gen_statem:loop_event/6 (gen_statem.erl, line 1015) > in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) > 4> > =ERROR REPORT==== 13-Dec-2017::15:46:09 === > ** State machine code_lock3 terminating > ** Last event = {{call,{<0.60.0>,#Ref<0.235851222.49545217.215838>}}, > {button,1}} > ** When server state = {{locked,4},#{}} > ** Reason for termination = error:{bad_return_from_state_function, > {keep_state, > #{code => [1,2,3],remaining => [2,3]}, > 30000, > [{reply, > {<0.60.0>, > #Ref<0.235851222.49545217.215838>}, > ok}]}} > ** Callback mode = [handle_event_function,state_enter] > ** Stacktrace = > ** [{gen_statem,parse_event_result,8,[{file,"gen_statem.erl"},{line,1318}]}, > {gen_statem,loop_event,6,[{file,"gen_statem.erl"},{line,1015}]}, > {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}] > ==================================== > > I think the problem is on this: > [Digit|Rest] -> % Incomplete > {keep_state, Data#{remaining := Rest, 30000}, > [{reply,From,ok}]}; > Change code to below got the **exception > [Digit|Rest] -> % Incomplete > {keep_state, Data#{remaining := Rest}, 30000, > [{reply,From,ok}]}; > > Actually, this is apparently wrong, since the map can not got ?30000" in this case. I tried move ?30000" out of the map, then the above exception occurs. > And, I also tried just remove the ?30000?, and it works fine. > [Digit|Rest] -> % Incomplete > {keep_state, Data#{remaining := Rest}, > [{reply,From,ok}]}; > > My question is: > Is this a typo in the documentation? > Or > Am I missing something? > > Thanks > by > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > > -- > Guilherme -------------- next part -------------- An HTML attachment was scrubbed... URL: From jean.parpaillon@REDACTED Wed Dec 13 18:01:21 2017 From: jean.parpaillon@REDACTED (Jean Parpaillon) Date: Wed, 13 Dec 2017 18:01:21 +0100 Subject: [erlang-questions] SSH 4.5 bug ? In-Reply-To: <550d7971-68b2-29ee-ff5c-ecc8b01516d7@ericsson.com> References: <1500979313.13455.1.camel@free.fr> <550d7971-68b2-29ee-ff5c-ecc8b01516d7@ericsson.com> Message-ID: <1513184481.16942.20.camel@free.fr> Dear Hans, Sorry, I've missed your answer. I've identified the reason and described it in the following ticket: https://bugs.erlang.org/browse/ERL-531 Kind regards, Jean Le lundi 14 ao?t 2017 ? 12:29 +0200, Hans Nilsson R a ?crit : > Can you try > $ ssh -p 10022 -vvv localhost > to get more details? > > -Hans > > On 07/25/2017 12:41 PM, Jean Parpaillon wrote: > > $ ssh -p 10022 -v localhost > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -- Jean Parpaillon -- Senior Developper @ KBRW Adventure Chairman @ OW2 Consortium -- Phone: +33 6 30 10 92 86 im: jean.parpaillon@REDACTED skype: jean.parpaillon linkedin: http://www.linkedin.com/in/jeanparpaillon/en From technion@REDACTED Thu Dec 14 05:09:56 2017 From: technion@REDACTED (Technion) Date: Thu, 14 Dec 2017 04:09:56 +0000 Subject: [erlang-questions] Libsodium bindings Message-ID: Hi, Google points me to at least four different libraries offering libsodium bindings - of different apparent levels of maintenance. Has anyone got any experience with what would be the most reasonably written and maintained Erlang libsodium library for cryptography? -------------- next part -------------- An HTML attachment was scrubbed... URL: From boyofmonk@REDACTED Thu Dec 14 10:51:52 2017 From: boyofmonk@REDACTED (Monk Boy) Date: Thu, 14 Dec 2017 17:51:52 +0800 Subject: [erlang-questions] core dump in do_minor at beam/erl_gc.c:1442 Message-ID: Hi all: When I use the ejabberd, I got a core file. I use gdb to analyzw the reasons. But I did not find the reason. The following is the process of mu analysis: the erlang version is: otp_src_19.3 the ejabberd version is: ejabberd1609 the c code is(beam/erl_gc.c): 1440 case TAG_PRIMARY_LIST: { 1441 ptr = list_val(gval); 1442 val = *ptr; 1443 if (IS_MOVED_CONS(val)) { 1444 *n_hp++ = ptr[1]; 1445 } else if (ErtsInArea(ptr, mature, mature_size)) { 1446 MOVE_CONS(ptr,val,old_htop,n_hp++); 1447 } else if (ErtsInYoungGen(gval, ptr, oh, oh_size)) { 1448 MOVE_CONS(ptr,val,n_htop,n_hp++); 1449 } else { 1450 n_hp++; 1451 } 1452 break; 1453 } [root@REDACTED /home/q/ejabberd.16.09]# gdb /home/q/erlang1903/lib/erlang/erts-8.3/bin/beam.smp var/lib/ejabberd/core GNU gdb (GDB) Red Hat Enterprise Linux (7.2-90.el6) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/q/erlang1903/lib/erlang/erts-8.3/bin/beam.smp... done. [New Thread 43516] [New Thread 43519] [New Thread 43525] [New Thread 43533] [New Thread 43520] [New Thread 43527] [New Thread 43522] [New Thread 43537] [New Thread 43521] [New Thread 43536] [New Thread 43528] [New Thread 43523] [New Thread 43524] [New Thread 43534] [New Thread 43508] [New Thread 43504] [New Thread 43538] [New Thread 43526] [New Thread 43509] [New Thread 43531] [New Thread 43510] [New Thread 43529] [New Thread 43506] [New Thread 43530] [New Thread 43518] [New Thread 43513] [New Thread 43535] [New Thread 43505] [New Thread 43511] [New Thread 43517] [New Thread 43507] [New Thread 43515] [New Thread 43532] [New Thread 43512] [New Thread 43503] [New Thread 43539] [New Thread 43502] [New Thread 43499] Missing separate debuginfo for /home/q/erlang1903/lib/erlang/lib/crypto-3 .7.3/priv/lib/crypto.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /54/86971bd49d35a485d5cb3d671781c7222beb4f Missing separate debuginfo for /home/q/erlang1903/lib/erlang/lib/crypto-3 .7.3/priv/lib/crypto_callback.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /26/28f9137d12356d93ba1675f620b6502d439cfe Missing separate debuginfo for /home/q/ejabberd.16.09/lib/fast_yaml-1.0.6 /priv/lib/fast_yaml.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /66/dc1a5f6f70cf952e7cde7d4a63494aaa873659 Missing separate debuginfo for /usr/local/lib/libyaml-0.so.2 Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /ae/35d9988c86d9305257e3a66c1dabf9a8d26247 Missing separate debuginfo for /home/q/ejabberd.16.09/lib/fast_tls-1.0.7 /priv/lib/p1_sha.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /bf/5ea41e0f2c1b3d45f600cdba5f64746fdaaadf Missing separate debuginfo for /home/q/ejabberd.16.09/lib/fast_tls-1.0.7 /priv/lib/fast_tls_drv.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /3b/90d840163d5b57ffb55cb43bbc25abd9b52115 Missing separate debuginfo for /home/q/ejabberd.16.09/lib/fast_xml-1.1.15 /priv/lib/fxml.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /d5/ddb17f4058ecb465853f8b793c76a9462c5751 Missing separate debuginfo for /usr/local/lib/libexpat.so.1 Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /aa/be97b5e575f0ad0f9679767c0d590ed791cc24 Missing separate debuginfo for /home/q/ejabberd.16.09/lib/fast_xml-1.1.15 /priv/lib/fxml_stream.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /68/098238760273e488ab80023cd14770884e95b7 Missing separate debuginfo for /home/q/ejabberd.16.09/lib/stringprep-1.0.6 /priv/lib/stringprep.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /66/f3c4bbd0f08413929dcf906699329183184e16 Missing separate debuginfo for /home/q/ejabberd.16.09/lib/ezlib-1.0.1 /priv/lib/ezlib_drv.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /b7/c7fa253e2e2f53203e16f1d6a651567a771953 Missing separate debuginfo for /home/q/erlang1903/lib/erlang/lib/asn1-4.0.4 /priv/lib/asn1rt_nif.so Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /af/6272fe63fc5ea2106fed5084e579ba6fb5b8cf Missing separate debuginfo for Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id /71/a96b79419fe40ff1706d59ed06d6dbe37c8e97 Reading symbols from /lib64/libutil.so.1...(no debugging symbols found)... done. Loaded symbols for /lib64/libutil.so.1 Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done . Loaded symbols for /lib64/libdl.so.2 Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libm.so.6 Reading symbols from /lib64/libtinfo.so.5...(no debugging symbols found)... done. Loaded symbols for /lib64/libtinfo.so.5 Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done. [Thread debugging using libthread_db enabled] Loaded symbols for /lib64/libpthread.so.0 Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done . Loaded symbols for /lib64/librt.so.1 Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libc.so.6 Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /home/q/erlang1903/lib/erlang/lib/crypto-3.7.3 /priv/lib/crypto.so...done. Loaded symbols for /home/q/erlang1903/lib/erlang/lib/crypto-3.7.3 /priv/lib/crypto.so Reading symbols from /usr/lib64/libcrypto.so.10...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libcrypto.so.10 Reading symbols from //lib64/libz.so.1...(no debugging symbols found)...done . Loaded symbols for //lib64/libz.so.1 Reading symbols from /home/q/erlang1903/lib/erlang/lib/crypto-3.7.3 /priv/lib/crypto_callback.so...done. Loaded symbols for /home/q/erlang1903/lib/erlang/lib/crypto-3.7.3 /priv/lib/crypto_callback.so Reading symbols from /home/q/ejabberd.16.09/lib/fast_yaml-1.0.6 /priv/lib/fast_yaml.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/fast_yaml-1.0.6 /priv/lib/fast_yaml.so Reading symbols from /usr/local/lib/libyaml-0.so.2...done. Loaded symbols for /usr/local/lib/libyaml-0.so.2 Reading symbols from /home/q/ejabberd.16.09/lib/fast_tls-1.0.7 /priv/lib/p1_sha.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/fast_tls-1.0.7/priv/lib/p1_sha .so Reading symbols from /usr/lib64/libssl.so.10...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libssl.so.10 Reading symbols from /lib64/libgssapi_krb5.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libgssapi_krb5.so.2 Reading symbols from /lib64/libkrb5.so.3...(no debugging symbols found)... done. Loaded symbols for /lib64/libkrb5.so.3 Reading symbols from /lib64/libcom_err.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libcom_err.so.2 Reading symbols from /lib64/libk5crypto.so.3...(no debugging symbols found)...done. Loaded symbols for /lib64/libk5crypto.so.3 Reading symbols from /lib64/libkrb5support.so.0...(no debugging symbols found)...done. Loaded symbols for /lib64/libkrb5support.so.0 Reading symbols from /lib64/libkeyutils.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libkeyutils.so.1 Reading symbols from /lib64/libresolv.so.2...(no debugging symbols found)... done. Loaded symbols for /lib64/libresolv.so.2 Reading symbols from /lib64/libselinux.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libselinux.so.1 Reading symbols from /home/q/ejabberd.16.09/lib/fast_tls-1.0.7 /priv/lib/fast_tls_drv.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/fast_tls-1.0.7 /priv/lib/fast_tls_drv.so Reading symbols from /home/q/ejabberd.16.09/lib/fast_xml-1.1.15 /priv/lib/fxml.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/fast_xml-1.1.15/priv/lib/fxml .so Reading symbols from /usr/local/lib/libexpat.so.1...done. Loaded symbols for /usr/local/lib/libexpat.so.1 Reading symbols from /home/q/ejabberd.16.09/lib/fast_xml-1.1.15 /priv/lib/fxml_stream.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/fast_xml-1.1.15 /priv/lib/fxml_stream.so Reading symbols from /home/q/ejabberd.16.09/lib/stringprep-1.0.6 /priv/lib/stringprep.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/stringprep-1.0.6 /priv/lib/stringprep.so Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libstdc++.so.6 Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)... done. Loaded symbols for /lib64/libgcc_s.so.1 Reading symbols from /home/q/ejabberd.16.09/lib/ezlib-1.0.1 /priv/lib/ezlib_drv.so...done. Loaded symbols for /home/q/ejabberd.16.09/lib/ezlib-1.0.1/priv/lib/ezlib_drv .so Reading symbols from /home/q/erlang1903/lib/erlang/lib/asn1-4.0.4 /priv/lib/asn1rt_nif.so...done. Loaded symbols for /home/q/erlang1903/lib/erlang/lib/asn1-4.0.4 /priv/lib/asn1rt_nif.so Core was generated by `/home/q/erlang1903/lib/erlang/erts-8.3/bin/beam.smp -K true -P 2500000 -- -root'. Program terminated with signal 11, Segmentation fault. #0 do_minor (p=, live_hf_end=, mature=0x7f479b140818 "T\001", mature_size=1016, new_sz=6772, objv=0x7f47a3e9c850, nobj=1) at beam/erl_gc.c:1442 1442 val = *ptr; Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.192.el6.x86_64 keyutils-libs-1.4-5.el6.x86_64 krb5-libs-1.10.3-57.el6.x86_64 libcom_err-1.41.12-22.el6.x86_64 libgcc-4.4.7-17.el6.x86_64 libselinux-2.0.94-7.el6.x86_64 libstdc++-4.4.7-17.el6.x86_64 ncurses-libs-5.7-4.20090207.el6.x86_64 openssl-1.0.1e-48.el6_8.1.x86_64 zlib-1.2.3-29.el6.x86_64 (gdb) bt #0 do_minor (p=, live_hf_end=, mature=0x7f479b140818 "T\001", mature_size=1016, new_sz=6772, objv=0x7f47a3e9c850, nobj=1) at beam/erl_gc.c:1442 #1 0x0000000000569039 in minor_collection (p=0x7f48a9625840, live_hf_end=0x0, need=0, objv=0x7f496d6fdcd0, nobj=1, fcalls=416) at beam/erl_gc.c:1238 #2 garbage_collect (p=0x7f48a9625840, live_hf_end=0x0, need=0, objv=0x7f496d6fdcd0, nobj=1, fcalls=416) at beam/erl_gc.c:673 #3 0x000000000056979b in erts_gc_after_bif_call_lhf (p=0x7f48a9625840, live_hf_end=, result=139945523948913, regs=, arity=) at beam/erl_gc.c:426 #4 0x0000000000441bf8 in process_main () at beam/beam_emu.c:2874 #5 0x00000000004e0cf5 in sched_thread_func (vesdp=0x7f4971dd6980) at beam/erl_process.c:8206 #6 0x000000000062ec02 in thr_wrapper (vtwd=) at pthread/ethread.c:114 #7 0x0000003b52007aa1 in start_thread () from /lib64/libpthread.so.0 #8 0x0000003b51ce8aad in clone () from /lib64/libc.so.6 (gdb) f 1 #1 0x0000000000569039 in minor_collection (p=0x7f48a9625840, live_hf_end=0x0, need=0, objv=0x7f496d6fdcd0, nobj=1, fcalls=416) at beam/erl_gc.c:1238 1238 do_minor(p, live_hf_end, (char *) mature, mature_size*sizeof(Eterm), (gdb) etp-process-info p Pid: <0.15774.738> State: on-heap-msgq | garbage-collecting | running | active | prq-prio-normal | usr-prio-normal | act-prio-normal Current function: erlang:process_info/2 I: #Cp<0x7200d630> Heap size: 4185 Old-heap size: 17731 Mbuf size: 3150 Msgq len: 2 (inner=2, outer=0) Parent: <0.3801.0> Pointer: (Process *) 0x7f48a9625840 (gdb) etp-stacktrace p % Stacktrace (46): NULL #Cp. #Cp. #Cp. #Cp. #Cp. #Cp. #Cp. (gdb) etp-stackdump p % Stackdump (46): NULL #Cp. 2. #Cp. []. #Cp. #HeapBinary<0x15,0x38393136,0x39323233,0x31383034>. #SubBinary<0x12,0,0x10000:0xa3ea2b1a>. #Cp. []. []. []. []. #Catch<1906>. #HeapBinary<0x8,0x632e6978>. #HeapBinary<0x9,0x62616a65,0xa6f00431>. #HeapBinary<0x15,0x38393136,0x39323233,0x31383034>. #Cp. []. []. []. []. {socket_state,gen_tcp,#Port<0.21862986>,<0.16550.738>}. ejabberd_socket. []. []. []. []. []. []. []. []. []. []. {state,{socket_state,gen_tcp, #Port<0.21862986>,<0.16550.738>},ejabberd_socket,#Ref<0.0.104333315.20933>,false,#HeapBinary<0x11,0x32323831,0x37393033,0xaf03ff39>,undefined,c2s,c2s_shaper,false,false,false,false,[verify_none,compression_none],true,{jid,#HeapBinary<0x8,0x632e6978>,#HeapBinary<0x9,0x62616a65,0xa6f00431>,#RefcBinary<0x45,0,0xc95b73e8,0xc95b7400,0>,#HeapBinary<0x8,0x632e6978>,#HeapBinary<0x9,0x62616a65,0xa6f00431>,#RefcBinary<0x45,0,0xc95b73e8,0xc95b7400,0>},#HeapBinary<0x8,0x632e6978>,#HeapBinary<0x9,0x62616a65,0xa6f00431>,#RefcBinary<0x45,0,0xc95b73e8,0xc95b7400,0>,{{1513,229103,4851576},<0.15774.738>},...}. []. #Cp. #Catch<2501>. []. {state,{socket_state,gen_tcp, #Port<0.21862986>,<0.16550.738>},ejabberd_socket,#Ref<0.0.104333315.20933>,false,#HeapBinary<0x11,0x32323831,0x37393033,0xaf03ff39>,undefined,c2s,c2s_shaper,false,false,false,false,[verify_none,compression_none],true,{jid,#HeapBinary<0x8,0x632e6978>,#HeapBinary<0x9,0x62616a65,0xa6f00431>,#RefcBinary<0x45,0,0xc95b73e8,0xc95b7400,0>,#HeapBinary<0x8,0x632e6978>,#HeapBinary<0x9,0x62616a65,0xa6f00431>,#RefcBinary<0x45,0,0xc95b73e8,0xc95b7400,0>},#HeapBinary<0x8,0x632e6978>,#HeapBinary<0x9,0x62616a65,0xa6f00431>,#RefcBinary<0x45,0,0xc95b73e8,0xc95b7400,0>,{{1513,229103,4851576},<0.15774.738>},...}. session_established. ejabberd_c2s. {'$gen_event',{xmlstreamerror, #HeapBinary<0x15,0x204c4d58,0x6920617a,0x6962206f>}}. <0.15774.738>. normal. #Cp. #Catch<200>. (gdb) Thank you for your time. -------------- next part -------------- An HTML attachment was scrubbed... URL: From krzysztof.jurewicz@REDACTED Thu Dec 14 11:28:51 2017 From: krzysztof.jurewicz@REDACTED (Krzysztof Jurewicz) Date: Thu, 14 Dec 2017 11:28:51 +0100 Subject: [erlang-questions] Libsodium bindings In-Reply-To: References: Message-ID: <87r2rxiows.fsf@gmail.com> > Has anyone got any experience with what would be the most reasonably written and maintained Erlang libsodium library for cryptography? In Ercoin I?ve used https://github.com/potatosalad/erlang-libsodium.git, perhaps because it seemed to be the simplest one to use and least problematic for this particular (non-complex) application. Generally it looks like https://github.com/jlouis/enacl.git is the most maintained binding. From max.lapshin@REDACTED Thu Dec 14 11:37:26 2017 From: max.lapshin@REDACTED (Max Lapshin) Date: Thu, 14 Dec 2017 13:37:26 +0300 Subject: [erlang-questions] Erlang/OTP 20.2 has been released In-Reply-To: <1513158379.3203.0.camel@ericsson.com> References: <1513158379.3203.0.camel@ericsson.com> Message-ID: does it contain patch with multiple epoll-s? -------------- next part -------------- An HTML attachment was scrubbed... URL: From mohammedmazharuddin@REDACTED Thu Dec 14 12:26:04 2017 From: mohammedmazharuddin@REDACTED (Mazhar) Date: Thu, 14 Dec 2017 16:56:04 +0530 Subject: [erlang-questions] Server Sent Event for Specific Client in YAWS server Message-ID: Hello all, ??? ??? Is there any way to make my SSE(sever sent events) handler send the message to a specific client and to a specific page, ??? ??? ??? I have gone through the SSE and understood that the server is sending the events to all the connected clients and the event is accessible in every page, and we are just handling the event in javascript. in short all the clients are receiving the events sent by the server. ??? ??? ??? ??? Is there any way to overcome this? is there any better way to work with SSE? my requirement here is to query some external node and send the data to the client and i don't want all the clients to be receiving that data and also i want that data to be received only when the client is accessing a specific page. Your earliest response in this regard would be highly appreciated. Thanks in advance. With Regards, Mazhar. From krzysztof.jurewicz@REDACTED Thu Dec 14 13:57:58 2017 From: krzysztof.jurewicz@REDACTED (Krzysztof Jurewicz) Date: Thu, 14 Dec 2017 13:57:58 +0100 Subject: [erlang-questions] Erlang Inside In-Reply-To: References: Message-ID: <87o9n1ii09.fsf@gmail.com> Paspagon ( http://paspagon.com ) is a cryptocurrency payment processor, written in Erlang, which allows selling any files stored in Amazon S3 (currently only one region). No registration is needed and there are three options for restricting customers: ? custom authorization passed via URL; ? country restriction (via IP geolocation); ? no restrictions. The latter two allow selling files without running an own server. There is also a Jekyll plugin ( https://github.com/KrzysiekJ/jekyll-paspagon ) which allows selling blog posts in various formats. To my knowledge, Paspagon is one of the first services using HTTP status code 402 Payment Required (though in a non-standarized way). Some of the applications/modules: ? cryptocurrency node to monitor transactions in real time; ? currency rates? fetcher and calculator; ? client for JSON API of Bitcoin-like cryptocurrencies; ? INI parser. Some of the dependencies: ? cowboy; ? egeoip; ? erlcloud; ? erlydtl; ? erlsha2; ? epgsql; ? gproc; ? jiffy; ? lager. Due to low volume and low popularity there are few servers used, but the architecture has been designed to be massively scalable and resistant to failures. As a trivial example, Mnesia acts as a operational database (while SQL is used for storing history). I may be treated as a contact person, with email @myto.com.pl. -- chairman of the board of Myto sp. z o.o. Modrzewiowa 23, 64-930 Dolaszewo, Poland; NIP: 7642670757; seed capital: 5000 z? KRS: 0000586316 (S?d Rejonowy Pozna?-Nowe Miasto i Wilda Wydzia? ? Gospodarczy) Myto sp. z o.o. is a general partner of Myto sp. z o.o. sp.k. From lukas@REDACTED Thu Dec 14 14:21:56 2017 From: lukas@REDACTED (Lukas Larsson) Date: Thu, 14 Dec 2017 14:21:56 +0100 Subject: [erlang-questions] Erlang/OTP 20.2 has been released In-Reply-To: References: <1513158379.3203.0.camel@ericsson.com> Message-ID: On Thu, Dec 14, 2017 at 11:37 AM, Max Lapshin wrote: > does it contain patch with multiple epoll-s? > No, that feature is merged into the master branch for release in OTP-21. If you have the time, please try it out and see if you get better/worse performance with it, the more tests we run on it before OTP-21 is released, the better it will be. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From frank.muller.erl@REDACTED Thu Dec 14 14:46:19 2017 From: frank.muller.erl@REDACTED (Frank Muller) Date: Thu, 14 Dec 2017 13:46:19 +0000 Subject: [erlang-questions] Erlang/OTP 20.2 has been released In-Reply-To: References: <1513158379.3203.0.camel@ericsson.com> Message-ID: And when OTP-21 is gonna be released? /Frank On Thu, Dec 14, 2017 at 11:37 AM, Max Lapshin wrote: > >> does it contain patch with multiple epoll-s? >> > > No, that feature is merged into the master branch for release in OTP-21. > > If you have the time, please try it out and see if you get better/worse > performance with it, the more tests we run on it before OTP-21 is released, > the better it will be. > > Lukas > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From vinoski@REDACTED Thu Dec 14 14:57:58 2017 From: vinoski@REDACTED (Steve Vinoski) Date: Thu, 14 Dec 2017 08:57:58 -0500 Subject: [erlang-questions] Server Sent Event for Specific Client in YAWS server In-Reply-To: References: Message-ID: Note that you might be better off sending Yaws questions to the Yaws mailing list (https://sourceforge.net/projects/erlyaws/lists/erlyaws-list). On Thu, Dec 14, 2017 at 6:26 AM, Mazhar wrote: > Hello all, > > Is there any way to make my SSE(sever sent events) handler send > the message to a specific client and to a specific page, > > I have gone through the SSE and understood that the server is > sending the events to all the connected clients and the event is accessible > in every page, and we are just handling the event in javascript. in short > all the clients are receiving the events sent by the server. > I'm not sure I understand what you mean by the event being sent to all connected clients. Events are sent on specific client connections. Perhaps you're saying that your server-side code for a particular resource is going into SSE mode regardless of how a client accesses that resource? Is there any way to overcome this? is there any better way > to work with SSE? my requirement here is to query some external node and > send the data to the client and i don't want all the clients to be > receiving that data and also i want that data to be received only when the > client is accessing a specific page. > > Your earliest response in this regard would be highly appreciated. > What you're asking for is entirely possible. I'd recommend either emailing the Yaws mailing list or just emailing me directly to get more help. I'd like to see the code you're currently using so I can get a better idea of what directions to give you. --steve -------------- next part -------------- An HTML attachment was scrubbed... URL: From jesper.louis.andersen@REDACTED Thu Dec 14 15:16:45 2017 From: jesper.louis.andersen@REDACTED (Jesper Louis Andersen) Date: Thu, 14 Dec 2017 14:16:45 +0000 Subject: [erlang-questions] Libsodium bindings In-Reply-To: <87r2rxiows.fsf@gmail.com> References: <87r2rxiows.fsf@gmail.com> Message-ID: Hi, jlouis/enacl is definitely maintained. It is just that there is not much to do with the functionality in there because most of the base functionality is present and I'll just have to add a couple of functions as people request them. The strength of enacl, at least compared to other solutions, is that it contains a QuickCheck model for testing it does the right thing. Due to work by Irina Guberman and Zane Beckwith (both working at Xaptum), this model can also be run with QuickCheck mini. This was used to verify that the code also worked on the MIPS architecture, and it can be used for other embedded device work. Enacl uses dirty schedulers, but doesn't do so for very small quick calls under a threshold, where the move to/from the dirty scheduler is too expensive. There is a blog post on the subject [0] where the basic idea is this: Once the overhead of moving to a dirty scheduler is less than 5-10% of the runtime, we just move the work to the DS. By experimenting with dtrace, we can find that threshold point. [0] https://medium.com/@jlouis666/erlang-dirty-scheduler-overhead-6e1219dcc7 On Thu, Dec 14, 2017 at 11:29 AM Krzysztof Jurewicz < krzysztof.jurewicz@REDACTED> wrote: > > Has anyone got any experience with what would be the most reasonably > written and maintained Erlang libsodium library for cryptography? > > In Ercoin I?ve used https://github.com/potatosalad/erlang-libsodium.git, > perhaps because it seemed to be the simplest one to use and least > problematic for this particular (non-complex) application. Generally it > looks like https://github.com/jlouis/enacl.git is the most maintained > binding. > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From lukas@REDACTED Thu Dec 14 15:32:59 2017 From: lukas@REDACTED (Lukas Larsson) Date: Thu, 14 Dec 2017 15:32:59 +0100 Subject: [erlang-questions] Erlang/OTP 20.2 has been released In-Reply-To: References: <1513158379.3203.0.camel@ericsson.com> Message-ID: On Thu, Dec 14, 2017 at 2:46 PM, Frank Muller wrote: > And when OTP-21 is gonna be released? > We almost always have our major releases once a year in June, and I see no reason why this year would be an exception. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From frank.muller.erl@REDACTED Thu Dec 14 15:33:56 2017 From: frank.muller.erl@REDACTED (Frank Muller) Date: Thu, 14 Dec 2017 14:33:56 +0000 Subject: [erlang-questions] Erlang/OTP 20.2 has been released In-Reply-To: References: <1513158379.3203.0.camel@ericsson.com> Message-ID: No one asks for an exception. On Thu, Dec 14, 2017 at 2:46 PM, Frank Muller > wrote: > >> And when OTP-21 is gonna be released? >> > > We almost always have our major releases once a year in June, and I see > no reason why this year would be an exception. > > Lukas > -------------- next part -------------- An HTML attachment was scrubbed... URL: From silviu.cpp@REDACTED Thu Dec 14 22:20:34 2017 From: silviu.cpp@REDACTED (Caragea Silviu) Date: Thu, 14 Dec 2017 23:20:34 +0200 Subject: [erlang-questions] url query string encode/decode Message-ID: Hello, There is any library that allows you to encode a proplist into a query string and the other way around. Most of libraries I saw are not working because for example lists of properties are failing like: [{<<"a">>, [1,2,3]}] Kind regards, Silviu -------------- next part -------------- An HTML attachment was scrubbed... URL: From scott_ribe@REDACTED Thu Dec 14 22:32:57 2017 From: scott_ribe@REDACTED (scott ribe) Date: Thu, 14 Dec 2017 14:32:57 -0700 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: Message-ID: <815FD01C-7F7D-47C0-96F0-236357D12353@elevated-dev.com> On Dec 14, 2017, at 2:20 PM, Caragea Silviu wrote: > > There is any library that allows you to encode a proplist into a query string and the other way around. Because there is no exact correspondence, props lists can represent things for which there is no standard URL syntax, you're going to have to define our own transform somewhere. You may well just write a function that translate an arbitrary props list into a keyword list with all values as strings, then use a library to encode that. -- Scott Ribe https://www.linkedin.com/in/scottribe/ (303) 722-0567 From jb_duffy@REDACTED Thu Dec 14 23:46:25 2017 From: jb_duffy@REDACTED (John Duffy) Date: Thu, 14 Dec 2017 22:46:25 +0000 (GMT) Subject: [erlang-questions] "Concurrent Programming in Erlang" (Second Edition) Query Message-ID: <23541689.31265.1513291585284.JavaMail.defaultUser@defaultHost> Hi I'm learning Erlang with the help of "Concurrent Programming in Erlang" (Second Edition). Being an electrical engineer, I'm a bit stumped by the computer science terminology of the last paragraph of 2.3 Expression Evaluation: "The evaluator can be thought of as function E which reduces an expression to a ground term: ... ... where APPLY represents a function which applies a function to its arguments". If there is someone who has this book and can translate this paragraph and the examples into simple engineer speak I would be very grateful. Kind regards John -------------- next part -------------- An HTML attachment was scrubbed... URL: From random.outcomes@REDACTED Fri Dec 15 07:38:04 2017 From: random.outcomes@REDACTED (Luke) Date: Fri, 15 Dec 2017 17:38:04 +1100 Subject: [erlang-questions] "Concurrent Programming in Erlang" (Second Edition) Query In-Reply-To: <23541689.31265.1513291585284.JavaMail.defaultUser@defaultHost> References: <23541689.31265.1513291585284.JavaMail.defaultUser@defaultHost> Message-ID: Eval/Apply is a concept taken from Lisp https://mitpress.mit.edu/sicp/full-text/sicp/book/node77.html https://en.wikipedia.org/wiki/Eval https://en.wikipedia.org/wiki/Apply Essentially, eval "executes" or "runs" S-expressions which then return/evaluate-to something - maybe a number, maybe a string, maybe a function. Apply means to apply a function to a list of parameters (or in slightly different wording, run a function with some parameters). The execution of a function program can be thought of as one continuous cycle of eval/apply, for example we can eval some expression which results in a function, this function then gets applied to some parameters, some of which may themselves have been expressions we have already evaluated. On Fri, Dec 15, 2017 at 9:46 AM, John Duffy wrote: > Hi > > I'm learning Erlang with the help of "Concurrent Programming in Erlang" > (Second Edition). Being an electrical engineer, I'm a bit stumped by the > computer science terminology of the last paragraph of 2.3 Expression > Evaluation: > > "The evaluator can be thought of as function E which reduces an expression > to a ground term: ... ... where APPLY represents a function > which applies a function to its arguments". > > If there is someone who has this book and can translate this paragraph and > the examples into simple engineer speak I would be very grateful. > > Kind regards > > John > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From krzysztof.jurewicz@REDACTED Fri Dec 15 10:00:56 2017 From: krzysztof.jurewicz@REDACTED (Krzysztof Jurewicz) Date: Fri, 15 Dec 2017 10:00:56 +0100 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: Message-ID: <87h8ssicvr.fsf@gmail.com> > There is any library that allows you to encode a proplist into a query > string and the other way around. > > Most of libraries I saw are not working because for example lists of > properties are failing like: > > [{<<"a">>, [1,2,3]}] cowlib?s cow_qs:parse_qs/1 and cow_qs:qs/1 should do the job: 3> cow_qs:parse_qs(<<"a=b&a=c">>). [{<<"a">>,<<"b">>},{<<"a">>,<<"c">>}] 4> cow_qs:qs(cow_qs:parse_qs(<<"a=b&a=c">>)). <<"a=b&a=c">> 5> cow_qs:parse_qs(<<"a=b&c">>). [{<<"a">>,<<"b">>},{<<"c">>,true}] From silviu.cpp@REDACTED Fri Dec 15 11:55:41 2017 From: silviu.cpp@REDACTED (Caragea Silviu) Date: Fri, 15 Dec 2017 12:55:41 +0200 Subject: [erlang-questions] url query string encode/decode In-Reply-To: <87h8ssicvr.fsf@gmail.com> References: <87h8ssicvr.fsf@gmail.com> Message-ID: Seems parsing of lists is not compliant. I see lot of libraries using different implementations in different languages. Anyway I solved my problem Thanks a lot, Silviu On Fri, Dec 15, 2017 at 11:00 AM, Krzysztof Jurewicz < krzysztof.jurewicz@REDACTED> wrote: > > There is any library that allows you to encode a proplist into a query > > string and the other way around. > > > > Most of libraries I saw are not working because for example lists of > > properties are failing like: > > > > [{<<"a">>, [1,2,3]}] > > cowlib?s cow_qs:parse_qs/1 and cow_qs:qs/1 should do the job: > > 3> cow_qs:parse_qs(<<"a=b&a=c">>). > [{<<"a">>,<<"b">>},{<<"a">>,<<"c">>}] > 4> cow_qs:qs(cow_qs:parse_qs(<<"a=b&a=c">>)). > <<"a=b&a=c">> > 5> cow_qs:parse_qs(<<"a=b&c">>). > [{<<"a">>,<<"b">>},{<<"c">>,true}] > -------------- next part -------------- An HTML attachment was scrubbed... URL: From dhoblem@REDACTED Fri Dec 15 07:40:47 2017 From: dhoblem@REDACTED (Meghali Dhoble) Date: Fri, 15 Dec 2017 12:10:47 +0530 Subject: [erlang-questions] escript: exception error: undefined function etap:plan/1 Message-ID: Hi, I am working one of the opensource project and trying to build it from source. Erlang is also being built for this as one of the dependency and while running the integrated tests for it; I am getting this error. The version of Erlang being used. : Erlang/OTP 17?[erts-6.3] The detailed log is as below: ERL_FLAGS="-pa /root/meghali/couchbase_master/build/couchdb/src/../test/etap /root/meghali/couchbase_master/build/couchdb/src/couch_set_view/test /root/meghali/couchbase_master/build/couchdb/src/couchdb /root/meghali/couchbase_master/build/couchdb/src/lhttpc /root/meghali/couchbase_master/build/couchdb/src/CMakeFiles /root/meghali/couchbase_master/build/couchdb/src/couch_set_view" escript: exception error: undefined function etap:plan/1 in function erl_eval:do_apply/6 (erl_eval.erl, line 657) in call from escript:eval_exprs/5 (escript.erl, line 865) in call from erl_eval:local_func/5 (erl_eval.erl, line 544) in call from escript:interpret/4 (escript.erl, line 781) in call from escript:start/1 (escript.erl, line 276) in call from init:start_it/1 in call from init:start_em/1 Any pointers to understand when should I expect this error or if I have missed something. Thanks, Meghali Dhoble -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Fri Dec 15 12:39:10 2017 From: roger@REDACTED (Roger Lipscombe) Date: Fri, 15 Dec 2017 11:39:10 +0000 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: <87h8ssicvr.fsf@gmail.com> Message-ID: On 15 December 2017 at 10:55, Caragea Silviu wrote: > Seems parsing of lists is not compliant. There's no standard to be "compliant" with. Everyone pretty much agrees on key-value pairs where the keys are unique. Beyond that, who knows? I've seen ?a=1&a=2&a=3 and ?a[]=1&a[]=2&a[]=3, for instance. See, e.g., https://stackoverflow.com/q/24059773/8446. fwiw, I tend to build my URLs with hackney_url. I don't know what it does with repeated keys; I've never tried. From hans.r.nilsson@REDACTED Fri Dec 15 12:51:45 2017 From: hans.r.nilsson@REDACTED (Hans Nilsson R) Date: Fri, 15 Dec 2017 12:51:45 +0100 Subject: [erlang-questions] Patch package OTP 20.2.1 released Message-ID: <3dcfb0d4-e175-7156-4dc7-016615a6ec3c@ericsson.com> Patch Package: OTP 20.2.1 Git Tag: OTP-20.2.1 Date: 2017-12-15 Trouble Report Id: OTP-14827 Seq num: ERL-531 System: OTP Release: 20 Application: ssh-4.6.4 Predecessor: OTP 20.2 Check out the git tag OTP-20.2.1, and build a full OTP system including documentation. Apply one or more applications from this build as patches to your installation using the 'otp_patch_apply' tool. For information on install requirements, see descriptions for each application version below. --------------------------------------------------------------------- --- ssh-4.6.4 ------------------------------------------------------- --------------------------------------------------------------------- Note! The ssh-4.6.4 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependencies have to be satisfied: -- crypto-4.2 (first satisfied in OTP 20.2) -- public_key-1.5.2 (first satisfied in OTP 20.2) --- Fixed Bugs and Malfunctions --- OTP-14827 Application(s): ssh Related Id(s): ERL-531 Fix problem with OpenSSH 7.2 (and later) clients that has used sha1 instead of sha2 for rsa-sha-256/512 user's public keys. Full runtime dependencies of ssh-4.6.4: crypto-4.2, erts-6.0, kernel-3.0, public_key-1.5.2, stdlib-3.3 --------------------------------------------------------------------- --------------------------------------------------------------------- --------------------------------------------------------------------- -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 4101 bytes Desc: S/MIME Cryptographic Signature URL: From silviu.cpp@REDACTED Fri Dec 15 14:09:07 2017 From: silviu.cpp@REDACTED (Caragea Silviu) Date: Fri, 15 Dec 2017 15:09:07 +0200 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: <87h8ssicvr.fsf@gmail.com> Message-ID: Thx Roger, I'm using hackney_url but I did some small changes to be able to encode proplists with nested structures. As time as you also pointed out I didn't found any standard and also in my case I'm the one that encodes and also the one that decodes being an internal service. What I did is in case the value is a proplist or a list encoded it as json. I saw this approch in some other public services as well Silviu On Fri, Dec 15, 2017 at 1:39 PM, Roger Lipscombe wrote: > On 15 December 2017 at 10:55, Caragea Silviu wrote: > > Seems parsing of lists is not compliant. > > There's no standard to be "compliant" with. Everyone pretty much > agrees on key-value pairs where the keys are unique. Beyond that, who > knows? I've seen ?a=1&a=2&a=3 and ?a[]=1&a[]=2&a[]=3, for instance. > See, e.g., https://stackoverflow.com/q/24059773/8446. > > fwiw, I tend to build my URLs with hackney_url. I don't know what it > does with repeated keys; I've never tried. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Fri Dec 15 14:15:00 2017 From: roger@REDACTED (Roger Lipscombe) Date: Fri, 15 Dec 2017 13:15:00 +0000 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: <87h8ssicvr.fsf@gmail.com> Message-ID: If you control both ends, I wouldn't bother with query strings. I'd just post JSON. You can nest stuff as much as you want then. Be careful to change strings (lists of chars) to binaries, though. On 15 December 2017 at 13:09, Caragea Silviu wrote: > Thx Roger, > > I'm using hackney_url but I did some small changes to be able to encode > proplists with nested structures. As time as you also pointed out I didn't > found any standard and also in my case I'm the one that encodes and also the > one that decodes being an internal service. > > What I did is in case the value is a proplist or a list encoded it as json. > I saw this approch in some other public services as well > > Silviu > > On Fri, Dec 15, 2017 at 1:39 PM, Roger Lipscombe > wrote: >> >> On 15 December 2017 at 10:55, Caragea Silviu wrote: >> > Seems parsing of lists is not compliant. >> >> There's no standard to be "compliant" with. Everyone pretty much >> agrees on key-value pairs where the keys are unique. Beyond that, who >> knows? I've seen ?a=1&a=2&a=3 and ?a[]=1&a[]=2&a[]=3, for instance. >> See, e.g., https://stackoverflow.com/q/24059773/8446. >> >> fwiw, I tend to build my URLs with hackney_url. I don't know what it >> does with repeated keys; I've never tried. > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From essen@REDACTED Fri Dec 15 14:22:34 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Fri, 15 Dec 2017 14:22:34 +0100 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: <87h8ssicvr.fsf@gmail.com> Message-ID: <0c36e06b-2f02-e19b-4e92-0b6d8bb118d3@ninenines.eu> On 12/15/2017 12:39 PM, Roger Lipscombe wrote: > On 15 December 2017 at 10:55, Caragea Silviu wrote: >> Seems parsing of lists is not compliant. > > There's no standard to be "compliant" with. Everyone pretty much > agrees on key-value pairs where the keys are unique. Beyond that, who > knows? I've seen ?a=1&a=2&a=3 and ?a[]=1&a[]=2&a[]=3, for instance. > See, e.g., https://stackoverflow.com/q/24059773/8446. The keys are not unique actually. Browsers will actually send query strings with duplicate keys if there are duplicate names in forms. That's actually how PHP's name[]=value thing works, you get many name[] keys in the query string. Cowboy will happily return duplicate keys whether you use cowboy_req:parse_qs (which calls the equivalent function in cowlib) or cowboy_req:match_qs, in the latter case you get a map like #{name => [<<"a">>, <<"b">>, <<"c">>]}. It doesn't require the [] or any other indicator for this. (But if you want to name your key 'name[]', no problem either.) > fwiw, I tend to build my URLs with hackney_url. I don't know what it > does with repeated keys; I've never tried. -- Lo?c Hoguin https://ninenines.eu From roger@REDACTED Fri Dec 15 14:38:22 2017 From: roger@REDACTED (Roger Lipscombe) Date: Fri, 15 Dec 2017 13:38:22 +0000 Subject: [erlang-questions] url query string encode/decode In-Reply-To: <0c36e06b-2f02-e19b-4e92-0b6d8bb118d3@ninenines.eu> References: <87h8ssicvr.fsf@gmail.com> <0c36e06b-2f02-e19b-4e92-0b6d8bb118d3@ninenines.eu> Message-ID: On 15 December 2017 at 13:22, Lo?c Hoguin wrote: > The keys are not unique actually. Browsers will actually send query strings > with duplicate keys if there are duplicate names in forms. That's actually > how PHP's name[]=value thing works, you get many name[] keys in the query > string. Yeah; I know they don't have to be unique. My point was that there's no *standard* for how non-unique keys should be handled, so it's no real surprise when different implementations do different things with them. > Cowboy will happily return duplicate keys whether you use > cowboy_req:parse_qs (which calls the equivalent function in cowlib) or > cowboy_req:match_qs, in the latter case you get a map like #{name => > [<<"a">>, <<"b">>, <<"c">>]}. It doesn't require the [] or any other > indicator for this. (But if you want to name your key 'name[]', no problem > either.) This is good to know. Thanks. From jesper.louis.andersen@REDACTED Fri Dec 15 16:02:20 2017 From: jesper.louis.andersen@REDACTED (Jesper Louis Andersen) Date: Fri, 15 Dec 2017 15:02:20 +0000 Subject: [erlang-questions] escript: exception error: undefined function etap:plan/1 In-Reply-To: References: Message-ID: The function `etap:plan/1` doesn't exist. In this case the error report is a bit off, since it is more likely that the module `etap` doesn't exist. What is likely to be wrong is that the -pa execution you set doesn't include a path to a module named `etap` and this then makes the escript you are trying to run exit with an exception. Try searching for that module (etap.erl) and make sure it's compiled form (etap.beam) is part of the -pa path. On Fri, Dec 15, 2017 at 12:08 PM Meghali Dhoble wrote: > Hi, > > I am working one of the opensource project and trying to build it from > source. > Erlang is also being built for this as one of the dependency and while > running the integrated tests for it; I am getting this error. > > The version of Erlang being used. : Erlang/OTP 17 [erts-6.3] > > The detailed log is as below: > ERL_FLAGS="-pa > /root/meghali/couchbase_master/build/couchdb/src/../test/etap > /root/meghali/couchbase_master/build/couchdb/src/couch_set_view/test > /root/meghali/couchbase_master/build/couchdb/src/couchdb > /root/meghali/couchbase_master/build/couchdb/src/lhttpc > /root/meghali/couchbase_master/build/couchdb/src/CMakeFiles > /root/meghali/couchbase_master/build/couchdb/src/couch_set_view" > escript: exception error: undefined function etap:plan/1 > in function erl_eval:do_apply/6 (erl_eval.erl, line 657) > in call from escript:eval_exprs/5 (escript.erl, line 865) > in call from erl_eval:local_func/5 (erl_eval.erl, line 544) > in call from escript:interpret/4 (escript.erl, line 781) > in call from escript:start/1 (escript.erl, line 276) > in call from init:start_it/1 > in call from init:start_em/1 > > Any pointers to understand when should I expect this error or if I have > missed something. > > Thanks, > Meghali Dhoble > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From essen@REDACTED Fri Dec 15 16:25:11 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Fri, 15 Dec 2017 16:25:11 +0100 Subject: [erlang-questions] url query string encode/decode In-Reply-To: References: <87h8ssicvr.fsf@gmail.com> <0c36e06b-2f02-e19b-4e92-0b6d8bb118d3@ninenines.eu> Message-ID: <3f5a0f1c-8f9e-15c5-fc99-77be44dee9a9@ninenines.eu> On 12/15/2017 02:38 PM, Roger Lipscombe wrote: > On 15 December 2017 at 13:22, Lo?c Hoguin wrote: >> The keys are not unique actually. Browsers will actually send query strings >> with duplicate keys if there are duplicate names in forms. That's actually >> how PHP's name[]=value thing works, you get many name[] keys in the query >> string. > > Yeah; I know they don't have to be unique. My point was that there's > no *standard* for how non-unique keys should be handled, so it's no > real surprise when different implementations do different things with > them. Implementations do what they want ultimately but there *is* a standard as to how this format is parsed and serialized, and it is represented as a list of name-value tuples. https://url.spec.whatwg.org/#urlencoded-parsing What applications do after that is up to them of course. Cowboy unfortunately slightly differs from the standard in that keys without a value are represented as {Key, true} instead of {Key, <<>>} that I'll have to fix eventually. Maybe in Cowboy 3.0. -- Lo?c Hoguin https://ninenines.eu From fchschneider@REDACTED Sun Dec 17 12:24:08 2017 From: fchschneider@REDACTED (Frans Schneider) Date: Sun, 17 Dec 2017 12:24:08 +0100 Subject: [erlang-questions] set of sets module Message-ID: Dear list, I am looking for some more material on the sofs module besides the standard Erlang documentation. Google doesn't come up with much interesting stuff. Does anybody know of some teaching material? Also, I am wondering for what type of application the sofs module was developed for in the first place. Are their any public available applications using the sofs functionality? TIA Frans From n.oxyde@REDACTED Sun Dec 17 15:34:06 2017 From: n.oxyde@REDACTED (Anthony Ramine) Date: Sun, 17 Dec 2017 15:34:06 +0100 Subject: [erlang-questions] set of sets module In-Reply-To: References: Message-ID: <9EA3C02A-F6FB-4D91-9952-E55094A4F82A@gmail.com> > Le 17 d?c. 2017 ? 12:24, Frans Schneider a ?crit : > > Are their any public available applications using the sofs functionality? - The Erlang compiler; - my implementation of Ketama [1]. [1] https://github.com/nox/ketama From dgud@REDACTED Mon Dec 18 15:27:08 2017 From: dgud@REDACTED (Dan Gudmundsson) Date: Mon, 18 Dec 2017 14:27:08 +0000 Subject: [erlang-questions] Patch package OTP 19.3.6.5 released Message-ID: Patch Package: OTP 19.3.6.5 Git Tag: OTP-19.3.6.5 Date: 2017-12-18 Trouble Report Id: OTP-14763, OTP-14775, OTP-14776, OTP-14781, OTP-14829 Seq num: ERIERL-103, ERIERL-74, ERIERL-84 System: OTP Release: 19 Application: erts-8.3.5.4, mnesia-4.14.3.1, ssh-4.4.2.1 Predecessor: OTP 19.3.6.4 Check out the git tag OTP-19.3.6.5, and build a full OTP system including documentation. Apply one or more applications from this build as patches to your installation using the 'otp_patch_apply' tool. For information on install requirements, see descriptions for each application version below. --------------------------------------------------------------------- --- erts-8.3.5.4 ---------------------------------------------------- --------------------------------------------------------------------- Note! The erts-8.3.5.4 application can *not* be applied independently of other applications on an arbitrary OTP 19 installation. On a full OTP 19 installation, also the following runtime dependency has to be satisfied: -- sasl-3.0.1 (first satisfied in OTP 19.1) --- Fixed Bugs and Malfunctions --- OTP-14775 Application(s): erts Fixed a bug in file closure on Unix; close(2) was retried on EINTR which could cause a different (recently opened) file to be closed as well. OTP-14781 Application(s): erts Related Id(s): OTP-13047 A race-condition when tearing down a connection with active node monitors could cause the runtime system to crash. This bug was introduced in ERTS version 8.0 (OTP 19.0). Full runtime dependencies of erts-8.3.5.4: kernel-5.0, sasl-3.0.1, stdlib-3.0 --------------------------------------------------------------------- --- mnesia-4.14.3.1 ------------------------------------------------- --------------------------------------------------------------------- The mnesia-4.14.3.1 application can be applied independently of other applications on a full OTP 19 installation. --- Fixed Bugs and Malfunctions --- OTP-14776 Application(s): mnesia Related Id(s): ERIERL-103 Fix backup error handling, the real failure reason was not returned. OTP-14829 Application(s): mnesia Related Id(s): ERIERL-84 Removed a quadratic behavior in startup. This change implies that backend plugins (if used) must be set when the schema is created or via configuration parameters before mnesia is started. Full runtime dependencies of mnesia-4.14.3.1: erts-7.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- ssh-4.4.2.1 ----------------------------------------------------- --------------------------------------------------------------------- Note! The ssh-4.4.2.1 application can *not* be applied independently of other applications on an arbitrary OTP 19 installation. On a full OTP 19 installation, also the following runtime dependencies have to be satisfied: -- crypto-3.7.3 (first satisfied in OTP 19.3) -- public_key-1.4 (first satisfied in OTP 19.3) -- stdlib-3.3 (first satisfied in OTP 19.3) --- Fixed Bugs and Malfunctions --- OTP-14763 Application(s): ssh Related Id(s): ERIERL-74 Trailing white space was removed at end of the hello-string. This caused interoperability problems with some other ssh-implementations (e.g OpenSSH 7.3p1 on Solaris 11) Full runtime dependencies of ssh-4.4.2.1: crypto-3.7.3, erts-6.0, kernel-3.0, public_key-1.4, stdlib-3.3 --------------------------------------------------------------------- --------------------------------------------------------------------- --------------------------------------------------------------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Mon Dec 18 15:29:16 2017 From: roger@REDACTED (Roger Lipscombe) Date: Mon, 18 Dec 2017 14:29:16 +0000 Subject: [erlang-questions] Inspecting a process's binaries Message-ID: I can get a list of binaries for a process with process_info(Pid, binary), which returns {binary, [{Id, Size, NRefs},...]}. Given the Id (which looks like 140327404952984, for example), can I find out what's *in* that binary? Context: I've got a custom supervisor process; when I get a list of binaries, it has a number of ~1.5KB binaries associated with it, which is a bit of a surprise, because I can't see where they'd have come from (it's only invoked via gen_server:call, from another node, so I don't see how it'd be holding sub-binaries, for example). From carlsson.richard@REDACTED Mon Dec 18 15:33:38 2017 From: carlsson.richard@REDACTED (Richard Carlsson) Date: Mon, 18 Dec 2017 15:33:38 +0100 Subject: [erlang-questions] EEP 47: Syntax in try/catch to retrieve the stacktrace directly In-Reply-To: References: Message-ID: A discussion at work prompted me to think a bit more about this, so I thought I should share the following reasoning for posterity: First, as a general principle we don't want patterns to carry a surprising cost, especially in the case they don't match. For example, it's possible to match on "abc"++Rest, but not on Prefix++"abc" or Prefix++"abc"++Rest, since that would imply a linear search through an arbitrary-length string. The same goes for binary patterns: you can't have a field of unknown length, except when it's the whole remainder of the binary. For exceptions, the cost of building the symbolic form of the stack trace lies in 1) allocating and filling in list cells and tuples on the heap, and 2) traversing tables to map the program pointers on the actual stack to find the corresponding source file and line number. This is definitely non-negligible. When an exception happens, only the raw pointers from the topmost N stack frames are saved, which is pretty cheap, but if someone wants to look at this, they will need to get the symbolic form that get_stacktrace() returns (and which will in the future be available in the optional Trace variable of the exception pattern). If an exception happens but nobody looks at the stack trace information, only a single small binary is created and becomes garbage again. The problem is not when the pattern matches, and you catch the exception. In that case you were probably willing to take the performance hit anyway, if you were matching on stack trace info. The problem is when someone introduces a seemingly innocent try...catch...end that is rarely expected to actually match, in a control flow where exceptions do happen a lot as part of the general execution - perhaps using throw for nonlocal returns out of deep recursion. If you have code like this, being called a lot, perhaps in a tight loop: find(Key) -> try search(Key) catch throw:aborted -> [] end. that seems perfectly fine, right? Just a wrapper. Maybe you use it in a call to flatmap() and you want empty lists instead of exceptions when nothing is found. But now someone else tweaks the search() function (or you have made the search function a parameter, and someone passes a new fun) so that it does the following: search(Key) -> try ... % main body of search catch _Class:_Term:[{foobar,f,2,_} | _] -> [] end. This is also straightforward looking. Just a monkey-patch to fix a known error case returning an empty list instead. Expected to occur very rarely. But what happens now, is that every time the called code throws 'aborted' - which might be often - the inner try/catch will be expanding the exception to its symbolic form, so that you can check whether it comes from a particular module/function. Even if this never actually matches, you will take the penalty of traversing the tables and allocating data on the heap. When the check has been made and the clause didn't match, the exception will be re-thrown to the outer try/catch which handles it instead as expected. The only observed difference is suddenly increased cpu usage and garbage creation. We (famously) had a bug in our code some years back that made the system very unstable, garbage collecting a lot and being generally unresponsive. It was hard to diagnose, but it was just because of this anti-pattern, albeit implemented by calling get_stacktrace, ignoring the result and then rethrowing the exception explicitly. Making it even easier to accidentally cause this sort of problems by writing a simple little pattern in a catch-clause would be a worse thing than artificially restricting the expressiveness of catch-patterns. That's why the Trace pattern should only be allowed to be an unbound variable. /Richard 2017-11-27 15:31 GMT+01:00 Jesper Louis Andersen < jesper.louis.andersen@REDACTED>: > On Mon, Nov 27, 2017 at 3:22 PM Bj?rn Gustavsson wrote: > >> On Sat, Nov 25, 2017 at 3:17 PM, Jesper Louis Andersen >> wrote: >> [...] >> > >> > My major gripe with it is the fact that you cannot pattern match on the >> > stack trace. >> >> Yes, I don't like that inconsistency myself, but I >> think that the alternatives are worse. >> >> > Yes, I think so too. In a typed language, you would probably declare an > abstract type for the stack and not provide any kind of matching pattern > for it. This would force people to handle the stack by printing, and there > would be no matching on it at all. > > Mimicking this behavior in Erlang is probably the sane behavior in this > case. > > I also like Richard's point: matching on the stack will eventually get you > into trouble. > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Mon Dec 18 15:35:09 2017 From: roger@REDACTED (Roger Lipscombe) Date: Mon, 18 Dec 2017 14:35:09 +0000 Subject: [erlang-questions] Cross-referencing binaries Message-ID: If I get the list of binaries for a process, using process_info(Pid, binary), each returned binary has an Id. If I find the same Id in the list of binaries for another process, is it the same binary? Or, in other words, can I do something like the following... D = lists:foldl( fun(Pid, A) -> try {binary, Bins} = erlang:process_info(Pid, binary), lists:foldl( fun({Ref, Size, Count}, B) -> dict:update(Ref, fun({X, L}) -> {X + 1, [Pid | L]} end, {1, [Pid]}, B) end, A, Bins) catch _:_ -> A end end, dict:new(), erlang:processes()). ...to build a dictionary from binary Id to owner(s)? It appears to work; I'm just not sure it's correct. From fly@REDACTED Mon Dec 18 20:10:28 2017 From: fly@REDACTED (Fred Youhanaie) Date: Mon, 18 Dec 2017 19:10:28 +0000 Subject: [erlang-questions] filename extension for erlang terms files Message-ID: Hi Is there a generally agreed filename extension for files that contain erlang terms, which are read in via file:consult/1? The reason for asking is so that they are recognized and syntax-highlighted correctly by text editors such as vim and emacs. Thanks, Fred From Eric.desCourtis@REDACTED Mon Dec 18 20:14:28 2017 From: Eric.desCourtis@REDACTED (Eric des Courtis) Date: Mon, 18 Dec 2017 14:14:28 -0500 Subject: [erlang-questions] Process Mobility Message-ID: Are there alternatives to https://github.com/michalwski/proc_mobility ? I have a cluster will be constantly adding and removing VM instances based on demand. I need to aggregate all the processes on fewer machines when the load drops. What is the best way to do this? Does everyone just roll their own process mobility? Eric des Courtis -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Mon Dec 18 20:25:38 2017 From: roger@REDACTED (Roger Lipscombe) Date: Mon, 18 Dec 2017 19:25:38 +0000 Subject: [erlang-questions] filename extension for erlang terms files In-Reply-To: References: Message-ID: Stick a modeline at the top/bottom of the file; file:consult/1 appears to ignore Erlang comments. On 18 December 2017 at 19:10, Fred Youhanaie wrote: > Hi > > Is there a generally agreed filename extension for files that contain erlang > terms, which are read in via file:consult/1? > > The reason for asking is so that they are recognized and syntax-highlighted > correctly by text editors such as vim and emacs. > > Thanks, > Fred > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From roger@REDACTED Mon Dec 18 20:30:32 2017 From: roger@REDACTED (Roger Lipscombe) Date: Mon, 18 Dec 2017 19:30:32 +0000 Subject: [erlang-questions] Understanding etp-heapdump output in gdb Message-ID: I'm attempting to figure out what binaries a particular process is holding onto. I have a core dump; I have a (seemingly) working gdb installation. I've found the Process I care about: (gdb) set $p = (Process *)0x7f6be3d3f560 (gdb) etp-heapdump $p When I run etp-heapdump, I get a boatload of output. It starts with: % heapdump (22077): 0x7f6b93bb8028: | H: 5-tuple | A:0x0003aa4b | B:0x93bb8072 | A:0x0002abcb | C:0x93bb8090 | A:0x001a09cb | H: 2-tuple | <0.1805.000> 0x7f6b93bb8068: | B:0x93bb80a2 | header 3 | 0x93bb8078 | 0x93bb8080 | 0x93bb8088 | B:0x93bb80ba | C:0x93bb80d8 | header 2 0x7f6b93bb80a8: | 0x93bb80a8 | 0x93bb80b0 | header 3 | 0x93bb80c0 | 0x93bb80c8 | 0x93bb80d0 | B:0x93bb80ea | [] (NIL) 0x7f6b93bb80e8: | header 3 | 0x93bb80f0 | 0x93bb80f8 | 0x93bb8100 | H: 2-tuple | ok | <0.20777.000> | H: 3-tuple How do I interpret this output? From fly@REDACTED Mon Dec 18 21:14:19 2017 From: fly@REDACTED (Fred Youhanaie) Date: Mon, 18 Dec 2017 20:14:19 +0000 Subject: [erlang-questions] filename extension for erlang terms files In-Reply-To: References: Message-ID: Thanks, Roger. Now, why didn't I think of that ;-) Cheers, f. On 18/12/17 19:25, Roger Lipscombe wrote: > Stick a modeline at the top/bottom of the file; file:consult/1 appears > to ignore Erlang comments. > > On 18 December 2017 at 19:10, Fred Youhanaie wrote: >> Hi >> >> Is there a generally agreed filename extension for files that contain erlang >> terms, which are read in via file:consult/1? >> >> The reason for asking is so that they are recognized and syntax-highlighted >> correctly by text editors such as vim and emacs. >> >> Thanks, >> Fred >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From codewiget95@REDACTED Mon Dec 18 23:55:15 2017 From: codewiget95@REDACTED (asdf asdf) Date: Mon, 18 Dec 2017 17:55:15 -0500 Subject: [erlang-questions] Setting up a startup service Message-ID: <096c46bf-8308-4061-b276-d4e633be83fa@Spark> Hello all, I have built an?Erlang program and created a release using rebar3 release. To run this program,?I use the command: ./_build/default/rel/program/bin/program start What I would like to do now is?have this program start on startup whenever the box boots or whenever the VM crashes. I have to use a RHEL 7 box for this, so I am using systemd. I created a service below: [Unit] Description=program After=network.target [Service] Type=simple User=root ExecStart=/home/root/repos/program/_build/default/rel/program/bin/program start Restart=on-abort [Install] WantedBy=multi-user.target This doesn?t work however - I get the following output: Dec 18 17:43:59 localhost.localdomain systemd[1]: Started program. Dec 18 17:43:59 localhost.localdomain systemd[1]: Starting program? (It is odd that it says ?started program? followed by ?starting program??) Now here is the interesting part - if I switch out ?start? with ?console? , I get good output - I get the successful start message. But then a crash? : Dec 18 17:45:40 localhost.localdomain program[14167]: 17:45:40.429 [info] Application?program?started on node 'program@REDACTED' Dec 18 17:45:40 localhost.localdomain?program[14167]: Eshell V8.2.2 ?(abort with ^G) Dec 18 17:45:40 localhost.localdomain?program?14167]: (program@REDACTED)1> *** Terminating erlang ('program@REDACTED?) This crash is expected though, because I tried to start it in console but it was a background process. My point though is that it starts up, but for some unknown reason it is exiting. On top of that, all of the log files in _build/default/rel/program/log are empty, so I?m not getting any valuable info on why it isn?t starting. And to clarify, I have copy/pasted the ExecStart command from the file to the command line and it works when it is run from the command line, so this isn?t a path issue. Does anyone have any idea as to what I am doing wrong? Thank you in advance. -------------- next part -------------- An HTML attachment was scrubbed... URL: From fly@REDACTED Tue Dec 19 00:18:42 2017 From: fly@REDACTED (Fred Youhanaie) Date: Mon, 18 Dec 2017 23:18:42 +0000 Subject: [erlang-questions] Setting up a startup service In-Reply-To: <096c46bf-8308-4061-b276-d4e633be83fa@Spark> References: <096c46bf-8308-4061-b276-d4e633be83fa@Spark> Message-ID: <8c8248e0-a898-bb8d-c2ac-c2e1087ff86d@anydata.co.uk> Hi systemd doesn't work when programs (services) detach and run in the background. Try starting it with "foreground" instead of start or console. Cheers, Fred On 18/12/17 22:55, asdf asdf wrote: > Hello all, > > I have built an?Erlang program and created a release using rebar3 release. To run this program,?I use the command: > > *./_build/default/rel/program/bin/program start* > > What I would like to do now is?have this program start on startup whenever the box boots or whenever the VM crashes. I have to use a RHEL 7 box for this, so I am using systemd. I created a service below: > > *[Unit]* > *Description=program * > *After=network.target* > * > * > *[Service]* > *Type=simple * > *User=root* > *ExecStart=/home/root/repos/program/_build/default/rel/program/bin/program start * > *Restart=on-abort* > * > * > *[Install] > * > *WantedBy=multi-user.target * > > > This doesn?t work however - I get the following output: > > *Dec 18 17:43:59 localhost.localdomain systemd[1]: Started program. > * > *Dec 18 17:43:59 localhost.localdomain systemd[1]: Starting program? * > > (It is odd that it says ?started program? followed by ?starting program??) > > Now here is the interesting part - if I switch out ?start? with ?console? , I get good output - I get the successful start message. But then a crash? : > > *Dec 18 17:45:40 localhost.localdomain program[14167]: 17:45:40.429 [info] Application?program?started on node 'program@REDACTED'* > *Dec 18 17:45:40 localhost.localdomain?program[14167]: Eshell V8.2.2 ?(abort with ^G)* > *Dec 18 17:45:40 localhost.localdomain?program?14167]: (program@REDACTED)1> *** Terminating erlang ('program@REDACTED?)* > > This crash is expected though, because I tried to start it in console but it was a background process. My point though is that it starts up, but for some unknown reason it is exiting. On top of that, > all of the log files in _build/default/rel/program/log are empty, so I?m not getting any valuable info on why it isn?t starting. > > And to clarify, I have copy/pasted the ExecStart command from the file to the command line and it works when it is run from the command line, so this isn?t a path issue. > > Does anyone have any idea as to what I am doing wrong? > > Thank you in advance. > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From raugerfacebook@REDACTED Tue Dec 19 00:21:31 2017 From: raugerfacebook@REDACTED (Ryan Auger) Date: Mon, 18 Dec 2017 18:21:31 -0500 Subject: [erlang-questions] Setting up a startup service In-Reply-To: <8c8248e0-a898-bb8d-c2ac-c2e1087ff86d@anydata.co.uk> References: <096c46bf-8308-4061-b276-d4e633be83fa@Spark> <8c8248e0-a898-bb8d-c2ac-c2e1087ff86d@anydata.co.uk> Message-ID: <3cc93991-a907-47a5-a832-67419d6d014e@Spark> This was it. Thank you Fred. On Dec 18, 2017, 6:18 PM -0500, Fred Youhanaie , wrote: > Hi > > systemd doesn't work when programs (services) detach and run in the background. > > Try starting it with "foreground" instead of start or console. > > Cheers, > Fred > > > On 18/12/17 22:55, asdf asdf wrote: > > Hello all, > > > > I have built an?Erlang program and created a release using rebar3 release. To run this program,?I use the command: > > > > *./_build/default/rel/program/bin/program start* > > > > What I would like to do now is?have this program start on startup whenever the box boots or whenever the VM crashes. I have to use a RHEL 7 box for this, so I am using systemd. I created a service below: > > > > *[Unit]* > > *Description=program * > > *After=network.target* > > * > > * > > *[Service]* > > *Type=simple * > > *User=root* > > *ExecStart=/home/root/repos/program/_build/default/rel/program/bin/program start * > > *Restart=on-abort* > > * > > * > > *[Install] > > * > > *WantedBy=multi-user.target * > > > > > > This doesn?t work however - I get the following output: > > > > *Dec 18 17:43:59 localhost.localdomain systemd[1]: Started program. > > * > > *Dec 18 17:43:59 localhost.localdomain systemd[1]: Starting program? * > > > > (It is odd that it says ?started program? followed by ?starting program??) > > > > Now here is the interesting part - if I switch out ?start? with ?console? , I get good output - I get the successful start message. But then a crash? : > > > > *Dec 18 17:45:40 localhost.localdomain program[14167]: 17:45:40.429 [info] Application?program?started on node 'program@REDACTED'* > > *Dec 18 17:45:40 localhost.localdomain?program[14167]: Eshell V8.2.2 ?(abort with ^G)* > > *Dec 18 17:45:40 localhost.localdomain?program?14167]: (program@REDACTED)1> *** Terminating erlang ('program@REDACTED?)* > > > > This crash is expected though, because I tried to start it in console but it was a background process. My point though is that it starts up, but for some unknown reason it is exiting. On top of that, > > all of the log files in _build/default/rel/program/log are empty, so I?m not getting any valuable info on why it isn?t starting. > > > > And to clarify, I have copy/pasted the ExecStart command from the file to the command line and it works when it is run from the command line, so this isn?t a path issue. > > > > Does anyone have any idea as to what I am doing wrong? > > > > Thank you in advance. > > > > > > > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From dgud@REDACTED Tue Dec 19 10:49:27 2017 From: dgud@REDACTED (Dan Gudmundsson) Date: Tue, 19 Dec 2017 09:49:27 +0000 Subject: [erlang-questions] Patch package OTP 20.2.2 released Message-ID: Patch Package: OTP 20.2.2 Git Tag: OTP-20.2.2 Date: 2017-12-19 Trouble Report Id: OTP-14829, OTP-14841 Seq num: ERIERL-113, ERIERL-84 System: OTP Release: 20 Application: mnesia-4.15.3 Predecessor: OTP 20.2.1 Check out the git tag OTP-20.2.2, and build a full OTP system including documentation. Apply one or more applications from this build as patches to your installation using the 'otp_patch_apply' tool. For information on install requirements, see descriptions for each application version below. --------------------------------------------------------------------- --- mnesia-4.15.3 --------------------------------------------------- --------------------------------------------------------------------- The mnesia-4.15.3 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14829 Application(s): mnesia Related Id(s): ERIERL-84 Removed a quadratic behavior in startup. This change implies that backend plugins (if used) must be set when the schema is created or via configuration parameters before mnesia is started. OTP-14841 Application(s): mnesia Related Id(s): ERIERL-113 Bad timing could crash mnesia after a checkpoint was deactivated and reactivated with the same checkpoint name on different tables. Full runtime dependencies of mnesia-4.15.3: erts-9.0, kernel-5.3, stdlib-3.4 --------------------------------------------------------------------- --------------------------------------------------------------------- --------------------------------------------------------------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: From James@REDACTED Tue Dec 19 11:15:46 2017 From: James@REDACTED (James Brennan) Date: Tue, 19 Dec 2017 10:15:46 +0000 Subject: [erlang-questions] Job Opportunity Sweden Message-ID: <41525c8649b54a9882c298b0dc965cbe@Trilateral-IT.com> I have a Stockholm based opportunity for 4 Erlang Developers. Please email james@REDACTED for full details. James Brennan Trilateral IT Ltd Tel:+(44) 207 183 6333 U.S +(1) 917 979 2302 james@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From joagre@REDACTED Tue Dec 19 11:43:49 2017 From: joagre@REDACTED (=?utf-8?Q?Joacim_Greben=C3=B6?=) Date: Tue, 19 Dec 2017 11:43:49 +0100 Subject: [erlang-questions] Fun to compute. It should be. Message-ID: <585C1441-CF43-4B34-B9C5-F88F4EA25B16@gmail.com> Friends, It should be fun to compute and with that in mind I wrote a service that rewrites arbitrary sites according to your likings, i.e. a reverse http proxy with dynamic rewrite rules. Excerpt from http://www.scrupless.net/what.html: "The Scrupless rewriter is a text analysis tool which can be used to experiment with live sites. Rewriting can be an effective tool to reveal paradoxes in popular social trends and political movements, to play with ideas, and to uncover underlying prejudice and bias. You could, for example, swap "man" for "woman" to deepen your understanding of the underlying content." A few quick examples of what it can do: https://is.gd/v8m4Rb - The Flat Earth Society turns (a)round https://is.gd/HQRIsz - Haschodling i blomsterlandet.se https://is.gd/IxMRfo - Regeringen vill f?rbjuda abort https://is.gd/tvkGCB - Rojalistiska f?reningen blir odemokratisk https://is.gd/5BsQGM - (M) f?rvandlas till (SD) Create your own rewrite rules here: http://www.scrupless.net/ Most of the examples on http://www.scrupless.net/ are in swedish but you get the gist. If you come up with better examples please tell me. This was fun to write. Nothing fancy. The source code is on https://sourceforge.net/projects/scrupless/ Merry Christmas to ye all /Joakim From lukas@REDACTED Tue Dec 19 14:11:28 2017 From: lukas@REDACTED (Lukas Larsson) Date: Tue, 19 Dec 2017 14:11:28 +0100 Subject: [erlang-questions] Cross-referencing binaries In-Reply-To: References: Message-ID: Hello, On Mon, Dec 18, 2017 at 3:35 PM, Roger Lipscombe wrote: > If I get the list of binaries for a process, using process_info(Pid, > binary), each returned binary has an Id. If I find the same Id in the > list of binaries for another process, is it the same binary? > yes, it is the same binary. The ID is, in the current implementation, the pointer to the binary data. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From Catenacci@REDACTED Tue Dec 19 14:15:16 2017 From: Catenacci@REDACTED (Onorio Catenacci) Date: Tue, 19 Dec 2017 08:15:16 -0500 Subject: [erlang-questions] Patch Packages Message-ID: Hi all, Does anyone know for sure if these patch packages are automatically deployed to the Erlang.org download page? I mean the name of the exe on the page doesn't seem to change (it's still referring to 20.2) but the binary itself as judged by the SHA256 hash seems to have changed. This is why I'm asking if these patch versions are automatically deployed. Sorry--which I could point to a specific URL but I'm on my work network and for some goofy reason they block erlang.org so I can't get an exact URL. -- Onorio Catenacci http://onor.io http://www.google.com/+OnorioCatenacci -------------- next part -------------- An HTML attachment was scrubbed... URL: From lukas@REDACTED Tue Dec 19 14:17:19 2017 From: lukas@REDACTED (Lukas Larsson) Date: Tue, 19 Dec 2017 14:17:19 +0100 Subject: [erlang-questions] Inspecting a process's binaries In-Reply-To: References: Message-ID: Hello, On Mon, Dec 18, 2017 at 3:29 PM, Roger Lipscombe wrote: > I can get a list of binaries for a process with process_info(Pid, > binary), which returns {binary, [{Id, Size, NRefs},...]}. > > Given the Id (which looks like 140327404952984, for example), can I > find out what's *in* that binary? > It is not possible without looking under the hood in the VM. The ID is a an 'Binary *', so if you attach to the process using gdb and issue (gdb) p *(Binary*)(140327404952984) You should get some information about what the binary is. The same can of course be done from a core file if you have the ID. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From lukas@REDACTED Tue Dec 19 14:33:40 2017 From: lukas@REDACTED (Lukas Larsson) Date: Tue, 19 Dec 2017 14:33:40 +0100 Subject: [erlang-questions] Understanding etp-heapdump output in gdb In-Reply-To: References: Message-ID: Hello, On Mon, Dec 18, 2017 at 8:30 PM, Roger Lipscombe wrote: > I'm attempting to figure out what binaries a particular process is > holding onto. I have a core dump; I have a (seemingly) working gdb > installation. > If it is off-heap binaries that you are interested in I would use etp-offheapdump to get information from the process. (gdb) etp-offheapdump $p->off_heap.first [#Fun<0xa1e7c178,0xa20313a0,0x6,0>, #Fun<0xa1e7c2e0,0xa2031360,0x1,0>, #Fun<0xa1e7c268,0xa2031268,0x2,0>, #RefcBinary<0x5,0xa2031140,0xb53c0f60,0xb53c0f78,0>, #RefcBinary<0x3,0xa20310d0,0xb53c3468,0xb53c3480,0>, #Fun<0xb5b11900,0xa20310a0,0x2,0x3>, #Fun<0xb5b12350,0xa2031070,0x1,0>, #Fun<0xb5b11f18,0xa2030d08,0x1,0>, #RefcBinary<0x1,0xa2030c30,0xb53c1ac0,0xb53c1ad8,0>, #Fun<0xb5b11900,0xa2030cd8,0x2,0x3>, #Fun<0xb5b12350,0xa2030ca8,0x1,0>, #Fun<0xb5b11f18,0xa2048608,0x1,0>, #RefcBinary<0x1f,0xa20485a0,0xa1c405f0,0xa1c40608,0>, #Fun<0xb5b11900,0xa2048668,0x2,0x3>, #Fun<0xb5b12350,0xa2048638,0x1,0>, #Fun<0xb5b11f18,0,0x1,0>]. The second to last value of the #RefcBinary should be a char * to the binary data. > I've found the Process I care about: > > (gdb) set $p = (Process *)0x7f6be3d3f560 > (gdb) etp-heapdump $p > > When I run etp-heapdump, I get a boatload of output. > > It starts with: > > % heapdump (22077): > 0x7f6b93bb8028: | H: 5-tuple | A:0x0003aa4b | B:0x93bb8072 | > A:0x0002abcb | C:0x93bb8090 | A:0x001a09cb | H: 2-tuple | > <0.1805.000> > 0x7f6b93bb8068: | B:0x93bb80a2 | header 3 | 0x93bb8078 | > 0x93bb8080 | 0x93bb8088 | B:0x93bb80ba | C:0x93bb80d8 | header 2 > 0x7f6b93bb80a8: | 0x93bb80a8 | 0x93bb80b0 | header 3 | > 0x93bb80c0 | 0x93bb80c8 | 0x93bb80d0 | B:0x93bb80ea | [] (NIL) > 0x7f6b93bb80e8: | header 3 | 0x93bb80f0 | 0x93bb80f8 | > 0x93bb8100 | H: 2-tuple | ok | <0.20777.000> | H: > 3-tuple > > How do I interpret this output? > You have to have a good understanding of how the erlang term format works internally in order to understand what etp-heapdump prints. I believe that https://github.com/happi/theBeamBook has a section describing how it works. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From henrik.x.nord@REDACTED Tue Dec 19 14:39:34 2017 From: henrik.x.nord@REDACTED (Henrik Nord X) Date: Tue, 19 Dec 2017 13:39:34 +0000 Subject: [erlang-questions] Patch Packages In-Reply-To: References: Message-ID: <1513690774.5081.8.camel@ericsson.com> Hi! What exe are you talking about? We do not patch the windows installers, or upload new ones unless there are some major bug or patch. The only versions on the site should be the ones from the planned patch package OTP-20.2? /Henrik On tis, 2017-12-19 at 08:15 -0500, Onorio Catenacci wrote: > Hi all, > > Does anyone know for sure if these patch packages are automatically > deployed to the Erlang.org download page?? I mean the name of the exe > on the page doesn't seem to change (it's still referring to 20.2) but > the binary itself as judged by the SHA256 hash seems to have > changed.? This is why I'm asking if these patch versions are > automatically deployed. > > Sorry--which I could point to a specific URL but I'm on my work > network and for some goofy reason they block erlang.org so I can't > get an exact URL.? > > --? > Onorio Catenacci > ? > http://onor.io > http://www.google.com/+OnorioCatenacci > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From jesper.louis.andersen@REDACTED Tue Dec 19 14:52:22 2017 From: jesper.louis.andersen@REDACTED (Jesper Louis Andersen) Date: Tue, 19 Dec 2017 13:52:22 +0000 Subject: [erlang-questions] Setting up a startup service In-Reply-To: <3cc93991-a907-47a5-a832-67419d6d014e@Spark> References: <096c46bf-8308-4061-b276-d4e633be83fa@Spark> <8c8248e0-a898-bb8d-c2ac-c2e1087ff86d@anydata.co.uk> <3cc93991-a907-47a5-a832-67419d6d014e@Spark> Message-ID: Alternatively, you can try using the `forking` type in systemd and then set up things as it were a forking process. But maybe that won't pan out too well? It would be what I would try if possible. OTOH, it looks like most other services are going the `simple` route nowadays, so perhaps it is better to cater for that setup variant. On Tue, Dec 19, 2017 at 12:21 AM Ryan Auger wrote: > This was it. Thank you Fred. > > On Dec 18, 2017, 6:18 PM -0500, Fred Youhanaie , wrote: > > Hi > > systemd doesn't work when programs (services) detach and run in the > background. > > Try starting it with "foreground" instead of start or console. > > Cheers, > Fred > > > On 18/12/17 22:55, asdf asdf wrote: > > Hello all, > > I have built an Erlang program and created a release using rebar3 release. > To run this program, I use the command: > > *./_build/default/rel/program/bin/program start* > > What I would like to do now is have this program start on startup whenever > the box boots or whenever the VM crashes. I have to use a RHEL 7 box for > this, so I am using systemd. I created a service below: > > *[Unit]* > *Description=program * > *After=network.target* > * > * > *[Service]* > *Type=simple * > *User=root* > *ExecStart=/home/root/repos/program/_build/default/rel/program/bin/program > start * > *Restart=on-abort* > * > * > *[Install] > * > *WantedBy=multi-user.target * > > > This doesn?t work however - I get the following output: > > *Dec 18 17:43:59 localhost.localdomain systemd[1]: Started program. > * > *Dec 18 17:43:59 localhost.localdomain systemd[1]: Starting program? * > > (It is odd that it says ?started program? followed by ?starting program??) > > Now here is the interesting part - if I switch out ?start? with ?console? > , I get good output - I get the successful start message. But then a crash? > : > > *Dec 18 17:45:40 localhost.localdomain program[14167]: 17:45:40.429 [info] > Application program started on node 'program@REDACTED'* > *Dec 18 17:45:40 localhost.localdomain program[14167]: Eshell V8.2.2 > (abort with ^G)* > *Dec 18 17:45:40 localhost.localdomain program 14167]: ( > program@REDACTED)1> *** Terminating erlang ('program@REDACTED?)* > > This crash is expected though, because I tried to start it in console but > it was a background process. My point though is that it starts up, but for > some unknown reason it is exiting. On top of that, > all of the log files in _build/default/rel/program/log are empty, so I?m > not getting any valuable info on why it isn?t starting. > > And to clarify, I have copy/pasted the ExecStart command from the file to > the command line and it works when it is run from the command line, so this > isn?t a path issue. > > Does anyone have any idea as to what I am doing wrong? > > Thank you in advance. > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Catenacci@REDACTED Tue Dec 19 15:50:18 2017 From: Catenacci@REDACTED (Onorio Catenacci) Date: Tue, 19 Dec 2017 09:50:18 -0500 Subject: [erlang-questions] Patch Packages In-Reply-To: <1513690774.5081.8.camel@ericsson.com> References: <1513690774.5081.8.camel@ericsson.com> Message-ID: Hi Henrik et al., Specifically discussing http://www.erlang.org/download/otp_win32_20.2.exe (and http://www.erlang.org/download/otp_win64_20.2.exe) I would have been surprised if the exe were patched without changing the name but as I say for some reason the SHA256 hash that I generated a few days ago against 20.2 didn't match with the one that's currently there. May be another issue--they (Chocolatey NuGet) seem to be having some issues with their servers so maybe their download had some issue. I just wanted to rule out the otp_win32_20.2.exe and the otp_win64_20.2.exe being patched without me knowing it is all. Thanks for the help! On Tue, Dec 19, 2017 at 8:39 AM, Henrik Nord X wrote: > Hi! > > What exe are you talking about? > We do not patch the windows installers, or upload new ones unless there > are some major bug or patch. > > The only versions on the site should be the ones from the planned patch > package OTP-20.2 > > /Henrik > > On tis, 2017-12-19 at 08:15 -0500, Onorio Catenacci wrote: > > Hi all, > > > > Does anyone know for sure if these patch packages are automatically > > deployed to the Erlang.org download page? I mean the name of the exe > > on the page doesn't seem to change (it's still referring to 20.2) but > > the binary itself as judged by the SHA256 hash seems to have > > changed. This is why I'm asking if these patch versions are > > automatically deployed. > > > > Sorry--which I could point to a specific URL but I'm on my work > > network and for some goofy reason they block erlang.org so I can't > > get an exact URL. > > > > -- > > Onorio Catenacci > > > > http://onor.io > > http://www.google.com/+OnorioCatenacci > > > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions -- Onorio Catenacci http://onor.io http://www.google.com/+OnorioCatenacci -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Tue Dec 19 15:53:27 2017 From: roger@REDACTED (Roger Lipscombe) Date: Tue, 19 Dec 2017 14:53:27 +0000 Subject: [erlang-questions] Understanding etp-heapdump output in gdb In-Reply-To: References: Message-ID: Thanks. Are those values relative to something? I'm seeing: [#RefcBinary<0x10,0x17079e08,0x39700560,0x39700578,0>, #RefcBinary<0x10,0x17079d68,0x39448c70,0x39448c88,0>, ...etc. Those values look a little bit short for a 64-bit BEAM, or have I just got holes in my core dump? Can you *have* holes in a core dump on Linux? On 19 December 2017 at 13:33, Lukas Larsson wrote: > Hello, > > On Mon, Dec 18, 2017 at 8:30 PM, Roger Lipscombe > wrote: >> >> I'm attempting to figure out what binaries a particular process is >> holding onto. I have a core dump; I have a (seemingly) working gdb >> installation. > > > If it is off-heap binaries that you are interested in I would use > etp-offheapdump to get information from the process. > > (gdb) etp-offheapdump $p->off_heap.first > [#Fun<0xa1e7c178,0xa20313a0,0x6,0>, > #Fun<0xa1e7c2e0,0xa2031360,0x1,0>, > #Fun<0xa1e7c268,0xa2031268,0x2,0>, > #RefcBinary<0x5,0xa2031140,0xb53c0f60,0xb53c0f78,0>, > #RefcBinary<0x3,0xa20310d0,0xb53c3468,0xb53c3480,0>, > #Fun<0xb5b11900,0xa20310a0,0x2,0x3>, > #Fun<0xb5b12350,0xa2031070,0x1,0>, > #Fun<0xb5b11f18,0xa2030d08,0x1,0>, > #RefcBinary<0x1,0xa2030c30,0xb53c1ac0,0xb53c1ad8,0>, > #Fun<0xb5b11900,0xa2030cd8,0x2,0x3>, > #Fun<0xb5b12350,0xa2030ca8,0x1,0>, > #Fun<0xb5b11f18,0xa2048608,0x1,0>, > #RefcBinary<0x1f,0xa20485a0,0xa1c405f0,0xa1c40608,0>, > #Fun<0xb5b11900,0xa2048668,0x2,0x3>, > #Fun<0xb5b12350,0xa2048638,0x1,0>, > #Fun<0xb5b11f18,0,0x1,0>]. > > The second to last value of the #RefcBinary should be a char * to the binary > data. > >> >> I've found the Process I care about: >> >> (gdb) set $p = (Process *)0x7f6be3d3f560 >> (gdb) etp-heapdump $p >> >> When I run etp-heapdump, I get a boatload of output. >> >> It starts with: >> >> % heapdump (22077): >> 0x7f6b93bb8028: | H: 5-tuple | A:0x0003aa4b | B:0x93bb8072 | >> A:0x0002abcb | C:0x93bb8090 | A:0x001a09cb | H: 2-tuple | >> <0.1805.000> >> 0x7f6b93bb8068: | B:0x93bb80a2 | header 3 | 0x93bb8078 | >> 0x93bb8080 | 0x93bb8088 | B:0x93bb80ba | C:0x93bb80d8 | header 2 >> 0x7f6b93bb80a8: | 0x93bb80a8 | 0x93bb80b0 | header 3 | >> 0x93bb80c0 | 0x93bb80c8 | 0x93bb80d0 | B:0x93bb80ea | [] (NIL) >> 0x7f6b93bb80e8: | header 3 | 0x93bb80f0 | 0x93bb80f8 | >> 0x93bb8100 | H: 2-tuple | ok | <0.20777.000> | H: >> 3-tuple >> >> How do I interpret this output? > > > You have to have a good understanding of how the erlang term format works > internally in order to understand what etp-heapdump prints. I believe that > https://github.com/happi/theBeamBook has a section describing how it works. > > Lukas From essen@REDACTED Tue Dec 19 16:03:06 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Tue, 19 Dec 2017 16:03:06 +0100 Subject: [erlang-questions] NIF resources, environments and GC Message-ID: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> Hello, I've got the following situation. I have a function SDL_CreateWindow that returns an SDL_Window* from which I create a resource with a destructor which is called when the resource variable gets GC'd. So far so good. I also have various other functions which may return the same SDL_Window* as the one that was created earlier. In this case I want to return the same resource so that it is possible to match or compare the resources on the latest Erlang versions so that users can confirm that yes, it's the same window. This is useful to know for example to know which window currently has focus. I therefore need to keep the ERL_NIF_TERM around along with SDL_Window* since recreating the term would lead to different references and comparisons failing. I've therefore proceded to use enif_make_copy to copy it to a static variable and I do enif_make_copy again when I need to return it. It works. Almost. The only issue with my approach is that the destructor for the SDL_Window* resource no longer gets called. Apparently enif_make_copy is the culprit. As soon as I copy the resource term to my private env, the destructor stops being called. Is there any way I can keep this resource term while still benefitting from the destructor being called when the variable is discarded? Basically I would like the private copy to not be reference counted. Any way to do this? Thanks, -- Lo?c Hoguin https://ninenines.eu From daniel.goertzen@REDACTED Tue Dec 19 16:23:53 2017 From: daniel.goertzen@REDACTED (Daniel Goertzen) Date: Tue, 19 Dec 2017 15:23:53 +0000 Subject: [erlang-questions] NIF resources, environments and GC In-Reply-To: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> References: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> Message-ID: This is exactly the weak reference/weak pointer pattern. I don't see any quick shortcuts for you here. If you are using c++, your resources can represent shared_ptr and your stored static variable can be a weak_ptr. Rust has similar types. Unfortunately you would also need to write a NIF for comparing the underlying referred object. On Tue, Dec 19, 2017 at 9:03 AM Lo?c Hoguin wrote: > Hello, > > I've got the following situation. > > I have a function SDL_CreateWindow that returns an SDL_Window* from > which I create a resource with a destructor which is called when the > resource variable gets GC'd. So far so good. > > I also have various other functions which may return the same > SDL_Window* as the one that was created earlier. In this case I want to > return the same resource so that it is possible to match or compare the > resources on the latest Erlang versions so that users can confirm that > yes, it's the same window. This is useful to know for example to know > which window currently has focus. > > I therefore need to keep the ERL_NIF_TERM around along with SDL_Window* > since recreating the term would lead to different references and > comparisons failing. I've therefore proceded to use enif_make_copy to > copy it to a static variable and I do enif_make_copy again when I need > to return it. > > It works. > > Almost. > > The only issue with my approach is that the destructor for the > SDL_Window* resource no longer gets called. Apparently enif_make_copy is > the culprit. As soon as I copy the resource term to my private env, the > destructor stops being called. > > Is there any way I can keep this resource term while still benefitting > from the destructor being called when the variable is discarded? > Basically I would like the private copy to not be reference counted. Any > way to do this? > > Thanks, > > -- > Lo?c Hoguin > https://ninenines.eu > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From lukas@REDACTED Tue Dec 19 16:28:07 2017 From: lukas@REDACTED (Lukas Larsson) Date: Tue, 19 Dec 2017 16:28:07 +0100 Subject: [erlang-questions] Understanding etp-heapdump output in gdb In-Reply-To: References: Message-ID: On Tue, Dec 19, 2017 at 3:53 PM, Roger Lipscombe wrote: > Thanks. Are those values relative to something? I'm seeing: > > [#RefcBinary<0x10,0x17079e08,0x39700560,0x39700578,0>, > #RefcBinary<0x10,0x17079d68,0x39448c70,0x39448c88,0>, > ...etc. > > Those values look a little bit short for a 64-bit BEAM, or have I just > got holes in my core dump? Can you *have* holes in a core dump on > Linux? > They seem to be truncated on 64-bit. Open etp-commands, look for function called etp-boxed-immediate-1, and change any "%#x" to "%p" and it should print the entire pointer. PR's to make etp work better in 32/64 bits are welcome :) Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From sverker.eriksson@REDACTED Tue Dec 19 16:33:24 2017 From: sverker.eriksson@REDACTED (Sverker Eriksson) Date: Tue, 19 Dec 2017 15:33:24 +0000 Subject: [erlang-questions] NIF resources, environments and GC In-Reply-To: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> References: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> Message-ID: <1513697604.17335.11.camel@ericsson.com> Two resource terms will compare equal (in OTP-20) iff they yield the same pointer from enif_get_resource(). So, isn't the solution to instead maintain a pointer to your resource in the static variable. Call enif_make_resource(static_ptr) when you need to return a resource term. And then clear that static pointer in the destructor. /Sverker On tis, 2017-12-19 at 16:03 +0100, Lo?c Hoguin wrote: > Hello, > > I've got the following situation. > > I have a function SDL_CreateWindow that returns an SDL_Window* from? > which I create a resource with a destructor which is called when the? > resource variable gets GC'd. So far so good. > > I also have various other functions which may return the same? > SDL_Window* as the one that was created earlier. In this case I want > to? > return the same resource so that it is possible to match or compare > the? > resources on the latest Erlang versions so that users can confirm > that? > yes, it's the same window. This is useful to know for example to > know? > which window currently has focus. > > I therefore need to keep the ERL_NIF_TERM around along with > SDL_Window*? > since recreating the term would lead to different references and? > comparisons failing. I've therefore proceded to use enif_make_copy > to? > copy it to a static variable and I do enif_make_copy again when I > need? > to return it. > > It works. > > Almost. > > The only issue with my approach is that the destructor for the? > SDL_Window* resource no longer gets called. Apparently enif_make_copy > is? > the culprit. As soon as I copy the resource term to my private env, > the? > destructor stops being called. > > Is there any way I can keep this resource term while still > benefitting? > from the destructor being called when the variable is discarded?? > Basically I would like the private copy to not be reference counted. > Any? > way to do this? > > Thanks, > From essen@REDACTED Tue Dec 19 16:41:58 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Tue, 19 Dec 2017 16:41:58 +0100 Subject: [erlang-questions] NIF resources, environments and GC In-Reply-To: <1513697604.17335.11.camel@ericsson.com> References: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> <1513697604.17335.11.camel@ericsson.com> Message-ID: <8d7c2438-817f-98e9-6b03-936160d1b000@ninenines.eu> Thanks for the tip, I haven't tried that. I'll report back with the results. On 12/19/2017 04:33 PM, Sverker Eriksson wrote: > Two resource terms will compare equal (in OTP-20) iff they yield > the same pointer from enif_get_resource(). > > So, isn't the solution to instead maintain a pointer to your resource > in the static variable. Call enif_make_resource(static_ptr) when you > need to return a resource term. > > And then clear that static pointer in the destructor. > > /Sverker > > > On tis, 2017-12-19 at 16:03 +0100, Lo?c Hoguin wrote: >> Hello, >> >> I've got the following situation. >> >> I have a function SDL_CreateWindow that returns an SDL_Window* from >> which I create a resource with a destructor which is called when the >> resource variable gets GC'd. So far so good. >> >> I also have various other functions which may return the same >> SDL_Window* as the one that was created earlier. In this case I want >> to >> return the same resource so that it is possible to match or compare >> the >> resources on the latest Erlang versions so that users can confirm >> that >> yes, it's the same window. This is useful to know for example to >> know >> which window currently has focus. >> >> I therefore need to keep the ERL_NIF_TERM around along with >> SDL_Window* >> since recreating the term would lead to different references and >> comparisons failing. I've therefore proceded to use enif_make_copy >> to >> copy it to a static variable and I do enif_make_copy again when I >> need >> to return it. >> >> It works. >> >> Almost. >> >> The only issue with my approach is that the destructor for the >> SDL_Window* resource no longer gets called. Apparently enif_make_copy >> is >> the culprit. As soon as I copy the resource term to my private env, >> the >> destructor stops being called. >> >> Is there any way I can keep this resource term while still >> benefitting >> from the destructor being called when the variable is discarded? >> Basically I would like the private copy to not be reference counted. >> Any >> way to do this? >> >> Thanks, >> > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -- Lo?c Hoguin https://ninenines.eu From roger@REDACTED Tue Dec 19 17:14:26 2017 From: roger@REDACTED (Roger Lipscombe) Date: Tue, 19 Dec 2017 16:14:26 +0000 Subject: [erlang-questions] Understanding etp-heapdump output in gdb In-Reply-To: References: Message-ID: That fixed it. I also had to set $etp_max_depth to something ludicrous. I'll look into doing a PR against master. Thanks, Roger. On 19 December 2017 at 15:28, Lukas Larsson wrote: > > > On Tue, Dec 19, 2017 at 3:53 PM, Roger Lipscombe > wrote: >> >> Thanks. Are those values relative to something? I'm seeing: >> >> [#RefcBinary<0x10,0x17079e08,0x39700560,0x39700578,0>, >> #RefcBinary<0x10,0x17079d68,0x39448c70,0x39448c88,0>, >> ...etc. >> >> Those values look a little bit short for a 64-bit BEAM, or have I just >> got holes in my core dump? Can you *have* holes in a core dump on >> Linux? > > > They seem to be truncated on 64-bit. Open etp-commands, look for function > called etp-boxed-immediate-1, and change any "%#x" to "%p" and it should > print the entire pointer. > > PR's to make etp work better in 32/64 bits are welcome :) > > Lukas > From essen@REDACTED Wed Dec 20 00:21:45 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Wed, 20 Dec 2017 00:21:45 +0100 Subject: [erlang-questions] NIF resources, environments and GC In-Reply-To: <8d7c2438-817f-98e9-6b03-936160d1b000@ninenines.eu> References: <81a169a9-f949-3ffe-d151-3fa4452dd9d4@ninenines.eu> <1513697604.17335.11.camel@ericsson.com> <8d7c2438-817f-98e9-6b03-936160d1b000@ninenines.eu> Message-ID: It works! And it ended up much simpler than I initially went for. Worth noting that the destructor takes a while to be called if you are debugging using io:format. Thanks a bunch! On 12/19/2017 04:41 PM, Lo?c Hoguin wrote: > Thanks for the tip, I haven't tried that. I'll report back with the > results. > > On 12/19/2017 04:33 PM, Sverker Eriksson wrote: >> Two resource terms will compare equal (in OTP-20) iff they yield >> the same pointer from enif_get_resource(). >> >> So, isn't the solution to instead maintain a pointer to your resource >> in the static variable. Call enif_make_resource(static_ptr) when you >> need to return a resource term. >> >> And then clear that static pointer in the destructor. >> >> /Sverker >> >> >> On tis, 2017-12-19 at 16:03 +0100, Lo?c Hoguin wrote: >>> Hello, >>> >>> I've got the following situation. >>> >>> I have a function SDL_CreateWindow that returns an SDL_Window* from >>> which I create a resource with a destructor which is called when the >>> resource variable gets GC'd. So far so good. >>> >>> I also have various other functions which may return the same >>> SDL_Window* as the one that was created earlier. In this case I want >>> to >>> return the same resource so that it is possible to match or compare >>> the >>> resources on the latest Erlang versions so that users can confirm >>> that >>> yes, it's the same window. This is useful to know for example to >>> know >>> which window currently has focus. >>> >>> I therefore need to keep the ERL_NIF_TERM around along with >>> SDL_Window* >>> since recreating the term would lead to different references and >>> comparisons failing. I've therefore proceded to use enif_make_copy >>> to >>> copy it to a static variable and I do enif_make_copy again when I >>> need >>> to return it. >>> >>> It works. >>> >>> Almost. >>> >>> The only issue with my approach is that the destructor for the >>> SDL_Window* resource no longer gets called. Apparently enif_make_copy >>> is >>> the culprit. As soon as I copy the resource term to my private env, >>> the >>> destructor stops being called. >>> >>> Is there any way I can keep this resource term while still >>> benefitting >>> from the destructor being called when the variable is discarded? >>> Basically I would like the private copy to not be reference counted. >>> Any >>> way to do this? >>> >>> Thanks, >>> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> > -- Lo?c Hoguin https://ninenines.eu From roger@REDACTED Wed Dec 20 15:24:56 2017 From: roger@REDACTED (Roger Lipscombe) Date: Wed, 20 Dec 2017 14:24:56 +0000 Subject: [erlang-questions] Why am I seeing RefcBinary with length < 64? Message-ID: Everything I've read on the subject of garbage collecting Erlang binaries says that binaries > 64 octets are stored off-heap. If I dump (using gdb and etp-offheapdump -- patched for 64-bits) the off-heap binaries for a given process, I get something like the following: [#RefcBinary<0x10,0x7f6b17079e08,0x7f6b39700560,0x7f6b39700578,(nil)>, #RefcBinary<0x10,0x7f6b17079d68,0x7f6b39448c70,0x7f6b39448c88,(nil)>, #RefcBinary<0xc,0x7f6b17079fb8,0x7f6c11c8c548,0x7f6c11c8c565,(nil)>, All in all, there are about 19.5K of them for this particular process. But they're all 0xc, 0x10 or 0x18 bytes in length. Mathematically astute readers will note that all three of those numbers are less than 64. Why are these binaries being stored off-heap? Is it bad? How do I make it store them in the process heap? Background: the process in question is a custom supervisor; it stores its children in a list of records; it starts processes in response to a gen_server:call from another node; the binaries are identifiable as the various startup arguments passed when starting the processes. Background background: we're running out of memory (the node hits ~9GB resident), either because the beam is hoarding binaries, or because the binary heap is hugely fragmented. I'm trying to figure out which and solve the problem. From jan.chochol@REDACTED Wed Dec 20 15:32:49 2017 From: jan.chochol@REDACTED (Jan Chochol) Date: Wed, 20 Dec 2017 15:32:49 +0100 Subject: [erlang-questions] Why am I seeing RefcBinary with length < 64? In-Reply-To: References: Message-ID: Hi, It is possible that these binaries comes as part of larger binaries (also called sub binaries). Some information are available at http://erlang.org/doc/efficiency_guide/binaryhandling.html . Sub binaries only store reference to originating binary and length - it also mean, that originating binary can not be freed. You can use binary:copy/1 to convert sub binary to fresh new binary (witch will be stored on heap in case of small binaries). Regards, Jan On Wed, Dec 20, 2017 at 3:24 PM, Roger Lipscombe wrote: > Everything I've read on the subject of garbage collecting Erlang > binaries says that binaries > 64 octets are stored off-heap. > > If I dump (using gdb and etp-offheapdump -- patched for 64-bits) the > off-heap binaries for a given process, I get something like the > following: > > [#RefcBinary<0x10,0x7f6b17079e08,0x7f6b39700560,0x7f6b39700578,(nil)>, > #RefcBinary<0x10,0x7f6b17079d68,0x7f6b39448c70,0x7f6b39448c88,(nil)>, > #RefcBinary<0xc,0x7f6b17079fb8,0x7f6c11c8c548,0x7f6c11c8c565,(nil)>, > > All in all, there are about 19.5K of them for this particular process. > But they're all 0xc, 0x10 or 0x18 bytes in length. > > Mathematically astute readers will note that all three of those > numbers are less than 64. > > Why are these binaries being stored off-heap? Is it bad? How do I make > it store them in the process heap? > > Background: the process in question is a custom supervisor; it stores > its children in a list of records; it starts processes in response to > a gen_server:call from another node; the binaries are identifiable as > the various startup arguments passed when starting the processes. > > Background background: we're running out of memory (the node hits ~9GB > resident), either because the beam is hoarding binaries, or because > the binary heap is hugely fragmented. I'm trying to figure out which > and solve the problem. > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Wed Dec 20 15:52:31 2017 From: roger@REDACTED (Roger Lipscombe) Date: Wed, 20 Dec 2017 14:52:31 +0000 Subject: [erlang-questions] Why am I seeing RefcBinary with length < 64? In-Reply-To: References: Message-ID: On 20 December 2017 at 14:32, Jan Chochol wrote: > Hi, > > It is possible that these binaries comes as part of larger binaries (also > called sub binaries). Is there any way to figure this out in gdb? > Some information are available at > http://erlang.org/doc/efficiency_guide/binaryhandling.html . > Sub binaries only store reference to originating binary and length - it also > mean, that originating binary can not be freed. Would I be correct in assuming that, because these binaries come directly from a cross-node gen_server:call, there *is* no large binary for them to be sub-binaries of? Or are they sub-binaries of the cross-node message? > You can use binary:copy/1 to convert sub binary to fresh new binary (witch > will be stored on heap in case of small binaries). Yeah. I've seen that. Before I add these to arbitrary places all over my code, I'd rather figure out the root cause. Thanks, Roger. From roger@REDACTED Wed Dec 20 16:00:38 2017 From: roger@REDACTED (Roger Lipscombe) Date: Wed, 20 Dec 2017 15:00:38 +0000 Subject: [erlang-questions] binary:copy before sending message, or after receiving it? Message-ID: I've got a piece of code that's run from a long-lived, but not particularly memory-heavy process. It looks like this: JSON = jiffy:encode(SomeMap), gen_server:cast(Server, {append, JSON}). I suspect that this is causing a bunch of fragmentation of the binary heap. Should I be calling binary:copy(JSON) before I send the message, in this process? Or should I be calling binary:copy in the receiving gen_server? Or doesn't it matter, as long as one of them does it? From ptirrell@REDACTED Wed Dec 20 15:55:00 2017 From: ptirrell@REDACTED (Peter Tirrell) Date: Wed, 20 Dec 2017 09:55:00 -0500 Subject: [erlang-questions] Windows Patch Packages? Message-ID: Hello all, I saw an existing recent thread about general patch packages but didn't necessarily want to hijack that thread. I currently am using OTP 18.2.1 on Windows but became aware of security advisory CVE-2017-1000385 ( https://nvd.nist.gov/vuln/detail/CVE-2017-1000385#VulnChangeHistoryDiv) It looks like I can get OTP 18.3.4.7+ and have the advisory addressed, but I'm unclear on how to do so. The downloads page simply lists an 18.3 download and doesn't list the fixed OTP bug number in the readme. The earlier thread I saw seemed to imply that Windows builds on the downloads page aren't updated. So my question is - how do I apply the latest Windows patched builds? Are there patched Windows release builds available somewhere? If I download a version from the downloads page, will that be the latest available major point version, including any patches for that point version? Or if there's a patch package put out, do I need to either compile that version from source, or wait until there is another major point version released that comes *after* that patch package was created? For example, I'm looking for a fix for bug "OTP-14748". The only Windows build that appears to be dated since that was fixed is 20.2, yet the readme for that does not include a reference to 14748 either. Thanks for any info! -------------- next part -------------- An HTML attachment was scrubbed... URL: From lukas@REDACTED Wed Dec 20 16:48:38 2017 From: lukas@REDACTED (Lukas Larsson) Date: Wed, 20 Dec 2017 16:48:38 +0100 Subject: [erlang-questions] Why am I seeing RefcBinary with length < 64? In-Reply-To: References: Message-ID: On Wed, Dec 20, 2017 at 3:52 PM, Roger Lipscombe wrote: > On 20 December 2017 at 14:32, Jan Chochol > wrote: > > Hi, > > > > It is possible that these binaries comes as part of larger binaries (also > > called sub binaries). > > Is there any way to figure this out in gdb? > You have to check the size in the ProcBin vs the size of the Binary. The Binary is what is pointed to by the second to last pointer value in the dump. eg: (gdb) etp-offheapdump ((Process*)0x7fffb53852d8)->off_heap.first warning: Expression is not an assignment (and might have no effect) % Offheap dump: [#RefcBinary<0x3,0x7fffb1cc2460,0x7fffb1841aa8,0x7fffb1841ac0,(nil)>, #RefcBinary<0x1f,(nil),0x7fffb1841618,0x7fffb1841630,(nil)>]. (gdb) p *((Binary*)0x7fffb1841aa8) $1 = {intern = {flags = 0, refc = {counter = 1}}, orig_size = 3, orig_bytes = "1"} and yes, that size can be smaller than 64 bytes. These < 64 byte binaries are created by the runtime when it needs a binaries that a GC will not move for whatever reason. One such example would be unicode:characters_to_binary/2, which is the reason why the example above only has a 3 byte refc. I'm sure there are others as well. I'm not sure if I consider this a bug or not, but it's definitely not optimal behavior. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From icfp.publicity@REDACTED Thu Dec 21 08:19:18 2017 From: icfp.publicity@REDACTED (Lindsey Kuper) Date: Wed, 20 Dec 2017 23:19:18 -0800 Subject: [erlang-questions] Call for Papers: PACMPL issue ICFP 2018 Message-ID: <5a3b6076dbf66_2ce43fdc19055bec8154e@landin.local.mail> PACMPL issue ICFP 2018 Call for Papers accepted papers to be invited for presentation at The 23rd ACM SIGPLAN International Conference on Functional Programming St. Louis, Missouri, USA http://icfp18.sigplan.org/ ### Important dates Submissions due: 16 March 2018 (Friday) Anywhere on Earth https://icfp18.hotcrp.com Author response: 2 May (Wednesday) - 4 May (Friday) 14:00 UTC Notification: 18 May (Friday) Final copy due: 22 June (Friday) Conference: 24 September (Monday) - 26 September (Wednesday) ### About PACMPL Proceedings of the ACM on Programming Languages (PACMPL ) is a Gold Open Access journal publishing research on all aspects of programming languages, from design to implementation and from mathematical formalisms to empirical studies. Each issue of the journal is devoted to a particular subject area within programming languages and will be announced through publicized Calls for Papers, like this one. ### Scope PACMPL issue ICFP 2018 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, and from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects, concurrency, or parallelism. Topics of interest include (but are not limited to): * *Language Design*: concurrency, parallelism, and distribution; modules; components and composition; metaprogramming; type systems; interoperability; domain-specific languages; and relations to imperative, object-oriented, or logic programming. * *Implementation*: abstract machines; virtual machines; interpretation; compilation; compile-time and run-time optimization; garbage collection and memory management; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components, or low-level machine resources. * *Software-Development Techniques*: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling. * *Foundations*: formal semantics; lambda calculus; rewriting; type theory; monads; continuations; control; state; effects; program verification; dependent types. * *Analysis and Transformation*: control-flow; data-flow; abstract interpretation; partial evaluation; program calculation. * *Applications*: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed-systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; multimedia and 3D graphics programming; scripting; system administration; security. * *Education*: teaching introductory programming; parallel programming; mathematical proof; algebra. Submissions will be evaluated according to their relevance, correctness, significance, originality, and clarity. Each submission should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. PACMPL issue ICFP 2018 also welcomes submissions in two separate categories — Functional Pearls and Experience Reports — that must be marked as such at the time of submission and that need not report original research results. Detailed guidelines on both categories are given at the end of this call. Please contact the principal editor if you have questions or are concerned about the appropriateness of a topic. ### Preparation of submissions **Deadline**: The deadline for submissions is Friday, March 16, 2018, Anywhere on Earth (). This deadline will be strictly enforced. **Formatting**: Submissions must be in PDF format, printable in black and white on US Letter sized paper, and interpretable by common PDF tools. All submissions must adhere to the "ACM Small" template that is available (in both LaTeX and Word formats) from . For authors using LaTeX, a lighter-weight package, including only the essential files, is available from . There is a limit of 27 pages for a full paper or 14 pages for an Experience Report; in either case, the bibliography will not be counted against these limits. These page limits have been chosen to allow essentially the same amount of content with the new single-column format as was possible with the two-column format used in past ICFP conferences. Submissions that exceed the page limits or, for other reasons, do not meet the requirements for formatting, will be summarily rejected. See also PACMPL's Information and Guidelines for Authors at . **Submission**: Submissions will be accepted at Improved versions of a paper may be submitted at any point before the submission deadline using the same web interface. **Author Response Period**: Authors will have a 72-hour period, starting at 14:00 UTC on Wednesday, May 2, 2018, to read reviews and respond to them. **Supplementary Materials**: Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. The material should be uploaded at submission time, as a single pdf or a tarball, not via a URL. This supplementary material may or may not be anonymized; if not anonymized, it will only be revealed to reviewers after they have submitted their review of the paper and learned the identity of the author(s). **Authorship Policies**: All submissions are expected to comply with the ACM Policies for Authorship that are detailed at . **Republication Policies**: Each submission must adhere to SIGPLAN's republication policy, as explained on the web at . **Resubmitted Papers**: Authors who submit a revised version of a paper that has previously been rejected by another conference have the option to attach an annotated copy of the reviews of their previous submission(s), explaining how they have addressed these previous reviews in the present submission. If a reviewer identifies him/herself as a reviewer of this previous submission and wishes to see how his/her comments have been addressed, the principal editor will communicate to this reviewer the annotated copy of his/her previous review. Otherwise, no reviewer will read the annotated copies of the previous reviews. ### Review Process This section outlines the two-stage process with lightweight double-blind reviewing that will be used to select papers for PACMPL issue ICFP 2018. We anticipate that there will be a need to clarify and expand on this process, and we will maintain a list of frequently asked questions and answers on the conference website to address common concerns. **PACMPL issue ICFP 2018 will employ a two-stage review process.** The first stage in the review process will assess submitted papers using the criteria stated above and will allow for feedback and input on initial reviews through the author response period mentioned previously. At the review meeting, a set of papers will be conditionally accepted and all other papers will be rejected. Authors will be notified of these decisions on May 18, 2018. Authors of conditionally accepted papers will be provided with committee reviews (just as in previous conferences) along with a set of mandatory revisions. After five weeks (June 22, 2018), the authors will provide a second submission. The second and final reviewing phase assesses whether the mandatory revisions have been adequately addressed by the authors and thereby determines the final accept/reject status of the paper. The intent and expectation is that the mandatory revisions can be addressed within five weeks and hence that conditionally accepted papers will in general be accepted in the second phase. The second submission should clearly identify how the mandatory revisions were addressed. To that end, the second submission must be accompanied by a cover letter mapping each mandatory revision request to specific parts of the paper. The cover letter will facilitate a quick second review, allowing for confirmation of final acceptance within two weeks. Conversely, the absence of a cover letter will be grounds for the paper?s rejection. **PACMPL issue ICFP 2018 will employ a lightweight double-blind reviewing process.** To facilitate this, submitted papers must adhere to two rules: 1. **author names and institutions must be omitted**, and 2. **references to authors' own related work should be in the third person** (e.g., not "We build on our previous work ..." but rather "We build on the work of ..."). The purpose of this process is to help the reviewers come to an initial judgement about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing the paper more difficult (e.g., important background references should not be omitted or anonymized). In addition, authors should feel free to disseminate their ideas or draft versions of their paper as they normally would. For instance, authors may post drafts of their papers on the web or give talks on their research ideas. ### Information for Authors of Accepted Papers * As a condition of acceptance, final versions of all papers must adhere to the new ACM Small format. The page limits for final versions of papers will be increased to ensure that authors have space to respond to reviewer comments and mandatory revisions. * Authors of accepted submissions will be required to agree to one of the three ACM licensing options: copyright transfer to ACM; retaining copyright but granting ACM exclusive publication rights; or open access on payment of a fee. Further information about ACM author rights is available from . * At least one author of each accepted submissions will be expected to attend and present their paper at the conference. The schedule for presentations will be determined and shared with authors after the full program has been selected. Presentations will be videotaped and released online if the presenter consents. * We intend that the proceedings will be freely available for download from the ACM Digital Library in perpetuity via the OpenTOC mechanism. * ACM Author-Izer is a unique service that enables ACM authors to generate and post links on either their home page or institutional repository for visitors to download the definitive version of their articles from the ACM Digital Library at no charge. Downloads through Author-Izer links are captured in official ACM statistics, improving the accuracy of usage and impact measurements. Consistently linking to the definitive version of an ACM article should reduce user confusion over article versioning. After an article has been published and assigned to the appropriate ACM Author Profile pages, authors should visit to learn how to create links for free downloads from the ACM DL. * The official publication date is the date the proceedings are made available in the ACM Digital Library. This date may be up to *two weeks prior* to the first day of the conference. The official publication date affects the deadline for any patent filings related to published work. ### Artifact Evaluation Authors of papers that are conditionally accepted in the first phase of the review process will be encouraged (but not required) to submit supporting materials for Artifact Evaluation. These items will then be reviewed by a committee, separate from the program committee, whose task is to assess how the artifacts support the work described in the associated paper. Papers that go through the Artifact Evaluation process successfully will receive a seal of approval printed on the papers themselves. Authors of accepted papers will be encouraged to make the supporting materials publicly available upon publication of the proceedings, for example, by including them as "source materials" in the ACM Digital Library. An additional seal will mark papers whose artifacts are made available, as outlined in the ACM guidelines for artifact badging. Participation in Artifact Evaluation is voluntary and will not influence the final decision regarding paper acceptance. Further information about the motivations and expectations for Artifact Evaluation can be found at . ### Special categories of papers In addition to research papers, PACMPL issue ICFP solicits two kinds of papers that do not require original research contributions: Functional Pearls, which are full papers, and Experience Reports, which are limited to half the length of a full paper. Authors submitting such papers should consider the following guidelines. #### Functional Pearls A Functional Pearl is an elegant essay about something related to functional programming. Examples include, but are not limited to: * a new and thought-provoking way of looking at an old idea * an instructive example of program calculation or proof * a nifty presentation of an old or new data structure * an interesting application of functional programming techniques * a novel use or exposition of functional programming in the classroom While pearls often demonstrate an idea through the development of a short program, there is no requirement or expectation that they do so. Thus, they encompass the notions of theoretical and educational pearls. Functional Pearls are valued as highly and judged as rigorously as ordinary papers, but using somewhat different criteria. In particular, a pearl is not required to report original research, but, it should be concise, instructive, and entertaining. A pearl is likely to be rejected if its readers get bored, if the material gets too complicated, if too much specialized knowledge is needed, or if the writing is inelegant. The key to writing a good pearl is polishing. A submission that is intended to be treated as a pearl must be marked as such on the submission web page, and should contain the words "Functional Pearl" somewhere in its title or subtitle. These steps will alert reviewers to use the appropriate evaluation criteria. Pearls will be combined with ordinary papers, however, for the purpose of computing the conference's acceptance rate. #### Experience Reports The purpose of an Experience Report is to help create a body of published, refereed, citable evidence that functional programming really works — or to describe what obstacles prevent it from working. Possible topics for an Experience Report include, but are not limited to: * insights gained from real-world projects using functional programming * comparison of functional programming with conventional programming in the context of an industrial project or a university curriculum * project-management, business, or legal issues encountered when using functional programming in a real-world project * curricular issues encountered when using functional programming in education * real-world constraints that created special challenges for an implementation of a functional language or for functional programming in general An Experience Report is distinguished from a normal PACMPL issue ICFP paper by its title, by its length, and by the criteria used to evaluate it. * Both in the proceedings and in any citations, the title of each accepted Experience Report must begin with the words "Experience Report" followed by a colon. The acceptance rate for Experience Reports will be computed and reported separately from the rate for ordinary papers. * Experience Report submissions can be at most 12 pages long, excluding bibliography. * Each accepted Experience Report will be presented at the conference, but depending on the number of Experience Reports and regular papers accepted, authors of Experience reports may be asked to give shorter talks. * Because the purpose of Experience Reports is to enable our community to accumulate a body of evidence about the efficacy of functional programming, an acceptable Experience Report need not add to the body of knowledge of the functional-programming community by presenting novel results or conclusions. It is sufficient if the Report states a clear thesis and provides supporting evidence. The thesis must be relevant to ICFP, but it need not be novel. The program committee will accept or reject Experience Reports based on whether they judge the evidence to be convincing. Anecdotal evidence will be acceptable provided it is well argued and the author explains what efforts were made to gather as much evidence as possible. Typically, more convincing evidence is obtained from papers which show how functional programming was used than from papers which only say that functional programming was used. The most convincing evidence often includes comparisons of situations before and after the introduction or discontinuation of functional programming. Evidence drawn from a single person's experience may be sufficient, but more weight will be given to evidence drawn from the experience of groups of people. An Experience Report should be short and to the point: it should make a claim about how well functional programming worked on a particular project and why, and produce evidence to substantiate this claim. If functional programming worked in this case in the same ways it has worked for others, the paper need only summarize the results — the main part of the paper should discuss how well it worked and in what context. Most readers will not want to know all the details of the project and its implementation, but the paper should characterize the project and its context well enough so that readers can judge to what degree this experience is relevant to their own projects. The paper should take care to highlight any unusual aspects of the project. Specifics about the project are more valuable than generalities about functional programming; for example, it is more valuable to say that the team delivered its software a month ahead of schedule than it is to say that functional programming made the team more productive. If the paper not only describes experience but also presents new technical results, or if the experience refutes cherished beliefs of the functional-programming community, it may be better off submitted it as a full paper, which will be judged by the usual criteria of novelty, originality, and relevance. The principal editor will be happy to advise on any concerns about which category to submit to. ### ICFP Organizers General Chair: Robby Findler (Northwestern University, USA) Artifact Evaluation Co-Chairs: Simon Marlow (Facebook, UK) Ryan R. Newton (Indiana University, USA) Industrial Relations Chair: Alan Jeffrey (Mozilla Research, USA) Programming Contest Organiser: Matthew Fluet (Rochester Institute of Technology, USA) Publicity and Web Chair: Lindsey Kuper (Intel Labs, USA) Student Research Competition Chair: Ilya Sergey (University College London, UK) Video Co-Chairs: Jose Calderon (Galois, Inc., USA) Nicolas Wu (University of Bristol, UK) Workshops Co-Chair: David Christiansen (Indiana University, USA) Christophe Scholliers (Universiteit Gent, Belgium) ### PACMPL issue ICFP 2018 Principal Editor: Matthew Flatt (Univesity of Utah, USA) Review Committee: Sandrine Blazy (IRISA, University of Rennes 1, France) David Christiansen (Indiana University, USA) Martin Elsman (University of Copenhagen, Denmark) Marco Gaboardi (University at Buffalo, CUNY, USA) Sam Lindley (University of Edinburgh, UK) Heather Miller (Northweastern University, USA / EPFL, Switzerland) J. Garrett Morris (University of Kansas, USA) Henrik Nilsson (University of Nottingham, UK) Fran?ois Pottier (Inria, France) Alejandro Russo (Chalmers University of Technology, Sweden) Ilya Sergey (University College London, UK) Michael Sperber (Active Group GmbH, Germany) Wouter Swierstra (Utrecht University, UK) ?ric Tanter (University of Chile, Chile) Katsuhiro Ueno (Tohoku University, Japan) Niki Vazou (University of Maryland, USA) Jeremy Yallop (University of Cambridge, UK) External Review Committee: Michael D. Adams (University of Utah, USA) Amal Ahmed (Northeastern University, USA) Nada Amin (University of Cambridge, USA) Zena Ariola (University of Oregon) Lars Bergstrom (Mozilla Research) Lars Birkedal (Aarhus University, Denmark) Edwin Brady ( University of St. Andrews, UK) William Byrd (University of Alabama at Birmingham, USA) Giuseppe Castagna (CRNS / University of Paris Diderot, France) Sheng Chen (University of Louisiana at Lafayette, USA) Koen Claessen (Chalmers University ot Technology, Sweden) Ugo Dal Lago (University of Bologna, Italy / Inria, France) David Darais (University of Vermont, USA) Joshua Dunfield (Queen?s University, Canada) Richard Eisenberg (Bryn Mawr College, USA) Matthew Fluet (Rochester Institute of Technology, USA) Nate Foster (Cornell University, USA) Jurriaan Hage (Utrecht University, Netherlands) David Van Horn (University of Maryland, USA) Zhenjiang Hu (National Institute of Informatics, Japan) Suresh Jagannathan (Purdue University, USA) Simon Peyton Jones (Microsoft Research, UK) Naoki Kobayashi (University of Tokyo, Japan) Neelakantan Krishnaswami (University of Cambridge, UK) Kazutaka Matsuda (Tohoku University, Japan) Trevor McDonell (University of New South Wales, Australia) Hernan Melgratti (University of Buenos Aires, Argentina) Akimasa Morihata (University of Tokyo, Japan) Aleksandar Nanevski (IMDEA Software Institute, Spain) Kim Nguy?n (University of Paris-Sud, France) Cosmin Oancea (DIKU, University of Copenhagen, Denmark) Bruno C. d. S. Oliveira (University of Hong Kong, China) Tomas Petricek (University of Cambridge, UK) Benjamin Pierce (University of Pennsylvania, USA) Christine Rizkallah (University of Pennsylvania, USA) Tom Schrijvers (KU Leuven, Belgium) Manuel Serrano (Inria, France) Jeremy Siek (Indiana University, USA) Josef Svenningsson (Chalmers University of Technology, Sweden) Nicolas Tabareau (Inria, France) Dimitrios Vytiniotis (Microsoft Research, UK) Philip Wadler (University of Edinburgh, UK) Meng Wang (University of Kent, UK) From James@REDACTED Thu Dec 21 09:58:25 2017 From: James@REDACTED (James Brennan) Date: Thu, 21 Dec 2017 08:58:25 +0000 Subject: [erlang-questions] Erlang Developer Opportunities Stockholm Message-ID: <4c7c8acf0523433fbaac253be85c7a87@Trilateral-IT.com> I have 4 x Erlang Developer Opportunities in Stockholm Please email james@REDACTED for full details. Seasons Greetings to you all! James Brennan Trilateral IT Ltd Tel:+(44) 207 183 6333 U.S +(1) 917 979 2302 james@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From Catenacci@REDACTED Thu Dec 21 14:07:42 2017 From: Catenacci@REDACTED (Onorio Catenacci) Date: Thu, 21 Dec 2017 08:07:42 -0500 Subject: [erlang-questions] Windows Patch Packages? Message-ID: I would say that it's most likely that if you need those patch packages you'll need to pull source and build it on your own machine. Just a guess, of course. -- Onorio Catenacci http://onor.io http://www.google.com/+OnorioCatenacci -------------- next part -------------- An HTML attachment was scrubbed... URL: From max.lapshin@REDACTED Thu Dec 21 14:29:48 2017 From: max.lapshin@REDACTED (Max Lapshin) Date: Thu, 21 Dec 2017 16:29:48 +0300 Subject: [erlang-questions] Inspecting a process's binaries In-Reply-To: References: Message-ID: so a very dirty bad nif that will inspect arbitrary memory space will help here? -------------- next part -------------- An HTML attachment was scrubbed... URL: From jer@REDACTED Thu Dec 21 14:56:46 2017 From: jer@REDACTED (Jeroen Roovers) Date: Thu, 21 Dec 2017 14:56:46 +0100 Subject: [erlang-questions] Windows Patch Packages? In-Reply-To: References: Message-ID: Hi everyone, On 21 December 2017 at 14:07, Onorio Catenacci wrote: > I would say that it's most likely that if you need those patch packages I would think most people want or indeed need security patches. > you'll need to pull source and build it on your own machine. I know I probably should have created a new thread, but I build from source (for an embedded Linux system) and I have looked at the patch release news for a while now, and I simply don't see proper instructions on how to turn the patch release tags from https://github.com/erlang/otp/releases into something resembling the OTP releases from the main download site. It looks like https://github.com/erlang/otp/ is missing all these bundled modules. If there is a way to update these while building, then I would like to know how that works, and also how that would work when cross-compiling. Using buildroot https://buildroot.org/ means creating a host build (native to the build system) first and using it to create a target build (native to the target system). This complicates steps involved in what I can only assume means running a script (or compiles native code?) that downloads the missing modules. See also https://git.buildroot.net/buildroot/tree/package/erlang/erlang.mk What puzzles me is that if you're going to announce a security release, then why does the download page not mention that what you download from there might be vulnerable? And in the same vein, I can only guess that some very good reasons are stopping the OTP team from packaging patch releases for distribution? What constraints might those be? Kind regards, jer From arif@REDACTED Thu Dec 21 21:06:32 2017 From: arif@REDACTED (arif@REDACTED) Date: Thu, 21 Dec 2017 12:06:32 -0800 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: <000501d370ea$cde23ad0$69a6b070$@comcast.net> References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> <000501d370ea$cde23ad0$69a6b070$@comcast.net> Message-ID: Thanks Alan for your explanation. It makes sense. I sort of forgot about the initial difficulties. So I have put together a small description for you in case you still want to give it a try. https://arifishaq.files.wordpress.com/2017/12/wxerlang-getting-started.pdf Good luck! Arif On 2017-12-09 13:39, Alan Gingras wrote: > Arif, > > Perhaps my difficulty lies in the documentation for wxErlang and WxWidgets > combined with my experience with Windows.Forms, TCL/Tk and others. I have > been able to find excellent documentation and examples easily for pretty > much everything I have wanted or needed to do. Not diminishing WxWidgets, > but getting the layouts correct and working as desired has been faster and > easier for me in every other GUI package I've used. The others (for the > most part) seemed more intuitive to me than the windows/panels etc. of > wxWidgets. And I have worked through what little I can find on the > wxErlang, i.e. > http://www.idiom.com/~turner/wxtut/wxwidgets.html > http://wxerlang.dougedmunds.com/ > > In the end, I think better documentation - not written for someone who > already knows how to use either WxWidgets or wxErlang - would be a key > improvement. > > Regards, > Alan > > > -----Original Message----- > From: erlang-questions-bounces@REDACTED > [mailto:erlang-questions-bounces@REDACTED] On Behalf Of arif@REDACTED > Sent: Thursday, December 07, 2017 08:04 > To: erlang-questions@REDACTED > Subject: Re: [erlang-questions] GUI development with Erlang > > Hi, > I have been using wxErlang on some projects and I don't find it too hard. I > make the GUI in separate processes and communicate with the application > using regular erlang message passing. > Using the wx_object, it is practically a breeze. It is like programming a > gen_server. I even run the GUI processes supervised, to allow me to "let it > crash". > Also, you can use wxFormBuilder to do the layout and use the generated PHP > or LUA code to figure out what you need to do in wxErlang. I suppose you > could even write a parser to generate your erlang code from those. > So I am curious. What is that you find so hard about it? And what makes it > easier with C# or the like? > Thanks > Arif > > > Date: Wed, 6 Dec 2017 15:08:39 -0500 > From: "Alan Gingras" > To: "'Alex S.'" > Cc: 'Erlang' > Subject: Re: [erlang-questions] GUI development with Erlang > Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> > Content-Type: text/plain; charset="utf-8" > > Thanks Alex. I had thought of that but was trying to make this a pure > Erlang application. This is most likely the approach I will end up taking > unless I decide to pursue wxErlang, but that is probably a little unlikely. > > > From: Alex S. [mailto:alex0player@REDACTED] > Sent: Tuesday, December 05, 2017 03:08 > To: Alan Gingras > Cc: Erlang > Subject: Re: [erlang-questions] GUI development with Erlang > > For what it's worth, you can always implement your view and controller in > something like C#/F#, and your model in Erlang, and hook them up via TCP. > Alternatively, there was an Erlang-toF# compiler floating around I believe. > > > 2017-12-03 22:43 GMT+03:00 Alan Gingras >: > > Has anyone tried using Windows Forms (.net) with Erlang? This would be in a > similar fashion to way Python can use Windows Forms. On Linux I believe > this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s ?import? and > C#?s ?using? > features. If no one has anything, any hints on how a feature like this > might be implemented. > > Basically, I have been working on implementing genetic programming in Erlang > and would like to provide a GUI front end. The WxWidgets front end that > comes with Erlang is difficult at best. I?ve used several different GUI > kits on *nix and Windows platforms but WxWidgets seems the most difficult > for me. So I?m trying to see what else is available. I followed Joe > Armstrong?s quest earlier this year and didn?t see where he came up with > anything. > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From frank.muller.erl@REDACTED Fri Dec 22 00:10:13 2017 From: frank.muller.erl@REDACTED (Frank Muller) Date: Thu, 21 Dec 2017 23:10:13 +0000 Subject: [erlang-questions] Read-only binary: does it stay in the same memory location? Message-ID: Hi guys Suppose I?ve a big binary (35MB) in the state of my gen_server process X. This binary is never shared with any other process, it?s never updated, and stays there for lifetime of process X. Question: internally, may the VM moves this binary around to different memory locations if needed? Or not because this binary is never shared/updated ? /Frank -------------- next part -------------- An HTML attachment was scrubbed... URL: From dmytro.lytovchenko@REDACTED Fri Dec 22 00:12:57 2017 From: dmytro.lytovchenko@REDACTED (Dmytro Lytovchenko) Date: Fri, 22 Dec 2017 00:12:57 +0100 Subject: [erlang-questions] Read-only binary: does it stay in the same memory location? In-Reply-To: References: Message-ID: No, the binary will not be moved unless there is some scan algorithm implemented in GC to visit all process heaps, all registers and all stacks and possibly all ETS tables and update all pointers to a moved binary. Which i really doubt it is happening. So no, it will never be moved until garbage collected. 2017-12-22 0:10 GMT+01:00 Frank Muller : > Hi guys > > Suppose I?ve a big binary (35MB) in the state of my gen_server process X. > > This binary is never shared with any other process, it?s never updated, > and stays there for lifetime of process X. > > Question: internally, may the VM moves this binary around to different > memory locations if needed? Or not because this binary is never > shared/updated ? > > /Frank > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sdl.web@REDACTED Fri Dec 22 03:18:33 2017 From: sdl.web@REDACTED (Leo Liu) Date: Fri, 22 Dec 2017 10:18:33 +0800 Subject: [erlang-questions] GUI development with Erlang References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> <000501d370ea$cde23ad0$69a6b070$@comcast.net> Message-ID: On 2017-12-21 12:06 -0800, arif@REDACTED wrote: > Thanks Alan for your explanation. It makes sense. I sort of forgot about > the initial difficulties. So I have put together a small description for > you in case you still want to give it a try. > https://arifishaq.files.wordpress.com/2017/12/wxerlang-getting-started.pdf > Good luck! > Arif ?????????? This is amazing. It will be even more amazing to be part of the wx documentation in OTP. Thank you. Leo From lloyd@REDACTED Fri Dec 22 07:03:02 2017 From: lloyd@REDACTED (Lloyd R. Prentice) Date: Fri, 22 Dec 2017 01:03:02 -0500 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development Message-ID: Hello, This is a think piece that may run longer than prudent for this forum. But if not here, then where? It is motivated by the recent thread re: GUI development and various other threads re: Erlang documentation. It asks serious questions that may or may not be worthy of reflection and discussion across the Erlang community. Here's a little about me, not to toot my horn, but to clarify where I'm coming from. I've been striving to become reasonably proficient in Erlang for nearly four years now. I come with experience in software development, but in no way consider myself a professional programmer. My undergraduate education is in English language/liberal arts with a focus on creative writing; communication and national development was my focus in grad school. I was for seven years on the full-time faculty at Boston University's School for Public Communication. I was founding editor/publisher of Classroom Computer News, one of the first magazines focused on personal computers in the K-12 classroom. My company. Prentice Associates Incorporated developed more than 100 shrink-wrapped educational/consumer software products for leading U.S. publishers. My company also developed a major web application for marketing and managing world-class IT conferences Among other things, I write fiction; have three novels in print. I could go on, but you get the picture. I come to Erlang with a vision of a web community devoted to helping indie authors/publishers write and market better books. I was attracted by the reliability/scalability promise of Erlang. But it's been a hard slog learning Erlang and bringing my vision to fruition, taking far longer than I would have hoped, leavened only by the generous help from many members of this community. At this point, my understanding is that Erlang is a terrific language for distributed back-end systems and, to some extent, scalable web applications. But my sense is that the Erlang community is smaller than the merits of the language deserves, has an aging community and, rather than organic growth, seems to be fragmenting into a cluster of BEAM languages that don't, from what I've seen, bring much vitality back to Erlang OTP. The question I've asked myself over recent months is, "Why doesn't Erlang have more libraries supporting human communication with the same effectiveness with which it supports machine-to-machine communication?" The recent thread GUI development thread is Exhibit Number One. The various stalemated Erlang-questions threads on Erlang documentation is Exhibit Number Two. Lo?c Hoguin has done some nice work on documentation tools. I do wish they were more widely used and, themselves, better documented. This makes me wonder why we don't eat our own dog food, that is, develop and adopt standardized documentation tools written in Erlang and fluent across all media? Wings3D is, from what I've read, an effective 3D CAD system. But I don't hear much about it or see how it's libraries or components are of value to the Erlang community. Perhaps there are hidden jewels in the Wings3D code that could support GUI development. Joe Armstrong has been experimenting with music production. I love to see more documentation of his work. Can his work be extended to broader audio applications? A few folks have been working with video streaming. Wouldn't it be great to see tutorials and well-documented open source libraries and tools. Erlang Nitrogen goes a long way toward easing the pains of web development. But it could go much further with broader support. These days, poor Jesse Gumm is just about it. I'm not sure what's going on with Chicago Boss. That seems to be on Jesse's shoulders as well. The content management framework Zotonic is terrific in every dimension. But you have to move out of Erlang and to hop across several syntactic boundaries to use it. Mark Worrell has been talking for some time about "Elastic Zotonic," e.g. distributed Zotonic. Is he thinking Riak? I don't know, but wouldn't that be cool. I've been pulling my hair out over the past year trying to bend erlguten, the not-well-documented six-year-old library for generating PDF documents, to my needs. It's a gem in the rough that could provide the basis for a powerful suite of print and digital media production tools. Just today I learned that erlguten has been maintained and in production at Klarna and that within the past year Richard Carlsson has released a MIT-licensed "canonical" version on GitHub. Yippee! https://github.com/richcarl/erlguten Richard's road map is dead congruent with what I've been trying to accomplish in support of Writersglen, the project that has absorbed my nearly every waking thought over the past half decade. Many of the things that I want to do in Writersglen could be accomplished in other languages and with tools and applications written in those languages. But I want to work in Erlang. I don't see any technical obstacles to building better human communication libraries and tools in Erlang. Selfishly, I don't have enough years ahead to learn other languages. I want to build my web community. I want to build it in Erlang. And I wish I'd been able to launch it two years ago. But beyond my own interests, my hypothesis is this: With more well-documented and polished open source libraries and applications focused on human communication, Erlang would attract a wider, more diverse, population of programmers and developers. This, in turn, would result in a more vibrant community and wider adoption of Erlang. Am I wrong? If not, what can we do to make it happen? Perhaps the problem is that we don't have an appropriate venue or forum for sharing ideas. All the best and happy holidays, Lloyd Sent from my iPad -------------- next part -------------- An HTML attachment was scrubbed... URL: From erlang@REDACTED Fri Dec 22 13:33:30 2017 From: erlang@REDACTED (Joe Armstrong) Date: Fri, 22 Dec 2017 13:33:30 +0100 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: References: Message-ID: I agree! (with what you ask?) I could write a lot about this ... The model of documentation I would like to see is: - One author many eyes Note this is not the wiki model - I like articles that are opinionated and represent a clear point of view - I may or may not agree with that point of view, but I like there to be a clear point of view - books are written by individual authors not committees and I like this. Many eyes is great for fixing bugs and fact checking - so it should be easy to comment on the document, but only the author can make the changes. - Beautiful output The result should be pleasing to the eye and in multiple formats (epub, html and PDF) This is *impossible* (I think) with markdown - markdown solves the wrong problem. Markdown solves the problem "make the input simple" it does not solve the problem "make the output beautiful" LaTeX solves the problem "make the output beautiful" - but the input is a mess. XSL + Apache FOP makes the input parsable but beautiful output is *challenging* - Easy to organise the input OK - the output should be beautiful - the input might be a mess (if In LaTeX) - but moving chapter headings around etc and cross indexing etc should be easy. I have no good solution to this. My current attempt at this is to use emacs org mode for organisation. Then have embedded XML, and inside the XML and special tag ... for embedded markdown (actually not the real markdown, but my own variant) - Low barrier for entry to comments If a reader is reading the text and sees a spelling error, correcting it should be one mouse click away. The Erlang documentation requires you to git clone everything fix the source and send a pull request. This is crazy and will scare off many users. The best system I have ever seen for this is in the real-world haskell site Go check out http://book.realworldhaskell.org/read/ - pretend you have seen a spelling mistake and see how easy it is to fix it. - Parseable document tree I'm a great fan of having well-structured input that is parseable with a strict grammar. This is so we can build complex documents. This seems to rule out markdown and LaTeX. My only solution to this XML - but *not* docbook (which is far too complex) - Extensible I want plugins to generate diagrams, color code etc. Combining these different requirements (beautiful output, etc.) is very difficult and I have seen no free system that can do all these things. There are great tool chains available - for example when I wrote my Erlang book the pragmatic press provided a tool chain. The input was XML (Yes XML) - I have absolutely no problems with this, most of my time was spent in thinking up good examples and wording of paragraphs not typing in tags. The stages involved were - authoring - editing (this was chapter by chapter with an editor providing feedback) - beta release (publish a PDF - this is the many eyes bit) - final chapters and more editing - proof reading - final edit - indexing - layout The author/editor part is interesting - this is not *many eyes* - each book has an editor who helps the author a lot (actually teaches them to write decent English) Any automated system should have provision to automate the feedback cycles author/editor and author/readers. One more thing I forgot - who is your audience and what do they know. Syncing with your audience is essential - If your book is 20 chapters you need to write say 5 chapters, then try them out on your target audience to get the level right and adjust the level *before* you write the next 15 chapters. This is also true for a 10 page document. I think the problem we have to solve here is one of making a documentation *system* and not producing individual papers. Short articles with ugly output is easy in markdown - but an entire system with thousands of pages of text needs a lot of complex organisation. I'd actually love to know how a newspaper solves this - a decent newspaper turns out tens of thousands of words per day - news articles are written, proof read and edited in hours - commissioned articles are integrated with the news and there must be hundreds to thousands of contributing sources. The software behind these systems is not open source and I haven't a clue what it costs or who produces it - is it in house or purchased? I guess things of the scale of a magazine are done with adobe's indesign. So we a spectrum of documents. - simple documents (markdown) .... - magazines (in-design) - books (proprietary) ... - newspaper (proprietary) Where do we want to be positioned here? My guess is something 'book like' is better than what we have today - but not commercial book quality. Cheers /Joe On Fri, Dec 22, 2017 at 7:03 AM, Lloyd R. Prentice wrote: > Hello, > > This is a think piece that may run longer than prudent for this forum. But > if not here, then where? It is motivated by the recent thread re: GUI > development and various other threads re: Erlang documentation. It asks > serious questions that may or may not be worthy of reflection and discussion > across the Erlang community. > > Here's a little about me, not to toot my horn, but to clarify where I'm > coming from. > > I've been striving to become reasonably proficient in Erlang for nearly four > years now. I come with experience in software development, but in no way > consider myself a professional programmer. My undergraduate education is in > English language/liberal arts with a focus on creative writing; > communication and national development was my focus in grad school. I was > for seven years on the full-time faculty at Boston University's School for > Public Communication. I was founding editor/publisher of Classroom Computer > News, one of the first magazines focused on personal computers in the K-12 > classroom. My company. Prentice Associates Incorporated developed more than > 100 shrink-wrapped educational/consumer software products for leading U.S. > publishers. My company also developed a major web application for marketing > and managing world-class IT conferences Among other things, I write fiction; > have three novels in print. I could go on, but you get the picture. > > I come to Erlang with a vision of a web community devoted to helping indie > authors/publishers write and market better books. I was attracted by the > reliability/scalability promise of Erlang. But it's been a hard slog > learning Erlang and bringing my vision to fruition, taking far longer than I > would have hoped, leavened only by the generous help from many members of > this community. > > At this point, my understanding is that Erlang is a terrific language for > distributed back-end systems and, to some extent, scalable web applications. > But my sense is that the Erlang community is smaller than the merits of the > language deserves, has an aging community and, rather than organic growth, > seems to be fragmenting into a cluster of BEAM languages that don't, from > what I've seen, bring much vitality back to Erlang OTP. > > The question I've asked myself over recent months is, "Why doesn't Erlang > have more libraries supporting human communication with the same > effectiveness with which it supports machine-to-machine communication?" > > The recent thread GUI development thread is Exhibit Number One. > > The various stalemated Erlang-questions threads on Erlang documentation is > Exhibit Number Two. > > Lo?c Hoguin has done some nice work on documentation tools. I do wish they > were more widely used and, themselves, better documented. > > This makes me wonder why we don't eat our own dog food, that is, develop and > adopt standardized documentation tools written in Erlang and fluent across > all media? > > Wings3D is, from what I've read, an effective 3D CAD system. But I don't > hear much about it or see how it's libraries or components are of value to > the Erlang community. Perhaps there are hidden jewels in the Wings3D code > that could support GUI development. > > Joe Armstrong has been experimenting with music production. I love to see > more documentation of his work. Can his work be extended to broader audio > applications? > > A few folks have been working with video streaming. Wouldn't it be great to > see tutorials and well-documented open source libraries and tools. > > Erlang Nitrogen goes a long way toward easing the pains of web development. > But it could go much further with broader support. These days, poor Jesse > Gumm is just about it. > > I'm not sure what's going on with Chicago Boss. That seems to be on Jesse's > shoulders as well. > > The content management framework Zotonic is terrific in every dimension. But > you have to move out of Erlang and to hop across several syntactic > boundaries to use it. Mark Worrell has been talking for some time about > "Elastic Zotonic," e.g. distributed Zotonic. Is he thinking Riak? I don't > know, but wouldn't that be cool. > > I've been pulling my hair out over the past year trying to bend erlguten, > the not-well-documented six-year-old library for generating PDF documents, > to my needs. It's a gem in the rough that could provide the basis for a > powerful suite of print and digital media production tools. > > Just today I learned that erlguten has been maintained and in production at > Klarna and that within the past year Richard Carlsson has released a > MIT-licensed "canonical" version on GitHub. Yippee! > > https://github.com/richcarl/erlguten > > Richard's road map is dead congruent with what I've been trying to > accomplish in support of Writersglen, the project that has absorbed my > nearly every waking thought over the past half decade. > > Many of the things that I want to do in Writersglen could be accomplished in > other languages and with tools and applications written in those languages. > But I want to work in Erlang. I don't see any technical obstacles to > building better human communication libraries and tools in Erlang. > Selfishly, I don't have enough years ahead to learn other languages. I want > to build my web community. I want to build it in Erlang. And I wish I'd been > able to launch it two years ago. > > But beyond my own interests, my hypothesis is this: With more > well-documented and polished open source libraries and applications focused > on human communication, Erlang would attract a wider, more diverse, > population of programmers and developers. This, in turn, would result in a > more vibrant community and wider adoption of Erlang. > > Am I wrong? > > If not, what can we do to make it happen? > > Perhaps the problem is that we don't have an appropriate venue or forum for > sharing ideas. > > All the best and happy holidays, > > Lloyd > > Sent from my iPad > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From lukas@REDACTED Fri Dec 22 14:36:30 2017 From: lukas@REDACTED (Lukas Larsson) Date: Fri, 22 Dec 2017 14:36:30 +0100 Subject: [erlang-questions] Inspecting a process's binaries In-Reply-To: References: Message-ID: On Thu, Dec 21, 2017 at 2:29 PM, Max Lapshin wrote: > so a very dirty bad nif that will inspect arbitrary memory space will help > here? > Yes indeed a nif could do that. It would be possible to change process_info(pid, binary) call to return the payload of the binary that is referenced. However that makes it very easy to by mistake keep all the binaries live forever because they are referenced in the shell history :/ Eshell V9.2 (abort with ^G) 1> erlang:process_info(whereis(binary_problem), binary). [ list of permanent binary problems .... ] Though with the correct documentation NOTE WARNING DANGER, I can see it being a useful debugging tool. Lukas -------------- next part -------------- An HTML attachment was scrubbed... URL: From alangingras@REDACTED Fri Dec 22 16:12:19 2017 From: alangingras@REDACTED (Alan Gingras) Date: Fri, 22 Dec 2017 10:12:19 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> <000501d370ea$cde23ad0$69a6b070$@comcast.net> Message-ID: <000d01d37b37$4327b5d0$c9772170$@comcast.net> Arif, Wow! Thanks for this excellent tutorial. All the searching I've done and I have found nothing like this. I've worked through Doug Edmunds site and the few others I've found but this booklet is definitely a great resource. I will work through this and see if it changes my mind about doing my project with wxErlang. I have what I want to accomplish in mind and see some difficulties ahead (mostly with the desire to create a chart). I see that wxErlang / wxWidgets does not have a "native" chart control. I know that the Erlang observer utility has some load charts but it looks like they draw the chart themselves so I might be able to "steal" that. Thanks again. Sincerely yours, Alan -----Original Message----- From: arif@REDACTED [mailto:arif@REDACTED] Sent: Thursday, December 21, 2017 15:07 To: Alan Gingras Cc: erlang-questions@REDACTED Subject: Re: [erlang-questions] GUI development with Erlang Thanks Alan for your explanation. It makes sense. I sort of forgot about the initial difficulties. So I have put together a small description for you in case you still want to give it a try. https://arifishaq.files.wordpress.com/2017/12/wxerlang-getting-started.pdf Good luck! Arif On 2017-12-09 13:39, Alan Gingras wrote: > Arif, > > Perhaps my difficulty lies in the documentation for wxErlang and > WxWidgets combined with my experience with Windows.Forms, TCL/Tk and > others. I have been able to find excellent documentation and examples > easily for pretty much everything I have wanted or needed to do. Not > diminishing WxWidgets, but getting the layouts correct and working as > desired has been faster and easier for me in every other GUI package > I've used. The others (for the most part) seemed more intuitive to me > than the windows/panels etc. of wxWidgets. And I have worked through > what little I can find on the wxErlang, i.e. > http://www.idiom.com/~turner/wxtut/wxwidgets.html > http://wxerlang.dougedmunds.com/ > > In the end, I think better documentation - not written for someone who > already knows how to use either WxWidgets or wxErlang - would be a key > improvement. > > Regards, > Alan > > > -----Original Message----- > From: erlang-questions-bounces@REDACTED > [mailto:erlang-questions-bounces@REDACTED] On Behalf Of > arif@REDACTED > Sent: Thursday, December 07, 2017 08:04 > To: erlang-questions@REDACTED > Subject: Re: [erlang-questions] GUI development with Erlang > > Hi, > I have been using wxErlang on some projects and I don't find it too > hard. I make the GUI in separate processes and communicate with the > application using regular erlang message passing. > Using the wx_object, it is practically a breeze. It is like > programming a gen_server. I even run the GUI processes supervised, to > allow me to "let it crash". > Also, you can use wxFormBuilder to do the layout and use the generated > PHP or LUA code to figure out what you need to do in wxErlang. I > suppose you could even write a parser to generate your erlang code from those. > So I am curious. What is that you find so hard about it? And what > makes it easier with C# or the like? > Thanks > Arif > > > Date: Wed, 6 Dec 2017 15:08:39 -0500 > From: "Alan Gingras" > To: "'Alex S.'" > Cc: 'Erlang' > Subject: Re: [erlang-questions] GUI development with Erlang > Message-ID: <002901d36ece$026702a0$073507e0$@comcast.net> > Content-Type: text/plain; charset="utf-8" > > Thanks Alex. I had thought of that but was trying to make this a pure > Erlang application. This is most likely the approach I will end up > taking unless I decide to pursue wxErlang, but that is probably a little unlikely. > > > From: Alex S. [mailto:alex0player@REDACTED] > Sent: Tuesday, December 05, 2017 03:08 > To: Alan Gingras > Cc: Erlang > Subject: Re: [erlang-questions] GUI development with Erlang > > For what it's worth, you can always implement your view and controller > in something like C#/F#, and your model in Erlang, and hook them up via TCP. > Alternatively, there was an Erlang-toF# compiler floating around I believe. > > > 2017-12-03 22:43 GMT+03:00 Alan Gingras >: > > Has anyone tried using Windows Forms (.net) with Erlang? This would > be in a similar fashion to way Python can use Windows Forms. On Linux > I believe this would be Mono (http://www.mono-project.com/docs/gui/winforms/). > Basically I think I?m looking for something similar to Python?s > ?import? and C#?s ?using? > features. If no one has anything, any hints on how a feature like > this might be implemented. > > Basically, I have been working on implementing genetic programming in > Erlang and would like to provide a GUI front end. The WxWidgets front > end that comes with Erlang is difficult at best. I?ve used several > different GUI kits on *nix and Windows platforms but WxWidgets seems > the most difficult for me. So I?m trying to see what else is > available. I followed Joe Armstrong?s quest earlier this year and > didn?t see where he came up with anything. > > Thanks. > > Alan > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From mononcqc@REDACTED Fri Dec 22 16:29:07 2017 From: mononcqc@REDACTED (Fred Hebert) Date: Fri, 22 Dec 2017 10:29:07 -0500 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: References: Message-ID: <20171222152906.GM2024@ferdmbp.local> On 12/22, Lloyd R. Prentice wrote: > >At this point, my understanding is that Erlang is a terrific language for distributed back-end systems and, to some extent, scalable web applications. But my sense is that the Erlang community is smaller than the merits of the language deserves, has an aging community and, rather than organic growth, seems to be fragmenting into a cluster of BEAM languages that don't, from what I've seen, bring much vitality back to Erlang OTP. > Yes and no. Frankly, I think the community's been stable for a while. There's a few newcomers coming from the Elixir world into Erlang's, and some very interesting VM improvements that have come from that side of the fence. We borrowed a bunch from them (just hex is a good example) and they borrowed a lot from us. I think that with better tool compatibility (being able to compile Elixir with an Erlang toolchain, or maybe adopting mix as your erlang build tool if you want to do it today), we could get the influx of folks that support the web in the Elixir world and benefit from their work within Erlang. The community is small for the people who talk in public, but there's a surprising amount of people and corporations that use Erlang behind closed doors or will not participate to that many conversations about it. It's an iceberg of a programming language with a small public-facing group and a massive hidden userbase. The fact that the language is used to make infrastructure component also tends to mean that 2-3 developers may do the work that hundreds of corporations will use. This is far less often the case when you have user-facing libraries and products, which are, for lack of better terms, less fundamental to multiple classes of systems, and will instead tend to reside within a few classes at most. The language, I think, has passed its bubble phase -- that one bit of time where all the language hipsters and tech early adopters keep jumping wagons and you can grab a fraction of them to do your work. Erlang has had killer apps. Many of them. I think we should expect stability in the years to come; minor growth, and hopefully minor churn in community members. >The question I've asked myself over recent months is, "Why doesn't Erlang have more libraries supporting human communication with the same effectiveness with which it supports machine-to-machine communication?" > >The recent thread GUI development thread is Exhibit Number One. > >The various stalemated Erlang-questions threads on Erlang documentation is Exhibit Number Two. > I think there are two factors here. One is the very strong infrastructure focus in Erlang products. You will have routers and proxies for all types of protocols, translators for fancy data types, queues and building blocks for complex systems, databases and foundational components to high-load applications. Those are very often machine-to-machine mechanisms, doing a specific thing for specific high-end environments. Erlang was often used for these because nothing else would be reasonable for it, not necessarily because people felt that Erlang was amazing; that part usually comes later. That means you built a community of infrastructure folks, who speak infrastructure to each other. Who cares that unicode is not there? Few people did, because few people even handled text in the first place; those were byte streams you just needed to shuttle from here to there! If we just got into the unicode game properly, I'm not *that* surprised that user-facing communication is lagging behind. Reason number two, I think, are community dynamics related to that. I've given a keynote on this topic in Stockholm last year -- https://www.youtube.com/watch?v=Z28SDd9bXcE and my position is still roughly the same. We've made progress but the behaviour of our community has been self-reinforcing for years. Very experienced devs who know a crapload of stuff, and are usually fine fixing their own problems. This makes newcomers usually look somewhere else over time for an easier experience. I welcomed Elixir's challenge in tooling and usability and while their tooling is still often seen as superior, I feel that over time the gap has been narrowed (we have caught up a bit); the comments I see online have less of a focus on that than there was before. That's good. We're not done yet though. >Lo?c Hoguin has done some nice work on documentation tools. I do wish they were more widely used and, themselves, better documented. > >This makes me wonder why we don't eat our own dog food, that is, develop and adopt standardized documentation tools written in Erlang and fluent across all media? > The work that *you* do right now is probably the exact kind of stuff we need to keep fighting the inertia we have. The questions you ask and these comments help. Here's an interesting one; we have edoc, there is hexdocs to host it, but a lot of us don't even get there (myself included). Hell, I'm still late on package publishing unless someone prompts me that way. I think there's a gap currently between "learning Erlang from a book" and "using Erlang within the community" that has not been addressed. Maybe there's a decent opportunity there. In the ruby community, I've been told nobody would consider a library until it had tests. In the Erlang community, the first question you get asked about a system is "has it been in production?" -- there's a very strong focus on field experience and proof for a lot of the work. Maybe we'd gain by starting to collectively ask "does it have documentation?" Is a component truly ready for production if its only documentation is a slideset from a lightning talk given to a random usergroup 3 years ago? > >Many of the things that I want to do in Writersglen could be accomplished in other languages and with tools and applications written in those languages. But I want to work in Erlang. I don't see any technical obstacles to building better human communication libraries and tools in Erlang. Selfishly, I don't have enough years ahead to learn other languages. I want to build my web community. I want to build it in Erlang. And I wish I'd been able to launch it two years ago. > >But beyond my own interests, my hypothesis is this: With more well-documented and polished open source libraries and applications focused on human communication, Erlang would attract a wider, more diverse, population of programmers and developers. This, in turn, would result in a more vibrant community and wider adoption of Erlang. > >Am I wrong? No you're right (at least in my opinion). One of the things I do in the workplace and that I recommend people do is take all their interns and new hires, and make them take notes on everything they found painful and difficult when they started. Tell them early on to do it. Take that list of opinions from someone who has a fresh view and a different background, and try to address these problems. Commit to fixing them. If you're a newcomer, this means taking the notes. Maybe we'd need a place to gather these comments. Some of them won't be useful, some of them might be. This way of proceeding is part of why Tristan and I had started work on Rebar3. We wanted other teams within Heroku to try Erlang but they had a bad time with other tools. I'm doing the same thing at Genetec right now, and I've been adding better windows support to the tool (and some features that should drop later today) for that reason. > >If not, what can we do to make it happen? > >Perhaps the problem is that we don't have an appropriate venue or forum for sharing ideas. > We make the venues with what we have. The harder part is ownership; someone committed to tracking and fixing issues. What can we do to make it happen? Good question. I think for you personally, it would be neat to see what the stumbling blocks you've had were. Can we categorize them? Find a solution that would have fixed things? We could look in whether this was a documentation problem, a discoverability problem, issues with tooling, issues with finding resources, or anything else, really. Once we have some concrete problems to fix, and that we start putting some work that way, we'll get in a better place. The lucky thing with these types of frustrations is that there's some big nasty ones that are difficult to fix, but a lot of them are small one-off issues that cause deaths from a thousand papercuts. Those are usually easy to fix and as you go, progress becomes easier and easier and the barrier of entry lower and lower. Frankly the hard part is finding people with the experience and the time to do all of that, but it starts with any individual deciding to get their hands dirty. Regards, Fred. From essen@REDACTED Fri Dec 22 20:16:19 2017 From: essen@REDACTED (=?UTF-8?Q?Lo=c3=afc_Hoguin?=) Date: Fri, 22 Dec 2017 20:16:19 +0100 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: References: Message-ID: <8a37d0cc-d235-25f8-0e1c-b55d08556620@ninenines.eu> Saw my name mentioned so figured I'd pop in. On 12/22/2017 07:03 AM, Lloyd R. Prentice wrote:> Lo?c Hoguin has done some nice work on documentation tools. I do wish > they were more widely used and, themselves, better documented. I don't know about "nice", my efforts are very much on the hobby side of things and are still unfinished. I should have a pretty good Asciidoc-to-AST-to-manpage this coming holiday though. Evolving it will be much easier when I'm done rewriting the prototype and adding output formats will be trivial. That said, I'm pretty sure I'm in the minority with wanting to write docs separately from code so my work will have a limited impact as far as Erlang documentation goes. Unless someone wants to use the project to do an edoc/Asciidoc thing. Cheers, -- Lo?c Hoguin https://ninenines.eu From iammononym@REDACTED Fri Dec 22 18:32:45 2017 From: iammononym@REDACTED (Chris Hicks) Date: Fri, 22 Dec 2017 09:32:45 -0800 Subject: [erlang-questions] Makefile not generated for erlang folder Message-ID: Hello folks, I'm using the otp_src_20.0.tar.gz downloaded from Erlang.com and following the instructions found here: http://erlang.org/doc/installation_guide/INSTALL.html However, when I attempt to run `make` everything works fine until right after the hipe application. The error I get is as follows: make[2]: Leaving directory `/build/private/src/lib/hipe' make[2]: Entering directory `/build/private/src/lib/erlang' make[2]: *** No rule to make target `opt'. Stop. When looking at the erlang folder the Makefile has not been generated. The build process is being handled by a custom build system and is kicked off by a custom build script, which really just makes sure the required libraries are linked so that they can be found when running `./configure` and `make` The relevant parts of the script are as follows, minus some long paths for readability: export ERL_TOP=$WRITABLE_SRC_DIR SSL_CONFIG=" --with-ssl-zlib= --with-ssl=" tar -xzf otp_src_20.0.tar.gz --strip-components 1 -C "$WRITABLE_SRC_DIR" ./configure "--prefix=$INSTALL_DIR" $SSL_CONFIG make -j "$CPU_COUNT" -------------- next part -------------- An HTML attachment was scrubbed... URL: From taavi@REDACTED Fri Dec 22 23:05:56 2017 From: taavi@REDACTED (taavi@REDACTED) Date: Sat, 23 Dec 2017 00:05:56 +0200 Subject: [erlang-questions] Makefile not generated for erlang folder In-Reply-To: References: Message-ID: <4170A5A4-B46A-4720-9B01-9525910F880E@uninet.ee> Any chance, that you are on Mac OS with case insensitive file system? best regards, taavi > On 22 Dec 2017, at 19:32, Chris Hicks wrote: > > Hello folks, > > I'm using the otp_src_20.0.tar.gz downloaded from Erlang.com and following the instructions found here: http://erlang.org/doc/installation_guide/INSTALL.html > > However, when I attempt to run `make` everything works fine until right after the hipe application. The error I get is as follows: > > make[2]: Leaving directory `/build/private/src/lib/hipe' > make[2]: Entering directory `/build/private/src/lib/erlang' > make[2]: *** No rule to make target `opt'. Stop. > > When looking at the erlang folder the Makefile has not been generated. The build process is being handled by a custom build system and is kicked off by a custom build script, which really just makes sure the required libraries are linked so that they can be found when running `./configure` and `make` > > The relevant parts of the script are as follows, minus some long paths for readability: > > export ERL_TOP=$WRITABLE_SRC_DIR > SSL_CONFIG=" --with-ssl-zlib= --with-ssl=" > tar -xzf otp_src_20.0.tar.gz --strip-components 1 -C "$WRITABLE_SRC_DIR" > ./configure "--prefix=$INSTALL_DIR" $SSL_CONFIG > make -j "$CPU_COUNT" > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions -------------- next part -------------- An HTML attachment was scrubbed... URL: From iammononym@REDACTED Fri Dec 22 23:13:13 2017 From: iammononym@REDACTED (Chris Hicks) Date: Fri, 22 Dec 2017 14:13:13 -0800 Subject: [erlang-questions] Makefile not generated for erlang folder In-Reply-To: <4170A5A4-B46A-4720-9B01-9525910F880E@uninet.ee> References: <4170A5A4-B46A-4720-9B01-9525910F880E@uninet.ee> Message-ID: Nope, taking place on RHEL 5.3 according to "cat /etc/*-release" There are some company specific things done to the release but I'm not certain what those are. On Dec 22, 2017 2:05 PM, wrote: > Any chance, that you are on Mac OS with case insensitive file system? > > best regards, > taavi > > On 22 Dec 2017, at 19:32, Chris Hicks wrote: > > Hello folks, > > I'm using the otp_src_20.0.tar.gz downloaded from Erlang.com and > following the instructions found here: http://erlang.org/doc/ > installation_guide/INSTALL.html > > However, when I attempt to run `make` everything works fine until right > after the hipe application. The error I get is as follows: > > make[2]: Leaving directory `/build/private/src/lib/hipe' > make[2]: Entering directory `/build/private/src/lib/erlang' > make[2]: *** No rule to make target `opt'. Stop. > > When looking at the erlang folder the Makefile has not been generated. The > build process is being handled by a custom build system and is kicked off > by a custom build script, which really just makes sure the required > libraries are linked so that they can be found when running `./configure` > and `make` > > The relevant parts of the script are as follows, minus some long paths for > readability: > > export ERL_TOP=$WRITABLE_SRC_DIR > SSL_CONFIG=" --with-ssl-zlib= --with-ssl=" > tar -xzf otp_src_20.0.tar.gz --strip-components 1 -C "$WRITABLE_SRC_DIR" > ./configure "--prefix=$INSTALL_DIR" $SSL_CONFIG > make -j "$CPU_COUNT" > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric.pailleau@REDACTED Sat Dec 23 01:11:35 2017 From: eric.pailleau@REDACTED (PAILLEAU Eric) Date: Sat, 23 Dec 2017 01:11:35 +0100 Subject: [erlang-questions] [ANN] geas 2.0.14 (Erlang 20.2) Message-ID: <2c05dd6f-8050-0a2b-42df-02298db1e420@wanadoo.fr> Ho, Ho, Ho ! Geas 2.0.14 has been released ! This is an update for Erlang 20.2 database. Geas is a tool that will detect the runnable official Erlang release window for your project, including dependencies, either from source code or beam files. Geas will tell you what are the offending functions in the beam/source files that reduce the available window. Geas will tell you if some beam files are compiled native. Geas is available as a module, erlang.mk and rebar 2/3 plugins. https://github.com/crownedgrouse/geas Cheers ! Eric From fxn@REDACTED Sat Dec 23 11:33:15 2017 From: fxn@REDACTED (Xavier Noria) Date: Sat, 23 Dec 2017 11:33:15 +0100 Subject: [erlang-questions] patterns or best practices to shut applications down? Message-ID: Let me see if I can explain this. When getting into Erlang, I start to think more within the system. Say, a long file upload could be done in a process, periodic tasks could be running in the VM instead of cron, you could have a key-value store in memory, etc. In the context of web development, for example, I think of natural ways to leverage processes that in other systems would normally be delegated to external services. Kinda what the famous table in Elixir in Action has, I guess. But there's something that bugs me and prevents me from imagining complete and round solutions, which is shutting down. When shutting down (think autoescaling, deploys, etc.). I have a live system that needs to stop orderly. Are there patterns or best practises about how to design this aspect of the system? -------------- next part -------------- An HTML attachment was scrubbed... URL: From fxn@REDACTED Sat Dec 23 15:27:18 2017 From: fxn@REDACTED (Xavier Noria) Date: Sat, 23 Dec 2017 15:27:18 +0100 Subject: [erlang-questions] patterns or best practices to shut applications down? In-Reply-To: References: Message-ID: Chatted a bit with Jos? Valim about this. I had read the APIs related to process shutdown, but I had not seen the big picture. A conventionally written OTP application has a way to boot, but had not grasped that it has also a way to shutdown and you program to play well wit it. Aha! So the auto-answer to my question (please don't hesitate to correct me or add anything) is that every service needs to take a conscious decision about this. Logic, timeouts, and so on. In some cases exiting is going to be inmediate. A periodical task may wait for completion if exiting happens in the middle of it, but schedule no more runs (off the top of my head). In the case of a somewhat long-running process like file uploading, guess a normal strategy would be similar: to allow their exit handlers to wait for the upload to complete and program this logic. Their supervisor would set appropriate generous timeouts or infinity accordingly. In such a system it is a consequence of this that you should expect shutdown to take whatever those processes need. Beautifull! -------------- next part -------------- An HTML attachment was scrubbed... URL: From mononcqc@REDACTED Sat Dec 23 15:41:49 2017 From: mononcqc@REDACTED (Fred Hebert) Date: Sat, 23 Dec 2017 09:41:49 -0500 Subject: [erlang-questions] patterns or best practices to shut applications down? In-Reply-To: References: Message-ID: <20171223144148.GA1433@ferdmbp.local> On 12/23, Xavier Noria wrote: > >But there's something that bugs me and prevents me from imagining complete >and round solutions, which is shutting down. When shutting down (think >autoescaling, deploys, etc.). I have a live system that needs to stop >orderly. > >Are there patterns or best practises about how to design this aspect of the >system? Good news! You already have this covered with OTP. When shutting down a supervision tree, the supervisor will send down a `shutdown` exit signal to each of its children in order. A child supervisor will trap exit on this, and forward it to its own children first. If your worker has nothing special to do, just let it die. If it needs some special cleanup, trap exit in the worker and `terminate` will be called. So the supervision structure you have that tells how the program boots also tells how it shuts down. You do have to be careful about the handling of timeouts though (or brutal_kill will catch you up). From eric.pailleau@REDACTED Sat Dec 23 16:06:52 2017 From: eric.pailleau@REDACTED (PAILLEAU Eric) Date: Sat, 23 Dec 2017 16:06:52 +0100 Subject: [erlang-questions] patterns or best practices to shut applications down? In-Reply-To: <20171223144148.GA1433@ferdmbp.local> References: <20171223144148.GA1433@ferdmbp.local> Message-ID: Hi, in addition to other answers, it is worth noting that you can set a maximum time to VM to stop. http://erlang.org/doc/man/init.html "To limit the shutdown time, the time init is allowed to spend taking down applications, command-line flag -shutdown_time is to be used." this can be very useful when some processes are stuck in abnormal terminate work. But using this you can loose data obviously. Restart time is sometime more important than loosing some cleanup. Regards Le 23/12/2017 ? 15:41, Fred Hebert a ?crit?: > On 12/23, Xavier Noria wrote: >> >> But there's something that bugs me and prevents me from imagining >> complete >> and round solutions, which is shutting down. When shutting down (think >> autoescaling, deploys, etc.). I have a live system that needs to stop >> orderly. >> >> Are there patterns or best practises about how to design this aspect >> of the >> system? > > Good news! You already have this covered with OTP. > > When shutting down a supervision tree, the supervisor will send down a > `shutdown` exit signal to each of its children in order. A child > supervisor will trap exit on this, and forward it to its own children > first. > > If your worker has nothing special to do, just let it die. If it needs > some special cleanup, trap exit in the worker and `terminate` will be > called. > > So the supervision structure you have that tells how the program boots > also tells how it shuts down. You do have to be careful about the > handling of timeouts though (or brutal_kill will catch you up). > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > From zzantozz@REDACTED Sat Dec 23 22:00:57 2017 From: zzantozz@REDACTED (Ryan Stewart) Date: Sat, 23 Dec 2017 21:00:57 +0000 Subject: [erlang-questions] patterns or best practices to shut applications down? In-Reply-To: References: <20171223144148.GA1433@ferdmbp.local> Message-ID: Specifically for web applications, and more specifically for a webapp that can have long-running requests (measured in minutes), I've found it extremely convenient to have a supervised gen_server that simply tracks the start and end of each http request. It traps exits so that when it's told to shut down, it can enter a "terminate loop", and it doesn't terminate until all requests have completed or a timeout elapses. This is complemented by a shutdown timeout in its supervisor, which will hard kill it eventually, in the case that something goes terribly wrong. After that, it's just a matter of getting your supervisor/process start/stop in the correct order. On Sat, Dec 23, 2017 at 9:07 AM PAILLEAU Eric wrote: > Hi, > in addition to other answers, it is worth noting that you can set > a maximum time to VM to stop. > > http://erlang.org/doc/man/init.html > > "To limit the shutdown time, the time init is allowed to spend taking > down applications, command-line flag -shutdown_time is to be used." > > this can be very useful when some processes are stuck in abnormal > terminate work. But using this you can loose data obviously. > Restart time is sometime more important than loosing some cleanup. > > Regards > > > > > Le 23/12/2017 ? 15:41, Fred Hebert a ?crit : > > On 12/23, Xavier Noria wrote: > >> > >> But there's something that bugs me and prevents me from imagining > >> complete > >> and round solutions, which is shutting down. When shutting down (think > >> autoescaling, deploys, etc.). I have a live system that needs to stop > >> orderly. > >> > >> Are there patterns or best practises about how to design this aspect > >> of the > >> system? > > > > Good news! You already have this covered with OTP. > > > > When shutting down a supervision tree, the supervisor will send down a > > `shutdown` exit signal to each of its children in order. A child > > supervisor will trap exit on this, and forward it to its own children > > first. > > > > If your worker has nothing special to do, just let it die. If it needs > > some special cleanup, trap exit in the worker and `terminate` will be > > called. > > > > So the supervision structure you have that tells how the program boots > > also tells how it shuts down. You do have to be careful about the > > handling of timeouts though (or brutal_kill will catch you up). > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sid5@REDACTED Sun Dec 24 16:20:16 2017 From: sid5@REDACTED (Sid Muller) Date: Sun, 24 Dec 2017 16:20:16 +0100 Subject: [erlang-questions] systemd and attach Message-ID: Hi there- I am trying to get a rebar style application to work with systemd as a service and it's mostly working. The application comes up just as if I typed in "bin/test start" but when I type "bin/test attach" then the shell just hangs in this state: =================================================== root@REDACTED:/test# bin/test attach Attaching to /tmp/erl_pipes/test/erlang.pipe.1 (^D to exit) ^L =================================================== But when I run "systemctl stop test.service" and then "bin/test start" the "bin/test attach" works fine. I have not been able to get attach to work with systemd no matter what I try. My systemd script is: -------------------------------------------------- [Unit] Description=test Requires=network-online.target remote-fs-pre.target Before=remote-fs-pre.target After=network.target network-online.target Conflicts=shutdown.target reboot.target Before=shutdown.target reboot.target [Service] Type=forking WorkingDirectory=/test ExecStart=/test/bin/test start ExecStop=/test/bin/test stop SuccessExitStatus=0 1 [Install] WantedBy=multi-user.target --------------------------------------------------- Does anyone have any suggestions? I am stumped. From carlsson.richard@REDACTED Mon Dec 25 14:18:48 2017 From: carlsson.richard@REDACTED (Richard Carlsson) Date: Mon, 25 Dec 2017 14:18:48 +0100 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: References: Message-ID: Hello Lloyd! Just to clarify - my role has mainly been to clean up the repository a bit, get permission from all authors to slap an MIT license on it, and put the latest version on github as a point of reference for others. Previously, you could only find the original version as a tarball from Joe's web page. The road map etc. is not my writing, but probably mostly Joe's. Klarna is not using erlguten anymore (as of last year, we migrated the last uses to an external service), but it certainly had a good run - 12 years of heavy industrial use. /Richard 2017-12-22 7:03 GMT+01:00 Lloyd R. Prentice : > Hello, > > This is a think piece that may run longer than prudent for this forum. But > if not here, then where? It is motivated by the recent thread re: GUI > development and various other threads re: Erlang documentation. It asks > serious questions that may or may not be worthy of reflection and > discussion across the Erlang community. > > Here's a little about me, not to toot my horn, but to clarify where I'm > coming from. > > I've been striving to become reasonably proficient in Erlang for nearly > four years now. I come with experience in software development, but in no > way consider myself a professional programmer. My undergraduate education > is in English language/liberal arts with a focus on creative writing; > communication and national development was my focus in grad school. I was > for seven years on the full-time faculty at Boston University's School for > Public Communication. I was founding editor/publisher of Classroom Computer > News, one of the first magazines focused on personal computers in the K-12 > classroom. My company. Prentice Associates Incorporated developed more than > 100 shrink-wrapped educational/consumer software products for leading U.S. > publishers. My company also developed a major web application for marketing > and managing world-class IT conferences Among other things, I write > fiction; have three novels in print. I could go on, but you get the > picture. > > I come to Erlang with a vision of a web community devoted to helping indie > authors/publishers write and market better books. I was attracted by the > reliability/scalability promise of Erlang. But it's been a hard slog > learning Erlang and bringing my vision to fruition, taking far longer than > I would have hoped, leavened only by the generous help from many members of > this community. > > At this point, my understanding is that Erlang is a terrific language for > distributed back-end systems and, to some extent, scalable web > applications. But my sense is that the Erlang community is smaller than the > merits of the language deserves, has an aging community and, rather than > organic growth, seems to be fragmenting into a cluster of BEAM languages > that don't, from what I've seen, bring much vitality back to Erlang OTP. > > The question I've asked myself over recent months is, "Why doesn't Erlang > have more libraries supporting human communication with the same > effectiveness with which it supports machine-to-machine communication?" > > The recent thread GUI development thread is Exhibit Number One. > > The various stalemated Erlang-questions threads on Erlang documentation is > Exhibit Number Two. > > Lo?c Hoguin has done some nice work on documentation tools. I do wish they > were more widely used and, themselves, better documented. > > This makes me wonder why we don't eat our own dog food, that is, develop > and adopt standardized documentation tools written in Erlang and fluent > across all media? > > Wings3D is, from what I've read, an effective 3D CAD system. But I don't > hear much about it or see how it's libraries or components are of value to > the Erlang community. Perhaps there are hidden jewels in the Wings3D code > that could support GUI development. > > Joe Armstrong has been experimenting with music production. I love to see > more documentation of his work. Can his work be extended to broader audio > applications? > > A few folks have been working with video streaming. Wouldn't it be great > to see tutorials and well-documented open source libraries and tools. > > Erlang Nitrogen goes a long way toward easing the pains of web > development. But it could go much further with broader support. These days, > poor Jesse Gumm is just about it. > > I'm not sure what's going on with Chicago Boss. That seems to be on > Jesse's shoulders as well. > > The content management framework Zotonic is terrific in every dimension. > But you have to move out of Erlang and to hop across several syntactic > boundaries to use it. Mark Worrell has been talking for some time about > "Elastic Zotonic," e.g. distributed Zotonic. Is he thinking Riak? I don't > know, but wouldn't that be cool. > > I've been pulling my hair out over the past year trying to bend erlguten, > the not-well-documented six-year-old library for generating PDF documents, > to my needs. It's a gem in the rough that could provide the basis for a > powerful suite of print and digital media production tools. > > Just today I learned that erlguten has been maintained and in production > at Klarna and that within the past year Richard Carlsson has released a > MIT-licensed "canonical" version on GitHub. Yippee! > > https://github.com/richcarl/erlguten > > Richard's road map is dead congruent with what I've been trying to > accomplish in support of Writersglen, the project that has absorbed my > nearly every waking thought over the past half decade. > > Many of the things that I want to do in Writersglen could be accomplished > in other languages and with tools and applications written in those > languages. But I want to work in Erlang. I don't see any technical > obstacles to building better human communication libraries and tools in > Erlang. Selfishly, I don't have enough years ahead to learn other > languages. I want to build my web community. I want to build it in Erlang. > And I wish I'd been able to launch it two years ago. > > But beyond my own interests, my hypothesis is this: With more > well-documented and polished open source libraries and applications focused > on human communication, Erlang would attract a wider, more diverse, > population of programmers and developers. This, in turn, would result in a > more vibrant community and wider adoption of Erlang. > > Am I wrong? > > If not, what can we do to make it happen? > > Perhaps the problem is that we don't have an appropriate venue or forum > for sharing ideas. > > All the best and happy holidays, > > Lloyd > > Sent from my iPad > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From roger@REDACTED Wed Dec 27 10:49:55 2017 From: roger@REDACTED (Roger Lipscombe) Date: Wed, 27 Dec 2017 09:49:55 +0000 Subject: [erlang-questions] systemd and attach In-Reply-To: References: Message-ID: Not a direct answer to your question, but we generally use "bin/test foreground" to run the service (i.e. non-forking) and then use "bin/test remote_console", rather than "attach". On 24 December 2017 at 15:20, Sid Muller wrote: > Hi there- > > I am trying to get a rebar style application to work with systemd as a service and it's mostly working. The application comes up just as if I typed in "bin/test start" but when I type "bin/test attach" then the shell just hangs in this state: > =================================================== > root@REDACTED:/test# bin/test attach > Attaching to /tmp/erl_pipes/test/erlang.pipe.1 (^D to exit) > > ^L > =================================================== > > But when I run "systemctl stop test.service" and then "bin/test start" the "bin/test attach" works fine. I have not been able to get attach to work with systemd no matter what I try. My systemd script is: > > -------------------------------------------------- > [Unit] > Description=test > Requires=network-online.target remote-fs-pre.target > Before=remote-fs-pre.target > After=network.target network-online.target > Conflicts=shutdown.target reboot.target > Before=shutdown.target reboot.target > > [Service] > Type=forking > WorkingDirectory=/test > ExecStart=/test/bin/test start > ExecStop=/test/bin/test stop > SuccessExitStatus=0 1 > > > [Install] > WantedBy=multi-user.target > --------------------------------------------------- > > Does anyone have any suggestions? I am stumped. > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From ferenc.holzhauser@REDACTED Wed Dec 27 11:05:38 2017 From: ferenc.holzhauser@REDACTED (Ferenc Holzhauser) Date: Wed, 27 Dec 2017 11:05:38 +0100 Subject: [erlang-questions] systemd and attach In-Reply-To: References: Message-ID: I think I've seen this issue with attach when the TERM environment wasn't set for some reason. Perhaps you could try to add the environment to the [Service] and see whether it helps. ... Environment=TERM=xterm ... On 27 December 2017 at 10:49, Roger Lipscombe wrote: > Not a direct answer to your question, but we generally use "bin/test > foreground" to run the service (i.e. non-forking) and then use > "bin/test remote_console", rather than "attach". > > On 24 December 2017 at 15:20, Sid Muller wrote: > > Hi there- > > > > I am trying to get a rebar style application to work with systemd as a > service and it's mostly working. The application comes up just as if I > typed in "bin/test start" but when I type "bin/test attach" then the shell > just hangs in this state: > > =================================================== > > root@REDACTED:/test# bin/test attach > > Attaching to /tmp/erl_pipes/test/erlang.pipe.1 (^D to exit) > > > > ^L > > =================================================== > > > > But when I run "systemctl stop test.service" and then "bin/test start" > the "bin/test attach" works fine. I have not been able to get attach to > work with systemd no matter what I try. My systemd script is: > > > > -------------------------------------------------- > > [Unit] > > Description=test > > Requires=network-online.target remote-fs-pre.target > > Before=remote-fs-pre.target > > After=network.target network-online.target > > Conflicts=shutdown.target reboot.target > > Before=shutdown.target reboot.target > > > > [Service] > > Type=forking > > WorkingDirectory=/test > > ExecStart=/test/bin/test start > > ExecStop=/test/bin/test stop > > SuccessExitStatus=0 1 > > > > > > [Install] > > WantedBy=multi-user.target > > --------------------------------------------------- > > > > Does anyone have any suggestions? I am stumped. > > _______________________________________________ > > erlang-questions mailing list > > erlang-questions@REDACTED > > http://erlang.org/mailman/listinfo/erlang-questions > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From goodjoe2049@REDACTED Wed Dec 27 22:09:19 2017 From: goodjoe2049@REDACTED (Joe K) Date: Thu, 28 Dec 2017 00:09:19 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc Message-ID: I'm trying to implement parts of webrtc stack with elixir/erlang and currently am stuck with setting up a dtls session. The minimal example is, I think, the following (in console, erlang 20.2.2): 2> ssl:start(). ok 3> {ok, ListenSocket} = ssl:listen(8090, [ 3> binary, 3> {ip, {0, 0, 0, 0}}, 3> {protocol, dtls}, 3> {keyfile, <<"priv/server.key">>}, 3> {certfile, <<"priv/server.pem">>}, 3> {active, false} 3> ]). {ok, ...} 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). {ok,...} 5> ssl:ssl_accept(AcceptSocket). {error,{tls_alert,"record overflow"}} And js (with chrome canary): https://gist.github.com/idi-ot/a07b7330ff02f90373a2dcfe83883afa After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's iceConnectionState becomes "failed" and the connection itself "closed". I wonder what I am doing wrong. openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug works fine with the code snippet above. -------------- next part -------------- An HTML attachment was scrubbed... URL: From z@REDACTED Wed Dec 27 23:28:57 2017 From: z@REDACTED (Danil Zagoskin) Date: Thu, 28 Dec 2017 01:28:57 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: Hi! What do you see in Wireshark? Did you see handshake between two browsers? Is your application ready to receive the packet sent by browser? Do you use external STUN server? Maybe browser sends STUN requests to your port when you expect DTLS hello? Also try checking chrome://webrtc-internals and chrome://webrtc-logs for browser's view on what's going on. On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: > I'm trying to implement parts of webrtc stack with elixir/erlang and > currently am stuck with setting up a dtls session. > > The minimal example is, I think, the following (in console, erlang 20.2.2): > > 2> ssl:start(). > ok > 3> {ok, ListenSocket} = ssl:listen(8090, [ > 3> binary, > 3> {ip, {0, 0, 0, 0}}, > 3> {protocol, dtls}, > 3> {keyfile, <<"priv/server.key">>}, > 3> {certfile, <<"priv/server.pem">>}, > 3> {active, false} > 3> ]). > {ok, ...} > 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). > {ok,...} > 5> ssl:ssl_accept(AcceptSocket). > {error,{tls_alert,"record overflow"}} > > And js (with chrome canary): https://gist.github.com/idi-ot/ > a07b7330ff02f90373a2dcfe83883afa > > After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's > iceConnectionState becomes "failed" and the connection itself "closed". > > I wonder what I am doing wrong. > > openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug > > works fine with the code snippet above. > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -- Danil Zagoskin | z@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From k.petrauskas@REDACTED Wed Dec 27 23:49:59 2017 From: k.petrauskas@REDACTED (Karolis Petrauskas) Date: Thu, 28 Dec 2017 00:49:59 +0200 Subject: [erlang-questions] SFTPD, directory listing and file attributes Message-ID: Hi all, I'm trying to use the ssh_sftpd server and found strange behaviour when listing files: sftp> ls -l /c/ data.csv data.txt some.xxx File permissions and gid/uid are not shown with the -l option. If listing the files with the -n option the file attributes are shown as expected: sftp> ls -n /c/ -rw-rw-r-- 0 1000 1000 0 Dec 27 20:11 /c/data.csv -rw-rw-r-- 0 1000 1000 0 Dec 27 20:12 /c/data.txt -rw-rw-r-- 0 1000 1000 0 Dec 27 19:12 /c/some.xxx The attributes are also shown if the files are listed using wildcard: sftp> ls -l /c/* -rw-rw-r-- 0 1000 1000 0 Dec 27 20:12 /c/data.txt -rw-rw-r-- 0 1000 1000 0 Dec 27 20:11 /c/data.csv -rw-rw-r-- 0 1000 1000 0 Dec 27 19:12 /c/some.xxx But in this case, the sftp client asks for file attributes for each file explicitly. In the client debug, I see the calls similar to the following, repeated three times in this case: debug3: Sent message fd 3 T:7 I:20 debug3: Received stat reply T:105 I:20 I work on linux, Ubuntu xenial. I use Erlang/OTP 20.1 for the server. The client is openssh sftp, version="OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g 1 Mar 2016". The server and the client agrees on the sftp version 3, as the client implements it. I tried to look at the ssh_sftp server sources. It looks like ssh_xfer:encode_name/3 is incorrect, because long file name is not included in the protocol version 3 (https://tools.ietf.org/html/draft-ietf-secsh-filexfer-03#page-26, see SSH_FXP_NAME). As I quick test, I tried to change the Vsn ranges here, but in that case the server started to report corrupted frames. I would be apprieciated for any pointers. Maybe there is a way to log the sftp messages (decrypted) on the client, it would help to compare responses from the erlang server and the openssh server (the latter provides the attributes correctly). -- Karolis Petrauskas From k.petrauskas@REDACTED Thu Dec 28 10:36:12 2017 From: k.petrauskas@REDACTED (Karolis Petrauskas) Date: Thu, 28 Dec 2017 11:36:12 +0200 Subject: [erlang-questions] SFTPD, directory listing and file attributes In-Reply-To: References: Message-ID: I have referred to a wrong version of the protocol specification. https://tools.ietf.org/html/draft-ietf-secsh-filexfer-03 describes protocol version 4. The version 3 is described in https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02. This explains why the existing code works at all :) However, I still don't know, why sftp client shows the directory listing without the attributes. Karolis On Thu, Dec 28, 2017 at 12:49 AM, Karolis Petrauskas wrote: > Hi all, > > I'm trying to use the ssh_sftpd server and found strange behaviour > when listing files: > > sftp> ls -l /c/ > data.csv > data.txt > some.xxx > > File permissions and gid/uid are not shown with the -l option. > > If listing the files with the -n option the file attributes are shown > as expected: > > sftp> ls -n /c/ > -rw-rw-r-- 0 1000 1000 0 Dec 27 20:11 /c/data.csv > -rw-rw-r-- 0 1000 1000 0 Dec 27 20:12 /c/data.txt > -rw-rw-r-- 0 1000 1000 0 Dec 27 19:12 /c/some.xxx > > The attributes are also shown if the files are listed using wildcard: > > sftp> ls -l /c/* > -rw-rw-r-- 0 1000 1000 0 Dec 27 20:12 /c/data.txt > -rw-rw-r-- 0 1000 1000 0 Dec 27 20:11 /c/data.csv > -rw-rw-r-- 0 1000 1000 0 Dec 27 19:12 /c/some.xxx > > But in this case, the sftp client asks for file attributes for each > file explicitly. In the client debug, I see the calls similar to the > following, repeated three times in this case: > > debug3: Sent message fd 3 T:7 I:20 > debug3: Received stat reply T:105 I:20 > > > I work on linux, Ubuntu xenial. > I use Erlang/OTP 20.1 for the server. > The client is openssh sftp, version="OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, > OpenSSL 1.0.2g 1 Mar 2016". > The server and the client agrees on the sftp version 3, as the client > implements it. > > I tried to look at the ssh_sftp server sources. It looks like > ssh_xfer:encode_name/3 is incorrect, because long file name is not > included in the protocol version 3 > (https://tools.ietf.org/html/draft-ietf-secsh-filexfer-03#page-26, see > SSH_FXP_NAME). > As I quick test, I tried to change the Vsn ranges here, but in that > case the server started to report corrupted frames. > > I would be apprieciated for any pointers. > > Maybe there is a way to log the sftp messages (decrypted) on the > client, it would help to compare responses from the erlang server and > the openssh server (the latter provides the attributes correctly). > > -- > Karolis Petrauskas From hans.r.nilsson@REDACTED Thu Dec 28 10:52:08 2017 From: hans.r.nilsson@REDACTED (Hans Nilsson R) Date: Thu, 28 Dec 2017 10:52:08 +0100 Subject: [erlang-questions] SFTPD, directory listing and file attributes In-Reply-To: References: Message-ID: Hi Karolis, to view the ssh messages decrypted, call the undocumented function ssh_dbg:messages() before the client connects to the server. /Hans On 12/28/2017 10:36 AM, Karolis Petrauskas wrote: > I have referred to a wrong version of the protocol specification. > https://tools.ietf.org/html/draft-ietf-secsh-filexfer-03 describes > protocol version 4. > The version 3 is described in > https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02. > This explains why the existing code works at all :) > > However, I still don't know, why sftp client shows the directory > listing without the attributes. > > Karolis > > > On Thu, Dec 28, 2017 at 12:49 AM, Karolis Petrauskas > wrote: >> Hi all, >> >> I'm trying to use the ssh_sftpd server and found strange behaviour >> when listing files: >> >> sftp> ls -l /c/ >> data.csv >> data.txt >> some.xxx >> >> File permissions and gid/uid are not shown with the -l option. >> >> If listing the files with the -n option the file attributes are shown >> as expected: >> >> sftp> ls -n /c/ >> -rw-rw-r-- 0 1000 1000 0 Dec 27 20:11 /c/data.csv >> -rw-rw-r-- 0 1000 1000 0 Dec 27 20:12 /c/data.txt >> -rw-rw-r-- 0 1000 1000 0 Dec 27 19:12 /c/some.xxx >> >> The attributes are also shown if the files are listed using wildcard: >> >> sftp> ls -l /c/* >> -rw-rw-r-- 0 1000 1000 0 Dec 27 20:12 /c/data.txt >> -rw-rw-r-- 0 1000 1000 0 Dec 27 20:11 /c/data.csv >> -rw-rw-r-- 0 1000 1000 0 Dec 27 19:12 /c/some.xxx >> >> But in this case, the sftp client asks for file attributes for each >> file explicitly. In the client debug, I see the calls similar to the >> following, repeated three times in this case: >> >> debug3: Sent message fd 3 T:7 I:20 >> debug3: Received stat reply T:105 I:20 >> >> >> I work on linux, Ubuntu xenial. >> I use Erlang/OTP 20.1 for the server. >> The client is openssh sftp, version="OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, >> OpenSSL 1.0.2g 1 Mar 2016". >> The server and the client agrees on the sftp version 3, as the client >> implements it. >> >> I tried to look at the ssh_sftp server sources. It looks like >> ssh_xfer:encode_name/3 is incorrect, because long file name is not >> included in the protocol version 3 >> (https://tools.ietf.org/html/draft-ietf-secsh-filexfer-03#page-26, see >> SSH_FXP_NAME). >> As I quick test, I tried to change the Vsn ranges here, but in that >> case the server started to report corrupted frames. >> >> I would be apprieciated for any pointers. >> >> Maybe there is a way to log the sftp messages (decrypted) on the >> client, it would help to compare responses from the erlang server and >> the openssh server (the latter provides the attributes correctly). >> >> -- >> Karolis Petrauskas > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 4101 bytes Desc: S/MIME Cryptographic Signature URL: From z@REDACTED Thu Dec 28 14:34:12 2017 From: z@REDACTED (Danil Zagoskin) Date: Thu, 28 Dec 2017 16:34:12 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: > But now I don't know how to reply to both STUN binding request and then setup a DTLS session using erlang's ssl module. Yes, dtls implementation lacks support of starting/accepting a handshake over existing socket. It should be quite easy to implement and it would be consistent with ssl:connect/2 and ssl:ssl_accept for TCP sockets. Also you may try using external STUN server (check RTCPeerConnection docs) and hope browser starts with DTLS hello. If you try this, please share the results. On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: > Oops, I forgot to reply to the mailing list in my last email. > > The response was > > > Maybe browser sends STUN requests to your port when you expect DTLS > hello? > You are absolutely right, Wireshark shows that there are lots of STUN > binding requests being made, I didn't think of that. > > > Do you use external STUN server? > I don't use external STUN servers ... For some reason, I didn't think I > would need them. > > > Also try checking chrome://webrtc-internals and chrome://webrtc-logs > for browser's view on what's going on. > chrome://webrtc-logs is empty for the webrtc whole session. > > But now I don't know how to reply to both STUN binding request and then > setup a DTLS session using erlang's ssl module. > > On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: > >> Hi! >> What do you see in Wireshark? >> Did you see handshake between two browsers? >> Is your application ready to receive the packet sent by browser? >> Do you use external STUN server? >> Maybe browser sends STUN requests to your port when you expect DTLS hello? >> >> Also try checking chrome://webrtc-internals and chrome://webrtc-logs for >> browser's view on what's going on. >> >> >> On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: >> >>> I'm trying to implement parts of webrtc stack with elixir/erlang and >>> currently am stuck with setting up a dtls session. >>> >>> The minimal example is, I think, the following (in console, erlang >>> 20.2.2): >>> >>> 2> ssl:start(). >>> ok >>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>> 3> binary, >>> 3> {ip, {0, 0, 0, 0}}, >>> 3> {protocol, dtls}, >>> 3> {keyfile, <<"priv/server.key">>}, >>> 3> {certfile, <<"priv/server.pem">>}, >>> 3> {active, false} >>> 3> ]). >>> {ok, ...} >>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>> {ok,...} >>> 5> ssl:ssl_accept(AcceptSocket). >>> {error,{tls_alert,"record overflow"}} >>> >>> And js (with chrome canary): https://gist.github.c >>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>> >>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>> iceConnectionState becomes "failed" and the connection itself "closed". >>> >>> I wonder what I am doing wrong. >>> >>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>> >>> works fine with the code snippet above. >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >> >> >> -- >> Danil Zagoskin | z@REDACTED >> > > -- Danil Zagoskin | z@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From lloyd@REDACTED Thu Dec 28 18:11:51 2017 From: lloyd@REDACTED (lloyd@REDACTED) Date: Thu, 28 Dec 2017 12:11:51 -0500 (EST) Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: <3991677.qXz0WsNOic@facteur> References: <3991677.qXz0WsNOic@facteur> Message-ID: <1514481111.460316619@apps.rackspace.com> Hi David, ARC is an excellent example of the kind of human-facing application I've been striving toward. Content creators provide input; output is disseminated in many formats and through many media channels. But I'm imagining a Tinker Toy-like suite of Erlang libraries and applications that can be mixed and matched to build any number of purpose-built human-facing applications. And, I believe we have much in Erlang to work with toward that goal. I've been factoring, revising, and extending erlguten, for instance, into four components: 1. Copy input and management 2. Type specification 3. Page design and layout 4. Paste-up Each of these areas could have print and digital analogs. With careful thought to interfaces, they could abstracted into templates in the spirit of OTP. All the best, Lloyd -----Original Message----- From: "David Talmage" Sent: Thursday, December 28, 2017 10:48am To: erlang-questions@REDACTED Cc: "Joe Armstrong" , "Lloyd R. Prentice" Subject: Re: [erlang-questions] Erlang as a tool for human communication -- was GUI development On Friday, December 22, 2017 7:33:30 AM EST Joe Armstrong wrote: > ... > The model of documentation I would like to see is: > > - One author many eyes > ... > - Beautiful output > ... > - Easy to organise the input > ... > - Low barrier for entry to comments > ... > - Parseable document tree > ... > - Extensible > ... > The stages involved were > > - authoring > - editing (this was chapter by chapter with an editor providing > feedback) - beta release (publish a PDF - this is the many eyes bit) > - final chapters and more editing > - proof reading > - final edit > - indexing > - layout > ... > I'd actually love to know how a newspaper solves this - a decent newspaper > turns out tens of thousands of words per day - news articles are > written, proof read and edited in hours - commissioned articles are > integrated with the news and there must be hundreds to thousands of > contributing sources. > ... The Washington Post uses ARC (https://www.arcpublishing.com/), a home-grown, web-based publishing system. It has an article editor (Ellipsis); CMSes for photos (Anglerfish) and video (Goldfish); a page layout editor (PageBuilder); and tools for analytics, personalization, user experience testing, and a lot more. They all work together seamlessly. Virtually everything in ARC has a web front end in HTML, Javascript, and CSS. The back ends are written in Java or another language that runs on the JVM. WaPo uses ARC and it sells ARC as a service to other newspapers. As I recall, The Globe and Mail in Toronto and Willamette Week are customers. Some other customers are named in an article on businessinsider.com: http:// www.businessinsider.com/the-washington-post-is-growing-its-arc-publishing- business-2016-6 From erlang@REDACTED Thu Dec 28 19:19:06 2017 From: erlang@REDACTED (Joe Armstrong) Date: Thu, 28 Dec 2017 19:19:06 +0100 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: <1514481111.460316619@apps.rackspace.com> References: <3991677.qXz0WsNOic@facteur> <1514481111.460316619@apps.rackspace.com> Message-ID: On Thu, Dec 28, 2017 at 6:11 PM, wrote: > Hi David, > > ARC is an excellent example of the kind of human-facing application I've been striving toward. > > Content creators provide input; output is disseminated in many formats and through many media channels. > > But I'm imagining a Tinker Toy-like suite of Erlang libraries and applications that can be mixed and matched to build any number of purpose-built human-facing applications. > > And, I believe we have much in Erlang to work with toward that goal. > > I've been factoring, revising, and extending erlguten, for instance, into four components: > > 1. Copy input and management > 2. Type specification > 3. Page design and layout > 4. Paste-up > > Each of these areas could have print and digital analogs. With careful thought to interfaces, they could abstracted into templates in the spirit of OTP. Sounds great - Do you have any ideas on layout? Layout seems to be badly addressed in LaTeX and HTML. The idea of grid layout is central to typography. LaTeX happly breaks grid layout and just says 'overfill box' etc. HTML reflows the text if you change the page size. What I'd like is to flow a simple marked up text (a la markdown) into a grid box. This should fail if the text does not fit the grid or overflow the grid. What should the output be? - I guess postscript or PDF, now about SVG? this would be good for layout etc. but font support seems a bit problematic. It's an interesting problem. /Joe > > All the best, > > Lloyd > > > > > > -----Original Message----- > From: "David Talmage" > Sent: Thursday, December 28, 2017 10:48am > To: erlang-questions@REDACTED > Cc: "Joe Armstrong" , "Lloyd R. Prentice" > Subject: Re: [erlang-questions] Erlang as a tool for human communication -- was GUI development > > On Friday, December 22, 2017 7:33:30 AM EST Joe Armstrong wrote: >> ... >> The model of documentation I would like to see is: >> >> - One author many eyes >> ... >> - Beautiful output >> ... >> - Easy to organise the input >> ... >> - Low barrier for entry to comments >> ... >> - Parseable document tree >> ... >> - Extensible >> ... >> The stages involved were >> >> - authoring >> - editing (this was chapter by chapter with an editor providing >> feedback) - beta release (publish a PDF - this is the many eyes bit) >> - final chapters and more editing >> - proof reading >> - final edit >> - indexing >> - layout >> ... >> I'd actually love to know how a newspaper solves this - a decent newspaper >> turns out tens of thousands of words per day - news articles are >> written, proof read and edited in hours - commissioned articles are >> integrated with the news and there must be hundreds to thousands of >> contributing sources. >> ... > > The Washington Post uses ARC (https://www.arcpublishing.com/), a home-grown, > web-based publishing system. It has an article editor (Ellipsis); CMSes for > photos (Anglerfish) and video (Goldfish); a page layout editor (PageBuilder); > and tools for analytics, personalization, user experience testing, and a lot > more. They all work together seamlessly. > > Virtually everything in ARC has a web front end in HTML, Javascript, and CSS. > The back ends are written in Java or another language that runs on the JVM. > > WaPo uses ARC and it sells ARC as a service to other newspapers. As I recall, > The Globe and Mail in Toronto and Willamette Week are customers. Some other > customers are named in an article on businessinsider.com: http:// > www.businessinsider.com/the-washington-post-is-growing-its-arc-publishing- > business-2016-6 > > > > > From lloyd@REDACTED Thu Dec 28 20:03:19 2017 From: lloyd@REDACTED (lloyd@REDACTED) Date: Thu, 28 Dec 2017 14:03:19 -0500 (EST) Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: References: <3991677.qXz0WsNOic@facteur> <1514481111.460316619@apps.rackspace.com> Message-ID: <1514487799.564221054@apps.rackspace.com> Hi Joe, I think I have the layout issue worked out. Need to clean up code before I can share, but will do. I'll send you my PDF think-piece off list. And, if you wish, code as it develops. Love to get your critique and advice. In general, I'm thinking of the problem from the point of view of the content creator and graphic designer. And I fully support your goal of one creator entering content one time for dissemination across multiple media in multiple formats. With regard to layout, I'm experimenting with data structures for optimal accessibility and performance, but the idea is: project -> meta data, [documents] document -> meta data, [pages] page -> documentID, page number, page grid page-grid -> ID, name, [panels] panel -> page number, name, [boxes] ; box -> map of placement, size, border, background color, etc. layout -> [panels] Four data structures get passed into a paste-up component which generates final output: Copy Styling Format Layout I'm thinking separate tools for managing copy, styling, layout, and paste-up so that each can be optimize without disrupting the rest of the system and re-purposed for other media. For now I'm experimenting with embedded functions for input. But browser-based WYSIWYG tools would be nice. Erlang Nitrogen suggests a way to keep browser-based tools in the Erlang domain. Copy could be MarkDown (looks fine for my uses) or XML Patrice Bruno has suggested cmark, an open source MarkDown interpreter for conversion of MarkDown to XML Styling deals with font specifications, CSS, or some such. Patrice Bruno has also been working on extending fonts to OTF and TTF; has a prototype solution. Format deals with the conventional options for content composition, e.g. letter, report, book, etc. We could learn from LaTex here. Layout involves placing copy on pages in panels. Think articles in a magazine or chapters in a book. I have a crude set of rules for dealing with column/page jumps. These would be executed in the paste-up phase. This required factoring your copyfitting routines. My personal interest is in production of books, ebooks, and marketing collateral But I do think that this project could be a way forward toward improved Erlang documentation and tutorials. At a more visionary level, I'm imagining a suite of well-crafted libraries and applications that are complementary to OTP. We might call them Erlang OMP for Open Media Platform. Joe, thanks again for the hard work you've done in implementing the font handling and copy fitting functions in erlguten. They make everything else possible. All the best, Lloyd -----Original Message----- From: "Joe Armstrong" Sent: Thursday, December 28, 2017 1:19pm To: "Lloyd R. Prentice" Cc: talmage@REDACTED, "Erlang" Subject: Re: [erlang-questions] Erlang as a tool for human communication -- was GUI development On Thu, Dec 28, 2017 at 6:11 PM, wrote: > Hi David, > > ARC is an excellent example of the kind of human-facing application I've been striving toward. > > Content creators provide input; output is disseminated in many formats and through many media channels. > > But I'm imagining a Tinker Toy-like suite of Erlang libraries and applications that can be mixed and matched to build any number of purpose-built human-facing applications. > > And, I believe we have much in Erlang to work with toward that goal. > > I've been factoring, revising, and extending erlguten, for instance, into four components: > > 1. Copy input and management > 2. Type specification > 3. Page design and layout > 4. Paste-up > > Each of these areas could have print and digital analogs. With careful thought to interfaces, they could abstracted into templates in the spirit of OTP. Sounds great - Do you have any ideas on layout? Layout seems to be badly addressed in LaTeX and HTML. The idea of grid layout is central to typography. LaTeX happly breaks grid layout and just says 'overfill box' etc. HTML reflows the text if you change the page size. What I'd like is to flow a simple marked up text (a la markdown) into a grid box. This should fail if the text does not fit the grid or overflow the grid. What should the output be? - I guess postscript or PDF, now about SVG? this would be good for layout etc. but font support seems a bit problematic. It's an interesting problem. /Joe > > All the best, > > Lloyd > > > > > > -----Original Message----- > From: "David Talmage" > Sent: Thursday, December 28, 2017 10:48am > To: erlang-questions@REDACTED > Cc: "Joe Armstrong" , "Lloyd R. Prentice" > Subject: Re: [erlang-questions] Erlang as a tool for human communication -- was GUI development > > On Friday, December 22, 2017 7:33:30 AM EST Joe Armstrong wrote: >> ... >> The model of documentation I would like to see is: >> >> - One author many eyes >> ... >> - Beautiful output >> ... >> - Easy to organise the input >> ... >> - Low barrier for entry to comments >> ... >> - Parseable document tree >> ... >> - Extensible >> ... >> The stages involved were >> >> - authoring >> - editing (this was chapter by chapter with an editor providing >> feedback) - beta release (publish a PDF - this is the many eyes bit) >> - final chapters and more editing >> - proof reading >> - final edit >> - indexing >> - layout >> ... >> I'd actually love to know how a newspaper solves this - a decent newspaper >> turns out tens of thousands of words per day - news articles are >> written, proof read and edited in hours - commissioned articles are >> integrated with the news and there must be hundreds to thousands of >> contributing sources. >> ... > > The Washington Post uses ARC (https://www.arcpublishing.com/), a home-grown, > web-based publishing system. It has an article editor (Ellipsis); CMSes for > photos (Anglerfish) and video (Goldfish); a page layout editor (PageBuilder); > and tools for analytics, personalization, user experience testing, and a lot > more. They all work together seamlessly. > > Virtually everything in ARC has a web front end in HTML, Javascript, and CSS. > The back ends are written in Java or another language that runs on the JVM. > > WaPo uses ARC and it sells ARC as a service to other newspapers. As I recall, > The Globe and Mail in Toronto and Willamette Week are customers. Some other > customers are named in an article on businessinsider.com: http:// > www.businessinsider.com/the-washington-post-is-growing-its-arc-publishing- > business-2016-6 > > > > > From vimal7370@REDACTED Thu Dec 28 21:12:53 2017 From: vimal7370@REDACTED (Vimal Kumar) Date: Fri, 29 Dec 2017 01:42:53 +0530 Subject: [erlang-questions] Using SQLite3 in Erlang Message-ID: Hi list, How are you connecting to SQLite3 from Erlang? I can't seem to find any actively maintained repo in github. Curious to know what Erlangers out there are using for the purpose. Regards, Vimal -------------- next part -------------- An HTML attachment was scrubbed... URL: From dmkolesnikov@REDACTED Thu Dec 28 22:09:06 2017 From: dmkolesnikov@REDACTED (Dmitry Kolesnikov) Date: Thu, 28 Dec 2017 23:09:06 +0200 Subject: [erlang-questions] Using SQLite3 in Erlang In-Reply-To: References: Message-ID: <70C99F7F-9463-45EF-B342-7DB7D1768691@gmail.com> Hello, I am using ets/dets/eleveldb/mnesia instead of any other embedded database solution. Best Regards, Dmitry > On 28 Dec 2017, at 22.12, Vimal Kumar wrote: > > Hi list, > > How are you connecting to SQLite3 from Erlang? I can't seem to find any actively maintained repo in github. Curious to know what Erlangers out there are using for the purpose. > > Regards, > Vimal > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From goodjoe2049@REDACTED Thu Dec 28 13:26:34 2017 From: goodjoe2049@REDACTED (Joe K) Date: Thu, 28 Dec 2017 15:26:34 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: Oops, I forgot to reply to the mailing list in my last email. The response was > Maybe browser sends STUN requests to your port when you expect DTLS hello? You are absolutely right, Wireshark shows that there are lots of STUN binding requests being made, I didn't think of that. > Do you use external STUN server? I don't use external STUN servers ... For some reason, I didn't think I would need them. > Also try checking chrome://webrtc-internals and chrome://webrtc-logs for browser's view on what's going on. chrome://webrtc-logs is empty for the webrtc whole session. But now I don't know how to reply to both STUN binding request and then setup a DTLS session using erlang's ssl module. On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: > Hi! > What do you see in Wireshark? > Did you see handshake between two browsers? > Is your application ready to receive the packet sent by browser? > Do you use external STUN server? > Maybe browser sends STUN requests to your port when you expect DTLS hello? > > Also try checking chrome://webrtc-internals and chrome://webrtc-logs for > browser's view on what's going on. > > > On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: > >> I'm trying to implement parts of webrtc stack with elixir/erlang and >> currently am stuck with setting up a dtls session. >> >> The minimal example is, I think, the following (in console, erlang >> 20.2.2): >> >> 2> ssl:start(). >> ok >> 3> {ok, ListenSocket} = ssl:listen(8090, [ >> 3> binary, >> 3> {ip, {0, 0, 0, 0}}, >> 3> {protocol, dtls}, >> 3> {keyfile, <<"priv/server.key">>}, >> 3> {certfile, <<"priv/server.pem">>}, >> 3> {active, false} >> 3> ]). >> {ok, ...} >> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >> {ok,...} >> 5> ssl:ssl_accept(AcceptSocket). >> {error,{tls_alert,"record overflow"}} >> >> And js (with chrome canary): https://gist.github.c >> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >> >> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >> iceConnectionState becomes "failed" and the connection itself "closed". >> >> I wonder what I am doing wrong. >> >> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >> >> works fine with the code snippet above. >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> > > > -- > Danil Zagoskin | z@REDACTED > -------------- next part -------------- An HTML attachment was scrubbed... URL: From goodjoe2049@REDACTED Thu Dec 28 13:45:48 2017 From: goodjoe2049@REDACTED (Joe K) Date: Thu, 28 Dec 2017 15:45:48 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: I don't think I can use `gen_udp:recv` on port returned in ` ssl:transport_accept(ListenSocket)` (sorry for elixir terms): {:ok, {:sslsocket, {:gen_udp, {#PID<0.118.0>, {{{127, 0, 0, 1}, 54052}, #Port<0.1764>}}, :dtls_connection}, #PID<0.143.0>}} With elixir (`port` is the `#Port<...>` from above) :get_udp.recv(port, 0) returns `{:error, :einval}` On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: > Oops, I forgot to reply to the mailing list in my last email. > > The response was > > > Maybe browser sends STUN requests to your port when you expect DTLS > hello? > You are absolutely right, Wireshark shows that there are lots of STUN > binding requests being made, I didn't think of that. > > > Do you use external STUN server? > I don't use external STUN servers ... For some reason, I didn't think I > would need them. > > > Also try checking chrome://webrtc-internals and chrome://webrtc-logs > for browser's view on what's going on. > chrome://webrtc-logs is empty for the webrtc whole session. > > But now I don't know how to reply to both STUN binding request and then > setup a DTLS session using erlang's ssl module. > > On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: > >> Hi! >> What do you see in Wireshark? >> Did you see handshake between two browsers? >> Is your application ready to receive the packet sent by browser? >> Do you use external STUN server? >> Maybe browser sends STUN requests to your port when you expect DTLS hello? >> >> Also try checking chrome://webrtc-internals and chrome://webrtc-logs for >> browser's view on what's going on. >> >> >> On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: >> >>> I'm trying to implement parts of webrtc stack with elixir/erlang and >>> currently am stuck with setting up a dtls session. >>> >>> The minimal example is, I think, the following (in console, erlang >>> 20.2.2): >>> >>> 2> ssl:start(). >>> ok >>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>> 3> binary, >>> 3> {ip, {0, 0, 0, 0}}, >>> 3> {protocol, dtls}, >>> 3> {keyfile, <<"priv/server.key">>}, >>> 3> {certfile, <<"priv/server.pem">>}, >>> 3> {active, false} >>> 3> ]). >>> {ok, ...} >>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>> {ok,...} >>> 5> ssl:ssl_accept(AcceptSocket). >>> {error,{tls_alert,"record overflow"}} >>> >>> And js (with chrome canary): https://gist.github.c >>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>> >>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>> iceConnectionState becomes "failed" and the connection itself "closed". >>> >>> I wonder what I am doing wrong. >>> >>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>> >>> works fine with the code snippet above. >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >> >> >> -- >> Danil Zagoskin | z@REDACTED >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From talmage@REDACTED Thu Dec 28 16:48:21 2017 From: talmage@REDACTED (David Talmage) Date: Thu, 28 Dec 2017 10:48:21 -0500 Subject: [erlang-questions] Erlang as a tool for human communication -- was GUI development In-Reply-To: References: Message-ID: <3991677.qXz0WsNOic@facteur> On Friday, December 22, 2017 7:33:30 AM EST Joe Armstrong wrote: > ... > The model of documentation I would like to see is: > > - One author many eyes > ... > - Beautiful output > ... > - Easy to organise the input > ... > - Low barrier for entry to comments > ... > - Parseable document tree > ... > - Extensible > ... > The stages involved were > > - authoring > - editing (this was chapter by chapter with an editor providing > feedback) - beta release (publish a PDF - this is the many eyes bit) > - final chapters and more editing > - proof reading > - final edit > - indexing > - layout > ... > I'd actually love to know how a newspaper solves this - a decent newspaper > turns out tens of thousands of words per day - news articles are > written, proof read and edited in hours - commissioned articles are > integrated with the news and there must be hundreds to thousands of > contributing sources. > ... The Washington Post uses ARC (https://www.arcpublishing.com/), a home-grown, web-based publishing system. It has an article editor (Ellipsis); CMSes for photos (Anglerfish) and video (Goldfish); a page layout editor (PageBuilder); and tools for analytics, personalization, user experience testing, and a lot more. They all work together seamlessly. Virtually everything in ARC has a web front end in HTML, Javascript, and CSS. The back ends are written in Java or another language that runs on the JVM. WaPo uses ARC and it sells ARC as a service to other newspapers. As I recall, The Globe and Mail in Toronto and Willamette Week are customers. Some other customers are named in an article on businessinsider.com: http:// www.businessinsider.com/the-washington-post-is-growing-its-arc-publishing- business-2016-6 From goodjoe2049@REDACTED Fri Dec 29 12:21:58 2017 From: goodjoe2049@REDACTED (Joe K) Date: Fri, 29 Dec 2017 14:21:58 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: > Also you may try using external STUN server (check RTCPeerConnection docs) and hope browser starts with DTLS hello. I've tried that, but the browser still sends STUN binding requests to the DTLS process. And it uses the STUN server just to find out it's address. > It should be quite easy to implement and it would be consistent with ssl:connect/2 and ssl:ssl_accept for TCP sockets. Will try this now. Thank you. On Thu, Dec 28, 2017 at 4:34 PM, Danil Zagoskin wrote: > > But now I don't know how to reply to both STUN binding request and then > setup a DTLS session using erlang's ssl module. > Yes, dtls implementation lacks support of starting/accepting a handshake > over existing socket. > It should be quite easy to implement and it would be consistent with > ssl:connect/2 and ssl:ssl_accept for TCP sockets. > > Also you may try using external STUN server (check RTCPeerConnection docs) > and hope browser starts with DTLS hello. > If you try this, please share the results. > > On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: > >> Oops, I forgot to reply to the mailing list in my last email. >> >> The response was >> >> > Maybe browser sends STUN requests to your port when you expect DTLS >> hello? >> You are absolutely right, Wireshark shows that there are lots of STUN >> binding requests being made, I didn't think of that. >> >> > Do you use external STUN server? >> I don't use external STUN servers ... For some reason, I didn't think I >> would need them. >> >> > Also try checking chrome://webrtc-internals and chrome://webrtc-logs >> for browser's view on what's going on. >> chrome://webrtc-logs is empty for the webrtc whole session. >> >> But now I don't know how to reply to both STUN binding request and then >> setup a DTLS session using erlang's ssl module. >> >> On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: >> >>> Hi! >>> What do you see in Wireshark? >>> Did you see handshake between two browsers? >>> Is your application ready to receive the packet sent by browser? >>> Do you use external STUN server? >>> Maybe browser sends STUN requests to your port when you expect DTLS >>> hello? >>> >>> Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>> for browser's view on what's going on. >>> >>> >>> On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: >>> >>>> I'm trying to implement parts of webrtc stack with elixir/erlang and >>>> currently am stuck with setting up a dtls session. >>>> >>>> The minimal example is, I think, the following (in console, erlang >>>> 20.2.2): >>>> >>>> 2> ssl:start(). >>>> ok >>>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>>> 3> binary, >>>> 3> {ip, {0, 0, 0, 0}}, >>>> 3> {protocol, dtls}, >>>> 3> {keyfile, <<"priv/server.key">>}, >>>> 3> {certfile, <<"priv/server.pem">>}, >>>> 3> {active, false} >>>> 3> ]). >>>> {ok, ...} >>>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>>> {ok,...} >>>> 5> ssl:ssl_accept(AcceptSocket). >>>> {error,{tls_alert,"record overflow"}} >>>> >>>> And js (with chrome canary): https://gist.github.c >>>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>>> >>>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>>> iceConnectionState becomes "failed" and the connection itself "closed". >>>> >>>> I wonder what I am doing wrong. >>>> >>>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>>> >>>> works fine with the code snippet above. >>>> >>>> _______________________________________________ >>>> erlang-questions mailing list >>>> erlang-questions@REDACTED >>>> http://erlang.org/mailman/listinfo/erlang-questions >>>> >>>> >>> >>> >>> -- >>> Danil Zagoskin | z@REDACTED >>> >> >> > > > -- > Danil Zagoskin | z@REDACTED > -------------- next part -------------- An HTML attachment was scrubbed... URL: From goodjoe2049@REDACTED Fri Dec 29 13:15:16 2017 From: goodjoe2049@REDACTED (Joe K) Date: Fri, 29 Dec 2017 15:15:16 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: Tried this, hoped it would work, but it didn't ... 1> {ok, Socket} = gen_udp:open(9090, [binary, {active, false}]). {ok,#Port<0.441>} 2> dtls:connect(Socket, []). {error,{options,{not_supported,{packet,0}}}} On Fri, Dec 29, 2017 at 2:21 PM, Joe K wrote: > > Also you may try using external STUN server (check RTCPeerConnection > docs) and hope browser starts with DTLS hello. > > I've tried that, but the browser still sends STUN binding requests to the > DTLS process. And it uses the STUN server just to find out it's address. > > > It should be quite easy to implement and it would be consistent with > ssl:connect/2 and ssl:ssl_accept for TCP sockets. > > Will try this now. Thank you. > > On Thu, Dec 28, 2017 at 4:34 PM, Danil Zagoskin wrote: > >> > But now I don't know how to reply to both STUN binding request and >> then setup a DTLS session using erlang's ssl module. >> Yes, dtls implementation lacks support of starting/accepting a handshake >> over existing socket. >> It should be quite easy to implement and it would be consistent with >> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >> >> Also you may try using external STUN server (check RTCPeerConnection >> docs) and hope browser starts with DTLS hello. >> If you try this, please share the results. >> >> On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: >> >>> Oops, I forgot to reply to the mailing list in my last email. >>> >>> The response was >>> >>> > Maybe browser sends STUN requests to your port when you expect DTLS >>> hello? >>> You are absolutely right, Wireshark shows that there are lots of STUN >>> binding requests being made, I didn't think of that. >>> >>> > Do you use external STUN server? >>> I don't use external STUN servers ... For some reason, I didn't think >>> I would need them. >>> >>> > Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>> for browser's view on what's going on. >>> chrome://webrtc-logs is empty for the webrtc whole session. >>> >>> But now I don't know how to reply to both STUN binding request and then >>> setup a DTLS session using erlang's ssl module. >>> >>> On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: >>> >>>> Hi! >>>> What do you see in Wireshark? >>>> Did you see handshake between two browsers? >>>> Is your application ready to receive the packet sent by browser? >>>> Do you use external STUN server? >>>> Maybe browser sends STUN requests to your port when you expect DTLS >>>> hello? >>>> >>>> Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>> for browser's view on what's going on. >>>> >>>> >>>> On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: >>>> >>>>> I'm trying to implement parts of webrtc stack with elixir/erlang and >>>>> currently am stuck with setting up a dtls session. >>>>> >>>>> The minimal example is, I think, the following (in console, erlang >>>>> 20.2.2): >>>>> >>>>> 2> ssl:start(). >>>>> ok >>>>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>>>> 3> binary, >>>>> 3> {ip, {0, 0, 0, 0}}, >>>>> 3> {protocol, dtls}, >>>>> 3> {keyfile, <<"priv/server.key">>}, >>>>> 3> {certfile, <<"priv/server.pem">>}, >>>>> 3> {active, false} >>>>> 3> ]). >>>>> {ok, ...} >>>>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>>>> {ok,...} >>>>> 5> ssl:ssl_accept(AcceptSocket). >>>>> {error,{tls_alert,"record overflow"}} >>>>> >>>>> And js (with chrome canary): https://gist.github.c >>>>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>>>> >>>>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>>>> iceConnectionState becomes "failed" and the connection itself "closed". >>>>> >>>>> I wonder what I am doing wrong. >>>>> >>>>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>>>> >>>>> works fine with the code snippet above. >>>>> >>>>> _______________________________________________ >>>>> erlang-questions mailing list >>>>> erlang-questions@REDACTED >>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>> >>>>> >>>> >>>> >>>> -- >>>> Danil Zagoskin | z@REDACTED >>>> >>> >>> >> >> >> -- >> Danil Zagoskin | z@REDACTED >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From heinz@REDACTED Fri Dec 29 14:18:15 2017 From: heinz@REDACTED (Heinz N. Gies) Date: Fri, 29 Dec 2017 14:18:15 +0100 Subject: [erlang-questions] Using SQLite3 in Erlang In-Reply-To: References: Message-ID: <29E0A8B6-2A48-46D2-8BCA-5D325D6BEF78@licenser.net> I?m using the esqlite hex package, works well but as always YMMV > On 28. Dec 2017, at 21:12, Vimal Kumar wrote: > > Hi list, > > How are you connecting to SQLite3 from Erlang? I can't seem to find any actively maintained repo in github. Curious to know what Erlangers out there are using for the purpose. > > Regards, > Vimal > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions From federico.carrone@REDACTED Fri Dec 29 14:48:47 2017 From: federico.carrone@REDACTED (Federico Carrone) Date: Fri, 29 Dec 2017 10:48:47 -0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: Joe, We are creating an open source erlang webrtc server replacement for appear.in. You can check it here: https://github.com/lambdaclass/webrtc-server We are using the processone stun library. I am not sure if this mail is of any help but might be interested in checking it since it is working fine. Regards, Federico. On Fri, Dec 29, 2017 at 9:15 AM, Joe K wrote: > Tried this, hoped it would work, but it didn't ... > > 1> {ok, Socket} = gen_udp:open(9090, [binary, {active, false}]). > {ok,#Port<0.441>} > 2> dtls:connect(Socket, []). > {error,{options,{not_supported,{packet,0}}}} > > On Fri, Dec 29, 2017 at 2:21 PM, Joe K wrote: > >> > Also you may try using external STUN server (check RTCPeerConnection >> docs) and hope browser starts with DTLS hello. >> >> I've tried that, but the browser still sends STUN binding requests to the >> DTLS process. And it uses the STUN server just to find out it's address. >> >> > It should be quite easy to implement and it would be consistent with >> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >> >> Will try this now. Thank you. >> >> On Thu, Dec 28, 2017 at 4:34 PM, Danil Zagoskin wrote: >> >>> > But now I don't know how to reply to both STUN binding request and >>> then setup a DTLS session using erlang's ssl module. >>> Yes, dtls implementation lacks support of starting/accepting a handshake >>> over existing socket. >>> It should be quite easy to implement and it would be consistent with >>> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >>> >>> Also you may try using external STUN server (check RTCPeerConnection >>> docs) and hope browser starts with DTLS hello. >>> If you try this, please share the results. >>> >>> On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: >>> >>>> Oops, I forgot to reply to the mailing list in my last email. >>>> >>>> The response was >>>> >>>> > Maybe browser sends STUN requests to your port when you expect DTLS >>>> hello? >>>> You are absolutely right, Wireshark shows that there are lots of STUN >>>> binding requests being made, I didn't think of that. >>>> >>>> > Do you use external STUN server? >>>> I don't use external STUN servers ... For some reason, I didn't think >>>> I would need them. >>>> >>>> > Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>> for browser's view on what's going on. >>>> chrome://webrtc-logs is empty for the webrtc whole session. >>>> >>>> But now I don't know how to reply to both STUN binding request and then >>>> setup a DTLS session using erlang's ssl module. >>>> >>>> On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: >>>> >>>>> Hi! >>>>> What do you see in Wireshark? >>>>> Did you see handshake between two browsers? >>>>> Is your application ready to receive the packet sent by browser? >>>>> Do you use external STUN server? >>>>> Maybe browser sends STUN requests to your port when you expect DTLS >>>>> hello? >>>>> >>>>> Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>>> for browser's view on what's going on. >>>>> >>>>> >>>>> On Thu, Dec 28, 2017 at 12:09 AM, Joe K wrote: >>>>> >>>>>> I'm trying to implement parts of webrtc stack with elixir/erlang and >>>>>> currently am stuck with setting up a dtls session. >>>>>> >>>>>> The minimal example is, I think, the following (in console, erlang >>>>>> 20.2.2): >>>>>> >>>>>> 2> ssl:start(). >>>>>> ok >>>>>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>>>>> 3> binary, >>>>>> 3> {ip, {0, 0, 0, 0}}, >>>>>> 3> {protocol, dtls}, >>>>>> 3> {keyfile, <<"priv/server.key">>}, >>>>>> 3> {certfile, <<"priv/server.pem">>}, >>>>>> 3> {active, false} >>>>>> 3> ]). >>>>>> {ok, ...} >>>>>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>>>>> {ok,...} >>>>>> 5> ssl:ssl_accept(AcceptSocket). >>>>>> {error,{tls_alert,"record overflow"}} >>>>>> >>>>>> And js (with chrome canary): https://gist.github.c >>>>>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>>>>> >>>>>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>>>>> iceConnectionState becomes "failed" and the connection itself "closed". >>>>>> >>>>>> I wonder what I am doing wrong. >>>>>> >>>>>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>>>>> >>>>>> works fine with the code snippet above. >>>>>> >>>>>> _______________________________________________ >>>>>> erlang-questions mailing list >>>>>> erlang-questions@REDACTED >>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Danil Zagoskin | z@REDACTED >>>>> >>>> >>>> >>> >>> >>> -- >>> Danil Zagoskin | z@REDACTED >>> >> >> > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From z@REDACTED Fri Dec 29 15:47:28 2017 From: z@REDACTED (Danil Zagoskin) Date: Fri, 29 Dec 2017 17:47:28 +0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: Hi Federico! Is it just signalling server? E.g. do you handle all the DTLS+SRTP stuff or just build a full mesh of participants? On Fri, Dec 29, 2017 at 4:48 PM, Federico Carrone < federico.carrone@REDACTED> wrote: > Joe, > > We are creating an open source erlang webrtc server replacement for > appear.in. You can check it here: https://github.com/ > lambdaclass/webrtc-server > > We are using the processone stun library. I am not sure if this mail is of > any help but might be interested in checking it since it is working fine. > > Regards, > Federico. > > On Fri, Dec 29, 2017 at 9:15 AM, Joe K wrote: > >> Tried this, hoped it would work, but it didn't ... >> >> 1> {ok, Socket} = gen_udp:open(9090, [binary, {active, false}]). >> {ok,#Port<0.441>} >> 2> dtls:connect(Socket, []). >> {error,{options,{not_supported,{packet,0}}}} >> >> On Fri, Dec 29, 2017 at 2:21 PM, Joe K wrote: >> >>> > Also you may try using external STUN server (check RTCPeerConnection >>> docs) and hope browser starts with DTLS hello. >>> >>> I've tried that, but the browser still sends STUN binding requests to >>> the DTLS process. And it uses the STUN server just to find out it's address. >>> >>> > It should be quite easy to implement and it would be consistent with >>> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >>> >>> Will try this now. Thank you. >>> >>> On Thu, Dec 28, 2017 at 4:34 PM, Danil Zagoskin wrote: >>> >>>> > But now I don't know how to reply to both STUN binding request and >>>> then setup a DTLS session using erlang's ssl module. >>>> Yes, dtls implementation lacks support of starting/accepting a >>>> handshake over existing socket. >>>> It should be quite easy to implement and it would be consistent with >>>> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >>>> >>>> Also you may try using external STUN server (check RTCPeerConnection >>>> docs) and hope browser starts with DTLS hello. >>>> If you try this, please share the results. >>>> >>>> On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: >>>> >>>>> Oops, I forgot to reply to the mailing list in my last email. >>>>> >>>>> The response was >>>>> >>>>> > Maybe browser sends STUN requests to your port when you expect >>>>> DTLS hello? >>>>> You are absolutely right, Wireshark shows that there are lots of >>>>> STUN binding requests being made, I didn't think of that. >>>>> >>>>> > Do you use external STUN server? >>>>> I don't use external STUN servers ... For some reason, I didn't >>>>> think I would need them. >>>>> >>>>> > Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>>> for browser's view on what's going on. >>>>> chrome://webrtc-logs is empty for the webrtc whole session. >>>>> >>>>> But now I don't know how to reply to both STUN binding request and >>>>> then setup a DTLS session using erlang's ssl module. >>>>> >>>>> On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: >>>>> >>>>>> Hi! >>>>>> What do you see in Wireshark? >>>>>> Did you see handshake between two browsers? >>>>>> Is your application ready to receive the packet sent by browser? >>>>>> Do you use external STUN server? >>>>>> Maybe browser sends STUN requests to your port when you expect DTLS >>>>>> hello? >>>>>> >>>>>> Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>>>> for browser's view on what's going on. >>>>>> >>>>>> >>>>>> On Thu, Dec 28, 2017 at 12:09 AM, Joe K >>>>>> wrote: >>>>>> >>>>>>> I'm trying to implement parts of webrtc stack with elixir/erlang and >>>>>>> currently am stuck with setting up a dtls session. >>>>>>> >>>>>>> The minimal example is, I think, the following (in console, erlang >>>>>>> 20.2.2): >>>>>>> >>>>>>> 2> ssl:start(). >>>>>>> ok >>>>>>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>>>>>> 3> binary, >>>>>>> 3> {ip, {0, 0, 0, 0}}, >>>>>>> 3> {protocol, dtls}, >>>>>>> 3> {keyfile, <<"priv/server.key">>}, >>>>>>> 3> {certfile, <<"priv/server.pem">>}, >>>>>>> 3> {active, false} >>>>>>> 3> ]). >>>>>>> {ok, ...} >>>>>>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>>>>>> {ok,...} >>>>>>> 5> ssl:ssl_accept(AcceptSocket). >>>>>>> {error,{tls_alert,"record overflow"}} >>>>>>> >>>>>>> And js (with chrome canary): https://gist.github.c >>>>>>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>>>>>> >>>>>>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>>>>>> iceConnectionState becomes "failed" and the connection itself "closed". >>>>>>> >>>>>>> I wonder what I am doing wrong. >>>>>>> >>>>>>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>>>>>> >>>>>>> works fine with the code snippet above. >>>>>>> >>>>>>> _______________________________________________ >>>>>>> erlang-questions mailing list >>>>>>> erlang-questions@REDACTED >>>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Danil Zagoskin | z@REDACTED >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Danil Zagoskin | z@REDACTED >>>> >>> >>> >> >> _______________________________________________ >> erlang-questions mailing list >> erlang-questions@REDACTED >> http://erlang.org/mailman/listinfo/erlang-questions >> >> > -- Danil Zagoskin | z@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From facundo.olano@REDACTED Fri Dec 29 15:55:36 2017 From: facundo.olano@REDACTED (Facundo Olano) Date: Fri, 29 Dec 2017 11:55:36 -0300 Subject: [erlang-questions] dtls error when used with chrome webrtc In-Reply-To: References: Message-ID: Hi Danil! The server code is for signaling (using websockets), but it also includes processone/stun as a dependency, so it handles STUN/TURN as well. It also contains a couple of example applications that server javascript clients that connect to the server (both for signaling and ICE). The multiparty example uses a mesh. To be honest I don't know what DTLS+SRTP is about :P Thanks, Facundo. On Fri, Dec 29, 2017 at 11:47 AM, Danil Zagoskin wrote: > Hi Federico! > > Is it just signalling server? > E.g. do you handle all the DTLS+SRTP stuff or just build a full mesh of > participants? > > On Fri, Dec 29, 2017 at 4:48 PM, Federico Carrone < > federico.carrone@REDACTED> wrote: > >> Joe, >> >> We are creating an open source erlang webrtc server replacement for >> appear.in. You can check it here: https://github.com/lambdaclass >> /webrtc-server >> >> We are using the processone stun library. I am not sure if this mail is >> of any help but might be interested in checking it since it is working fine. >> >> Regards, >> Federico. >> >> On Fri, Dec 29, 2017 at 9:15 AM, Joe K wrote: >> >>> Tried this, hoped it would work, but it didn't ... >>> >>> 1> {ok, Socket} = gen_udp:open(9090, [binary, {active, false}]). >>> {ok,#Port<0.441>} >>> 2> dtls:connect(Socket, []). >>> {error,{options,{not_supported,{packet,0}}}} >>> >>> On Fri, Dec 29, 2017 at 2:21 PM, Joe K wrote: >>> >>>> > Also you may try using external STUN server (check RTCPeerConnection >>>> docs) and hope browser starts with DTLS hello. >>>> >>>> I've tried that, but the browser still sends STUN binding requests to >>>> the DTLS process. And it uses the STUN server just to find out it's address. >>>> >>>> > It should be quite easy to implement and it would be consistent with >>>> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >>>> >>>> Will try this now. Thank you. >>>> >>>> On Thu, Dec 28, 2017 at 4:34 PM, Danil Zagoskin wrote: >>>> >>>>> > But now I don't know how to reply to both STUN binding request and >>>>> then setup a DTLS session using erlang's ssl module. >>>>> Yes, dtls implementation lacks support of starting/accepting a >>>>> handshake over existing socket. >>>>> It should be quite easy to implement and it would be consistent with >>>>> ssl:connect/2 and ssl:ssl_accept for TCP sockets. >>>>> >>>>> Also you may try using external STUN server (check RTCPeerConnection >>>>> docs) and hope browser starts with DTLS hello. >>>>> If you try this, please share the results. >>>>> >>>>> On Thu, Dec 28, 2017 at 3:26 PM, Joe K wrote: >>>>> >>>>>> Oops, I forgot to reply to the mailing list in my last email. >>>>>> >>>>>> The response was >>>>>> >>>>>> > Maybe browser sends STUN requests to your port when you expect >>>>>> DTLS hello? >>>>>> You are absolutely right, Wireshark shows that there are lots of >>>>>> STUN binding requests being made, I didn't think of that. >>>>>> >>>>>> > Do you use external STUN server? >>>>>> I don't use external STUN servers ... For some reason, I didn't >>>>>> think I would need them. >>>>>> >>>>>> > Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>>>> for browser's view on what's going on. >>>>>> chrome://webrtc-logs is empty for the webrtc whole session. >>>>>> >>>>>> But now I don't know how to reply to both STUN binding request and >>>>>> then setup a DTLS session using erlang's ssl module. >>>>>> >>>>>> On Thu, Dec 28, 2017 at 1:28 AM, Danil Zagoskin wrote: >>>>>> >>>>>>> Hi! >>>>>>> What do you see in Wireshark? >>>>>>> Did you see handshake between two browsers? >>>>>>> Is your application ready to receive the packet sent by browser? >>>>>>> Do you use external STUN server? >>>>>>> Maybe browser sends STUN requests to your port when you expect DTLS >>>>>>> hello? >>>>>>> >>>>>>> Also try checking chrome://webrtc-internals and chrome://webrtc-logs >>>>>>> for browser's view on what's going on. >>>>>>> >>>>>>> >>>>>>> On Thu, Dec 28, 2017 at 12:09 AM, Joe K >>>>>>> wrote: >>>>>>> >>>>>>>> I'm trying to implement parts of webrtc stack with elixir/erlang >>>>>>>> and currently am stuck with setting up a dtls session. >>>>>>>> >>>>>>>> The minimal example is, I think, the following (in console, erlang >>>>>>>> 20.2.2): >>>>>>>> >>>>>>>> 2> ssl:start(). >>>>>>>> ok >>>>>>>> 3> {ok, ListenSocket} = ssl:listen(8090, [ >>>>>>>> 3> binary, >>>>>>>> 3> {ip, {0, 0, 0, 0}}, >>>>>>>> 3> {protocol, dtls}, >>>>>>>> 3> {keyfile, <<"priv/server.key">>}, >>>>>>>> 3> {certfile, <<"priv/server.pem">>}, >>>>>>>> 3> {active, false} >>>>>>>> 3> ]). >>>>>>>> {ok, ...} >>>>>>>> 4> {ok, AcceptSocket} = ssl:transport_accept(ListenSocket). >>>>>>>> {ok,...} >>>>>>>> 5> ssl:ssl_accept(AcceptSocket). >>>>>>>> {error,{tls_alert,"record overflow"}} >>>>>>>> >>>>>>>> And js (with chrome canary): https://gist.github.c >>>>>>>> om/idi-ot/a07b7330ff02f90373a2dcfe83883afa >>>>>>>> >>>>>>>> After {error,{tls_alert,"record overflow"}} the RTCPeerConnection's >>>>>>>> iceConnectionState becomes "failed" and the connection itself "closed". >>>>>>>> >>>>>>>> I wonder what I am doing wrong. >>>>>>>> >>>>>>>> openssl s_client -dtls1 -connect 127.0.0.1:8089 -debug >>>>>>>> >>>>>>>> works fine with the code snippet above. >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> erlang-questions mailing list >>>>>>>> erlang-questions@REDACTED >>>>>>>> http://erlang.org/mailman/listinfo/erlang-questions >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Danil Zagoskin | z@REDACTED >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Danil Zagoskin | z@REDACTED >>>>> >>>> >>>> >>> >>> _______________________________________________ >>> erlang-questions mailing list >>> erlang-questions@REDACTED >>> http://erlang.org/mailman/listinfo/erlang-questions >>> >>> >> > > > -- > Danil Zagoskin | z@REDACTED > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alangingras@REDACTED Fri Dec 29 18:34:49 2017 From: alangingras@REDACTED (Alan Gingras) Date: Fri, 29 Dec 2017 12:34:49 -0500 Subject: [erlang-questions] GUI development with Erlang In-Reply-To: References: <3589a8eb738ed5801027fac6ec225bcf@riseup.net> <000501d370ea$cde23ad0$69a6b070$@comcast.net> Message-ID: <000201d380cb$54724e10$fd56ea30$@comcast.net> Arif, I have now worked my way through all of your wxerlang-getting-started document. Again, I think it is terrific. I did have to add a "startGame" function to actually start the "chess clock" in both flavors (gen_server and wx_object). And I modified the handle_info function for 'reset' to start tell player 1 to move. The startGame/1 method was: startGame( N ) -> ?SERVER ! { reset, N }. And the handle reset method is now: handle_info({reset, N}, State) -> player1 ! {reset, N}, player2 ! {reset, N}, player1 ! move, {noreply, State}; And to get the clock going: 10> arbiter:start_link(). {ok, <0.207.0>} 11>arbiter:startGame( 10 ). {reset,10} 12> Or: 52> wo_arbiter:start_link (). {wx_ref,35,wxFrame,<0.363.0>} 53> wo_arbiter: startGame( 10 ). {reset,10} 54> Thanks again for the tutorial. I hope other find it as instructive as I did. Sincerely yours, Alan From goodjoe2049@REDACTED Sat Dec 30 18:52:15 2017 From: goodjoe2049@REDACTED (Joe K) Date: Sat, 30 Dec 2017 20:52:15 +0300 Subject: [erlang-questions] packet and packet_size options in dlls socket Message-ID: Why is `packet` one of the default options here https://github.com/erlang/otp/blob/master/lib/ssl/src/dtls_socket.erl#L142-L143 default_inet_values() -> [{active, true}, {mode, list}, {packet, 0}, {packet_size, 0}]. But is then prohibited here https://github.com/erlang/otp/blob/master/lib/ssl/src/dtls_socket.erl#L173-L174 emulated_options([{packet, _} = Opt | _], _, _) -> throw({error, {options, {not_supported, Opt}}}); Same for `packet_size` option. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jesper.louis.andersen@REDACTED Sat Dec 30 20:21:27 2017 From: jesper.louis.andersen@REDACTED (Jesper Louis Andersen) Date: Sat, 30 Dec 2017 19:21:27 +0000 Subject: [erlang-questions] packet and packet_size options in dlls socket In-Reply-To: References: Message-ID: Pure guess: Because UDP is an unreliable protocol and thus has no support for the "packet" option (whereas TCP does). My guess is that {packet, 0} has no real effect in the default option list. On Sat, Dec 30, 2017 at 6:52 PM Joe K wrote: > Why is `packet` one of the default options here > > https://github.com/erlang/otp/blob/master/lib/ssl/src/dtls_socket.erl#L142-L143 > > default_inet_values() -> > [{active, true}, {mode, list}, {packet, 0}, {packet_size, 0}]. > > But is then prohibited here > > https://github.com/erlang/otp/blob/master/lib/ssl/src/dtls_socket.erl#L173-L174 > > emulated_options([{packet, _} = Opt | _], _, _) -> > throw({error, {options, {not_supported, Opt}}}); > > Same for `packet_size` option. > > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > -------------- next part -------------- An HTML attachment was scrubbed... URL: From goodjoe2049@REDACTED Sun Dec 31 14:41:42 2017 From: goodjoe2049@REDACTED (Joe K) Date: Sun, 31 Dec 2017 16:41:42 +0300 Subject: [erlang-questions] socket argument for ssl_connection:socket_control Message-ID: Why is socket not a port, but a tuple for dtls_connection? https://github.com/erlang/otp/blob/master/lib/ssl/src/ssl_connection.erl#L164 -------------- next part -------------- An HTML attachment was scrubbed... URL: From z@REDACTED Sun Dec 31 15:57:18 2017 From: z@REDACTED (Danil Zagoskin) Date: Sun, 31 Dec 2017 17:57:18 +0300 Subject: [erlang-questions] socket argument for ssl_connection:socket_control In-Reply-To: References: Message-ID: Hi! It's because a socket in ssl app (TLS, DTLS) is an Erlang process. Port is used internally only for TCP/UDP transport, and higher-level operations (handshake, encoding, decoding, etc.) are performed by a dedicated worker written in Erlang. A tuple you see is needed to identify that worker. It also contains some other data, but the main part is the worker pid. On Sun, Dec 31, 2017 at 4:41 PM, Joe K wrote: > Why is socket not a port, but a tuple for dtls_connection? > > https://github.com/erlang/otp/blob/master/lib/ssl/src/ssl_ > connection.erl#L164 > > _______________________________________________ > erlang-questions mailing list > erlang-questions@REDACTED > http://erlang.org/mailman/listinfo/erlang-questions > > -- Danil Zagoskin | z@REDACTED -------------- next part -------------- An HTML attachment was scrubbed... URL: From g@REDACTED Sun Dec 31 20:56:42 2017 From: g@REDACTED (Guilherme Andrade) Date: Sun, 31 Dec 2017 19:56:42 +0000 Subject: [erlang-questions] [ANN] locus: Geolocation and ASN lookup of IP addresses Message-ID: Hello list, I'm pleased to announce the release of locus 1.0.0, a library that allows you to pinpoint the country, city or ASN of IPv4 and IPv6 addresses, using MaxMind's GeoLite2 databases. The MaxMind databases[1] you choose are downloaded on-demand, cached on the filesystem and updated automatically. * Overview: https://github.com/g-andrade/locus/blob/master/doc/README.md * Hex.pm package: https://hex.pm/packages/locus * API reference: https://github.com/g-andrade/locus/blob/master/doc/locus.md * Source code: https://github.com/g-andrade/locus/ The databases are loaded into memory (mostly) as-is; reference counted binaries are shared with the application callers using ETS tables, and the original binary search tree is used to lookup addresses. The data for each entry is decoded on the fly upon successful lookups. [1]: https://dev.maxmind.com/geoip/geoip2/geolite2/ -- Guilherme -------------- next part -------------- An HTML attachment was scrubbed... URL: