Archive for .net

Considerations when Storing C# code in JSON

// April 14th, 2012 // 2 Comments » // .net, emacs, iknode

iKnode‘s main database has always been Postgresql, but recently we have been using MongoDB more and more. Currently we store C# code in Postgresql, which is painless, since we can just grab the input directly from the Web editor and into the the database unmodified. With MongoDb, this process is not as easy because MongoDB depends on a JSON-like format.

MongoDB stores data using BSON, which is a superset of JSON. While testing, we needed to set the default Database state to run our tests, we encountered a couple of problems while serializing C# code into JSON.

We followed these considerations to transform C# code so that it could be embedded in a JSON string:

  • Convert Tabs to Spaces. (In Emacs you can do this with the M-x untabify command)
  • Escape carrier returns (\n -> \\n) (In emacs yo ucan do this by replacing C-qj with \\n)
  • Escape double qoutes (” -> \”).

The next things we did was validate the resulting JSON. You can do this with a web JSON Formatter like CuriousConcept’s JSON Formatter. We tried others like JSONLint, but the only one that gave us a detailed error description was CuriousConcept’s JSON Formatter.

In the end we now have C# code in a JSON store. Hope this helps anyone trying to do store c-like type code.

Evolution of an UI

// December 9th, 2011 // Comments Off on Evolution of an UI // .net, iknode

We have working hard on iKnode, and one of the things we wanted to improve was the UI. We just recently reduced the top bar to make it less complex, and also changed the icons to a more minimal set.

As we add functionality, iKnode has been growing complex and that has been reflected in the UI. That is exactly why we are taking the time to make it more friendly.

After we published the new UI, I compared it with past releases and I thought the evolution has been amazing, so I decided to put the UIs in a post. Without further ado, here there are starting from the first UI:


iKnode UI v0.8

Version 0.8

iKnode UI v1.0

Version 1.0

iKnode UI v1.1

Version 1.1

iKnode UI v1.5

Version 1.5

iKnode: What is in a name?

// November 18th, 2011 // Comments Off on iKnode: What is in a name? // .net, Algorithms, Apple, Architecture,, cloud computing, iknode

I was recently talking to a friend, and he asked me why I named our project iKnode. He said: “I know you are a fan of Steve Jobs but this is too much”. To be honest, it has nothing to do with Apple or Steve Jobs.

The story begins in 2003 when I was doing my dissertation for my master. I was working for a model to mine data from Data-warehouses to create a knowledge base using Frames and Protegé. I created an engine to do the transformation and mining, at the time I called it IKnow. It was a single engine that only analyzed, and extracted the data to create Ontology classes.

After a couple of years I got interested in distributed systems, and I made the engine run in a distributed fashion and interact with other engines. They could learn to do things, teach others and perform tasks. I figured that code is knowledge. If I wanted the engines to be able to learn and talk to each other they would have to have a common language. I decided to use C# for that. Now I had multiple nodes running on different machines, and I decided to call each node an IKnode. The product as a whole was still called IKnow.

After talking to a friend back in 2006, he mentioned that the name IKnode sounded more interesting than IKnow.  After some consideration I changed the name and the name space of the code. I even bought the  domain. In this same talk, it also came out that for IKnode to be useful you needed a whole team of nodes to perform tasks. And I mentioned to him, jokingly, “There is no I in IKnode”. And then I thought: “But there is an I in IKnode”. And that struck a chord. I thought: “the I is not important, so let’s make it a lower case I”. And that is how the name came to be iKnode. The only letter that is upper case in the name is the K. Which is the whole purpose of the project: Knowledge.

It is interesting to remember how far iKnode has traveled, and how it has grown. I feel like a proud father right now. :D

iKnode reaches Beta status!

// November 18th, 2011 // Comments Off on iKnode reaches Beta status! // .net, Algorithms, iknode, software development

iKnode, our Backend-as-a-Service offering has reached beta status and invites have been sent. We have received a lot of feedback, and we are excited to hear what users think.

It has been a difficult couple of months getting to this point. It was sad, that we were not accepted as YCombinator alumni, but we are not doing this for money or fame. We are doing it for freedom. iKnode is our blackpearl.

If you are interested in checking out iKnode go to and register. If you want to checkout iKnode in action go to our youtube channel. Additionally follow @iknode on twitter.

Here are some screenshots from iKnode’s Command Center application:

iKnode Editor
iKnode Editor
iKnode Dashboard App Execution
iKnode Dashboard App Execution
iKnode Web Console
iKnode Web Console
Execution Logs
Execution Logs
Error Logs
Error Logs

Microsoft and their huge problem in the clouds…

// October 31st, 2009 // 4 Comments » // .net, cloud computing, microsoft, open source

I just recently read an article from Krishnan Subramanian, which I believe is very interesting: Microsoft’s Huge Cloud Problem.

I agree with most of the article’s comments. They have to be taken with a grain of salt, since most of is speculation. Very smart speculation, but speculation none the less. But What I do disagree completely, is the following line:

“ is an evolution from the web and .NET was never a platform of choice in the web…”

I agree that the cloud is an evolution of the web, but the article talks about choice, who is it referring to? Is it the open source community? Or is the enterprise community? or is it both?

Obviously as an Open Source advocate, .Net or even Mono would not be your web platform of choice. You usually go to either PHP (which is the leader in the Open Source community) Ruby or Python (just to name a few, I know there are a lot more).

But in the enterprise world, .Net is very much relevant, and in most of the cases it is the platform of choice. I know that this is a huge market and the competition is strong, but to completely dismiss Asp.Net as not a platform of choice is far from the truth.

Asp.Net and .Net are very much relevant right now, and it will stay that way for a long time. Whether Azure succeeds or not.

It is a mistake to think that everything will be in the cloud. What will prevail are hybrid environments. That is why I think Microsoft will not only survive this (even though is going to be a really difficult climb), but it will remain relevant.

Google’s view of *EVERYTHING* in the Cloud is not very down to earth (hence the name, everything in the clouds). And in my opinion, it will never get there. A lot of things are going to be done in the cloud, and probably the majority, but not all. We are creatures of choices, and we will keep our options open.

Now with the open source movement, Microsoft has done a lot. And I actually think we should thank Miguel de Icaza and his team for this. He might be called a traitor by some, but I think he is the biggest Trojan Horse of all. He has been pushing Microsoft to open source (with the help of so many).

But let’s think about Mono for a minute. Microsoft already released the source code for .Net in a very closed license, which I see as a glass box (look but don’t touch). It is getting there, to that openness that the article is talking about. They know they have to do it. But they don’t know how.

Now, Mono is a very good example. They have been reproducing the signatures and interfaces to use .Net on Linux and it works like a charm. Also they have been adding their own mix.

Microsoft will end up releasing .Net as an Open Source project, it will not be soon though. They already have their own license for that. With what Mono has done, when Microsoft plans to release, the integration with Mono will make it easier to hit the market.

The article is right about one important thing, in order to compete in the clouds, they have to kill Windows as an Desktop OS. But I think it will prevail as Windows Azure. That is why the word “Windows” appears in there.

Just one more thing before I close this rant. I think the mistake that Netscape did with Mozilla, is a learning experience that can be applied anywhere. When Netscape decided to build their browser from Scratch instead of fixing their bloated browser at the time. They lost too much time, and they lost the browser wars. They should have fixed their browser, not start a new one, which ended up with the same problems. It eventually got fixed when the community did the right thing and fixed it with Firefox, but they didn’t not start from scratch, they fixed Mozilla.

Microsoft is the browser and we (the community) are Netscape. Are we going to kill Microsoft so that Apple or Google takes its place? And then end up with the same problems all over?

I wouldn’t really want Apple in Microsoft’s shoes. I can see what they can do with their App Store. They have so much to learn. It would be like going back to the 90’s. We already went this route with Microsoft so many times, and now, Microsoft is learning.

How about Google? I wouldn’t want Google either. They are still too young, and we haven’t seen their evil yet, which scares me a lot. They not only have a lot of power in the internet, they hold most of our data, and they want *ALL* of it. Everybody has an evil side, and Google is not any different. We just haven’t seen it yet.

Microsoft is a known evil, let’s fix it. Why change it for a new one, when this evil has already been changed so much, and it is learning to live with the community?

Well enough of rants…I’m going back to work.

Important links: