Organisation and workflows

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Organisation and workflows

Steven R. Baker
Heya folks,

[Please jump on any of my statements that sound crazy: use of Spec,
other assumptions, etc.]

I'm starting an application in Pharo, using Spec. Basically, a GTD
application in the spirit of nirvanahq, omnifocus, things, nozbe. The
code is working just fine, but I'm left with a lot of questions about
how to organize it.

First, is there some trick to managing images? Are people using
one-per-project, or one-per-computer? All of the above? Anyone using
PharoLauncher these days? Other tools?

I'm assuming that the current state of the art is Iceberg; where can I
find a "This is how you should organize your project using Iceberg"
document, blog, book, tutorial, video, or otherwise.

Once the application is done, I assume I'll want to ship it in a minimal
Pharo image. Is there documentation or prior art on this?

Finally, is there a way to run and capture keybindings globally? I have
one part of my application (a quick-entry window) which I want summoned
from a global (OS-wide) hotkey. Has this been done before? Or is it not
easy to break the fourth wall, so to speak, and register a global
keybinding from inside the VM?

Thanks!

-Steven



Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

Stephan Eggermont-3
On 01-10-17 21:03, Steven R. Baker wrote:
> First, is there some trick to managing images? Are people using
> one-per-project, or one-per-computer? All of the above? Anyone using
> PharoLauncher these days? Other tools?

PharoLauncher indeed. I name images after project and download
date/build. I regularly move projects to a new image version.
For issue fixing I nearly always download a new image and recreate the
situation in that.

> Once the application is done, I assume I'll want to ship it in a minimal
> Pharo image. Is there documentation or prior art on this?

That is right, and you'd be early in doing that :) Basically just look
at how the full Pharo image is built from the minimal image.

Stephan



Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

kilon.alios
In reply to this post by Steven R. Baker


On Sun, Oct 1, 2017 at 10:04 PM Steven R. Baker <[hidden email]> wrote:
Heya folks,

[Please jump on any of my statements that sound crazy: use of Spec,
other assumptions, etc.]

I'm starting an application in Pharo, using Spec. Basically, a GTD
application in the spirit of nirvanahq, omnifocus, things, nozbe. The
code is working just fine, but I'm left with a lot of questions about
how to organize it.

First, is there some trick to managing images? Are people using
one-per-project, or one-per-computer? All of the above? Anyone using
PharoLauncher these days? Other tools?

Personally I rely on the image as least as possible. Even for live state which is what the image excels you can use several micro formats like fuel , ston or other files of your own definition. 

Code wise I am relying on git. 

To build a new image I use a makefile, together with pharo startup script. 


The make file does the downloading of the vm and the image to the lastest version and also the deletion of a previous installation
The startup script (regular smalltalk source file) it triggers only when the image is opened the first time and it dowloads my project. 
The project is available also via Package Browser, it acts as an umbrella that dowload all my projects and their dependencies using metacello and git. 

I only save images ONLY in case I wanto to store the live state which means almost never. 
Code is handlied only through git and github. 
 I use an external git client called Gitup (Mac only). 

I dont use Pharolauncher or Iceberg. I was planning once to replace makefile with my own gui for getting and installing latest vm and image but I never tried it because I was happy with the makefile. 

 
I'm assuming that the current state of the art is Iceberg; where can I
find a "This is how you should organize your project using Iceberg"
document, blog, book, tutorial, video, or otherwise.

Once the application is done, I assume I'll want to ship it in a minimal
Pharo image. Is there documentation or prior art on this?

 There is project bootstrap that has such a goal its still a WIP. 
 
Finally, is there a way to run and capture keybindings globally? I have
one part of my application (a quick-entry window) which I want summoned
from a global (OS-wide) hotkey. Has this been done before? Or is it not
easy to break the fourth wall, so to speak, and register a global
keybinding from inside the VM?

Last time I checked it was not possible to have global shortcuts the easy way. But yes you could do it. I am not aware of a GUI tool that will do this for you , you will have to do this using code. Hacking the VM sounds too extreme for me, you dont need to, you could run a forked process inside Pharo and use UFFI to detect key presses without touching the VM. Of course this si necessary only if Pharo still does not have an API for global shortcuts.

UFFI can do some pretty insane stuff, but be warned that most of them are platform specific which is both a blessing and a curse. UFFI basically gives access to C libraries which means the OS libraries as well so you can manipulate anything. 

You even make it capture shortcuts outside Pharo, for example when your application is meant to be run on the background, with minimised or no pharo window.  

Thanks!

-Steven



Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

Stephane Ducasse-3
In reply to this post by Steven R. Baker
I discussed with esteban sooner this summer and we really want to have a process
where people can deploy applications and not just code.
Now we are not yet there.

Stef

On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker <[hidden email]> wrote:

> Heya folks,
>
> [Please jump on any of my statements that sound crazy: use of Spec,
> other assumptions, etc.]
>
> I'm starting an application in Pharo, using Spec. Basically, a GTD
> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
> code is working just fine, but I'm left with a lot of questions about
> how to organize it.
>
> First, is there some trick to managing images? Are people using
> one-per-project, or one-per-computer? All of the above? Anyone using
> PharoLauncher these days? Other tools?
>
> I'm assuming that the current state of the art is Iceberg; where can I
> find a "This is how you should organize your project using Iceberg"
> document, blog, book, tutorial, video, or otherwise.
>
> Once the application is done, I assume I'll want to ship it in a minimal
> Pharo image. Is there documentation or prior art on this?
>
> Finally, is there a way to run and capture keybindings globally? I have
> one part of my application (a quick-entry window) which I want summoned
> from a global (OS-wide) hotkey. Has this been done before? Or is it not
> easy to break the fourth wall, so to speak, and register a global
> keybinding from inside the VM?
>
> Thanks!
>
> -Steven
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

EstebanLM

> On 2 Oct 2017, at 15:12, Stephane Ducasse <[hidden email]> wrote:
>
> I discussed with esteban sooner this summer and we really want to have a process
> where people can deploy applications and not just code.
> Now we are not yet there.
>
> Stef
>
> On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker <[hidden email]> wrote:
>> Heya folks,
>>
>> [Please jump on any of my statements that sound crazy: use of Spec,
>> other assumptions, etc.]
>>
>> I'm starting an application in Pharo, using Spec. Basically, a GTD
>> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
>> code is working just fine, but I'm left with a lot of questions about
>> how to organize it.
>>
>> First, is there some trick to managing images? Are people using
>> one-per-project, or one-per-computer? All of the above? Anyone using
>> PharoLauncher these days? Other tools?

pharo users tend to prefer one-per-project approach :)
most people uses (or should use) pharo launcher. In fact, we want to make it the default download, is just that to get it right is complicated :)

but… pharo launcher is to developers. A final app would require other stuff to be accomplished (like closing development tools, etc.).

>> I'm assuming that the current state of the art is Iceberg; where can I
>> find a "This is how you should organize your project using Iceberg"
>> document, blog, book, tutorial, video, or otherwise.

beware: Iceberg is a cvs (like Monticello or git or svn…): it is use to store code, not to organise your project.
To organise your project you have Metacello.

>>
>> Once the application is done, I assume I'll want to ship it in a minimal
>> Pharo image. Is there documentation or prior art on this?

this is what is hard :)
I imagine with the headless VMs we are about to finish it will be easier (to just initiate a window with your app, instead initiate a window with the full world as now).
but we still require some work.

>> Finally, is there a way to run and capture keybindings globally? I have
>> one part of my application (a quick-entry window) which I want summoned
>> from a global (OS-wide) hotkey. Has this been done before? Or is it not
>> easy to break the fourth wall, so to speak, and register a global
>> keybinding from inside the VM?

there is a keybindings framework inside pharo, but since you have a lot of development tools, it becomes hard to use (again, something that can be solved in the near future, with same approach as before, but not yet).
now, to get the keybindings of the system you will need to install that *in* the system.

for mac, for example, you can doit using the ObjC bridge (which does not works in 64bit images... I’m working on a UFFI replacement, but… guess what? not yet :P)
and I guess using UFFI you can get that to work on windows and linux? I’m really don’t know.

all you ask is *doable*… but not all your requirements are *easily* doable right now, which is want I want to fix :)

Esteban

>>
>> Thanks!
>>
>> -Steven
>>
>>
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

Sean P. DeNigris
Administrator
In reply to this post by Steven R. Baker
Steven Baker wrote
> using Spec

It really depends on your aim. The *idea* of Spec was to write once and
deploy "everywhere", but as yet there is only a Morphic backend that I know
of, and you would be restricting yourself to standard desktop widgets. So,
if that is not a problem, Spec might be an easy route to a working
application. If you want to create a more imaginative UI, you'll probably
have to hand roll on each target (e.g. Morphic for desktop, PharoJS or Amber
for web).


Steven Baker wrote
> a GTD application in the spirit of nirvanahq, omnifocus, things, nozbe

Cool! I'll be your first customer ;)


Steven Baker wrote
> Are people using one-per-project, or one-per-computer?

Yes and yes. I prefer one per project for development projects I'm working
on and one per computer for personal images (a la my own personal Dynabook).
The former is also fine for personal tools, but the latter can get hairy
e.g. if you're digging into the system and accidentally break an image with
all your personal data in it (assuming I'm not the only one who is a little
sloppy with persistence in personal contexts ha ha)[1].


Steven Baker wrote
> Anyone using
> PharoLauncher these days? Other tools?

Yes! I now use it exclusively and love it. There are minor hiccups here and
there as Pharo rapidly evolves in parallel, but Christophe and team are
really responsive and helpful. I also made a project called SmallWorld [2]
which is like my own personal SqueakMap/Project-catalog that keeps track of
projects I care about. What makes it a little different that e.g. Pharo
Catalog is that it lets me specify how *I* want to load a project (e.g.
which repo/branch), which may not be the canonical way, especially if I am
typical in a developer role and not a user. I built a tiny extension which
hooks this into Launcher, providing a button to automatically load one of
these projects into an image of my choice. Beware I am the only user (that I
know of), so the UI is very primitive (a combination of GT and Magritte),
but I'm happy to help anyone along if the idea seems helpful.

<http://forum.world.st/file/t128965/Screenshot_2017-10-02_11.jpeg>


Steven Baker wrote
> I'm assuming that the current state of the art is Iceberg; where can I
> find a "This is how you should organize your project using Iceberg"
> document, blog, book, tutorial, video, or otherwise.

As Esteban mentioned, Iceberg is a vcs, so if you mean how to organize
*code*, Pharo handles this automatically under the hood. The only thing you
have to decide is the root folder. Typically people choose a top level
folder inside the git repo for this, named 'source' (or 'src', 'repository',
or 'mc'), so that you can have other top level categories like wiki,
scripts, etc. If you mean project in a wider context, as in including
documentation, this seems to be an open field with many different
possibilities.

I can't help on the other parts of your question, but am eager to hear any
answers!

[1] Although the beauty of Smalltalk is that there's (almost) always a way
forward (see
http://forum.world.st/Fwd-Oops-I-put-a-halt-in-a-startup-method-tp3800729.html)
[2] https://github.com/seandenigris/Small-World



-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

Steven R. Baker
In reply to this post by EstebanLM


On 02/10/17 15:28, Esteban Lorenzano wrote:

>> On 2 Oct 2017, at 15:12, Stephane Ducasse <[hidden email]> wrote:
>>
>> I discussed with esteban sooner this summer and we really want to have a process
>> where people can deploy applications and not just code.
>> Now we are not yet there.
>>
>> Stef
>>
>> On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker <[hidden email]> wrote:
>>> Heya folks,
>>>
>>> [Please jump on any of my statements that sound crazy: use of Spec,
>>> other assumptions, etc.]
>>>
>>> I'm starting an application in Pharo, using Spec. Basically, a GTD
>>> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
>>> code is working just fine, but I'm left with a lot of questions about
>>> how to organize it.
>>>
>>> First, is there some trick to managing images? Are people using
>>> one-per-project, or one-per-computer? All of the above? Anyone using
>>> PharoLauncher these days? Other tools?
> pharo users tend to prefer one-per-project approach :)
> most people uses (or should use) pharo launcher. In fact, we want to make it the default download, is just that to get it right is complicated :)
>
> but… pharo launcher is to developers. A final app would require other stuff to be accomplished (like closing development tools, etc.).
>
>>> I'm assuming that the current state of the art is Iceberg; where can I
>>> find a "This is how you should organize your project using Iceberg"
>>> document, blog, book, tutorial, video, or otherwise.
> beware: Iceberg is a cvs (like Monticello or git or svn…): it is use to store code, not to organise your project.
> To organise your project you have Metacello.
>
>>> Once the application is done, I assume I'll want to ship it in a minimal
>>> Pharo image. Is there documentation or prior art on this?
> this is what is hard :)
> I imagine with the headless VMs we are about to finish it will be easier (to just initiate a window with your app, instead initiate a window with the full world as now).
> but we still require some work.
>
>>> Finally, is there a way to run and capture keybindings globally? I have
>>> one part of my application (a quick-entry window) which I want summoned
>>> from a global (OS-wide) hotkey. Has this been done before? Or is it not
>>> easy to break the fourth wall, so to speak, and register a global
>>> keybinding from inside the VM?
> there is a keybindings framework inside pharo, but since you have a lot of development tools, it becomes hard to use (again, something that can be solved in the near future, with same approach as before, but not yet).
> now, to get the keybindings of the system you will need to install that *in* the system.
>
> for mac, for example, you can doit using the ObjC bridge (which does not works in 64bit images... I’m working on a UFFI replacement, but… guess what? not yet :P)
> and I guess using UFFI you can get that to work on windows and linux? I’m really don’t know.
>
> all you ask is *doable*… but not all your requirements are *easily* doable right now, which is want I want to fix :)
I don't mind contributing code and time on these things, as they present
real barriers to me. I'm looking for ways to get involved in the
community again. :)

-Steven

> Esteban
>
>>> Thanks!
>>>
>>> -Steven
>>>
>>>
>>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Organisation and workflows

Stephane Ducasse-3
Super. Just do it :)
and we will here to help you helping Pharo

On Mon, Oct 2, 2017 at 5:40 PM, Steven R. Baker <[hidden email]> wrote:

>
>
> On 02/10/17 15:28, Esteban Lorenzano wrote:
>>> On 2 Oct 2017, at 15:12, Stephane Ducasse <[hidden email]> wrote:
>>>
>>> I discussed with esteban sooner this summer and we really want to have a process
>>> where people can deploy applications and not just code.
>>> Now we are not yet there.
>>>
>>> Stef
>>>
>>> On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker <[hidden email]> wrote:
>>>> Heya folks,
>>>>
>>>> [Please jump on any of my statements that sound crazy: use of Spec,
>>>> other assumptions, etc.]
>>>>
>>>> I'm starting an application in Pharo, using Spec. Basically, a GTD
>>>> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
>>>> code is working just fine, but I'm left with a lot of questions about
>>>> how to organize it.
>>>>
>>>> First, is there some trick to managing images? Are people using
>>>> one-per-project, or one-per-computer? All of the above? Anyone using
>>>> PharoLauncher these days? Other tools?
>> pharo users tend to prefer one-per-project approach :)
>> most people uses (or should use) pharo launcher. In fact, we want to make it the default download, is just that to get it right is complicated :)
>>
>> but… pharo launcher is to developers. A final app would require other stuff to be accomplished (like closing development tools, etc.).
>>
>>>> I'm assuming that the current state of the art is Iceberg; where can I
>>>> find a "This is how you should organize your project using Iceberg"
>>>> document, blog, book, tutorial, video, or otherwise.
>> beware: Iceberg is a cvs (like Monticello or git or svn…): it is use to store code, not to organise your project.
>> To organise your project you have Metacello.
>>
>>>> Once the application is done, I assume I'll want to ship it in a minimal
>>>> Pharo image. Is there documentation or prior art on this?
>> this is what is hard :)
>> I imagine with the headless VMs we are about to finish it will be easier (to just initiate a window with your app, instead initiate a window with the full world as now).
>> but we still require some work.
>>
>>>> Finally, is there a way to run and capture keybindings globally? I have
>>>> one part of my application (a quick-entry window) which I want summoned
>>>> from a global (OS-wide) hotkey. Has this been done before? Or is it not
>>>> easy to break the fourth wall, so to speak, and register a global
>>>> keybinding from inside the VM?
>> there is a keybindings framework inside pharo, but since you have a lot of development tools, it becomes hard to use (again, something that can be solved in the near future, with same approach as before, but not yet).
>> now, to get the keybindings of the system you will need to install that *in* the system.
>>
>> for mac, for example, you can doit using the ObjC bridge (which does not works in 64bit images... I’m working on a UFFI replacement, but… guess what? not yet :P)
>> and I guess using UFFI you can get that to work on windows and linux? I’m really don’t know.
>>
>> all you ask is *doable*… but not all your requirements are *easily* doable right now, which is want I want to fix :)
> I don't mind contributing code and time on these things, as they present
> real barriers to me. I'm looking for ways to get involved in the
> community again. :)
>
> -Steven
>
>> Esteban
>>
>>>> Thanks!
>>>>
>>>> -Steven
>>>>
>>>>
>>>>
>>
>
>