Coding for Science (general Q&A)

I’m using your library/libraries in my research, how to cite?

Depending what library group or particular library you use, there are published articles / conference papers, related to it – or there are not, yet :). Check the preferred citation note at the posts covering the particular library. If there is no such info yet, please contact me – I would be more than happy to hear about your work and intentions!

Still, no peer-review articles finished the review process, nor accepted for publishing. Therefore, I would suggest to use the .bib definitions from the file below, containing citation definitions for Mendeley Data repositories,  GitHub, NuGet and this web site.

Citations for imbVeles .bib package

Who is intended user of the libraries?

Scientists and PhD students, working in IT/Computing related fields but not hardcore Computing guys. The latter already have their own tools with functionality of ones I’m sharing here, and probably/possibly better solutions for many algorithms/data structures/tools covered in my projects. The main motivation, for the most of the general purpose libraries, is to help you with the “research environment setup”, in scenario where you need a custom-made toolkit to perform your research objective(s), while for the other, more specific, libraries motivation behind making it open source, is to enable greater editorial insight & proof/findings transparency for my own research / methods, described in a scientific article, PhD thesis & etc.

I’m using your library/libraries in my commercial project, how about that?

Really? Glad to hear (let me know via e-mail or comment), my open source projects are under GNU GPLv3 licence, allowing you to use it as part of commercial product/s and in many other profit-oriented scenarios. However, I advise you to read more about the licence on: https://choosealicense.com/licenses/gpl-3.0/

I’m using your library/libraries for my research but I have issues/problems, can you help?

I would love – but it depends on my daily workload and, frankly speaking, what kind of research you are doing and on what academic level? If it is a PhD thesis related project (or higher) I’ll do my best to support your work – even to extend some features critical for your work (if it’s not too far from the existing scope of the libraries). Otherwise, I would point you to the GitHub repositories (to build the most recent API documentation using Sandcastle kind of tools – since, the most of useful classes are well documented with C# XML) and documentation I’m building on this blog in form of posts, glossary and FAQ sections.

There is no XML documentation on particular class, property, method… but its name seem as it is something useful?

Usually, such parts of code are:

  • public just for technical/development reasons, it is used internally and it is not suitable for you
  • some skunkworks, things that are still in early phase of development

General advice: avoid using it. Only well documented parts of these libraries are ready for your application.

In XML Comments and/or API documentation there is content on Serbian, how I suppose to read it?

When you meet such case: skip it. I’ve used Serbian comments long time ago, there is nothing useful there – such class is still there only for legacy/compatibility reasons (other projects of mine) or simply waits removal/replacement. So, you don’t have to learn Serbian. Although, it would be great thing for your spiritual development.

I have an idea for you!

Dude, I have plenty ideas in my head and only one life on this planet (in my best knowledge). However, let me know what’s on your mind via comment or email – maybe it is really good idea, that never bothered my mind so far. At least we’ll have nice discussion about it, where I’ll try my best to convince you to code it on your own – as fork or separate project. Exception here is a case where it is related to your PhD+ research – check: I’m using your library/libraries for my research but I have issues/problems, can you help?

I have a research idea/project that you might love to contribute/participate in.

Now you’re talking! 🙂

Please, contact me via email or comment – I would be glad to hear what you’re working on, and to consider my enrollment. Especially if it fits my primary research fields (NLP, KE, IE, Semantic Web, BI and such stuff).


Why C# and .NET and why not Java? Isn’t Java dominant platform in the field (NLP, web IE/KE…)?

Yes, Java is dominant platform in the field of NLP and in the most of other research fields related to my work. That is why I’m publishing my libraries for Microsoft .NET Framework, written in C#. These kind of open source projects are rare in .NET ecosystem, and some very good projects are not maintained for more then 10 years (like SharpNLP).

Why I’m developing in C# and Visual Studio? Because (sorry, Java hipsters 😉 ):

  • Microsoft Visual Studio (even Community Edition I’m using) is the best IDE in the Solar system, period. Eclipse moves like a dinosaur, NetBeans is great but slow too, MonoDevelop is in our team anyway :). Other IDEs I’ve used are no match in terms of functionality, scope and extensions available.
  • Microsoft made strong and bold move toward Open Source, even if you’re hardcore Java fan, you probably know that .NET Framework is open for several years now – and it becomes more and more exciting with new cool staff they are pushing. With Visual Studio I can compile for any OS platform, native or CLR runtime – from desktop applications (any mainstream GUI, you name it) to handheld/mobile world and server services, regardless if it is a Linux or Windows server. I know, in your Java world the most of this is old news, but: I believe you’ll start learning C# and .NET Framework in years to come, as what I see as probable future will force you to do so.
  • In my limited experience with JRE and Java world, I had only low performance and problems. My Java friends are suggesting it’s about Windows and the way I’ve configured Ubuntu clients and servers in my company… Probably they are right – probably, there is nothing fundamentally wrong with the Java platform – probably, I just don’t like it :).
  • Yep, I love M$, even it is a child of Bill Gates. Yep, I know. But, Microsoft rocks in development technologies, even in times of an “OS” called Windows ME: it had the best IDE on the market. Yep, it’s hard to admit. Try to face it :).

Why your class and namespace names oppose all possible guidelines and Microsoft’s recommendations?

Ha! This one is challenging. Frankly, when I started with the imbVeles framework 7+ years ago (actually, it is related to my prior work for master thesis…): the primary reason to keep “camel” naming fashion with small first letter (inherited from Action Script 3 development, I was focused before) was to easily distinguish my own extension methods from .NET Framework’s and other open source stuff I was experimenting with. There is no other, special kind, of reason for that – but, there is also no reason to rename it all. However, some newer stuff I’m coding recently tend to follow generally accepted naming rules for C#/.NET world.

I’m confused: you talk about library/project [name], but I can’t find it in your GitHub repos nor here on this site?

There are few possible reasons involved:

  • all of this is still work in progress – many of the stuff mentioned here is not ready for publishing (and many of created GitHub repositories are not complete yet)
  • or it is ready, but I still have to create GitHub repo and upload it
  • or it is closed-source part of my work, that I will publish in binary form for fair use by academics – but it is still in pre-alpha development phase, so not published yet
  • or it is closed-source part I’ll not publish at all – in such case: I share your confusion about mentioning it on this blog 🙂 it is mistake or leftover of my earlier ideas… sorry.

However, please leave a comment or mail me if you find something that seems to fit the last point. Thanks!

I found some of your extension methods and classes pointless/redundant to .NET Framework’s ones. Why…?

I’ve started with this 7+ years ago, in the best case for me: such extension method/class weren’t part of the .NET at the moment. There are also duplicated stuff (aliases) that I created just to put two different code branches together in a common project/solution – without using commercial refactoring tools, or too have it separated for potential future changes of the code behavior.  Also, I’m bad in theoretical reading: tend to develop stuff same night I envision it, without checking properly if such functionality already exist available. However, over period such anomalies should vanish from the code you see on the GitHub repositories.

 

Spread the love