A Company’s Story Crystallized: NeuraLegion

Art Linkov and Bar Hofesh are the founders of NeuraLegion,[63] a new startup company based in Israel that has a passion to make the world a better place through machine learning and artificial intelligence (AI). They are currently focusing on the cyber security world.

Ivo:

What production projects do you use Crystal for?

Bar Hofesh:

NexPloit is our first product using Crystal. It aims to redefine Software Penetration Testing through the power of AI and provides a fully automatic solution for detection of software vulnerabilities.

Ivo:

Why did you decide to use Crystal for this application?

Bar Hofesh:

When we started working on NexPloit, we were already long-time fans of Ruby. We love Ruby because it is object oriented by default, making it easy to use; it is versatile and has a good pool of libraries developed by the community. In addition, we find Ruby beautiful and well matured as a programming language.

However, when we rolled up our sleeves and began to develop, there were some innate characteristics of Ruby that did not fulfill our needs. To name a few examples:

  • Ruby does not provide explicit types. This has several implications for performance, sizing penalties, and unnecessary manipulations the data has to go though. For our purposes, efficiency was a very important issue.

  • To solve the previous problem, C bindings are often used. However, they can be very tricky to implement with Ruby. As we mentioned already, Ruby does not have explicit types. C, on the other hand, is a strongly typed language, but consciously knowing at any given time which type exactly to pass around can be a little daunting, and might take a few tries to make it work.

  • undefined method for nil:NilClass. If you are someone who has worked with Ruby before, you won’t need any explanations here. If not, you might recognize this error on other dynamic, non-compiled languages where you try to call on a method to something you thought would be an object, but in runtime became nil for some reason. The disadvantage is that when no checks are performed during compile time (or other stages of evaluations), you are left to debug the program fully in runtime.

  • When executing our programs written in Ruby, the performance was limited.

For these reasons and some others, we needed a programming language that had all the advantages of Ruby, but without the disadvantages. That’s when we discovered Crystal, and we almost immediately fell in love with it .

Ivo:

How was your experience developing with Crystal?

Bar Hofesh:

Crystal’s slick coding experience, ease of lower-level library bindings, type safety in compile-time without the need to even execute the program, and finally the lightning-fast runtime performance gave us what we needed to really set the keyboard on fire! We can honestly say that Crystal gave us the tools to elegantly and efficiently take NexPloit and take it from an idea into a reality.

Ivo:

What would you like to see improved in Crystal?

Bar Hofesh:

We love Crystal, but there is always some room for improvement. One of the challenges we faced with Crystal was the lack of shards (Crystal’s “gems”) for machine learning and scientific tools. However, expecting other people to add shards is unfair, so we decided to create a shard for Crystal-FANN as the groundwork for our needs, and we made it available on our Github page[64] for anyone who may need it. For now, Crystal-FANN seems to hit the spot for us, but we are still considering the addition of Torch or TensorFlow if we conclude that FANN by itself is not enough.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.17.128