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..
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com