2021-04-19 10:50:03

Hi all!
As some of you probably remember, some months ago I have posted a topic asking whether I am too stupid for programming, ETC. Some people said that its no matter whether I am smart or dump, but whether I have modives to continue my work.
I have started many projects, some of them kindai nteresting, but I dropped them because I lacked knowledge.
But now, did I lack knowledge or motivation? I think I have lacked motivation. Some months ago, many new plugin interfaces have been opened for Zhengdu Screenreader, the program I admire with my whole heart as well as I support it with my whole power, same with his developer who is a truely awesome man, BTW.
And so I started coding for ZDSR. I have asked on the ZD QQ group what plugins people would want. I have got some responses, but I got one from a foreign user. He said he wants an indent beep function, much like in Non-Visual.
And so, in spite of hating C ++ I launched visual Studio and started working.
Compilation error for the first time: missing semicolon, it always happened to me, went back, fixed, compiled. I have put my work into ZDSR and I noticed that the whole screenreading does not want to start.
The previous me would say "Fuck it!" and delete both the project and the binaries. The new me killed ZD from the taskman, launched Jaws and started debugging. I have found an error (hell yeah, I have put an infinite loop to see whether ZDSR can recognize my DLL). I know there are better ways, but does it have any meaning now?
I have removed the deadlock, launched ZDSR, no test beep has been generated. I started running arround in circles, but I couldn't give up! I knew that closing Visual Studio would be like digging a grave for my new-born child, who could help many people! Then i have seen that I have no Windows sounds at all, and so I have launched my secondary machine, putting my work in ZDSR on it.
I launch it, and I hear this 200 HZ tone, lasting for 666 milliseconds. I was very happy, but I had to stop my happiness. I still needed to write a function who will calculate the final tone!
because of my lack of understanding of datatypes in C ++ I once again triedt o go through a wall, but I systematically searched in all languages I knew! I couldn't express some of more advanced questions in English, so I searched in Polish, Russian or Chinese. CSDN helped me a lot and so I managed to complete my function.
Once the plugin was beeping properly I was so excited that I have put the recording on the international group of ZDSR and I uploaded my plugin. Some people said that there's a powerful bug. In order to understand it, you must understand my plugin's settings

[set]
enabled=1 ;Self explanatory
basefreq=210 ;The base frequency, Values will be added to this value.
hzperspace=30 ;How much HZ should be added for a new space.
beeplength=100 ;The key to our story, the length of the beep (in MS). Some people with hearing difficulty might have needed more time to comprehend the beep and so I added such function.
minlengthtobeep=3 ;If the line is shorter than X characters, no beep will be generated
beeponeverychar=1 ;Controls whether The beep will be generated always or only up on indentate change.

My length setting was a problem, because since the Beep function of Win32 is synchronous, ZDSR waited for its completion and then spoke.
I said I will try to fix it and I started reading about the "Future" module of C ++. The implementation seemedk inda easy and so I have done it.
I know that async is hard, I know that I probably screwed it up in thousant and one places, but again, does it have any meaning now?
It works! Beeping and speaking in harmony!
Then I understood that working for ZDSR is my biggest joy, and I have started working on my other plug ins.
The first one was DeepL. The first version has been completed in three days. I have met a serious problem, because i have typed "translation" instead of "translate" in my HTTPConnection function and so... no such endpoint could be found and I was getting errors out of the blue. But then I have said to myself "I have completed the plug in, but good translation plug in needs a good translation cache."
I have thought over many possibilities, either caching to a simple JSON, SQLite or maybe to the dictionary of ZDSR itself?
The third option won and I have started studying the format of Zhengdu's dictionaries. I have understood it quickly and wrote the cache. Then my work has been completed.
Another plug in was just a matter of hours and so I have finished the RuCaptcha plugin in one good sitting.
Now my plan is to make people's migration to ZDSR easier and write a converter of Non-visual dictionaries to ZDSR dictionaries.
Then, as I want to release my two plugins to a wider world, not only CHina I will look into creating a REST API who will connect to DeepL, RuCaptcha and other services I might want to teach my beloved program to use.

Of course, I know nothing of what Camlorn or Ethin knows, but I try to work hard!
My advice for you is as follows:
See who do you want to help, what is the software you love, what would you want to achieve, and do it!
Work hard and do not give up, every problem has a solution, more or less elegant, more or less fluent but operational and useful.
Sorry for my broken English and I hope that my story will help you if you struggle with learning coding..

If you want to contact me, do not use the forum PM. I respond once a year or two, when I need to write a PM myself. I apologize for the inconvenience.
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com

2021-04-19 12:34:12

Love the title of this thread! Good job on your progress and keep it up. Creating some real world programs that are actually useful is a really important part of validating one's efforts in learning programming.

I've asked for this before but not sure if this has been finaly posted somewhre. Has anyone written anything specifically why it is worth to switch from NVDA to ZDSR. Could you share the main reason why you switched and what made it worth it? Presumably you used NVDA before.

I'd expect the main reason to be ZDSR might be more performant than NVDA since it is written in C++, but for me NVDA is still really snappy and responsive. C++ gives more performance but also introduces possibility of memory management bugs, which can really suck, so not sure if the tradeoff will totally end up worth it.

2021-04-19 12:55:00

I have used JAWS before. NVDA was my gaming screenreader only
I have switched because of multitude of reasons, the first one being responsiveness but there are more
1. Microsoft Office support is really great, I can work very efficiently with MS Excel, with no lag even on huge worksheets which cannot be said about NVDA. Yes, I know about their advanced UIA management or whatever that option is called in English, but it did not help me much.
2. Same story repeats with Microsoft Visual Studio, the Intellisense support is even better than in JAWS, and there are some commands like navigate to next error, ETC.
3. I study Chinese, and so i need the explanation facility.
There are more reasons, but they are detailed operational methods of the screenreader and I would need a lot of time to write all of them down. I promise though, the documentation is being written constantly.

If you want to contact me, do not use the forum PM. I respond once a year or two, when I need to write a PM myself. I apologize for the inconvenience.
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com

2021-04-19 12:59:13 (edited by Nuno 2021-04-19 13:07:41)

Oh, I just realized that I probably should write a changelog of changes in my code lol/
1. Fixed a bug which caused all the projects to get  aborted up on seing an error, or an obstacle.
2. Added some basic understanding of C ++ Async Techniques.
3. Added a rather complete understanding of C # HTTPCLient, Serialization and deserialization mechanisms, ETC.

If you want to contact me, do not use the forum PM. I respond once a year or two, when I need to write a PM myself. I apologize for the inconvenience.
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com

2021-04-19 15:02:59

Hmm, thanks for that. I can totally understand switching from JAWS to ZDSR, since it is like a tenth of the cost. I really welcome the competition, especially since the lack of competition is one of the main reasons JAWS price tag is so ridiculous.

I've genrally heard from people NVDA is better for MS Office than JAWS and a lot of people who normally use JAWS for other stuff switch to NVDA for using Office. Still I have to say that I do feel NVDA's responsiveness in Office isn't as great as it is in other apps, namely web browsing. Not sure how it compares in JAWS, since I've never used it.

I am surprised Visual Studio doesn't have a native jump to error shortcut and that ZDSR would need to implement it on its end.

2021-04-19 15:28:07

i m also curioss about  Zhengdu. Is it any better on visual studio then NVDA Vs Jaws?

2021-04-19 15:42:25

I thought F8 jumped to next error in visual studio.

Facts with Tom MacDonald, Adam Calhoun, and Dax
End racism
End division
Become united

2021-04-19 16:10:41

It did but here its different

If you want to contact me, do not use the forum PM. I respond once a year or two, when I need to write a PM myself. I apologize for the inconvenience.
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com

2021-04-20 05:23:28

@Nuno
Great for you man!  I'm happy to hear of your success!

2021-04-20 11:42:36

@7
That's true of VS Code, no clue about VisualStudio though.

@1
Good work mate!!! I'm really glad you got your mojo back, as they say!

-----
I have code on GitHub

2021-04-20 12:30:22

I hope I can create a software like ZHRS one day, a multi-tool software.

If you want to contact me, do not use the forum PM. I respond once a year or two, when I need to write a PM myself. I apologize for the inconvenience.
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com