A new adventure

Ever since starting my degree in Mechatronic Engineering, the one thought that has kept me awake at nights was my Final Year Project. Unlike many of my peers, I always believed that your Final Year Project defines who you are as an engineer and your capabilities as well as ambition. I have been hoping not to be stuck with a topic that did not interest me and furthermore extinguish my willingness to go deep into the project itself and I Read more

AEMB ISA, in detail

Finally work on the AEMB is to be continued after a long unjustified break. In previous posts I have touched a bit on the Instruction Set Architecture (ISA) of AEMB and explained it’s relation with Microblaze ISA. In order to change the threading model of AEMB to coarse grained, I was warned that after doing the change, some data hazards will become unresolved. This is because in the current AEMB, data dependencies of back to back instructions are being resolved by changing Read more

Witty Sluggishness

While playing around with low-level Witty, I faced a serious issue of performance. For some reason, one of the operations that we were doing was taking a relatively long (1s) time to complete. This didn’t make sense as the operation itself was not particularly onerous.
(more…)

Low Level HTTP with Witty

Witty is great for creating complex web applications as it simplifies and automates a lot of the necessary back-end work. However, when all you need is simple HTTP request and response, things need to be modified slightly to have it work correctly. This is what happened when we needed some low-level access to the underlying web server.
(more…)

LZO Data Compression

While fooling around with the zram Linux kernel module, I learned about the existence of a fast compression/decompression algorithm called LZO. This is a very fast compression and decompression algorithm that does not consume a lot of resources and provides decent compression ratios as benchmarked against other popular algorithms. Looking at this, it is something that would be useful for us to use in the future for our product. As we are storing a lot of files in the database, Read more

Robo Olympics 2014

We were among the main sponsors of the Robo Olympics 2014 event held at UTAR, which culminated at an exhibit at the KL Science & Engineering Fair. We were really fortunate to be involved in such an event for high school children, teaching them how to build simple robots.

C++ Name Mangling

While building our C++ application, I got interested in looking at C++ name mangling conventions used in GCC and learned quite a few things. I have always known about name mangling as a mechanism for determining C++ functions, classes and name spaces. But I have not studied the details of it. Turns out that there is a lot of documentation on it.
(more…)

Webserver Segfault

For some reason, our new C++ web application kept segfaulting whenever the user closed the browser. We ignored this problem for a bit, while focusing on functional development. However, it is a nagging problem and I decided to take a look at it today. The good thing is that by enabling compilation with debugging output, we were able to look into the call stack when it crashed. The suspect was something that was happening in the destructor of our dashboard Read more

Witty-CodeMirror Traffic

While using Witty with CodeMirror to perform code edits, we discovered that there is a limit to the amount of data that can be transferred at a go. This is probably designed as a security measure to prevent overloading the server. Therefore, there is a need to work around this issue for large files. The easiest way to work around this is to ensure that all our files are small. For most intents and purposes, this will be the case. Read more

Witty with Ace and CodeMirror

Our product requires an online code editor. So, we decided to experiment with two of the leading contenders – Ace and CodeMirror. Both of these are open sourced and can be easily integrated with Witty. In fact, we managed the integration is about an hour each.

I’ll skip the details on how to use Ace and CodeMirror as these can be gleaned from their friendly documentation. They’re also both compatible in so many ways.

However, I will try to show how it can be easily integrated with Witty and also some general comments. All we need is to load the Javascript, invoke the appropriate functions with the appropriate DOM object to use as the editor, and set the onChange event trigger.
(more…)