Jackson's Blog

Tech Simplified

Life in München

Guten Tag,

It’s been quite some while, or a long time to be precise since my last post. It would be because I was busy trying to cook food :p.

I got the opportunity to spend one semester abroad at TU München, Germany as part of Amrita’s student exchange program. It was really great meeting new people, visiting historical places, palaces, etc. I arrived early in March so that I can attend MacPorts Meeting 2016 (actually to see snow ;)). I would keep MacPorts Meeting and snow part for another post.

1st Month in München:

In one word: Cold

Well, the weather was more or less like Kerala but colder. It rains for few days and cold, and then it will be sunny and then back to rains. Also seems like going to snow a bit now in April-End.

-> Road Trip to Slovenia for MP Meeting 2016 through the Alps (Thanks to Clemens and his BMW ;)).


On the way to Planica
On the top of Planica

-> Trying to Cook food:

Egg Curry


Veggies and Salami



-> TUMi Events:

Allianz Arena

Allianz Arena
Allianz Arena
Allianz Arena

Munich Residence

Munich Residence

Bavarian Breakfast

Bavarian Breakfast



Neuschwanstein Castle

Neuschwanstein Castle

Neuschwanstein Castle
Neuschwanstein Castle



-> Wannda Circus






P.S.: I was really bored to write much and food is waiting for me😉.

2015 in a Flash

The stats helper monkeys prepared a 2015 annual report for this blog.

Here’s an excerpt:

The concert hall at the Sydney Opera House holds 2,700 people. This blog was viewed about 19,000 times in 2015. If it were a concert at Sydney Opera House, it would take about 7 sold-out performances for that many people to see it.

Click here to see the complete report.

[Web] Call different Servlets within a single form


While working on Net-Centric Project I came across an obstacle of creating multiple buttons and calling different servlets within the same form. This was in the login page, where we can either login or register by making use of the same form fields ‘username’ and ‘password’.

To do so you can create a button as following:

<input type="submit" id="reg" value="Register" onclick="form.action='registerServlet';">

This would call another Servlet when this button is clicked.

The form will look something like this:

<form method="post" action="loginServlet">
  <input type="text" name="username" value="Username" autofocus >
  <input type="password" name="password" value="Password" >
  <input id="login" type="submit" value="Login" >
  <input type="submit" id="reg" value="Register" onclick="form.action='registerServlet';">

Happy coding.

Let the Windows be open, and feel the Freedom.

[OpenGL] Running OpenGL program on Mac OS X

Today I am going to show how you can run OpenGL programs on your Mac OS X through command line (Terminal.App).

1. Use the header file “GLUT/glut.h” and not “GL/glut.h”

2. main function should return an integer type value.

int main(int argc, char** argv) {
    return 0;

3. Run the program by using the following command:

gcc -framework OpenGL -framework GLUT <inputfile> -o <output> -Wno-deprecated

We are passing -Wno-deprecated flag to surpress the warning generated as lot of procedures are deprecated after 10.9.x.

In Ubuntu, we pass -lm -lglut -lGL -lGLUT, but in our case we pass OpenGL and GLUT as parameters to framework option.

Happy animating.

Let the Windows be open, and feel the Freedom.

[Star Wars] Google Easter Egg


Google has an awesome treat for all the Star Wars fans🙂

Open up Google Chrome and enter the following query in URL bar – “a long time ago in a galaxy far far away” and see the magic.

Here’s a small preview of the page if you the Easter egg isn’t available.

Screen Shot 2015-11-26 at 9.53.46 pm.png

May the Force be with you.

P.S.: I tried this on Mozilla Firefox but it doesn’t work for me.

Let the Windows be open, and feel the Freedom.

[Android] Fix Rendering Issues in Android Studio


While creating a new android project using Android Studio I came across a Rendering error when I try to open the ‘Design tab’ on any layout xml file.

Rendering Error
Rendering Error – Classes could not be found.

Open up the styles.xml file. It would be under res/values/ folder in your app directory.

Change the following line

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">


<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">

Here, we have added Base as the superclass for this particular theme as defined in the values.xml under the build/ directory.

<style name="Base.Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light">

Other Solutions:
1. Change the theme by selecting the ‘Design’ tab of your layout xml. Then click on App Theme and select the appropriate theme you want.
2. Modify the styles.xml file as following and select the appropriate API level.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"></style>

Let the Windows be open, and feel the Freedom.

[Fedora] Add self signed certificate to list of trusted certificates


Today I am going to show you how to add a self signed certificate to the list of trusted certificates in fedora.

I was trying to install some packages on fedora and was getting SSL errors while I was connected to my university WiFi (which makes use of self signed certificate). In order to connect to my university WiFi, I need to accept and add a self-signed certificate to list of trusted certificates.

Note: Remember that adding self-signed certificates to list of trusted certificates is not recommended unless no other option is available.

We can add and trust the certificate from browser if you just want to browse the internet. But if you want connection in the complete environment i.e., terminal, browser, apps, etc. you can follow the steps mentioned below.

First we need to download the self-signed certificate from the WiFi portal or the web. For me, the certificate is available on my university intranet.

Step 1: Copy the self signed certificate to trusted certificates folder.

sudo cp /path/to/certificate.cer /etc/pki/ca-trust/source/anchors/

Remember to replace ‘/path/to’ with the folder in which your certificate is downloaded.

Step 2: Update list of trusted certificates

sudo update-ca-trust

Now you can connect to the internet via browser, terminal and other applications.

Thanks to ‘puiterwijk’ on IRC #fedora-admin on Freenode.

P.S.: Never do online transaction or other sensitive transactions on public WiFi.

Let the Windows be open, and feel the Freedom.

[GSoC 2015] Dependency calculation using libsolv


After the Mid-Term Evaluations I started working on dependency calculation module. I added a procedure mportinstall in macports.tcl file which in turn calls dep_calc procedure in macports_libsolv.tcl.

There was already a mportexec procedure which was called by port.tcl and the dependency calculation and conflict resolution was handled by mportexec. So we modified port.tcl to call mportinstall when -l (libsolv) option is passed.

The problem that we faced was port.tcl passes the portnames one by one and executes mportexec for each portname passed to ‘port install’. We didn’t want this as libsolv requires the complete list of ports to be installed. So we tweaked port.tcl where the portnames were passed one by one by iterating over the portlist (list of ports to be installed) and passed the complete list instead to mportinstall.

These portnames passed to dep_calc as associative array were then iterated over and appended to a list variable named portlist. After this, we need to use the Selection to select the appropriate solv from the pool and create list of jobs. This jobs list is then solved by the libsolv and if a conflict occurs, create a solution after conflict resolution and ask for user confirmation or create another solution.

The final stage is the transaction part which classifies the list of packages as ‘Installed’, ‘Upgraded’, ‘Erased’, ‘Downgraded’ and ‘Reinstalled’. This list was returned to mportinstall to continue with installing the ports. But this list was alphabetically sorted and we had to manually use dlist to topologically sort it so that dependencies were installed first. We achieved the desired results and it was much more efficient than the built-in engine and the conflict resolution was quite smooth. Currently we support only installation at the moment and more options to uninstall, etc. will be added soon.

There was a procedure for transaction to order the list topologically i.e., list the dependencies first that we missed out initially while working on the swig interface but that seems to be fixed by the upstream developers🙂.

Let the Windows be open, and feel the Freedom.

[GSoC 2015] Mid-Term Evaluations

Hola Amigos,

I was at FUDCon 2015, Pune from 25th June to 28th June, 2015. At the same time, GSoC 2015 Mid Term evaluations was scheduled which I successfully passed🙂. My mentor, neverpanic, was really helpful and we did schedule our timeline accordingly.

We finished up implementing search using libsolv and successfully set up libsolv pool and repo data. I also wrote a small test file for testing the search module implemented. This also included code cleanup, optimization wherever possible, adding comments for better understanding of the code and fixing bugs.

Our next objective after the Mid Term evaluation was to start working on dependency calculation and converting libsolv build from cmake to autoconf (more on this to come soon!).

Every step till now was a new experience in itself and I learnt a lot at each and every step.

Let the Windows be open, and feel the Freedom.

Blog at

Up ↑

%d bloggers like this: