1. RedyCode 0.9.3
- Posted by Mike777b Jul 12, 2016
- 2390 views
Bravo! Very well done, Ryan!
The speed is a little sluggish so I'm a little worried about what the eventual speed will be once you implement additional features, but not too worried.
Just thought I'd let you know what features I feel are required before I could seriously jump on board.
In my world, a GUI is still a UI so it is imperative that the flagship IDE have UI features that invite efficiency, because if the flagship doesn't invite efficiency it is hard to imagine that the IDE will allow a user to create an app that does. For me, that means as much keyboard control as I can get. So, even though Hotkeys are listed in the 0.9.1 - 0.9.9 roadmap already (that is, the soonest stuff), I'd vote for them sooner rather than later. I'd like F5 to run the project's exw, but I can settle for an "Alt-A; R" keyboard shortcut to execute the Run command of the Application Menu. Similarly, FindNext has to have a hotkey (F3?)
The only feature of RedyPad that is absolutely needed is Undo/redo so I'd vote to move that up from Version 1.0 on the roadmap.
I actually think with the above few features it is ready (yuck, yuck) for the real world.
There is also one feature I'd suggest you put into the roadmap somewhere and that is an additional command on the Application menu entitled "Backup and Run" which makes a textfile backup of the exw file which can function as a restore point. I would put a backup directory in the Source directory and create a new file called ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time). I'd even settle for the poor man's version which would be a command on the Application menu named something like "Execute App and Run" and then put the appname somewhere where it would be remembered. Then it would be up to the user to write a small app that would do the backup before running the exw. Just a (long) thought!
As you can tell I haven't investigated in detail the RedyLib feature-set and I'm sure there are things you plan on doing there, as well.
I understand that these things take time!
Thanks for RedyCode/Lib, it has great promise.
mike
2. Re: RedyCode 0.9.3
- Posted by euphoric (admin) Jul 12, 2016
- 2372 views
ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time)
There's no reason you'd need the sequential number, unless you're backing up more than once per second.
3. Re: RedyCode 0.9.3
- Posted by Mike777b Jul 12, 2016
- 2345 views
ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time)
There's no reason you'd need the sequential number, unless you're backing up more than once per second.
Actually, there is. The date stamp allows one to discern statistics related to time (when did I work on it, how much progress did I make that day, that week, etc.). The sequential indicator is much easier to track milestones with. Heck, if you are going to call me out on redundancy we don't need either as the operating system will timestamp the file.
mike
4. Re: RedyCode 0.9.3
- Posted by andi49 Jul 12, 2016
- 2325 views
Hi
ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time)
There's no reason you'd need the sequential number, unless you're backing up more than once per second.
A really worthless comment to a really good feedback!
Your comment lacked an alternative naming. Just critic.
There is nothing productive in your post.
From my point of view, this kind of posts discourages people to give any feedback.
Thank you
Andreas
5. Re: RedyCode 0.9.3
- Posted by jimcbrown (admin) Jul 12, 2016
- 2327 views
ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time)
There's no reason you'd need the sequential number, unless you're backing up more than once per second.
There is nothing productive in your post.
I respectivefully disagree. euphoric was merely stating what euphoric believed to be a potential optimization (akin to saying 'well, to save on memory you can store the year as only two digits instead of four!'). Mike777b had an excellent response which explained why it was in fact useful - and this was, at least to me, a non-obvious answer that was worth having spelled out.
Your comment lacked an alternative naming.
It did not. euphoric's alternative naming was, at least to me, obvious - ProjectName.exw.YYMMDDHHMMSS.bkp where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second
Just critic.
Even if it had lacked this, I still feel that pointing out a potential optimization is a useful form of good, friendly, constructive criticism and feedback.
That said, it's certainly possible that euphoric could have worded his post a little better. Maybe something along the lines of "Good idea on the format, but are you sure you need the sequence number? It seems to me that unless you are saving it more than once a second you don't really need that part, and so you can save on code complexity by not having to maintain the sequence number handling code..."
But hey, we're all geeks and nerds, not professional PR people. Some allowance must be made for nerdiness.
A really worthless comment to a really good feedback!
I feel that your comment here is borderline, but it comes close to violating the CodeOfConduct - it looks to me as if this is being less than respectful, and not assuming good faith on the part of euphoric's suggestion.
From my point of view, this kind of posts discourages people to give any feedback.
From my point of view, your post is of the kind that is more likely to discourage, rather than euphoric's.
I suppose, though, that some allowance must be made here for nerdiness.
6. Re: RedyCode 0.9.3
- Posted by Mike777b Jul 13, 2016
- 2467 views
I saw nothing negatively argumentative in euphoric's post. From my perspective, different points of view always lead to a better understood, even if unchanged, outcome.
And I would be deeply saddened if Andreas' quick defense of my post and any responses to his post were to somehow impact his most valuable input, which I greatly appreciate.
It is no secret that the number of active participants has diminished and that OE would be better served if the numbers were incremented.
Can we collectively go back to discussing Ryan's excellent efforts?
Yours in co-nerdiness,
mike
7. Re: RedyCode 0.9.3
- Posted by petelomax Jul 13, 2016
- 2285 views
Couple of points, but first a bit of history:
Ten years or so ago, when I added automatic backups to Edita, I went with YMDDHHMM.exw as the file names:
Y was a single digit 0-9, M was 123456789ABC, and it artificially "clocked on" for >1 save per minute.
[That actually meant a hard limit of 10,000 saves in total per day, reducing to 7640 if you started at 23:59:00!]
The backups were mapped back to a real file name via a database, and a primary goal was that the database key was a single (31-bit) integer.
Anyway, all that is just history now, but it is a starting point for the rest of what I am about to say.
Over the years I occasionally regretted the difficulties of rummaging around the backup directory manually, but probably much rarer than you might think.
Being able to (very) quickly pull up an ordered list of all backups of a particular file, without filtering through tens of thousands of filenames, proved far more important.
However, as it happens I am likely to re-implement this soon, and I think human-readable filenames will probably win out this time, and the database might well go.
One thing that became very clear, very early on, was that it was perfectly normal to have misc.e, misc.ew, and misc.exw.
If the backup name had the right extension it was a great help when syntax colouring it, and obviously when restoring it.
There are two dates to consider: the date of the file you are backing up, and the date on which the backup was made.
If you are going to have a date-encoded filename (as well as the system date on the backup file), you need to decide which is which, and stick to it.
In an ideal world you would restore the former(/original timestamp), but in practice that never proved as critical or as useful as I first imagined.
It is probably better, or at least sufficient, for the editor/IDE to flag/colour those it has recently restored.
Version numbers is an interesting option, I'm still cogitating on the benefits it might bring, but already leaning toward forgetting all about timestamps.
Do you have filea.001.exw, filea.002.exw, fileb.001.exw, and fileb.002.exw, or fileb.001.exw, filea.002.exw, fileb.003.exw, and filea.004.exw?
I suspect the latter has more merit, and when you breach 999 just start a new directory, and as a bonus purging old backups should become a breeze.
Ah, I think I just remembered why I went with the obfuscated filenames thing: you can have misc.e in loads of different directories,
and (for reasons long lost in time) I had some idea of backups being "owned" by Edita, all in the same [hidden] directory.
I will always dislike anything that clutters up my working directory with dozens of backup files, but I've nothing against backup subdirectories appearing everywhere.
Anyway, just some thoughts,
Pete
8. Re: RedyCode 0.9.3
- Posted by jimcbrown (admin) Jul 13, 2016
- 2291 views
[That actually meant a hard limit of 10,000 saves in total per day, reducing to 7640 if you started at 23:59:00!]
I don't understand the math here. Why'd it go down to 7640?
There are 1440 minutes in a 24 hour period, and only 720 if one is using a 12 hour clock and ignoring am/pm
9. Re: RedyCode 0.9.3
- Posted by petelomax Jul 13, 2016
- 2305 views
[That actually meant a hard limit of 10,000 saves in total per day, reducing to 7640 if you started at 23:59:00!]
I don't understand the math here. Why'd it go down to 7640?
There are 1440 minutes in a 24 hour period, and only 720 if one is using a 12 hour clock and ignoring am/pm
7640 is just 9999 (as it is 4 characters) minus 2359, and now you mention it, if you went a few over on the odd day, it would still cope anyway, and generously so (690,000+) on the last day of the month!
However that whole filename/timestamp-as-a-31-bit-integer thing only makes any sense at all for a single centralized backup directory, which was probably not my finest idea.
I think I basically agree with everything Mike said.
Pete
PS: back then there was a big penalty for non-8.3 filenames, and win98 would have probably had a stroke if you showed it a filename with two dots in it!
10. Re: RedyCode 0.9.3
- Posted by ryanj Jul 13, 2016
- 2239 views
Bravo! Very well done, Ryan!
Thanks!
The speed is a little sluggish so I'm a little worried about what the eventual speed will be once you implement additional features, but not too worried.
I don't believe it will get slower, because i will continue to optimize it. I already made 0.9.3 graphics much more efficient than 0.9.2. Today, i improved project refresh behavior when the window gets focus, so that should be another noticeable improvement. The slowest thing i am aware of is wordwrapping and rebuilding "tokens" (syntax highlighting), which may take careful inspection of textdoc.e to find ways to speed it up. I have been quite happy with the speed of the euphoria interpreter, considering the entire GUI is purely interpreted code!
Just thought I'd let you know what features I feel are required before I could seriously jump on board.
In my world, a GUI is still a UI so it is imperative that the flagship IDE have UI features that invite efficiency, because if the flagship doesn't invite efficiency it is hard to imagine that the IDE will allow a user to create an app that does. For me, that means as much keyboard control as I can get. So, even though Hotkeys are listed in the 0.9.1 - 0.9.9 roadmap already (that is, the soonest stuff), I'd vote for them sooner rather than later. I'd like F5 to run the project's exw, but I can settle for an "Alt-A; R" keyboard shortcut to execute the Run command of the Application Menu. Similarly, FindNext has to have a hotkey (F3?)
I agree. I have made it a priority to make RedyCode as nice as possible, pushing the limits of the incomplete GUI API, forcing me to test my widget system in a real-world application and add features that are actually needed, rather than theoretically needed. There are always going to be planned features that i haven't had time to implement yet, and i'm willing to prioritize features that people really want.
I will try to implement Hotkeys as soon as i can. For now, a few are hard-coded in RedyCode:
- Ctrl+F : find
- Ctrl+H : find/replace
- Ctrl+G : goto line number
- F3 : find next
- Shift+F3 : find prev
- Ctrl+S : Save current file
- Ctrl+A : Select all
- Clipboard key combos, both DOS and Windows (Ctrl+C, Ctrl+V, Ctrl+X, Ctrl+Ins, Shift+Ins, Shift+Del)
I didn't do a hotkey for Run because i didn't know which one to use. F5 is normally Refresh, in my mind. Once i get action hotkeys working, i'll research what defaults to go with, and they will be fully customizable.
The only feature of RedyPad that is absolutely needed is Undo/redo so I'd vote to move that up from Version 1.0 on the roadmap.
I agree. That is the next thing on my list, will be the main focus for v0.9.5.
I actually think with the above few features it is ready (yuck, yuck) for the real world.
I am actually using RedyCode in the real world already! For my day-job, i'm developing a program that communicates with a USB device and downloads event logs, and displays the data in graphs. It also monitors the device's operation in real-time. It gives me an opportunity to test how the redy GUI performs with running background tasks and lots of user interaction with 2D graphics.
There is also one feature I'd suggest you put into the roadmap somewhere and that is an additional command on the Application menu entitled "Backup and Run" which makes a textfile backup of the exw file which can function as a restore point. I would put a backup directory in the Source directory and create a new file called ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time). I'd even settle for the poor man's version which would be a command on the Application menu named something like "Execute App and Run" and then put the appname somewhere where it would be remembered. Then it would be up to the user to write a small app that would do the backup before running the exw. Just a (long) thought!
I considered a backup feature, but didn't mention it because i felt like i needed to think about it more. I don't know when i will get to it, maybe v1.0.
I wish i could find more time to write docs for the redylib API. There are many things that it can do (as you can see by how RedyCode itself looks and behaves), even though it is incomplete. But it doesn't do much good when nobody has a clue what it can do. I suppose the best thing to do for now is ask me directly about specific things you want your GUI application to do, and i could try to write example code.
I think it will be much more clear once i get context-sensitive help working in RedyCode. It will give you lists of options to choose from while typing, as well as auto-complete, visual designer dialogs, etc. I have lots of plans, but the process is very slow. At this point, i feel like the foundation has been laid, at least. Development has been going much faster since i finally released v0.9.0 and actually started using RedyCode to develop RedyCode.
Maybe tomorrow, i'll release v0.9.4. It has important improvments, like being able to set app info and file header text for creating new projects, and lets you select from a list of project templates, including an empty project.
11. Re: RedyCode 0.9.3
- Posted by Mike777b Jul 14, 2016
- 2240 views
Thanks for the feedback.
F5 is definitely "refresh" in the browser world. F5 is "run" in the vba programming world. It is also "Run Project/Include" in Judith's IDE.
I certainly understand the temptation to tackle low hanging fruit. I mean, sometimes you get a flash of clarity on an issue that just begs for immediate implementation for fear of losing that clarity. Building the project interface you mention might fit that category. Why? Because you already have instructions on how to copy an existing project, which can be turned into an empty project with a few carefully placed "cntl-A; del" key combinations, I would think. OK, maybe that is a bit simplistic, but gutting TempMain.exw so it is substantially reduced from 14,500 or so lines to something closer to the expected "Hello, World!" example is something even I might be able to achieve.
Thanks again.
mike
12. Re: RedyCode 0.9.3
- Posted by euphoric (admin) Jul 14, 2016
- 2198 views
Actually, there is. The date stamp allows one to discern statistics related to time (when did I work on it, how much progress did I make that day, that week, etc.). The sequential indicator is much easier to track milestones with.
The date becomes the milestone. The sequential number is redundant.
Heck, if you are going to call me out on redundancy we don't need either as the operating system will timestamp the file.
You need filename differentiation, so the timestamp won't suffice.
13. Re: RedyCode 0.9.3
- Posted by euphoric (admin) Jul 14, 2016
- 2212 views
ProjectName.exw.YYMMDDHHMMSS.bkp# where YYMMDDHHMMSS obviously stands for Year Month Day Hour Minute Second and # is sequential (starts at 00001 and increments by 1 each time)
There's no reason you'd need the sequential number, unless you're backing up more than once per second.
A really worthless comment to a really good feedback!
I was giving advice to eliminate a redundancy.
Your comment lacked an alternative naming. Just critic.
The alternative naming was implied: remove the sequential number.
14. Re: RedyCode 0.9.3
- Posted by euphoric (admin) Jul 14, 2016
- 2238 views
I respectivefully disagree. euphoric was merely stating what euphoric believed to be a potential optimization (akin to saying 'well, to save on memory you can store the year as only two digits instead of four!').
Thank you, Jim! My thoughts, exactly...
15. Re: RedyCode 0.9.3
- Posted by euphoric (admin) Jul 14, 2016
- 2236 views
I saw nothing negatively argumentative in euphoric's post. From my perspective, different points of view always lead to a better understood, even if unchanged, outcome.
Thank you, Mike. The spirit of my post was for optimization and was certainly not to start an argument.
16. Re: RedyCode 0.9.3
- Posted by ryanj Jul 15, 2016
- 2226 views
I created a 0.9.4 branch on github, if anyone wants to try it. I still need to do more testing, before it's officially released. It should be compatible with eu 4.0.5 now, and should handle paths correctly now, making it portable as intended (but i just found a bug i need to fix).
This version has a new template system. When you create a project, you can select a template to create from. It also introduces a concept of "App Info" variables. In the Create New Project dialog, you edit App Info. (Defaults can be set in the Preferences dialog). These variables are used to generate the app:define() statement in the project's main .exw file.
A header can be defined as well. The header is inserted at the top of every source file in the project. App Info variables can be inserted into the header text as $varname. This is useful for generating headers that display app name, author, version, date, license, etc. A default header can also be set in the Preferences dialog. (In the future, you will be able to update the App Info and Headers in a project, and all the source files will be scanned and updated, but that will take more work).
If you find any bugs, i will try to fix them before i merge to the master branch in the next few days.
17. Re: RedyCode 0.9.3
- Posted by ryanj Jul 17, 2016
- 2174 views
I fixed some problems in the 0.9.4 branch. Path detection should now work correctly when RedyCode is moved to a different folder. Paths relative to the Redy folder tree are re-detected, yet manually-set external paths are preserved.
In other words, default paths act as relative paths, so you can move RedyCode to a different location (or put it on a flash drive). But if you set paths to outside locations, such as C:\euphoria\include, it will preserve it even if you move redy to a different location. If any path becomes invalid, an error message will be displayed and the Preferences dialog will show automatically, so you can fix the invalid path.
I also fixed a bug in find/replace, where the first match was skipped when searching from the top. and i created a new bug
I'll test for a few more days before making it official. Next on the todo list: get undo working!
18. Re: RedyCode 0.9.3
- Posted by ChrisB (moderator) Jul 20, 2016
- 2064 views
Hi Ryan
0.9.4, opens fine
Project -> Open Project -> Cancel - the IDE hangs
Cheers
Chris
19. Re: RedyCode 0.9.3
- Posted by ryanj Jul 20, 2016
- 2074 views
Hi Ryan
0.9.4, opens fine
Project -> Open Project -> Cancel - the IDE hangs
Cheers
Chris
Wow, i didn't notice that. Good catch!
20. Re: RedyCode 0.9.3
- Posted by jimcbrown (admin) Jul 21, 2016
- 2014 views
Actually, there is. The date stamp allows one to discern statistics related to time (when did I work on it, how much progress did I make that day, that week, etc.). The sequential indicator is much easier to track milestones with.
The date becomes the milestone. The sequential number is redundant.
Depends on the preferences of the user.
For example, it's easier to tell the number of revisions between euphoric.exu.20160721101010.00098 and euphoric.exu.20160721232323.01198, than it is with just euphoric.exu.20160721101010 and euphoric.exu.20160721232323. Of course it's really easy to figure out with the right tools either way, but with the latter it's a lot harder to just plain eyeball the answer.
Heck, if you are going to call me out on redundancy we don't need either as the operating system will timestamp the file.
You need filename differentiation, so the timestamp won't suffice.
In some cases that's not enough.
If one lives in a timezone that observes DST and likes to code in the middle of the night, then - in the fall, when we all go an hour back - the hour of 1am repeats. So you might have euphoric.exu.20151101013030 (for 01:30:30am EDT on Nov 1st, before the DST switchover, or 05:30:30am UTC) and later have the bad luck to make euphoric.exu.20151101013030 again exactly one hour later (on 01:30:30am EST after the DST switchover, or 06:30:30am UTC).
Even if you avoid saving two backups with the exact same file name, the names are no longer ordered - euphoric.exu.201511014324 may have been the earlier version and euphoric.201511011216 the later backup.
The other case is if one is traveling and changing timezones. Even saving the 3 letter timezone acronym here is not enough, as some timezones share the same acronym (such as AST for Alantic Standard Time and Arabia Standard Time).
21. Re: RedyCode 0.9.3
- Posted by euphoric (admin) Jul 21, 2016
- 2020 views
The date becomes the milestone. The sequential number is redundant.
Depends on the preferences of the user.
Well, the sequential number is redundant for milestone purposes. The preference, then, becomes, as you suggested, "can I eyeball it?" And only unwashed primitive tribes coding in the jungle in their grass huts care about that. hahaha!
You need filename differentiation, so the timestamp won't suffice.
In some cases that's not enough.
If one lives in a timezone...
I suspect 99.99% of coders don't experience your timezone conundrum scenarios.
But you do make a compelling case to end daylight savings time!
22. Re: RedyCode 0.9.3
- Posted by ryanj Jul 21, 2016
- 2054 views
The date becomes the milestone. The sequential number is redundant.
Depends on the preferences of the user.
Well, the sequential number is redundant for milestone purposes. The preference, then, becomes, as you suggested, "can I eyeball it?" And only unwashed primitive tribes coding in the jungle in their grass huts care about that. hahaha!
You need filename differentiation, so the timestamp won't suffice.
In some cases that's not enough.
If one lives in a timezone...
I suspect 99.99% of coders don't experience your timezone conundrum scenarios.
But you do make a compelling case to end daylight savings time!
Timestamps should be in Earth Standard Time.