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…)

C++ Web Development

After spending the last week immersed in Witty and re-writing our application from scratch, twice, I have come to appreciate the capabilities of the tool-kit in helping to develop web applications. It has certainly been both a good and bad experience. Let’s talk about the bad first. The documentation does not serve newbies very well. Yes, the entire API is documented but it assumes that you already have a big picture grasp of the entire tool-kit. Now, I can say Read more…

UUID v Integers

After some preliminary development, we’ve come to realise that we will need to use UUID as the primary key for all our database models. However, we were concerned that this would incur a performance penalty as UUID were huge random numbers. So, we read up on some other experiences and concluded that it would not significantly mess things up for us and would actually be good as we build our database for future growth, if we are careful. Some points Read more…

Witty Login

Now, it took me a while to figure this one out but I’ve managed to get the Witty authentication widget to center itself on-screen. Getting the actual widget itself to work took only a quick look at the tutorial and example. But it was never centered until today. All that was missing was to add the following right at the beginning of the code, right after loading the Bootstrap theme. setTheme(new Wt::WBootstrapTheme()); root()->addStyleClass(“container”); That did the trick. Now everything is Read more…