Arendelle: random numbers included

I used NCalc facility to handle Arendelle's mathematical expressions. At first NCalc proved to be a very slow system and wrong with huge numbers but the good side was it came with so many good functions. I tried to replace it with many other systems such as C# Expression Evaluator, Microsoft.JScript tool and some other techs, I still have uCalc in my list but the problem is it's not a free software or open source one and well I may someday move to make Arendelle open source so it will be a problem.

As I said I'm using NCalc, It offers so many awesome functions but there are some missing for example there is no power operator: '^' and you must use the Pow function, Also it's a bit fun that there is no random number in NCalc.

At first NCalc was a temporary part in the language so I had to see the final evaluator to see if I have to take action for creating the random number system myself or it's on the package and now I see that I'm going with NCalc till I write my own so I had to design a random system number, It had to be super easy and very easy like the rest of language, So I added a source instead of a function. (If you have no idea about sources in Arendelle in other languages you get variables which in Arendelle we call spaces. There is also another kind of variables in Arendelle called sources, they are read only variables that are dynamic and returns you informations like size of the screen, current color...).

Each time you write this random source '#rand' in Arendelle you get a random number between 0 and 1 coming with 1o decimals: '0.XXXXXXXXXX'.

This might be crazy but for me this is just the second day to have random numbers in my life, And I'm just exploring the possibilities, It's just one day and I did not have much time but I wrote about 7 mini little scripts including this one which you see in this blog's title:
   

│
│   // title
│      'Random Dots'
│   
│   // body
│
│      [ #j , 
│   
│         [ #i ,
│            { #rand < 0.5 , p } r
│         ]
│      
│         [ #i , l ]
│      
│         d
│      ]
│
│   // done
│

   

As I have said before developing your own language is the most fun part of being a developer, You somehow feel godness in your blood! You know Arendelle is a little small language but the joy if having it is so much for me and I'm imagining if I someday make Arendelle a bigger language I will die of happiness, You use some tools every day that seems they were there since forever and you know designing them makes you feel so special. I have created so many technologies from text editors and calculation machines to bar codes and digital graphics but Arendelle is something different all the way. It seems to be all of them in a way and more fun in the other way.

Once upon a time I was happy with my Ubuntu

Since years ago because I hated Windows XP, I started to try and find a new operating system to meet my needs. I started with OS X Leopard and it was magnificent, I loved it because of it's brilliant designs, those blue scroll bars, The main menu, doc... everything in that system was a work of art and also I had iWork suit in there, The power of iWorks was something really huge and what i could do there was extraordinary, Soon I started to search for other OSes and I tried all the famous GNU/Linux systems like SUSE, Debian, Red Hat, Fedora, Elementary... and even other operating systems such as Haiku but there was this fascinating one "Ubuntu" at first I found Ubuntu a garbage because of it's leak of design, However after time when I first saw Ubuntu with it's new dark look in 10.4 I knew it was going to be awesome and then in 11.4 when my friend showed me Unity Desktop for the first time I just loved it and installed the Ubuntu on all my devices that very day. We had a very fun time together but I became a hell from 13.4, After two or three mounts after 13.4, First problem I went intro was the Ubuntu repositories could not update their lists and soon I became unable to install what I wanted, Back to those days I really wanted to use Vala language and I needed it but I could not because I could not install it. Then it was MonoDevelop, I had version 2 point something but Xamarin was just released Xamarin Studio 4 and the look of Xamarin Studio 4 was heavenly as I wished every time when I opened MonoDevelop to be Xamarin Studio but there was no package in their website, The drives didn't work, Each time I was going to open Unity dash the playing music went crashed and it even took 3 seconds or more! Worse was the updates, They wont install and one day I tried to skip some of it's errors and install the packages then I loosed over 40 of my system apps and it was hard to reinstall them
So this whole Ubuntu 13 was a living hell, I very desperately downloaded Ubuntu 14.04 and boy it's awesome, Somehow all I want is here for me, A very good working Unity, MonoDevelop 4! My biggest wish!, Vala, somehow everything is more awesome here! Dark themes for Nautilus, funny dash lenses, the new great looking Firefox but most of all shadows!
Yes the shadows of this new OS are so beautiful, Mac did this shadows long time ago and I never noticed that the true beauty of it's menu bars menus were the result of this shadows, In the older versions the shadows very about 2 pixels, here they are 15 or 20 and they have a very good blur, When you open a new screen and hover it over one another the picture is something more beautiful than every other screen
I somehow believe that Ubuntu is the best operating system can ever be written everything about it is pretty and I love it!

Arendelle apps now are just like other apps

Having your own programming language comes with a very cool feeling just like it's your children. Till this very day to run Arendelle programs you have to write their path in Arcade like 

    open /home/kary/main.arendelle

And you could see the result plus the time of rendering process but there was no personality for the programs and it was really the time to add this so I made Arcade capable of opening files from terminal like: 

   % arcade ./main.arendelle

So I could create a .desktop file in GNOME systems and point the command to:

   arcade %F

And so by moving it to the 

   /usr/shar/applications

I could set Arcade the main application for opening the arendelle files and it was so cool because you have to change registries of Windows to get this working! But it was not enough and I had to change the Arcade in a way that when you open a software from terminal it could give it a strong personality. So I removed the timer feature and set the main title of the screen be empty, Then I removed the loading Arcade IDE animation and replaced it with a static "L O A D I N G", The result was awesome. now the Arendelle apps are in my main menu beside other applications and they run and behave like them in a very natural way. I finally have designed a real working powerful true language!

All new Arcade IDE 9.2 Interface

To develop the main engine of Arendelle Language, I developed "Arcade IDE" a very tiny code inside Arendelle Language's main engine so when I was developing the language I could see my very last work by just clicking the debug button but after time I developed it more and more then I officially named it and build a website for it so it could be Arendelle's console environment. By time I changed it look so far, I added an about page and one update checker tool, I developed a way to write errors in the center of the screen and many more. In "Arcade IDE 9.2/14.0 DEV" I developed many cool new things that I would love to show you, First is my own console IO, In C you many know this thing as scanf in dot new you call it Console.ReadLine, in Python "input"... I had some problems:

  1. The input must be only number, So you can design a thing that asks the user for a number and the user may enter some bad input and the app asks for an other try, But you can also design something that user only be able to write numbers and no other key works! I did the second thing for my system.
  2. The calculation engine of Arendelle does not accept numbers with more than 18 digits so I had to design something that never accept more a number with more than 18 digits
  3. I wanted to alter the sign of my number at any time, This new IO port gives you this power, All you have to do is to press hyphen key and your numbers sign will be altered!
  4. Some of the applications run forever and while running they ask you some inputs, To get out of them you have no choice but killing the Arcade IDE it self, So I added the "Escape" key as one exit way, If you be in the IO screen, by pressing escape key you will be out of the Arcade IDE which to me is very handy
  5. I wanted my input to be filled centered in the screen, With the old IO ports it was impossible but my input system is pretty cool centered
  6. The cursor of the terminals are pretty but I wanted a very more Sci-Fi hackerish one , Somethings that be a match for my design and makes you thrilling. So I developed my own

So let's have a look at Arcade's All new input screen:

              

           

I have also developed an animation for the loading of Arcade, Which you can see it's final in the posts big picture, It's a centered text which is "A R C A D E I D E 9.2" that starts filling into the screen centered each time one more character.

Arendelle: One powerful language for data visualizations

Arendelle for is more than just a language. You know about a year ago I could not even imagine that I can create something like Arendelle. At first was willing to create a very simple language with only 5 commands in my calculator until I found out that with a very simple technology I could implement a very basic loop into my language. and after a while I found out how to run one loop with in one other. This journey went so far so I found myself with a language coming with loops smarter than any loop in any other languages, with conditions, with spaces easier than all the languages and functions with a the coolest class and namespace system in the whole universe. I finally built the language of my dreams.

However only creating a language is not enough, You have to make it productive and fun. You know there are tons of languages out there which most of them are fast, reliable, quick and powerful so if you're willing to be a part of the play you have to catch them or you die alone! So I thought so much on how to create a useful rocking language to be loved by it's users. That's why we have all this great features in Arendelle.

Now, One of the reasons I believe I have reached my goal is this program I'm going to explain here, When I was about 6 while learning Chess from my father he asked me a fun question: "How do we move a Knight from bottom left of the board to it's top right?" and it was about a year ago that I somehow remembered this question and I asked myself: "If the board be in another size than 8 then how we'll do it?" and after about a half hour I developed a bunch of algorithms and mathematical formulas that could calculate and generate the minimum path for any size of board.

So as it was just for fun I did nothing to create a software for it because of course I had to create a graphical system and so on and it was to stupid to put so much time to software a useless algorithm. So it was about Christmas and I was designing the very first steps of my languages that I remembered my algorithm, language just had loops and I was rewriting it with my micro-compiler technology and I thought "O boy! Arendelle is the perfect match for my algorithm" I mean it's a language that moves a pointer in a grid and chess is a game that you have to move some characters in it's grid so actually there is no better language than Arendelle for this problem.

Funny thing about this software is it's only about 100 LoC (Lines of code) even coming with comments all over it and I even used no functions in it so some parts are same. You can find both algorithm and it's Arendelle software here online.

After all it's very fun to create a problem, find it's solution and write it's software in Arendelle, Arendelle is one very powerful language by the way