[Pharo-users] Best Practices for Bundling Documentation

2017-08-04 Thread Evan Donahue
Hello,

I'm working on cleaning up a couple of projects for release, and I was
wondering what the best practices were for including appropriate
documentation with projects. Should I just drop a text blob in a prominent
class comment? Is there a tool for structuring documentation? Is
documentation typically kept separate from the code? Seems natural to
include it so you never have to leave the image, but I'm not sure what most
people do.

Thanks,
Evan


[Pharo-users] problem with FLMaterializer

2017-08-04 Thread Johannes Brauer
Hi everyone,

 trying to migrate a Seaside application from Pharo4 to Pharo6 I get a problem 
with FLMaterializer.

An expression like

(FLMaterializer materializeFromFileNamed: aFileRefence)

results in
MessageNotUnderstood: FileReference>>convertToWithConverter:
The same file can be materialized in Pharo4  without problems.

Johannes


Re: [Pharo-users] Threads safety in Pharo

2017-08-04 Thread Stephane Ducasse
On Fri, Aug 4, 2017 at 7:06 PM, Alidra Abdelghani via Pharo-users <
pharo-users@lists.pharo.org> wrote:

>
>
> -- Forwarded message --
> From: Alidra Abdelghani 
> To: Guillermo Polito 
> Cc: Any question about pharo is welcome ,
> "Stéphane Ducasse" , farid arfi <
> arf...@hotmail.com>
> Bcc:
> Date: Fri, 4 Aug 2017 19:06:00 +0200
> Subject: Re: [Pharo-users] Threads safety in Pharo
> Thanks Guille for your answer,
> From what I understand, it is mainly a synchronisation problem. Why cant'
> existing synchronisation mechanisms (semaphores and mutex) be used?
>

They can but it means to analyse existing code and produce thread safe one.





> Abdelghani
>
>
> On 31 Jul 2017, at 18:44, Guillermo Polito 
> wrote:
>
> I believe there is no such a document. It would be however interesting to
> investigate it a bit deeper. In general, the problem we talk about when we
> talk about thread safety is the following: Can we run a workspace in a
> separate thread than a browser and provide correct results? Can we run two
> browsers concurrently and change code from both of them?
>
> The thread safety problem has several levels I'd say:
>
>  - the kernel of the language (classes, methods, compilation, and so on)
> cannot safely be modified while other threads are running. Thus, if we
> compile a new version of a method in a thread, that could break a separate
> thread that was using that method.
>
>  - there are several libraries using global state. We should investigate
> if they work correctly when using them concurrently.
> E.g., source code management is not thread safe. This could cause a
> source code corruption if several methods are modified concurrently.
> Like that, we sh n ould investigate all libraries and see what should
> be adapted and if there is a need at all.
>
>
>  - in a third level, general core libraries (collections, networking,
> files, etc) are not designed to be thread safe and that is natural. For
> example, most of the time you don't want that your collection is accessed
> concurrently. For such cases, some libraries could provide some
> extensions/wrappers/whatsoever to provide some synchronization mechanism.
> Otherwise it is the responsibility of the user to synchronize usages with
> semaphores/mutexes.
>
>
> On Mon, Jul 31, 2017 at 1:38 AM, Alidra Abdelghani via Pharo-users <
> pharo-users@lists.pharo.org> wrote:
>
>>
>>
>> -- Forwarded message --
>> From: Alidra Abdelghani 
>> To: pharo-users@lists.pharo.org
>> Cc: "Stéphane Ducasse" , farid arfi <
>> arf...@hotmail.com>
>> Bcc:
>> Date: Mon, 31 Jul 2017 01:38:58 +0200
>> Subject: Threads safety in Pharo
>> Hi,
>>
>> Somebody once evoked the problem of threads safety in Pharo. With a
>> friend of mine who is expert in formal methods and process scheduling, we
>> would like to have a look on it.
>> Does anyone knows a good document describing the problem of Pharo with
>> threads safety or at least any document that we can start with?
>>
>> Thanks in advance,
>> Abdelghani
>>
>>
>>
>>
>
>
> --
>
> Guille Polito
>
> Research Engineer
> French National Center for Scientific Research - *http://www.cnrs.fr*
> 
>
>
> *Web:* *http://guillep.github.io* 
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
>
>
>


Re: [Pharo-users] Threads safety in Pharo

2017-08-04 Thread Stephane Ducasse
>
> Great, I taught some of theses concepts to my students some times ago and we 
> did some fun lab sessions with the Linux scheduler
>
> This was on my todo to turn it into a book chapter for Pharo.
>
> So may be we could work together to write a little booklet on this aspect to 
> get started.
>
>
> I would love to :D

Be my guest.
I can create a booklet in no time.
I once started to collect notes on PharoLimbo/ConcurrencyBasics on github.
Start there!

Stef

>
>
> Stef
>
>
>



Re: [Pharo-users] Compiling lots of method source without debugger

2017-08-04 Thread Stephane Ducasse
Hi Patrick

Welcome :)

> Hello everyone,
>
> This is my first time here so I hope this is the right place to ask
> questions.

Yes it is.

> In an attempt to move lots of code from VA Smalltalk to Pharo, I need to
> compile a lot of methods whose code may or may not work due to missing
> classes in Pharo etc.
> I want to be able to compile these methods programatically without
> interruptions (using method source strings only) and gather all compiler
> errors that occur. What would be the best way to go about this?

The compiler insfrastructure should be improved to stop "logging"
error by writing on the Transcript
but instead produce tractable objects representing error
(shadowing...). But this is not there yet.

To support your task and other scenario we worked on UndefinedClasses
The idea is to be able to load a class even if its superclass does not
exist and without losing information.

MCHttpRepository
   location: 'http://smalltalkhub.com/mc/StephaneDucasse/PetitsBazars/main'
   user: ''
   password: ''

Package UndefinedClasses

Let us know. We did several iterations but this may be still green.



> Also: How do I control in which package a compiled method ends up if the
> target class is in a different package (Method extension)?

In pharo the importer is based on *AAA => method in package AAA


> Any help would be greatly appreciated!

Another pattern that I used to load several versions of squeak into
VisualWorks a while ago was:

Capturing exceptions
Walking the stack to extract information
Compile on the fly the superclas
Resume

Now if you have a lot of code to load, may be it is worth to
extend/modify the parser/compiler to raise
better exceptions. If you do so, please let us know because we can
introduce your hook in Pharo.
Marcus is on vacation until 21 of August.
Any feedback to support better your scenario is precious to us. Now we
did not get the incentive
to push too much (besides the UndefinedClasses), but it is the occasion.

Stef


>
> Kind regards,
> Patrick Scherer



Re: [Pharo-users] Compiling lots of method source without debugger

2017-08-04 Thread Peter Uhnak
Hi,

> This is my first time here so I hope this is the right place to ask
> questions.

It is. :)

> I want to be able to compile these methods programatically without
> interruptions (using method source strings only) and gather all compiler
> errors that occur. What would be the best way to go about this?

It is certainly a way.

Compilation errors will raise SyntaxErrorNotifications that you can capture, 
e.g.

sthClass := Object subclass: #Something.
[ sthClass compile: '^^' classified: 'protocol-name' ]
on: SyntaxErrorNotification
do: [ :err | err inspect ]

> Also: How do I control in which package a compiled method ends up if the
> target class is in a different package (Method extension)?

Methods are stored in protocols (accessing, initialization, as yet 
unclassified).
If you however start the name with an asterisk *, then the method will become 
an extension method and will be stored in the package name following the 
asterisk.


e.g.

sthClass := Object subclass: #Something.
sthClass compile: 'methodName self lives somewhere else' classified: 
'*SomewhereElse'.

> 
> Any help would be greatly appreciated!

I would (shameless self-promotion) also recommend looking at this 
https://github.com/peteruhnak/pharo-changes-builder , so you could review the 
changes before actually compiling them.

Peter



Re: [Pharo-users] Threads safety in Pharo

2017-08-04 Thread Alidra Abdelghani via Pharo-users
--- Begin Message ---
Thanks Guille for your answer,
From what I understand, it is mainly a synchronisation problem. Why cant' 
existing synchronisation mechanisms (semaphores and mutex) be used?
Abdelghani


> On 31 Jul 2017, at 18:44, Guillermo Polito  wrote:
> 
> I believe there is no such a document. It would be however interesting to 
> investigate it a bit deeper. In general, the problem we talk about when we 
> talk about thread safety is the following: Can we run a workspace in a 
> separate thread than a browser and provide correct results? Can we run two 
> browsers concurrently and change code from both of them?
> 
> The thread safety problem has several levels I'd say:
> 
>  - the kernel of the language (classes, methods, compilation, and so on) 
> cannot safely be modified while other threads are running. Thus, if we 
> compile a new version of a method in a thread, that could break a separate 
> thread that was using that method.
> 
>  - there are several libraries using global state. We should investigate if 
> they work correctly when using them concurrently.
> E.g., source code management is not thread safe. This could cause a 
> source code corruption if several methods are modified concurrently.
> Like that, we sh n ould investigate all libraries and see what should be 
> adapted and if there is a need at all.
> 
>  - in a third level, general core libraries (collections, networking, files, 
> etc) are not designed to be thread safe and that is natural. For example, 
> most of the time you don't want that your collection is accessed 
> concurrently. For such cases, some libraries could provide some 
> extensions/wrappers/whatsoever to provide some synchronization mechanism. 
> Otherwise it is the responsibility of the user to synchronize usages with 
> semaphores/mutexes.
>  
> 
> On Mon, Jul 31, 2017 at 1:38 AM, Alidra Abdelghani via Pharo-users 
> mailto:pharo-users@lists.pharo.org>> wrote:
> 
> 
> -- Forwarded message --
> From: Alidra Abdelghani mailto:alidran...@yahoo.fr>>
> To: pharo-users@lists.pharo.org 
> Cc: "Stéphane Ducasse"  >, farid arfi  >
> Bcc: 
> Date: Mon, 31 Jul 2017 01:38:58 +0200
> Subject: Threads safety in Pharo
> Hi,
> 
> Somebody once evoked the problem of threads safety in Pharo. With a friend of 
> mine who is expert in formal methods and process scheduling, we would like to 
> have a look on it.
> Does anyone knows a good document describing the problem of Pharo with 
> threads safety or at least any document that we can start with?
> 
> Thanks in advance,
> Abdelghani
> 
> 
> 
> 
> 
> 
> -- 
>
> Guille Polito
> 
> Research Engineer
> French National Center for Scientific Research - http://www.cnrs.fr 
> 
> 
> 
> Web: http://guillep.github.io 
> Phone: +33 06 52 70 66 13

--- End Message ---


[Pharo-users] How to remove packages and reclaim image size?

2017-08-04 Thread Tim Mackinnon
Hi - I’m wondering how you best remove packages in the image to reclaim space?

I am a bit confused because I see 2 package systems MCPackage and RPackage? And 
I see 2 different ways of removing things:

(MCPackage named: name) unload
(RPackage organizer packageNamed: name) unregister 

So which is the correct one to use (or are they the same?).

I’ve tried both, but then when I save my image (headless in a script) - it 
doesn’t seem to make any difference in image size. So I’m also wondering if 
there is an extra step to forcing size reduction. I have tried:

3 timesRepeat: [
Smalltalk garbageCollect.
Smalltalk cleanOutUndeclared.
Smalltalk fixObsoleteReferences].
Which is what I saw in some ImageCleaner tool, but again I don’t see any image 
size difference, which makes me wonder if I’m doing the wrong thing or missing 
a step?

Tim

Re: [Pharo-users] Glorp reconnection management (was: Re: Glorp: how to reconnect after image shutdown / load?)

2017-08-04 Thread Pierce Ng
On Thu, Aug 03, 2017 at 03:27:16PM +0200, Herby Vojčík wrote:
> Looking at state of the art code:
> GlorpSession >> loginIfError: aBlock
>   | result |
>   result := self accessor loginIfError: aBlock.
>   system platform characterEncoding: accessor encoding.
>   ^result

In the line "result := self accessor loginIfError: aBlock", "self accessor" is
not an instance of DatabaseAccessor, because

  DatabaseAccessor>>loginIfError: aBlock
self subclassResponsibility

"self accessor" is an instance of PharoDatabaseAccessor, and

  PharoDatabaseAccessor>>loginIfError: aBlock
self log: 'Login'.
self databaseDriver: self connectionClass new.
self
  execute: [
self databaseDriver connect: currentLogin.
currentLogin secure
  ifTrue: [ currentLogin discardPassword ]
]
  ifError: aBlock.
self log: 'Login finished'

  PharoDatabaseAccessor>>isLoggedIn
self databaseDriver ifNil: [^ false].
^ self databaseDriver isConnected

Connecting to my instance of Reddit (actually RedditSt20 using SQLite not
PostgreSQL), adding a link and then clicking refresh, Transcript shows:

  Login
  Login finished
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.points DESC LIMIT 20  an OrderedCollection()
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.created DESC LIMIT 20  an 
OrderedCollection()
  Begin Transaction
  INSERT INTO REDDIT_LINKS (url,title,created,points)  VALUES (?,?,?,?)  
an Array('http://planet.smalltalk.org' 'Planet Smalltalk' 
2017-08-04T22:25:14.558667+08:00 0)
  SELECT last_insert_rowid()
  (0.0 s)
  Commit Transaction
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.points DESC LIMIT 20  an OrderedCollection()
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.created DESC LIMIT 20  an 
OrderedCollection()

Login happened once. Clicking "New Session":

  Logout
  Logout finished
  Login
  Login finished
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.points DESC LIMIT 20  an OrderedCollection()
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.created DESC LIMIT 20  an 
OrderedCollection()

Clicking "Refresh" in the application:

  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.points DESC LIMIT 20  an OrderedCollection()
  SELECT t1.id, t1.url, t1.title, t1.created, t1.points
   FROM REDDIT_LINKS t1 ORDER BY t1.created DESC LIMIT 20  an 
OrderedCollection()


Pierce




Re: [Pharo-users] Threads safety in Pharo

2017-08-04 Thread Alidra Abdelghani via Pharo-users
--- Begin Message ---

> On 01 Aug 2017, at 09:36, Stéphane Ducasse  wrote:
> 
> To complement.
> 
> What would be fun is to investigate the implementation of ProcessScheduler, 
> Process and check the implementation. 
> 
> Abdel there is a nice presentation of the processor and process in the Squeak 
> french book. 
Great, I taught some of theses concepts to my students some times ago and we 
did some fun lab sessions with the Linux scheduler

> This was on my todo to turn it into a book chapter for Pharo. 
> 
> So may be we could work together to write a little booklet on this aspect to 
> get started.

I would love to :D

> 
> Stef

--- End Message ---


Re: [Pharo-users] Threads safety in Pharo

2017-08-04 Thread Alidra Abdelghani via Pharo-users
--- Begin Message ---
Hi Ben,

> On 01 Aug 2017, at 13:31, Ben Coman  wrote:
> 
> Not sure I'll have what you're looking for, but to start, do you mean Pharo's 
> green threads or vm native threads?
I believe this is about Pharo threads. 
I am not quite sure of what the vm native threads are or if there is a safety 
problem with them. But still, it could be interesting to investigate :)

Thanks
Abdelghani

> cheers -ben
> 
> On Mon, Jul 31, 2017 at 7:38 AM, Alidra Abdelghani via Pharo-users 
> mailto:pharo-users@lists.pharo.org>> wrote:
> 
> 
> -- Forwarded message --
> From: Alidra Abdelghani mailto:alidran...@yahoo.fr>>
> To: pharo-users@lists.pharo.org 
> Cc: "Stéphane Ducasse"  >, farid arfi  >
> Bcc: 
> Date: Mon, 31 Jul 2017 01:38:58 +0200
> Subject: Threads safety in Pharo
> Hi,
> 
> Somebody once evoked the problem of threads safety in Pharo. With a friend of 
> mine who is expert in formal methods and process scheduling, we would like to 
> have a look on it.
> Does anyone knows a good document describing the problem of Pharo with 
> threads safety or at least any document that we can start with?
> 
> Thanks in advance,
> Abdelghani
> 
> 
> 
> 

--- End Message ---


Re: [Pharo-users] Compiling lots of method source without debugger

2017-08-04 Thread Henrik Sperre Johansen
Patrick Scherer wrote
> Hello everyone,
> 
> This is my first time here so I hope this is the right place to ask
> questions.
> 
> In an attempt to move lots of code from VA Smalltalk to Pharo, I need to
> compile a lot of methods whose code may or may not work due to missing
> classes in Pharo etc.
> I want to be able to compile these methods programatically without
> interruptions (using method source strings only) and gather all compiler
> errors that occur. What would be the best way to go about this?
> 
> Also: How do I control in which package a compiled method ends up if the
> target class is in a different package (Method extension)?
> 
> Any help would be greatly appreciated!
> 
> Kind regards,
> Patrick Scherer

IIRC, Stephanne recently listed preservation of unloaded supers / extensions
of unloaded classes as an area the INRIA group was working on, with a paper
scheduled for ESUG, he might be able to help.

I also recently went through roughly the same to import VSE code (for
inspection in Moose, not execution).
Can't say it was the best way, but I ended up creating a custom CodeImporter
with several error/notification handlers around the "normal" loading code,
and modifying the base system to raise said exceptions at appropriate places
(rather than as currently, invoking dialogs directly)
For instance, a MissingClass notification in MethodChunk >>
handleMissingBehavior, and a MissingPool from TClass >> #sharing:, (both
with defaultAction implemented as per current dialog-raising behavior, so
they work the same unless explicitly handled).

For my case, it was sufficient to have the handlers put classes/pools
auto-generated by handlers in predetermined packages.

The biggest pain / time drain was dealing with creating instvars in
autogenerated classes when referenced from imported code (ie in methods on
classes with missing superclasses) so the analysis wouldn't treat them as
unknown globals, so if you don't initially need that, I'd skip it.

I also did a compiler plugin to be able to rewrite certain selectors on
import (mostly base class extensions from VSE clashing with existing
implementations in Pharo), if you go that route, beware that the compiler
doesn't really like you actually redefining source from outside an editor,
and there will be some pains to have it store the correct(ed) source
strings.

To create a method as an extension in Package MyX, you need to give it a
categoriy of *MyX (with an optional -originalCategory suffix if you want
that)

Good luck!

Cheers,
Henry




--
View this message in context: 
http://forum.world.st/Compiling-lots-of-method-source-without-debugger-tp4958669p4958690.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



[Pharo-users] Compiling lots of method source without debugger

2017-08-04 Thread Patrick Scherer
Hello everyone,

This is my first time here so I hope this is the right place to ask
questions.

In an attempt to move lots of code from VA Smalltalk to Pharo, I need to
compile a lot of methods whose code may or may not work due to missing
classes in Pharo etc.
I want to be able to compile these methods programatically without
interruptions (using method source strings only) and gather all compiler
errors that occur. What would be the best way to go about this?

Also: How do I control in which package a compiled method ends up if the
target class is in a different package (Method extension)?

Any help would be greatly appreciated!

Kind regards,
Patrick Scherer


Re: [Pharo-users] Iceberg and removing packages

2017-08-04 Thread Esteban Lorenzano

> On 3 Aug 2017, at 19:13, Esteban A. Maringolo  wrote:
> 
> How can I know which version it is loaded?
> 
> My system version is: "Pharo6.0 of 13 May 2016 update 60508”

this is old 6.0, you need 6.1(which is 60510)
but then you need the new VM :S

I checked: 0.5 fixes the problem of removing, but it fixes it bad: it removes 
correctly, but sync window shows no-changes (and commit will do the remove 
anyway). I will fix this once I come back…

Esteban

> 
> 
> Regards.
> 
> 
> Esteban A. Maringolo
> 
> 2017-08-03 6:27 GMT-03:00 Esteban Lorenzano  >:
> so, this is probably a bug.
> are you using latest iceberg version? (it should be 0.5.5… the one present on 
> P6.1)
> 
> Esteban
> 
> 
> > On 3 Aug 2017, at 00:32, Tim Mackinnon  wrote:
> >
> > I just hit the same problem - I wanted to remove a package that I no longer 
> > wanted - I went to the iceberg packages tab for the project and picked 
> > remove from disk and then I did a synchronise and commit. At the time I did 
> > notice that it didn’t show a package removal change (but I assumed that as 
> > it was gone, maybe you don’t show that?).
> >
> > Tim
> >
> >> On 31 Jul 2017, at 13:30, Esteban Lorenzano  >> > wrote:
> >>
> >> Did you commit?
> >>
> >>> On 31 Jul 2017, at 14:06, Esteban A. Maringolo  >>> > wrote:
> >>>
> >>> That's exactly what I did. But after synchronizing the repo, the
> >>> package wasn't listed on Iceberg but it still was in in the repo.
> >>> It happened with another package in another repo as well.
> >>>
> >>> If it happens again I'll let you know.
> >>>
> >>> Regards!
> >>>
> >>> Esteban A. Maringolo
> >>>
> >>>
> >>> 2017-07-31 7:03 GMT-03:00 Esteban Lorenzano  >>> >:
>  Hi,
> 
>  In iceberg, you have to go to package tab and say "remove package from 
>  disk"
> 
>  Esteban
> 
> > On 30 Jul 2017, at 17:01, Esteban A. Maringolo  > > wrote:
> >
> > I got into the pharo-local/iceberg/... and git rm'ed the directory,
> > commited and synchronized the project in Iceberg.
> >
> > I hope it doesn't break anything since I don't know how much "magic"
> > does Iceberg behind the scenes other than automating the git commands
> > and providing a centralized UI.
> >
> > What is the "This is all you need to read to understand Iceberg?"
> > document I should read? I read its wiki, but it seems there is more to
> > go.
> >
> > Regards!
> >
> > Esteban A. Maringolo
> >
> >
> > 2017-07-30 11:28 GMT-03:00 Peter Uhnak  > >:
> >> This was supposedly fixed in April 
> >> https://github.com/pharo-vcs/iceberg/issues/317 
> >> 
> >>
> >> however I had the same issue ~two months ago, so I had to delete the 
> >> packages by hand.
> >>
> >> P
> >>
> >>
> >>> On Sun, Jul 30, 2017 at 11:04:20AM -0300, Esteban A. Maringolo wrote:
> >>> Hi,
> >>>
> >>> I'm playing around with Iceberg in Pharo 6, and even when I find the
> >>> workflow streamlined, but since it doesn't map 1:1 with git workflow
> >>> from other IDEs or command line, I find myself not knowing how to do
> >>> certain tasks.
> >>>
> >>> One thing that happened is that I published a few packages to one of
> >>> my repos in Github, then I decided to remove one of the packages from
> >>> the repo, then I synchronized it but in the repo there is still is the
> >>> package folder for the package I removed.
> >>>
> >>> What should I do to definitely remove those files from the commit?
> >>>
> >>> Regards!
> >>>
> >>> Esteban A. Maringolo
> >>>
> >>
> >
> 
> >>>
> >>
> >
> >
> 
> 
> 



Re: [Pharo-users] Settings - Server Mode - should I use it?

2017-08-04 Thread Tim Mackinnon
Hey Ben - thanks for sharing this with me - you know, I never knew you could 
right click on the settings and browse… I’ve always (only partially 
successfully) used halo’s on ui items and tried to dig in that way… 

It turns out that in the minimal images that Pavel has been churning out - 
WorldState is not there (which makes sense, as you would expect all of the UI 
pieces to be stripped out).

Tim

> On 2 Aug 2017, at 18:09, Ben Coman  wrote:
> 
> hi Tim,
> 
> This is Pharo! You can dig in to understand it yourself. ;)   
> 1. On the setting, right-click and "Browse".
> 2. Scroll down to... label: 'Server mode'
> then on #serverMode, right-click > Code Search > Implementors of it
> 3. Looking at WorldState>>serverMode, click "Senders"
> and you'll come to WorldState>>interCyclePause:
> Look for senders of this and inspect MinCycleLapse.
> 
> Basically that setting makes the UI loop delay for a longer time ==> less CPU 
> but I don't know whether that loop still runs in headless mode.
> I guess if you are bootstrapping your Lambda image, you can choose.
> 
> But since your Lambda is meant to finish quite quickly, alternatively maybe 
> during image shutdown you could set a flag such that next startup 
> #interCyclePause: blocks for 500ms and if the image exits cleanly and 
> quickly, #doOneCycleNowFor: is never executed at all.
> 
> cheers -ben
> 
> On Wed, Aug 2, 2017 at 10:39 PM, Tim Mackinnon  > wrote:
> Hi - I hadn’t looked in the settings browser much before, but I was looking 
> at what settings there were and noticed “server mode”.
> 
> Should I be enabling this when building a headless server image to run on 
> Lambda? I saw a 2016 post by John Brant that indicated it made a difference 
> when doing some benchmarking in the image (presumably headful) - but I’m 
> wondering if when running headless on a server whether it really makes a 
> difference.
> 
> Has anyone played with this much before?
> 
> Tim
>