Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some thoughts after the initial attempt about GF4 #50

Open
HaveF opened this issue Nov 18, 2023 · 22 comments
Open

Some thoughts after the initial attempt about GF4 #50

HaveF opened this issue Nov 18, 2023 · 22 comments

Comments

@HaveF
Copy link

HaveF commented Nov 18, 2023

  1. The tool is intuitive and user-friendly.

  2. It offers numerous functions, particularly for calculation and processing; however, guidance on typical processing or analysis workflows would be beneficial for users unfamiliar with mathematical tools.

  3. The 'Stack contents' feature is very useful, as noted in the documentation and from personal experience, particularly for saving a graph copy before reattempting. Therefore, it might be more convenient to have this window open by default 😄

  4. Log messages in the graphics window disappear too quickly. Since users initially focus on the graphic after clicking, they may miss important log messages if they need to refer back to them. A slower fade-out for these messages could be an improvement.
    image

  5. The absence of a 'plot y' function is noticeable, and although this can be addressed with the stack feature, but it always feels a bit strange
    image

  6. I was thinking it would be better if there was an undo function. Sometimes I'll look at a graph in Y+X and find that I don't want this graph, I want Y-X, but I can only store the data from X to T through stacking, then manipulate Y+X, then T-> X, and then Y-X. Of course, this shouldn't be too much of a problem, and maybe that's the philosophy of RPN style.

  7. The "record Macros" function seems not work? maybe it is a great place to store some typical processing or analysis workflows?

  8. The link on the GitHub page is broken and should be updated to https://tbpassin.github.io/gf4-project/docs/GF4_Users_Guide.html?
    image

All in all, the tool is great, question 2 is probably a major difficulty for me.

@HaveF
Copy link
Author

HaveF commented Nov 18, 2023

  1. I have not tried the Plugin System yet; however, I am considering using this system to implement some time-series forecasting methods and directly observe the results. It feels useful when I think about it. If I want to compare more than 3 2D data sets, the stack system is not easy to support it, right?

@HaveF
Copy link
Author

HaveF commented Nov 18, 2023

@tbpassin
Copy link
Owner

Thank you for the thoughtful comments! I appreciate them very much. See below for my thoughts about them.

  1. The tool is intuitive and user-friendly.
  2. It offers numerous functions, particularly for calculation and processing; however, guidance on typical processing or analysis workflows would be beneficial for users unfamiliar with mathematical tools.

Yes - I'm very behind with this, sorry. I got derailed and need to get back to it. My idea was to use the blog rather than the docs. What do you think about this plan? BTW, I write the blog and the user docs in Leo.

  1. The 'Stack contents' feature is very useful, as noted in the documentation and from personal experience, particularly for saving a graph copy before reattempting. Therefore, it might be more convenient to have this window open by default 😄

It is a relatively recent addition. It's not open by default so far because 1) I get concerned about the window using up too much of the screen (I sometimes use GF4 on various linux virtual machines that aren't running full screen, for example); 2) I have found it difficult to get consistent and workable window placements when the program opens, mostly on Linux - different distros seem to work differently in this regard.

I could make it a configurable option, but so far I have tried to avoid such things. I'll give it some more thought. What do you think about the idea of options? There are basically two approaches: a separate .ini file, or environmental variables.

There might be a third way. Maybe configuration could be done via a plugin. I'd have to review the plugin code to see if that's feasible the way it is now. Of course, there would still have to be files somewhere, it would just be a plugin file instead of an ini file.

  1. Log messages in the graphics window disappear too quickly. Since users initially focus on the graphic after clicking, they may miss important log messages if they need to refer back to them. A slower fade-out for these messages could be an improvement.

Another tradeoff, one I'm used to. Too long and it gets annoying. Too short and as you say, you can miss a message. For errors, I flash it to get the user's attention without sticking a dialog in his face, but maybe they should fade slower. It's an easy change to make. If I went for a ini file for options, it could be made configurable there.

  1. The absence of a 'plot y' function is noticeable, and although this can be addressed with the stack feature, but it always feels a bit strange

That's partly historical, not that should count for anything to anyone else but me. It would be trivial to implement. I was just trying to keep the button/function count down. It used to be that I mostly used the Y register to overlay for comparisons. But it's true that these days I use it more on its own.

Actually, It's possible that the a plugin could do the job. I'd have to write a little command to plot Y, and then the plugin could access it. That might be worth doing. The someone who really needed it could add a button as a plugin.

  1. I was thinking it would be better if there was an undo function. Sometimes I'll look at a graph in Y+X and find that I don't want this graph, I want Y-X, but I can only store the data from X to T through stacking, then manipulate Y+X, then T-> X, and then Y-X. Of course, this shouldn't be too much of a problem, and maybe that's the philosophy of RPN style.

There's a swap function - that's how I do it. It's the third button down in the Stack column. When you mouse over it, the help line at the top of the window reminds you that it swaps X and Y.

Something that is less obvious - I copied it from my old HP RPN calculator - is that when you drop the stack, the top element gets copied into the top as well as dropping to Y. That can be very useful. Rotating the stack, OTOH, doesn't lose or duplicate any registers.

Undo is a hard problem for GF4. I have thought about how it should work, and still haven't got to a point I'm happy with. It wouldn't be so hard to undo changes in the register contents. What does seem hard is when graphs get overlaid. Sometimes I overlay many more traces than there are registers for. I do that by loading another data file and overplotting it. I don't see an obvious way to undo that.

To help out until I have a full solution, I provide a single storage register that you can save to and restore from. Naturally it works through the X register. You can also save the X register to the clipboard and restore it to the X register from there.

A fairly new addition is the ability to save and restore the entire stack contents. That's not really the same as undo either, but it can help. The problem I run into is that it gets hard to remember the stored stack state after a while. So I end up not using the functionality very often.

Keeping track of the stack contents is why there are only three stack registers. The code could handle an arbitrary number. Change one defined constant, and you could have ten registers. But the UI complexity would go up. If you wanted to be able to plot them you would not only need to add buttons for that but also menu items for setting the line width, color, etc. For decades I only used two registers, X and Y. The Z register is a relative newcomer. So far as I am concerned, three is a manageable number and I rarely wish for more. But if someone really needed a fourth, it wouldn't be hard.

  1. The "record Macros" function seems not work? maybe it is a great place to store some typical processing or analysis workflows?

It works. I just tested it. It's true you can't save a macro at present. It would be simple to implement saving, since a macro is actually a sequence of command names. I haven't done anything because managing a bunch of macros seems a bit hard to me. I'd want an interface to name a macro, to view which ones are available to load, etc. They would have to live somewhere.

All doable, just added complication that I don't want to undertake unless there is a compelling reason.

Here's an example of creating and running a macro that I just tried. If it doesn't work for you, then it must be something Mac-specific, though I can't see why that would be.

  1. Click the Macro/Record button. Observer it changes color. Every button you press after this will be recorded into the macro.
  2. Click Damp Sin and accept the parameters.
  3. Click Stack/Push
  4. Click Gaussian PDF and accept the parameter.
  5. Click Data Processing/Convolve.
  6. Click Macro/Record button again. Observe that the button returns to its original color.
  7. Now click Macro/Play. You will be presented with the same dialog boxes as in 2. and 4. Accept them or change the parameters s you like.
  8. Observe that the macro runs and recomputes the convolution.

The parameter boxes pop up because the macro just issues the same commands that one would make by clicking the command buttons. The dialogs remember their last values, which is very convenient.

  1. The link on the GitHub page is broken and should be updated to https://tbpassin.github.io/gf4-project/docs/GF4_Users_Guide.html?
    image

Thanks. I'll get on it. I don't understand the Chinese characters on your screenshot.

All in all, the tool is great, question 2 is probably a major difficulty for me.

Thank you! Is their any particular workflow you would like to see addresses first?

@tbpassin
Copy link
Owner

tbpassin commented Nov 18, 2023

  1. I have not tried the Plugin System yet; however, I am considering using this system to implement some time-series forecasting methods and directly observe the results. It feels useful when I think about it. If I want to compare more than 3 2D data sets, the stack system is not easy to support it, right?

Yes, that is so. I talk about it in my post just above, under Item 6. I'll be happy to work with you to see if there's an easy approach. For example, it would be much easier if the extra stack registers didn't need to be plotted. The the UI wouldn't have to change or get cluttered. OTOH, one probably wants to be able to copy from any stack register into X, and that would clutter the UI, which I want to avoid. In a pure RPN sense one could handle that with a combination of swaps and rotations, but for normal people that would be too hard to keep track of.

The basic stack-handling code doesn't care how many stack levels there are. I think the stack display window doesn't either, though I probably haven't actually checked that yet. There are no internal commands as yet to plot/overplot any register positions besides X, Y, and T (aka Z). How it should all work needs careful attention and should be guided by how the new stack registers would be used. I don't want to hack something awkward together if I can avoid it.

There is code to read a series of data sets (contained in a single file) into the various stack registers, and I know that wouldn't work as is. But probably no one but me uses that capability, and I don't use it often.

@HaveF
Copy link
Author

HaveF commented Nov 18, 2023

My idea was to use the blog rather than the docs. What do you think about this plan?

I think either way is good, now it's just a matter of pointing to your blog post in the doc.

That's actually why I suggested recording a video before, writing a blog actually takes a lot of time. But if you just record something the next time you analyze something with GF4, then you won't have much time to pay, just like teaching your old friend how to use your new tool.

It's not open by default so far because 1) I get concerned about the window using up too much of the screen (I sometimes use GF4 on various linux virtual machines that aren't running full screen, for example); 2) I have found it difficult to get consistent and workable window placements when the program opens, mostly on Linux - different distros seem to work differently in this regard.

I totally understand your concern about why not enable 'Stack contents' as default.

I could make it a configurable option, but so far I have tried to avoid such things.

I agree. Wait until you need more configuration in the future.

To help out until I have a full solution, I provide a single storage register that you can save to and restore from. Naturally it works through the X register. You can also save the X register to the clipboard and restore it to the X register from there.

This feature is enough for my undo request 👍

Here's an example of creating and running a macro that I just tried. If it doesn't work for you, then it must be something Mac-specific, though I can't see why that would be.

Thanks for your detailed steps to use Macro. I know why it is not work before -- just because it does not change color when I push it, actually it can recording. I believe it is because some bugs about tk(I wrote a short script last week, and find the same thing). Maybe we can add some recording message somewhere for the sake of platform compatibility? 😂 BTW, the detailed steps you described for me could save to doc directly 😄

I don't understand the Chinese characters on your screenshot.

The Chinese characters have no special meaning. This is just a browser extension I used, it can translate Chinese under English, when I can't understand translated Chinese (after all, the translation sometimes not accurate enough), I can go and see what is actually said in English.

Is their any particular workflow you would like to see addresses first?

Maybe I'm just curious about how you use them for your day-to-day analysis. I really like this kind of analysis like this article, and I feel like I've never paid attention to it before.

To the left of the peak, the curve levels out at some value. This means that the curve has some power at very low frequencies. This makes sense because every half cycle of a damped sine has a larger peak amplitude than the one following it. So there is a net positive area above the x-axis, and the non-zero low frequency value reflects this fact.

Maybe it's just simple interesting to talk about basic math with GF4

@tbpassin
Copy link
Owner

Thanks for your detailed steps to use Macro. I know why it is not work before -- just because it does not change color when I push it, actually it can recording. I believe it is because some bugs about tk(I wrote a short script last week, and find the same thing). Maybe we can add some recording message somewhere for the sake of platform compatibility? 😂 BTW, the detailed steps you described for me could save to doc directly 😄

I should be able to arrange some kind of message in addition to the color change. Now I am wondering if another color feature is working on your Mac. When you mouse over a button on the button window, it should turn yellow. Do you see that happening?

@tbpassin
Copy link
Owner

Maybe I'm just curious about how you use them for your day-to-day analysis. I really like this kind of analysis like this article, and I feel like I've never paid attention to it before.

To the left of the peak, the curve levels out at some value. This means that the curve has some power at very low frequencies. This makes sense because every half cycle of a damped sine has a larger peak amplitude than the one following it. So there is a net positive area above the x-axis, and the non-zero low frequency value reflects this fact.

Maybe it's just simple interesting to talk about basic math with GF4

There are many things we know in the abstract, but being able to see them change them directly brings a deeper understanding. For me GF4 has been a good helper in this way.

@HaveF
Copy link
Author

HaveF commented Nov 18, 2023

I should be able to arrange some kind of message in addition to the color change. Now I am wondering if another color feature is working on your Mac. When you mouse over a button on the button window, it should turn yellow. Do you see that happening?

No, the color of button doesn't change.

@tbpassin
Copy link
Owner

No, the color of button doesn't change.

That's disappointing. So it's a Mac thing. I think that the color change when you hover over a button is a helpful UI feature that reduces the chance you press the wrong button. I'll see if I can track down any information about it, but I won't be able to test a potential fix on a Mac so I may ask you to test it for me, if that would be all right. If I can find something...

I have prototyped an enhancement that shows a message in the main window when you click on the Macro button. I'll get that change into a PR shortly.

@HaveF
Copy link
Author

HaveF commented Nov 19, 2023

I have prototyped an enhancement that shows a message in the main window when you click on the Macro button. I'll get that change into a PR shortly.

Or you can just change the button text after pressed, 'Record' -> 'Stop', it is also a convenient way to info user

@tbpassin
Copy link
Owner

Good thought, thanks.

@tbpassin
Copy link
Owner

The link on the GitHub page is broken and should be updated to https://tbpassin.github.io/gf4-project/docs/GF4_Users_Guide.html?

I haven't actually created a home page in github.io. I have changed that link to point back to the github project page.

@HaveF
Copy link
Author

HaveF commented Nov 19, 2023

I haven't actually created a home page in github.io. I have changed that link to point back to the github project page.

The github can auto redirect the html file you put on the docs dir. You can access any file under https://github.com/tbpassin/gf4-project/tree/main1/docs, like basics.html, you can use https://tbpassin.github.io/gf4-project/docs/basics.html

@tbpassin
Copy link
Owner

Yes. I'm not sure if I want to make the user guide the main document or not. Until I decide, I'll just point back to the github project page.

@tbpassin
Copy link
Owner

All right, I have got the github.io home page at

https://tbpassin.github.io/gf4-project/

to redirect to the User's Guide.

@HaveF
Copy link
Author

HaveF commented Dec 15, 2023

https://tbpassin.github.io/gf4-project/

Seems nice.

Just for Fun:
I have a paid chatgpt account, just throw some prompts, and get several quick logos:

DALL·E 2023-12-15 09 21 04 - Create four logos for GF4, a graphics framework program for waveform and time series analysis, featuring a specialized calculator with operation keys
DALL·E 2023-12-15 09 21 01 - Create four logos for GF4, a graphics framework program for waveform and time series analysis, featuring a specialized calculator with operation keys

DALL·E 2023-12-15 09 20 58 - Create four logos for GF4, a graphics framework program focusing on waveform and time series analysis, with a calculator designed for these data types

DALL·E 2023-12-15 09 20 41 - Design four distinct logos for GF4, a graphics framework program specialized in time series and waveform data analysis  1) A logo featuring an intrica

@tbpassin
Copy link
Owner

Ha! Fun, fun, fun. I've been playing with the unpaid version. Such a weird mixture of being helpful and wrong at the same time. I actually used it today in connection with a script relating to building the GF4 blog. It never did come up with the right approach, but it did give me an idea that worked out.

I don't see myself actually adopting one of these images, but why don't you prompt it to generate something resembling an HP-41 calculator display - just for fun.

@HaveF
Copy link
Author

HaveF commented Dec 15, 2023

It is not easy to pick right prompt when generate pictures. For now, chatgpt can't share chat log if contains images. So I just use screenshot to illustrate the processing.

chat openai com_g_g-2fkFE8rbu-dall-e_c_326d6a25-6187-452b-941c-0f7c49764334
chat openai com_g_g-2fkFE8rbu-dall-e_c_326d6a25-6187-452b-941c-0f7c49764334 (1)
chat openai com_g_g-2fkFE8rbu-dall-e_c_326d6a25-6187-452b-941c-0f7c49764334 (2)
chat openai com_g_g-2fkFE8rbu-dall-e_c_326d6a25-6187-452b-941c-0f7c49764334 (4)

Have a nice day, Thomas!

@tbpassin
Copy link
Owner

Haha, this is a good time sink! Actually, it's getting closer. Maybe the prompt should specify an "RPN" calculator, because we do not want to see a big "+" key. We need and ENTER key instead.

BTW, here's a screens shot of the HP-42 emulator I use:

free42

And here's a shot of an hp-45 emulator:

hp45

If you can tune the prompt to get closer to either of these, it will have been a job well done! Of course these images are way too busy to be the desktop icon, but one could decorate the documentation, etc.

@HaveF
Copy link
Author

HaveF commented Dec 15, 2023

It is too hard to adjust the detail font on the image. I just leave it as a baseline for further modification(maybe we need some image editor software)

DALL·E 2023-12-15 13 04 46 - Create a clear and detailed image of a 'GF-4' calculator display in the RPN (Reverse Polish Notation) style, ensuring the absence of a '+' key and inc

@tbpassin
Copy link
Owner

Looks like that's the best you will be able to get. Not bad! I wonder about the labels and how it picked them., and why it would have gotten some that are clearly in English spelled wrong (e.g., "Reverse Polsish Nottation", which at best seems like a mish-mash of languages). Fascinating!

@tbpassin
Copy link
Owner

No, the color of button doesn't change.

That's disappointing. So it's a Mac thing. I think that the color change when you hover over a button is a helpful UI feature that reduces the chance you press the wrong button. I'll see if I can track down any information about it, but I won't be able to test a potential fix on a Mac so I may ask you to test it for me, if that would be all right. If I can find something...

I have prototyped an enhancement that shows a message in the main window when you click on the Macro button. I'll get that change into a PR shortly.

See Issue #51

It looks like it may be possible to work around this Mac-only problem, if someone with a Mac is willing to try some experimental code. The command window can be run stand-alone, so the entire GF4 app does not have to be fired up for each test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants