LyX class assignment

2003-10-24 Thread Amir Michail
Hi,

The discussion on this has been quite useful to us.  I have contacted
other academics at UNSW CSE and have shown them this thread to see
what they think.

BTW, there may be university regulations about whether we can require
students to submit patches in a public forum.  Some students --
particularly weaker ones -- may not want the world to see their code
submissions.

The separate student list idea is good but it may be better to keep
the list archives off the web to encourage students to post questions.
I suppose intelligent questions would propagate to the main
development list, which is publicly available in any case.

The actual class starts March 1, 2004.  If we shall attempt this
experiment, I will contact you again a bit before then.  (How early
should I contact you before class start?)

Amir





LyX class assignment

2003-10-24 Thread Amir Michail
Hi,

The discussion on this has been quite useful to us.  I have contacted
other academics at UNSW CSE and have shown them this thread to see
what they think.

BTW, there may be university regulations about whether we can require
students to submit patches in a public forum.  Some students --
particularly weaker ones -- may not want the world to see their code
submissions.

The separate student list idea is good but it may be better to keep
the list archives off the web to encourage students to post questions.
I suppose intelligent questions would propagate to the main
development list, which is publicly available in any case.

The actual class starts March 1, 2004.  If we shall attempt this
experiment, I will contact you again a bit before then.  (How early
should I contact you before class start?)

Amir





Re: LyX programming assignment in class of 200 3rd year SE students

2003-10-23 Thread Amir Michail
On Thu, 23 Oct 2003 12:28 am, Lars Gullik Bjønnes wrote:
 Angus Leeming [EMAIL PROTECTED] writes:
 
 | We are always interested. One thing that I would note is that we're a 
 | small collection of programmers and are very wary of enormous 
 | patches, prefering a 'little and often' approach. Moreover, because 
 | we are trying to clean the code base up (and have been doing so for 
 | several years) we have found it useful to have preliminary and 
 | informal discussions about the best way to implement some suggestion. 
 | Often the design becomes far more generic as a result. Getting your 
 | students to participate in such discussions would be an excellent 
 | thing for them to do anyway.
 
 Yes, and this would be required for them to get a patch into Lyx
 anyway, and should absolutely be part of the assignment.
 I do not know how formal you are going to do this assignment, but for
 bugs not much are needed..., for new features it would be really nice
 if a formal design were present (we have been bad at those).

Hi,

It's great to see interest in this.

However note that we are talking about 200 students.  Even if they work in 
pairs, having design discussions with 100 pairs may be too much.

I think we might need a filtering scheme so that only meaningful questions 
make it to this list.  As I mentioned, student ability varies widely and you 
probably don't want to hear about lots of trivial stuff.

 
 How long period is this assignment ment to take?
 

Probably at least 1 month and at most 3 months.  I'm not sure yet.

Amir

 Would be fun to get 200 developers for a short while :-)
 I promises, as long as it does not conflict with RL, I'll du my best
 to encourage and help.
 
 -- 
   Lgb
 


Re: LyX programming assignment in class of 200 3rd year SE students

2003-10-23 Thread Amir Michail
On Thu, 23 Oct 2003 12:28 am, Lars Gullik Bjønnes wrote:
> Angus Leeming <[EMAIL PROTECTED]> writes:
> 
> | We are always interested. One thing that I would note is that we're a 
> | small collection of programmers and are very wary of enormous 
> | patches, prefering a 'little and often' approach. Moreover, because 
> | we are trying to clean the code base up (and have been doing so for 
> | several years) we have found it useful to have preliminary and 
> | informal discussions about the best way to implement some suggestion. 
> | Often the design becomes far more generic as a result. Getting your 
> | students to participate in such discussions would be an excellent 
> | thing for them to do anyway.
> 
> Yes, and this would be required for them to get a patch into Lyx
> anyway, and should absolutely be part of the assignment.
> I do not know how formal you are going to do this assignment, but for
> bugs not much are needed..., for new features it would be really nice
> if a formal design were present (we have been bad at those).

Hi,

It's great to see interest in this.

However note that we are talking about 200 students.  Even if they work in 
pairs, having design discussions with 100 pairs may be too much.

I think we might need a filtering scheme so that only meaningful questions 
make it to this list.  As I mentioned, student ability varies widely and you 
probably don't want to hear about lots of trivial stuff.

> 
> How long period is this assignment ment to take?
> 

Probably at least 1 month and at most 3 months.  I'm not sure yet.

Amir

> Would be fun to get 200 developers for a short while :-)
> I promises, as long as it does not conflict with RL, I'll du my best
> to encourage and help.
> 
> -- 
>   Lgb
> 


LyX programming assignment in class of 200 3rd year SE students

2003-10-22 Thread Amir Michail
Hi,

I'm thinking of giving a LyX programming assignment to a class of 200
3rd year software engineering students.  This is for COMP3141 at UNSW:

http://www.cse.unsw.edu.au/~cs3141

The students vary considerably in ability from some who are quite
weak to superstar programmers.

Consequently, if I were to give a LyX programming assignment, I would
let the students choose their own topics.  In this way, weaker
students can work on something simple like a bug fix (which may
involve non-trivial debugging) or minor feature request while stronger
students can work on more ambitious additions to LyX.

I was wondering if you have any interest in this experiment.  In
particular, would any LyX developers be able to suggest bug fixes,
minor feature requests, major features, etc?

Also, if students get stuck, would they be able to get any help?

I am personally not knowledgeable of the LyX design (yet), though I
have worked with students on the DRT design recovery tool to help
people recover the design of interactive graphical applications such
as LyX.  Maybe DRT would be helpful to students in this assignment :)

http://www.cse.unsw.edu.au/~amichail/seqdiag.png
http://www.cse.unsw.edu.au/~amichail/combined.png
http://www.cse.unsw.edu.au/~drt

Please let me know if there is any interest in this.  A class of 200
students may be able to make some valuable contributions to the LyX
project.

Amir


LyX programming assignment in class of 200 3rd year SE students

2003-10-22 Thread Amir Michail
Hi,

I'm thinking of giving a LyX programming assignment to a class of 200
3rd year software engineering students.  This is for COMP3141 at UNSW:

http://www.cse.unsw.edu.au/~cs3141

The students vary considerably in ability from some who are quite
weak to superstar programmers.

Consequently, if I were to give a LyX programming assignment, I would
let the students choose their own topics.  In this way, weaker
students can work on something simple like a bug fix (which may
involve non-trivial debugging) or minor feature request while stronger
students can work on more ambitious additions to LyX.

I was wondering if you have any interest in this experiment.  In
particular, would any LyX developers be able to suggest bug fixes,
minor feature requests, major features, etc?

Also, if students get stuck, would they be able to get any help?

I am personally not knowledgeable of the LyX design (yet), though I
have worked with students on the DRT design recovery tool to help
people recover the design of interactive graphical applications such
as LyX.  Maybe DRT would be helpful to students in this assignment :)

http://www.cse.unsw.edu.au/~amichail/seqdiag.png
http://www.cse.unsw.edu.au/~amichail/combined.png
http://www.cse.unsw.edu.au/~drt

Please let me know if there is any interest in this.  A class of 200
students may be able to make some valuable contributions to the LyX
project.

Amir


LyX 1.3.0 compile problems with -finstrument-functions

2003-02-13 Thread Amir Michail
Hi,

We tried to write a LyX 1.3.0 template for DRT, but found
that the source no longer compiles with CXXFLAGS=-finstrument-functions.
This used to work with LyX 1.2.1.  Here is the error (with Qt frontend):

g++ -DHAVE_CONFIG_H -I. -I. -I../../src -I./../ -I../../boost -isystem 
/usr/X11R6/include -
finstrument-functions -c dimension.C -MT dimension.lo -MD -MP -MF 
.deps/dimension.TPlo
In file included from /usr/include/g++-3/cstring:7,
 from /usr/include/g++-3/std/straits.h:106,
 from /usr/include/g++-3/std/bastring.h:36,
 from /usr/include/g++-3/string:6,
 from ../../src/LString.h:23,
 from math_support.h:10,
 from dimension.C:17:
/usr/include/string.h:229: declaration of `char *strerror (int) throw
()' throws different exceptions
../../src/config.h:428: than previous declaration `char *strerror
(int)'
make[3]: *** [dimension.lo] Error 1
make[3]: Leaving directory `/root/lyx-1.3.0/src/mathed'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/lyx-1.3.0/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/lyx-1.3.0/src'
make: *** [all-recursive] Error 1


Amir



LyX 1.3.0 compile problems with -finstrument-functions

2003-02-13 Thread Amir Michail
Hi,

We tried to write a LyX 1.3.0 template for DRT, but found
that the source no longer compiles with CXXFLAGS=-finstrument-functions.
This used to work with LyX 1.2.1.  Here is the error (with Qt frontend):

g++ -DHAVE_CONFIG_H -I. -I. -I../../src -I./../ -I../../boost -isystem 
/usr/X11R6/include -
finstrument-functions -c dimension.C -MT dimension.lo -MD -MP -MF 
.deps/dimension.TPlo
In file included from /usr/include/g++-3/cstring:7,
 from /usr/include/g++-3/std/straits.h:106,
 from /usr/include/g++-3/std/bastring.h:36,
 from /usr/include/g++-3/string:6,
 from ../../src/LString.h:23,
 from math_support.h:10,
 from dimension.C:17:
/usr/include/string.h:229: declaration of `char *strerror (int) throw
()' throws different exceptions
../../src/config.h:428: than previous declaration `char *strerror
(int)'
make[3]: *** [dimension.lo] Error 1
make[3]: Leaving directory `/root/lyx-1.3.0/src/mathed'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/lyx-1.3.0/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/lyx-1.3.0/src'
make: *** [all-recursive] Error 1


Amir



DRT 0.1.0 available w/ LyX instructions

2002-09-25 Thread Amir Michail

Hi,

You can download a preliminary version of DRT with LyX 1.2.1
instructions here:

http://www.cse.unsw.edu.au/~amichail/DRT-0.1.0.tar.gz

Let us know if you encounter problems.  

Amir



DRT 0.1.0 available w/ LyX instructions

2002-09-25 Thread Amir Michail

Hi,

You can download a preliminary version of DRT with LyX 1.2.1
instructions here:

http://www.cse.unsw.edu.au/~amichail/DRT-0.1.0.tar.gz

Let us know if you encounter problems.  

Amir



solution for LyX problems under DRT + LyX demo in paper

2002-09-22 Thread Amir Michail

Hi,

I believe we can address the polling and cursor problems in LyX
under DRT by identifying a user action as follows:

* an X input determines the start of an action (e.g., key press)

* a burst of X outputs (e.g., screen draw requests) determine the end of the 
action (e.g., show the corresponding letter on the screen)

This way, frequent polling that doesn't update the screen will not extend an 
action indefinitely.   Of course, if certain actions do not result in the 
screen being updated for long periods of times, then we will not identify 
their ends.  Is this an issue in LyX?  Do all actions result in some screen 
output relatively quickly?

BTW, we have written a paper on DRT that uses LyX as a running example.
See:

http://www.cse.unsw.edu.au/~amichail/drt.pdf

Feedback would be appreciated!  We should be able to release a preliminary 
version of this tool + full instructions for getting LyX to work later this 
week.

Amir



solution for LyX problems under DRT + LyX demo in paper

2002-09-22 Thread Amir Michail

Hi,

I believe we can address the polling and cursor problems in LyX
under DRT by identifying a user action as follows:

* an X input determines the start of an action (e.g., key press)

* a burst of X outputs (e.g., screen draw requests) determine the end of the 
action (e.g., show the corresponding letter on the screen)

This way, frequent polling that doesn't update the screen will not extend an 
action indefinitely.   Of course, if certain actions do not result in the 
screen being updated for long periods of times, then we will not identify 
their ends.  Is this an issue in LyX?  Do all actions result in some screen 
output relatively quickly?

BTW, we have written a paper on DRT that uses LyX as a running example.
See:

http://www.cse.unsw.edu.au/~amichail/drt.pdf

Feedback would be appreciated!  We should be able to release a preliminary 
version of this tool + full instructions for getting LyX to work later this 
week.

Amir



Re: frequent polling in LyX (plus LyX under DRT screenshots)

2002-09-01 Thread Amir Michail

Hi,

Perhaps a configure flag could be used to build LyX in a way that works well 
under DRT?   Although the polling change I mentioned (and others) may not be 
bug free, they do seem to get LyX working under DRT.

You can see some preliminary results here in the following screenshots:

http://www.cse.unsw.edu.au/~amichail/lyx8.png

From the function sequence in the picture above, we see that the user
probably moved the cursor up.  However, that's
not the whole story as made obvious by the before/after screenshots.
In fact, the cursor moved out from math mode as well.
This shows the importance of before/after pictures in explaining past actions
(possibly performed by others).

BTW, could someone tell me if the functions shown in the pictures
are particularly relevant to the action?  The darker the action label,
the more relevant it is perceived to be to the action shown in the 
before/after pictures.

To see how we arrived at the previous screenshot, see the
following:

http://www.cse.unsw.edu.au/~amichail/lyx1.png

http://www.cse.unsw.edu.au/~amichail/lyx2.png

http://www.cse.unsw.edu.au/~amichail/lyx3.png

http://www.cse.unsw.edu.au/~amichail/lyx4.png

http://www.cse.unsw.edu.au/~amichail/lyx5.png

http://www.cse.unsw.edu.au/~amichail/lyx6.png

http://www.cse.unsw.edu.au/~amichail/lyx7.png

http://www.cse.unsw.edu.au/~amichail/lyx8.png

I also found another problem with getting rid of cursor blinking.
If you type a sentence and press return, the cursor will not appear
for a while until it is told to blink on.  By then, the after picture
has already been taken, so cursor tracking is broken.  So it's not sufficient 
to disable blinking. We also need to make cursors appear immediately when 
they are moved in various contexts.

Amir






Re: frequent polling in LyX (plus LyX under DRT screenshots)

2002-09-01 Thread Amir Michail

Hi,

Perhaps a configure flag could be used to build LyX in a way that works well 
under DRT?   Although the polling change I mentioned (and others) may not be 
bug free, they do seem to get LyX working under DRT.

You can see some preliminary results here in the following screenshots:

http://www.cse.unsw.edu.au/~amichail/lyx8.png

>From the function sequence in the picture above, we see that the user
probably moved the cursor up.  However, that's
not the whole story as made obvious by the before/after screenshots.
In fact, the cursor moved out from math mode as well.
This shows the importance of before/after pictures in explaining past actions
(possibly performed by others).

BTW, could someone tell me if the functions shown in the pictures
are particularly relevant to the action?  The darker the action label,
the more relevant it is perceived to be to the action shown in the 
before/after pictures.

To see how we arrived at the previous screenshot, see the
following:

http://www.cse.unsw.edu.au/~amichail/lyx1.png

http://www.cse.unsw.edu.au/~amichail/lyx2.png

http://www.cse.unsw.edu.au/~amichail/lyx3.png

http://www.cse.unsw.edu.au/~amichail/lyx4.png

http://www.cse.unsw.edu.au/~amichail/lyx5.png

http://www.cse.unsw.edu.au/~amichail/lyx6.png

http://www.cse.unsw.edu.au/~amichail/lyx7.png

http://www.cse.unsw.edu.au/~amichail/lyx8.png

I also found another problem with getting rid of cursor blinking.
If you type a sentence and press return, the cursor will not appear
for a while until it is told to blink on.  By then, the after picture
has already been taken, so cursor tracking is broken.  So it's not sufficient 
to disable blinking. We also need to make cursors appear immediately when 
they are moved in various contexts.

Amir






Re: frequent polling in LyX

2002-08-29 Thread Amir Michail

Hi,

The problem is not that the polling is slowing other programs down,
but rather that it is presenting problems for our design recovery tool.

I tried getting rid of this frequent polling by changing the code
in WorkArea::WorkArea as follows:

  ...fl_add_free(FL_ALL_FREE, ...)... 

to

  ..fl_add_free(FL_INPUT_FREE,...)...

This seems to have fixed the problem and LyX still seems to be working ok.

Amir

Amir Michail [EMAIL PROTECTED] writes:

| Hi,

| We have noticed that LyX performs frequent
| polling.  In particuar, C_WorkArea_work_area_handler
| is called multiple times per second.

| Is this frequent polling necessary for updating the display?
| Or is the display updated immediately when changes
| are made to the document?

What os is this?

And frequent (as in 50 times a second) does not harm anyting as long
as now actual work is done.

-- 
Lgb



Re: frequent polling in LyX

2002-08-29 Thread Amir Michail

Hi,

The problem is not that the polling is slowing other programs down,
but rather that it is presenting problems for our design recovery tool.

I tried getting rid of this frequent polling by changing the code
in WorkArea::WorkArea as follows:

  ...fl_add_free(FL_ALL_FREE, ...)... 

to

  ..fl_add_free(FL_INPUT_FREE,...)...

This seems to have fixed the problem and LyX still seems to be working ok.

Amir

Amir Michail <[EMAIL PROTECTED]> writes:

| Hi,
>
| We have noticed that LyX performs frequent
| polling.  In particuar, C_WorkArea_work_area_handler
| is called multiple times per second.
>
| Is this frequent polling necessary for updating the display?
| Or is the display updated immediately when changes
| are made to the document?

What os is this?

And frequent (as in 50 times a second) does not harm anyting as long
as now actual work is done.

-- 
Lgb



frequent polling in LyX

2002-08-28 Thread Amir Michail

Hi,

We have noticed that LyX performs frequent
polling.  In particuar, C_WorkArea_work_area_handler
is called multiple times per second.

Is this frequent polling necessary for updating the display?
Or is the display updated immediately when changes
are made to the document?

Amir

P.S.  We are asking these questions so that we can properly
support LyX in our design recovery tool, DRT.

You can see progress we have made on DRT here:
http://www.cse.unsw.edu.au/~drt/screenshot/index.html.  You will
need to click on the screenshot links to see the entire screenshot.




frequent polling in LyX

2002-08-28 Thread Amir Michail

Hi,

We have noticed that LyX performs frequent
polling.  In particuar, C_WorkArea_work_area_handler
is called multiple times per second.

Is this frequent polling necessary for updating the display?
Or is the display updated immediately when changes
are made to the document?

Amir

P.S.  We are asking these questions so that we can properly
support LyX in our design recovery tool, DRT.

You can see progress we have made on DRT here:
http://www.cse.unsw.edu.au/~drt/screenshot/index.html.  You will
need to click on the screenshot links to see the entire screenshot.




Re: Support for LyX in design recovery tool?

2002-08-08 Thread Amir Michail

On Thu, 8 Aug 2002 11:05, you wrote:
 If you get round to making a detailed step-by-step of what needs doing
 (a preliminary patch ?) I'll be glad to look further
 

Hi,

I looked into getting rid of cursor blinking for the design recovery tool. 
(This makes it easier to track the cursor from screenshots.)  Apparently, 
it's not easy to do since every inset has its own cursor blinking code, some 
of which is not trivial (e.g., tabular inset).

I tried making the following change in BufferView_pimpl.C at the end of
of the void BufferView::Pimpl::cursorToggle() method:

// change toggle calls to show calls
  if (!bv_-theLockingInset()) {
 bv_-showCursor();  // instead of toggle
  } else {
bv_-theLockingInset()-showInsetCursor(bv_); // instead of toggle
  }

  cursor_timeout.restart(); // as before
}

This works for the normal cursor and most but not all inset cursors.  In 
particular, it doesn't work for the tabular inset.  Apparently, some 
non-trivial work is being done in its toggle method.

BTW, getting rid of the cursor timeout doesn't work since in some cases the 
cursor is not shown at all unless it is toggled from a timeout.

Also, I tried changing the cursor color using the dialog in the GUI.  (Again, 
a unique cursor color makes it easier to track the cursor from screenshots.)  
For some reason, the cursor color changes were always ignored (lyx 1.2).
The color sliders also had some problems.  For example, I couldn't pick 
254 for red; it only gave me 253 or 255.  Perhaps there is a way to explicitly
specify RGB values from the startup file?

Amir

 regards
 john
 -- 
 It is unbecoming for young men to utter maxims.
   - Aristotle
 
 



Re: Support for LyX in design recovery tool?

2002-08-08 Thread Amir Michail

On Thu, 8 Aug 2002 11:05, you wrote:
> If you get round to making a detailed step-by-step of what needs doing
> (a preliminary patch ?) I'll be glad to look further
> 

Hi,

I looked into getting rid of cursor blinking for the design recovery tool. 
(This makes it easier to track the cursor from screenshots.)  Apparently, 
it's not easy to do since every inset has its own cursor blinking code, some 
of which is not trivial (e.g., tabular inset).

I tried making the following change in BufferView_pimpl.C at the end of
of the void BufferView::Pimpl::cursorToggle() method:

// change toggle calls to show calls
  if (!bv_->theLockingInset()) {
 bv_->showCursor();  // instead of toggle
  } else {
bv_->theLockingInset()->showInsetCursor(bv_); // instead of toggle
  }

  cursor_timeout.restart(); // as before
}

This works for the normal cursor and most but not all inset cursors.  In 
particular, it doesn't work for the tabular inset.  Apparently, some 
non-trivial work is being done in its toggle method.

BTW, getting rid of the cursor timeout doesn't work since in some cases the 
cursor is not shown at all unless it is toggled from a timeout.

Also, I tried changing the cursor color using the dialog in the GUI.  (Again, 
a unique cursor color makes it easier to track the cursor from screenshots.)  
For some reason, the cursor color changes were always ignored (lyx 1.2).
The color sliders also had some problems.  For example, I couldn't pick 
254 for red; it only gave me 253 or 255.  Perhaps there is a way to explicitly
specify RGB values from the startup file?

Amir

> regards
> john
> -- 
> "It is unbecoming for young men to utter maxims."
>   - Aristotle
> 
> 



Re: Support for LyX in design recovery tool?

2002-07-29 Thread Amir Michail

 On Sun, Jul 28, 2002 at 02:24:46PM +1000, Amir Michail wrote:
  We are working on a design recovery tool for
  interactive graphical applications.

 Hey, cool project. I had much a similar idea to help me learn lyx
 internals a while ago, but it was of a much smaller scope, and I
 never had time to take it anywhere useful (http://functrace.sf.net/)

Hi,

Yes, your idea takes a similar dynamic approach.


 Do you plan to do method-repression for hiding commonly called functions
 that aren't very interesting ? e.g. when I move the mouse, after a while
 I don't want to see that workAreaMotionNotify() got called, because I've
 learnt that part of the code. This would make a more interactive mode
 usable, which is where I was planning to take functrace ...

We only label interesting function calls so after a while the boring ones will 
not be labeled.  (See http://www.cse.unsw.edu.au/~drt/screenshot/index.html.)

To determine whether a function is boring or not, we use a somewhat 
complicated technique to compute function prevalence that is not sensitive
to repeated actions or even similar actions.  See
the description here:  http://www.cse.unsw.edu.au/~drt/idea/action_spectra.txt



  * compiling with -g -finstrument-functions
 
  * linking with an additional object file for the tracer code

 This bit would be easy to do.


Yes.

  * non-blinking cursors having color 254,1,1 (we can track the cursor
 that way in the screenshots to identify the user's focus;
 255,0,0 is likely to clash with other aspects of the display such
 as icons)

 Dunno about the colour, but the cursor management code is in screen.C,
 and it'd be easy to make it stop blinking.

 Check out the cursor_timeout variable as well: this is the timer that
 blinks the cursor.

Ok, thanks.


  Is it possible to provide this support in the configure scripts?

 I don't see why not. I might even be co-erced into making a patch

That would be great.  I don't have a good understanding of the GNU build 
system.

 ...

 (I don't see any license though ?)

Probably GPL. We just need to make sure it doesn't conflict with the licenses
of code that we are reusing (e.g., xmon).

Amir


 regards
 john



Re: Support for LyX in design recovery tool?

2002-07-29 Thread Amir Michail

> On Sun, Jul 28, 2002 at 02:24:46PM +1000, Amir Michail wrote:
> > We are working on a design recovery tool for
> > interactive graphical applications.
>
> Hey, cool project. I had much a similar idea to help me learn lyx
> internals a while ago, but it was of a much smaller scope, and I
> never had time to take it anywhere useful (http://functrace.sf.net/)

Hi,

Yes, your idea takes a similar dynamic approach.

>
> Do you plan to do method-repression for hiding commonly called functions
> that aren't very interesting ? e.g. when I move the mouse, after a while
> I don't want to see that workAreaMotionNotify() got called, because I've
> learnt that part of the code. This would make a more "interactive" mode
> usable, which is where I was planning to take functrace ...

We only label interesting function calls so after a while the boring ones will 
not be labeled.  (See http://www.cse.unsw.edu.au/~drt/screenshot/index.html.)

To determine whether a function is boring or not, we use a somewhat 
complicated technique to compute function prevalence that is not sensitive
to repeated actions or even similar actions.  See
the description here:  http://www.cse.unsw.edu.au/~drt/idea/action_spectra.txt


>
> > * compiling with -g -finstrument-functions
> >
> > * linking with an additional object file for the tracer code
>
> This bit would be easy to do.
>

Yes.

> > * non-blinking cursors having color 254,1,1 (we can track the cursor
> >that way in the screenshots to identify the user's focus;
> >255,0,0 is likely to clash with other aspects of the display such
> >as icons)
>
> Dunno about the colour, but the cursor management code is in screen.C,
> and it'd be easy to make it stop blinking.
>
> Check out the "cursor_timeout" variable as well: this is the timer that
> blinks the cursor.

Ok, thanks.

>
> > Is it possible to provide this support in the configure scripts?
>
> I don't see why not. I might even be co-erced into making a patch

That would be great.  I don't have a good understanding of the GNU build 
system.

> ...
>
> (I don't see any license though ?)

Probably GPL. We just need to make sure it doesn't conflict with the licenses
of code that we are reusing (e.g., xmon).

Amir

>
> regards
> john



Support for LyX in design recovery tool?

2002-07-27 Thread Amir Michail

Hi,

We are working on a design recovery tool for
interactive graphical applications.

See http://www.cse.unsw.edu.au/~drt

Here are some screenshots of the prototype:

http://www.cse.unsw.edu.au/~amichail/gui1.png
http://www.cse.unsw.edu.au/~drt/screenshot/index.html

We would like to support LyX.
This requires a few things:

* compiling with -g -finstrument-functions

* linking with an additional object file for the tracer code

* non-blinking cursors having color 254,1,1 (we can track the cursor
   that way in the screenshots to identify the user's focus;
   255,0,0 is likely to clash with other aspects of the display such
   as icons)

Is it possible to provide this support in the configure scripts?

Amir

P.S.  These additions would probably also be helpful for accessibility
  tools.



Support for LyX in design recovery tool?

2002-07-27 Thread Amir Michail

Hi,

We are working on a design recovery tool for
interactive graphical applications.

See http://www.cse.unsw.edu.au/~drt

Here are some screenshots of the prototype:

http://www.cse.unsw.edu.au/~amichail/gui1.png
http://www.cse.unsw.edu.au/~drt/screenshot/index.html

We would like to support LyX.
This requires a few things:

* compiling with -g -finstrument-functions

* linking with an additional object file for the tracer code

* non-blinking cursors having color 254,1,1 (we can track the cursor
   that way in the screenshots to identify the user's focus;
   255,0,0 is likely to clash with other aspects of the display such
   as icons)

Is it possible to provide this support in the configure scripts?

Amir

P.S.  These additions would probably also be helpful for accessibility
  tools.



CVSSearch improved; useful for LyX?

2001-06-16 Thread Amir Michail

Hi,

Our CVSSearch tool has improved recently
with new features -- commit-based search and library
component search -- as well as much improved
speed  accuracy.  (File-based search remains slow
for searches involving multiple apps however.)

Moreover, the tool also lets you browse files, commits, 
and library usage patterns.

Would anyone be interested in using it to search the LyX
CVS repository?  We can help you set it up if you are interested.

You can see a demo with over 200 KDE apps here:

http://horn.cse.unsw.edu.au/~cvssearch/Query.cgi

The home page is here:

http://cvssearch.sourceforge.net

Amir

P.S.  The code in the demo has not been released in a beta yet.
  We hope to do that in a month after some testing in large open source
  projects such as LyX.



CVSSearch improved; useful for LyX?

2001-06-16 Thread Amir Michail

Hi,

Our CVSSearch tool has improved recently
with new features -- commit-based search and library
component search -- as well as much improved
speed & accuracy.  (File-based search remains slow
for searches involving multiple apps however.)

Moreover, the tool also lets you browse files, commits, 
and library usage patterns.

Would anyone be interested in using it to search the LyX
CVS repository?  We can help you set it up if you are interested.

You can see a demo with over 200 KDE apps here:

http://horn.cse.unsw.edu.au/~cvssearch/Query.cgi

The home page is here:

http://cvssearch.sourceforge.net

Amir

P.S.  The code in the demo has not been released in a beta yet.
  We hope to do that in a month after some testing in large open source
  projects such as LyX.



LyX CVS Depository

2001-01-03 Thread Amir Michail

i,

I would like to download the entire
CVS depository for LyX.  However,
webcvs gives a depository that has been
cut off at some point in the past.  I can no longer
go to the very first versions of the files.

Do you know where I can get such a fuller CVS
depository for LyX?  While I need 
versions from the very beginning (or as early 
as possible), I do not need the very latest versions.

Amir

P.S.  This is to test a new kind of search tool
for code.  It would only work well if I have access
to early commits to the code.

--- FYI, tool description follows

CVSSearch:  A New Way to Search through Source Code
 
CVSSearch searches for code fragments
using CVS comments. Specifically, it
takes advantage of the fact that a CVS comment
typically describes the lines of code involved
in the commit and that this description
will typically hold for many future versions.
 
In other words, CVSSearch allows you to
better search the most recent version of
the code by looking at previous versions
to better understand the current version.
 
It works as follows:
 
* typically, each comment in a CVS commit not only
  describes the change made but also
  indirectly describes the purpose of the lines of code
  involved in that change (e.g., "added footnote feature"
  indirectly tells you that the lines involved
  in the commit have something to do with footnotes)
 
* each line in the code accumulates
  a "profile" that contains all words in commits
  that involved that line, and each word
  has an associated frequency, which is
  the number of commits that involved that
  line with a comment containing that word.
 
The idea is to let you search the code base
based on the profiles extracted from the CVS
comments. 

This has several advantages:
 
* if a line is affected by many commits, then
  you get multiple summaries/aspects of
  the purpose of that line, as described by
  multiple authors in multiple commits
  (in contrast, a comment in the code itself
  can be viewed as just one summary)
 
* you can search for something like
  "editing window" and get a match even
  if the code does not contain these words
  but at least one author decided to use
  those terms to describe his modifications
  to the code. (That is, this allows us to
  address the vocabulary mismatch problem.)
 
* you can search for "bug" to find lines
  in the code that are especially bug prone
  (since you have many commits with
   "bug fixed" or something similar)
 
* you get very precise information about
  the exact lines in the code that relate
  to your query (which need not appear
  in a contiguous region of code)
 
Intuitively speaking, a comment on a particular
version of an application will probably continue
to hold for a lot of versions that follow, so
it makes sense to combine commit comments
in this way.

The method I described can be viewed as computing
a *vertical* profile for each line from previous changes to the code.
 
It is also possible to compute a *horizontal* profile for lines
by looking at CVS comments in other projects with similar code.
Thus, to get a meaningful profile for a line/group of lines, it is
only necessary that a CVS comment has applied to those lines
in the past of the current application or in some other application
with similar code.  (You can use local similarity, as is done
with DNA, to identify similar code fragments in different contexts.)
 
Of course, you can combine vertical and horizontal profiles.
In this way, we can get around the great variation in CVS
comment quality.



LyX CVS Depository

2001-01-03 Thread Amir Michail

i,

I would like to download the entire
CVS depository for LyX.  However,
webcvs gives a depository that has been
cut off at some point in the past.  I can no longer
go to the very first versions of the files.

Do you know where I can get such a fuller CVS
depository for LyX?  While I need 
versions from the very beginning (or as early 
as possible), I do not need the very latest versions.

Amir

P.S.  This is to test a new kind of search tool
for code.  It would only work well if I have access
to early commits to the code.

--- FYI, tool description follows

CVSSearch:  A New Way to Search through Source Code
 
CVSSearch searches for code fragments
using CVS comments. Specifically, it
takes advantage of the fact that a CVS comment
typically describes the lines of code involved
in the commit and that this description
will typically hold for many future versions.
 
In other words, CVSSearch allows you to
better search the most recent version of
the code by looking at previous versions
to better understand the current version.
 
It works as follows:
 
* typically, each comment in a CVS commit not only
  describes the change made but also
  indirectly describes the purpose of the lines of code
  involved in that change (e.g., "added footnote feature"
  indirectly tells you that the lines involved
  in the commit have something to do with footnotes)
 
* each line in the code accumulates
  a "profile" that contains all words in commits
  that involved that line, and each word
  has an associated frequency, which is
  the number of commits that involved that
  line with a comment containing that word.
 
The idea is to let you search the code base
based on the profiles extracted from the CVS
comments. 

This has several advantages:
 
* if a line is affected by many commits, then
  you get multiple summaries/aspects of
  the purpose of that line, as described by
  multiple authors in multiple commits
  (in contrast, a comment in the code itself
  can be viewed as just one summary)
 
* you can search for something like
  "editing window" and get a match even
  if the code does not contain these words
  but at least one author decided to use
  those terms to describe his modifications
  to the code. (That is, this allows us to
  address the vocabulary mismatch problem.)
 
* you can search for "bug" to find lines
  in the code that are especially bug prone
  (since you have many commits with
   "bug fixed" or something similar)
 
* you get very precise information about
  the exact lines in the code that relate
  to your query (which need not appear
  in a contiguous region of code)
 
Intuitively speaking, a comment on a particular
version of an application will probably continue
to hold for a lot of versions that follow, so
it makes sense to combine commit comments
in this way.

The method I described can be viewed as computing
a *vertical* profile for each line from previous changes to the code.
 
It is also possible to compute a *horizontal* profile for lines
by looking at CVS comments in other projects with similar code.
Thus, to get a meaningful profile for a line/group of lines, it is
only necessary that a CVS comment has applied to those lines
in the past of the current application or in some other application
with similar code.  (You can use local similarity, as is done
with DNA, to identify similar code fragments in different contexts.)
 
Of course, you can combine vertical and horizontal profiles.
In this way, we can get around the great variation in CVS
comment quality.