Saturday, December 28, 2019

A few things that made my 2019 interesting..

UFOs and Bratislava
2019 is my best year so far, followed by 2017, 2015, and 2013. This post lists 30 things that made my 2019 interesting.

Final moments of my terminal degree that lasted almost 5 years.

2. Successfully defending my thesis in ULisboa.
I got a Pass with Distinction.

3. UCLouvain Public Defense of my Ph.D.
As a double degree, I had to defend my thesis twice. My defense in Belgium officially concludes my Ph.D. of 5 years!

4. 10 Years of many things.
Time to reflect on the goods and bads of the 2010s. 

5. Hosting a RIPE NCC Atlas Probe.
Fascinating to contribute to the Internet measurement community.

View from the Zugspitze Summit
6. Watching the Lunar Eclipse in Atlanta.
I was also present in Colombo during the Solar Eclipse. But did not dare to watch it.

7. Leuven twice - the second time was the charm.
Starbucks Leuven has also become my most favorite Starbucks.

8. Finding the Louvain-la-Neuve lake completely dry.
It was sad to see my favorite lake missing - although it was temporary.

9. Porto after exactly 6 years.
It was a magical experience, being in Porto on the same 3 days.

10. An overnight stay in Charleroi Sud, Belgium.
Realizing there is more than just a cheap airport in this region.

11. Time travel - Lisboa version.
The feeling of saudade was so real.

Panevėžys Train Station
12. Transcontinental boat ride in Istanbul.
Consistently chased by an army of seagulls.

13. Praia das Maçãs - The Apples Beach in Sintra.
A place where my favorite song from Romania was shot.

14. The bright and energetic Antwerp.
Probably the most random trip of the decade.

15. Random walks in Bratislava, Slovakia.
A cheap Ryan Air flight after a long time.

16. Getting a new passport.
For another decade, until 2029!

17. Hot summer days in Houston, Texas.
It was special as our first trip with our infant son.

The Hollywood Sign
18. My second GSoC Mentor Summit, after 8 years.
This year we successfully resurrected Emory BMI as a mentoring organization.

19. Cold evenings in Riga, Latvia.
Our first city from the former USSR.

20. A day in a "ghost town" in Estonia.
Pärnu, a summer resort that hybernates during autumn and winter.

21. Panevėžys, a way of travel.
Who guessed a boring town would influence us this much?

22. Zugspitze, on the top of Germany.
At 2950 meters, it is literally the highest point I have ever been in my life.

23. The majestic Salzburg.
It has this true European vibes.

Crowded Istanbul
24. Daily Duolingo lessons of Portuguese.
Because I don't want to forget the language.

25. Apple Picking in Ellijay.
It was an unexpectedly nice and refreshing activity.

26. Batu Caves, Malaysia.
It was also my first visit to Kuala Lumpur and South East Asia.

27. Long metro rides and walks in Los Angeles.
Evening rides to Santa Monica and Long Beach, and hikes in LA.

28. Postdoc life in Emory.
I presented my first conference paper as a Postdoctoral Researcher at BigData conference in LA.

29. Döner Kebab and Sahlep in Istanbul.
After some long walks during the Christmas vacation.

30. A "direct" flight via Male.
It was my first direct but not non-stop flight, from Istanbul to Colombo, via Male.

Every year, I have one new year's resolution - to outperform my previous years. :) I already have high expectations for 2020. I wish you a happy new year. Thanks for reading my list until the end. You may also read the blog posts of all the previous years as well.

Friday, December 27, 2019

A few things that made my 2010s interesting..

Cruise to Sthlm from Helsinki, the return trip
We are reaching the end of the 2010s. Easily my most favorite decade in my 3 decades of life (not counting the 1980s when I was still an infant). It is also 10 years since I started my blog Llovizna in 2009 March. These all make 2019 an interesting point in my life to look back and reflect. I also blogged about my life of 7 years in Lisboa and similar stories from the other cities that I lived during my MSc and Ph.D. I have the habit of summarizing a year when the year comes to an end, in an annual post, since 2012. This time, I decided to summarize 30 things that made my 2010s enjoyable, starting the tradition of a decade post.


I graduated with a first-class in Computer Science and Engineering.

Witnessing snowfalls in Paris on my first trip abroad. It was also my best conference experience so far, in terms of social activities.

WSO2 was like a family in those days.

Biyadhoo Island, Maldives
4. Leading the Local GSoC promotion
I did some evangelization around GSoC and open source, touring 7 Sri Lankan universities.

My first solo foreign trip. I also had the DXB -> LAX flight, which is one of the longest non-stop direct flights.

It required me to travel to New Delhi, twice.

Erasmus Mundus single-handedly changed my life.

Bairro Alto, Lisboa, by night
8. Feeling young in Lisboa
We had a group of friends, and we had terrific memories -- especially the first semester. "Portugal" also became the one-word summary of my 2010s.

It was a romantic and remarkable new year celebration.

It was snow everywhere and the first time spending days and nights in a ski resort.

Stockholm was my second city outside Sri Lanka. It was dark in winter. Still, it left many pleasant memories.

Woods of Farsta Strand, Stockholm
12. A Christmas vacation in 3 Nordic countries
Including a cruise to Helsinki from Stockholm, and a flight to Copenhagen from Stockholm and a train to Malmo.

13. London in Winter
It was a pleasant experience presenting the full paper of my MSc thesis. It also marked the successful completion of my MSc.

14. Biennial visits to Shenzhen, China
I enjoyed my visit to Shenzhen every other year, starting from 2014 (2014, 2016, and 2018). 

15. EMJD-DC Ph.D. program
I started my Erasmus Mundus Ph.D. program from Lisboa. This made me stay in Portugal for a total of 6 years (2012 - 2018) - much longer than I ever imagined.
Early dinner in Puerto Penasco, Mexico

16. Crossing to Mexico by land
During the SDS 2015 conference in Phoenix, I started the habit of visiting nearby countries when possible.

17. Spending a summer month exploring the Balcans
It was a short-term scientific mission (STSM) research visit to Croatia. I ended up traveling to nearby countries, Italy, Slovenia, and Serbia during the weekends.

18. Calm and warm Maldives beach
Enjoying a sunny island of Maldives.

19. The Caribbean sea of Nassau
It was fun in the Bahamas, although one day was raining and ruined part of our trip.

Calm waters of Nassau
20. The beautiful Rhodes island in the autumn
I was there in Greece to present my papers. However, the island was too tempting not to explore. The conference was in the Greek touristic island, and it was fun.

21. Chasing snow in Liechtenstein

Determined to witness snow for the Christmas/New year vacation, we traveled all the way from Zurich to Malbun in Liechtenstein, eventually reaching the snow-capped mountains.

22. Daily walks along the beautiful Louvain-la-Neve lake
The Belgian village was self-sufficient with everything we needed.
The Belgian village of Louvain-la-Neuve

23. A train ride from Oslo to the sunny Karlstad
The Swedish town instantly became one of my favorites.

24. When a huge fan of Romanian music finally arrives in Romania
Romania was stylish and much better than what I anticipated. And I love Romanian music.

25. Exploring Saudi life
KAUST was like a country on its own. We enjoyed the canteen food and frequent visits to the cinema.
Atlanta getting ready for Christmas

26. Getting into random buses in Jeju
Yet, we eventually reached the destination!

27.  Thiruvannamalai
This temple is special for me as I always wanted to visit it from my young age. We had a chance to visit Chennai and temples around.

28. Exciting moments in Atlanta
It was a special feeling, becoming a father.
The Red Sea, KAUST, Thuwal, KSA

29. Successfully defending my Ph.D. thesis with a distinction
I had to defend it twice since it is a double degree - first in Portugal and then in Belgium! Now, I am finally done with all my higher studies.

30. GSoC Mentor Summit 2018 and the Baltic Adventures
It was quite a packed crazy trip, spanning 5 countries, out of which 3 countries were the Baltic nations that I have never been to before.

I find it exciting how events look different from a longer perspective such as a decade. This is the first time I looked back at a decade. This was also the first decade I was independent on my own, as before I was always with my parents. I hope the 2020s will be more interesting than the 2010s. I am looking forward to the 4th decade of my life! See you again with a similar post in 2029.

Thursday, December 26, 2019

Applying for a new Sri Lankan passport

So I had to apply for a passport as my old passport was reaching its end of life (10 years). Since I am in a rush, I decided to go with the one-day option. For most people, paying 15,000 LKR (equivalent to 83 USD at this moment) for the one-day service is a good deal. You can arrive in the Department of Immigration and Emigration early and receive your passport on the same day. This is colloquially known as the passport office in Battaramulla. It is in Subuthi Road, Suhurupaya, to be precise. It opens at 8:30 a.m. But people start arriving early and fill the new passport application form (should be obtained from the officer sitting right next to the entrance in the building/ground floor). I arrived at 8:15 a.m. 

After filling the form, you can go ahead to the second floor and get a token at the entrance. Make sure you have all the necessary documents, arranged in the right order before proceeding. Also make sure you have 15,000 LKR with you. I paid by cash. I did not bother to check whether it is possible to pay by a debit/credit card.

0. The filled application form.

1. The slip given by the photo studio. The studio should be one from the list of the photo studios authorized by the department. You should go to the studio the day before, get the photo, make sure they submit online, and get the slip.

2. Your national ID card and its photocopy.

3. Your previous most-recent passport (if any) and its photocopy.

4. Your original birth certificate and its photocopy. It is recommended that the birth certificate is obtained from the relevant authorities in the recent past, i.e., within past 6 months. You may get it at the nearest divisional secretariat if you are born after 1960. Otherwise, you have to go where you were born! A painful thing if you were born before 1960 and live far from where you were born. The document should be original (typically, Sinhala or Tamil). English translations are not required, and translations are not accepted in place of the original certificate.

5. Academic certificate and letter of appointment. If your academic certificate is original, you may just submit a photocopy. But keep the original with you just in case.

Your old passport and your ID will be returned to you now. The old passport will have received a stamp, "ISSUED A NEW PASSPORT". That means, your old passport will be invalid for further travels. However, keep them with you always when you travel, together with your new passport. The old one may have your valid and previous visas which will be necessary at the point of entry in a foreign country when you travel.

Once you get the token, you will go inside with the token, and submit all the documents. At this point, the officer will staple your documents, ensuring all are in place. Then you proceed to give fingerprints (unless you are <16 or="">65 in age). Finally, go to the D counter, and pay the fees (15000 LKR), by submitting your token. Keep your token safe until this point. Now you will get a new token, to retrieve your new passport.

You will definitely need a Sri Lankan mobile SIM with you, as the decisions are messaged you. You will receive the first SMS when you make the payment. This ensures that you have completed all the steps necessary to obtain the passport. The second SMS indicates that your passport application is accepted. The third and the final SMS indicates that your passport is ready to be collected at the first floor wing C. Go with your new token, which also mentions which precise counter to collect your passport from.

Please note that it may take up to another 40 minutes to get the passport. So you will have to wait in the waiting room. In a way, this is good. You have some time to come back from wherever you are - whether canteen or toilet. If you do not have a mobile phone, probably you can ask them whether you can just wait in the wing C waiting room without having received the SMS. I am not sure whether it is possible, and whether it is worth the risk. Just take a working mobile phone and a Sri Lankan SIM with you to be safe.

There are some shops including a photo studio inside the department itself. Seems it is possible to do the photo there itself. I would not recommend that though, especially if you are in a rush and if you are doing the one-day service. The photocopy costs 10 LKR per page. But I paid 100 LKR and the vendor did not have change. So I asked him for 60 LKR milo drink. He had 20 LKR balance for me, and for the rest of 10 LKR he provided me with 2 candies after confirming that is ok with me.

Once your name is notified in the notice board in the relevant counter at Wing C, go and collect your new passport together with the batch of documents that you submitted.

If you do not drive, you can go to the passport office from Dehiwala using bus 163, which goes directly there. It costs 32 LKR per person. The bus goes with the board "foreign employment" or "විදේශීය ශේවා". Alternatively, just hop on to a metered threewheeler/taxi - just what I did from Moratuwa.

I left home around 7:30, arrived around 8:15 and received my passport at 13:45. So this takes almost a whole day! But I am happy that I managed to get it done in a day. Thanks for the one-day service.

Wednesday, December 25, 2019

Christmas in Istanbul

A bridge that connects continents
Flying from the USA to Asia is tiresome. Usually, it involves a layover in Europe or middle-east. This time when I flew from Atlanta to Colombo, I had a transit in Istanbul - my first ever flight with Turkish Airlines. I decided to stay in Istanbul for 3 nights since such a multi-city option was cheaper than flying directly. I also have never been to Istanbul before anyway. Istanbul was lovely and was different from all the cities that I have visited before. I also had a transcontinental cruise journey in Istanbul. This was also my first Christmas alone. I visited a lot of places in Istanbul by foot, including Sultanahmet, Eminönü, and Taksim Square. Overall, it was worth the stay.

Thursday, December 19, 2019

Google Summer of Code (GSoC) 2020 for mentors

Google Summer of Code (GSoC) is a summer program hosted by Google where students work remotely on their favorite open source project and get paid! This presentation is an attempt to introduce GSoC to new mentors and mentoring organizations.

Wednesday, December 18, 2019

Google Summer of Code (GSoC) 2020

Google Summer of Code (GSoC) is a summer program hosted by Google where students work remotely on their favorite open source project and get paid! This presentation is an attempt to introduce GSoC to new students.
 

Travels and Conferences in my 2010s.

Sunset in Long Beach, CA
This year started as a slow one. In fact, this is the only year without migrations, since I left Sri Lanka in 2012. I have been in constant movement during the 7 years of 2012 - 2018. I changed countries more often than changing apartments in the same country. Erasmus Mundus mandatory mobility, topped with my adventurous and curious nature, led me to not have a single year without such migration since 2012. When migrations are the norm, not moving around becomes an event on its own.

Although I did not travel during the first half of 2019, the latter half was filled with several local and foreign travels, starting with my 2 Ph.D. defenses in Portugal and Belgium. The only conference I had this year was BigData 2019 in Los Angeles, not counting the GSoC Mentor Summit in Munich as a conference (it is an unconference).
 
Little Tokyo, Los Angeles, CA
This was my first time visiting Los Angeles. However, previously I had a layover at LAX airport during my first flight to the USA in 2011 for the GSoC mentor summit. Several years and trips after, that DXB (Dubai) LAX (Los Angeles) flight remains the longest non-stop flight of my life so far. This time, I visited a lot of places in Los Angeles - hiking up close to the Hollywood sign, and walks to Little Tokyo and China Town. I also visited nearby towns such as Santa Monica and Long Beach.

I love conferences and I like traveling. I also like to overdose in caffeine during conferences. Overall, I am happy with everything -- although I hope I will have more research opportunities and conference visits in the upcoming years.

Sunday, December 15, 2019

Data Services with Bindaas: RESTful Interfaces for Diverse Data Sources

Dec 11th, 2019: Today I presented my first conference paper from my Postdoc at IEEE big data 2019 conference held in Big Data 2019. It was fun listening to various talks and networking with several researchers from all across the world.

Abstract: The diversity of data management systems affords developers the luxury of building heterogeneous architectures to address the unique needs of big data. It allows one to mix-n-match systems that can store, query, update, and process data based on specific use cases. However, this heterogeneity brings with it the burden of developing custom interfaces for each data management system. Existing big data frameworks fall short in mitigating these challenges imposed. In this paper, we present Bindaas, a secure and extensible big data middleware that offers uniform access to diverse data sources. By providing a RESTful web service interface to the data sources, Bindaas exposes query, update, store, and delete functionality of the data sources as data service APIs, while providing turn-key support for standard operations involving access control and audit-trails. The research community has deployed Bindaas in various production environments in healthcare. Our evaluations highlight the efficiency of Bindaas in serving concurrent requests to data source instances with minimal overheads.

Thursday, December 5, 2019

Running Kheops on a Mac OS host

This post discusses how to run Kheops from the on Mac OS, with Docker.

$ git clone git@github.com:OsiriX-Foundation/kheopsDocker.git

$ cd kheopsDocker/

$ sh script_run_docker.sh

Install newman

$ sudo npm install -g newman

/usr/local/bin/newman -> /usr/local/lib/node_modules/newman/bin/newman.js
+ newman@4.5.6
added 160 packages from 196 contributors in 5.481s


   ╭────────────────────────────────────────────────────────────────╮
   │                                                                │
   │       New minor version of npm available! 6.9.0 → 6.13.2       │
   │   Changelog: https://github.com/npm/cli/releases/tag/v6.13.2   │
   │               Run npm install -g npm to update!                │
   │                                                                │
   ╰────────────────────────────────────────────────────────────────╯



Replace line 10 in script_run_docker.sh

with

newman run postman/kheops-Get_tokens.json -e postman/kheops_localhost.postman_environment.json -g postman/Workspace.postman_globals.json --export-globals postman/Workspace.postman_globals.json

Save the file.

If you are using Docker for Mac, you may encounter the error listed in https://github.com/docker/for-mac/issues/2396

Creating pacsldap ... error
Creating db       ...

ERROR: for pacsldap  Cannot start service ldap: b'Mounts denied: \r\nThe paths /etc/localtime and /usr/share/zoneinfo/Europe/Zurich\r\nare not shared from OS X and are not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\Creating db       ... done

ERROR: for ldap  Cannot start service ldap: b'Mounts denied: \r\nThe paths /etc/localtime and /usr/share/zoneinfo/Europe/Zurich\r\nare not shared from OS X and are not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
ERROR: Encountered errors while bringing up the project.

As a work-around, remove all the occurrences of the below line from kheops/docker-compose.yml.
      - /etc/localtime:/etc/localtime:ro

$ sudo mkdir /dcm4chee-arc

$ sudo chmod 777 /dcm4chee-arc

Share /usr/share/zoneinfo/Europe/ and /dcm4chee-arc from the Preferences of Docker Desktop in your Mac host machine.

Save the file and then re-run

$ sh script_run_docker.sh

$ sh script_run_docker.sh
Stopping db       ... done
Stopping pacsldap ... done
Removing pacsarc  ... done
Removing db       ... done
Removing pacsldap ... done
Removing network kheops_default
Removing volume kheops_dcm4chee-ldap-ldap
Removing volume kheops_dcm4chee-ldap-slapdd
Removing volume kheops_dcm4chee-db-data
Removing volume kheops_dcm4chee-arc-wildfly
Removing volume kheops_kheops-db-data
Creating network "kheops_default" with the default driver
Creating volume "kheops_dcm4chee-ldap-ldap" with default driver
Creating volume "kheops_dcm4chee-ldap-slapdd" with default driver
Creating volume "kheops_dcm4chee-db-data" with default driver
Creating volume "kheops_dcm4chee-arc-wildfly" with default driver
Creating volume "kheops_kheops-db-data" with default driver
Creating db       ... done
Creating pacsldap ... done
Creating pacsarc  ... done
Creating kheopszipper           ... done
Creating kheopsauthorization    ... done
Creating pacsauthorizationproxy ... done
Creating kheopsui               ... done
Creating kheopsdicomwebproxy    ... done
Creating kheopsreverseproxy     ... done
CONTAINER ID        IMAGE                                              COMMAND                  CREATED             STATUS              PORTS                                                                                                                                              NAMES
d5caa14fac54        osirixfoundation/kheops-reverse-proxy:ci-test      "./etc/nginx/conf.d/…"   47 seconds ago      Up 45 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8042->8042/tcp, 0.0.0.0:8048->8048/tcp                                                           kheopsreverseproxy
67552e9c9469        osirixfoundation/kheops-dicomweb-proxy:master      "./replaceSecretsAnd…"   48 seconds ago      Up 46 seconds       0.0.0.0:8049->8080/tcp                                                                                                                             kheopsdicomwebproxy
92710a77dd25        osirixfoundation/kheops-ui:master                  "./docker-entrypoint…"   48 seconds ago      Up 46 seconds       80/tcp, 3000/tcp                                                                                                                                   kheopsui
c9fa33eb693d        osirixfoundation/kheops-authorization:dev          "./replaceSecretsAnd…"   50 seconds ago      Up 47 seconds       8080/tcp                                                                                                                                           kheopsauthorization
0f267500942f        osirixfoundation/kheops-zipper:master              "./replaceSecretsAnd…"   50 seconds ago      Up 48 seconds       8080/tcp                                                                                                                                           kheopszipper
c95c6e4380c6        osirixfoundation/pacs-authorization-proxy:master   "/bin/sh -c '. $NGIN…"   50 seconds ago      Up 48 seconds       0.0.0.0:82->80/tcp                                                                                                                                 pacsauthorizationproxy
89c52e69534a        osirixfoundation/kheops-dcm4chee-arc-psql:latest   "/script_entrypoint.…"   51 seconds ago      Up 49 seconds       0.0.0.0:2575->2575/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:8787->8787/tcp, 0.0.0.0:9990->9990/tcp, 0.0.0.0:11112->11112/tcp   pacsarc
78bf11251bf7        dcm4che/slapd-dcm4chee:2.4.44-15.0                 "/docker-entrypoint.…"   52 seconds ago      Up 50 seconds       389/tcp                                                                                                                                            pacsldap
f4628a1a1c44        osirixfoundation/kheops-database:demo              "verify-secret-env-v…"   52 seconds ago      Up 50 seconds       5432/tcp                                                                                                                                           db
newman

kheops-Get_tokens

→ well-known
  GET https://keycloak.kheops.online/auth/realms/travis/.well-known/openid-configuration [200 OK, 2.62KB, 657ms]

→ get token user 1 (titi)
  POST https://keycloak.kheops.online/auth/realms/travis/protocol/openid-connect/token [200 OK, 2.01KB, 325ms]

→ get token user 2 (toto)
  POST https://keycloak.kheops.online/auth/realms/travis/protocol/openid-connect/token [200 OK, 2.01KB, 314ms]

→ get token user 3 (tata)
  POST https://keycloak.kheops.online/auth/realms/travis/protocol/openid-connect/token [200 OK, 2.01KB, 332ms]

┌─────────────────────────┬─────────────────────┬────────────────────┐
│                         │            executed │             failed │
├─────────────────────────┼─────────────────────┼────────────────────┤
│              iterations │                   1 │                  0 │
├─────────────────────────┼─────────────────────┼────────────────────┤
│                requests │                   4 │                  0 │
├─────────────────────────┼─────────────────────┼────────────────────┤
│            test-scripts │                   4 │                  0 │
├─────────────────────────┼─────────────────────┼────────────────────┤
│      prerequest-scripts │                   0 │                  0 │
├─────────────────────────┼─────────────────────┼────────────────────┤
│              assertions │                   0 │                  0 │
├─────────────────────────┴─────────────────────┴────────────────────┤
│ total run duration: 1790ms                                         │
├────────────────────────────────────────────────────────────────────┤
│ total data received: 7.53KB (approx)                               │
├────────────────────────────────────────────────────────────────────┤
│ average response time: 407ms [min: 314ms, max: 657ms, s.d.: 144ms] │
└────────────────────────────────────────────────────────────────────┘

Then go to http://localhost:8042 from your favorite browser.

Register yourself when it redirects to a page such as https://keycloak.kheops.online/auth/realms/travis/protocol/openid-connect/auth?client_id=loginConnect&redirect_uri=.........

It will take you back to http://localhost:8042/inbox after the registration. Now Kheops is ready to use!
Kheops Web UI

I can even tweet from the Kheops Web UI with a link to the created album!
"My KHEOPS shared album. http://localhost/view/ttuArLPrFv834JQ88KaQGY #KHEOPS"
Apparently, the link is broken. It should be: http://localhost:8042/view/ttuArLPrFv834JQ88KaQGY
But I see the parallels with the concept of Óbidos (MEDIator) replicasets in the given UUID ttuArLPrFv834JQ88KaQGY.
One can also create a sharing URL with upload/edit/delete capabilities (again, the port is not correctly used. But that is a front-end bug they can fix. For our purposes, we just need to add the port in the shared URL).

I can also view the images that I uploaded from OHIF viewer directly, by clicking that link. It uses their cloud hosted instance of the OHIF viewer to view the image stored locally, as can be seen from the URL.







We also observe the Docker containers initialized by this integrated project are - 1) db, 2) pacsldap, 3) pacsarc, 4) pacsauthorizationproxy, 5) kheopszipper, 6) kheopsauthorization, 7) kheopsdicomwebproxy, 8) kheopsui, and 9) kheopsreverseproxy. This system uses the managed Keycloak instance in the cloud for its authorization.

Monday, December 2, 2019

Those who ruin the flights for others

Batu Caves Murugan
Recently we visited Malaysia - Kuala Lumpur and Batu Caves, to be precise. Batu Caves temple reminded our visit to Kathirgamam in Sri Lanka. However, my memories of Kathirgamam are vague and fading, since I was only 5 - 6 years old when we visited Kathirgamam twice.

Since Atlanta is far from Kuala Lumpur, I also had a long return flight to Kuala Lumpur via Doha. Usually, I watch a lot of movies on the flights. But this time, I decided to watch just 2 movies during the entire journey (to and from).

In any economy class, there are 3 (or 4, if you sit in a middle seat) people who can ruin your flight. First, the person who sits in the seat behind you unless you sit in the last row. Second, the person who sits in front of you, unless you sit in the exit row or the first row in the block. Finally, the person(s) who sit(s) next to you.

The person who sits behind you has the potential to ruin your journey entirely. They can kick your seat non-stop. Some people do not realize how weak the economy class seat is. If you put your feet on the seat tray, or if you just constantly jerk it, the movements entirely affect the seat in front of you. It gives headaches. Please don't do that. Infants have the habit of kicking. If possible, make sure their feet are not directed towards the seat in front of them.

Second, the person who sits in front of you. They may recline their seat any time, giving your knee a sudden jerk. Some idiots choose to do that while the meals are served, making you spill your food or drink on you. I usually avoid reclining my seat (except maybe by a negligible degree). One exception: if you are in the seat behind me and continue to kick or jerk my seat, I WILL recline my seat to the fullest.

Finally, the person who sits next to you. They may occupy your seat area, lean on you and sleep, or cross their leg and touch you with their shoe or smelly socks. There was a time I was sandwiched in a middle seat with people on either side (window and aisle seats) occupying both hand rests. People, please give that armrest to the middleseater! On the other hand, once in a flight, as always, I let the middle-seat person use the entire armrest. But after a few minutes, I noticed I was being pushed to a corner. Then I found that that person has folded the armrest so that they can invade my space! Of course, I agree that they are a big person. However, it is NOT okay. I instantly put the armrest down back in its place, effectively cutting the huge person's belly which was invading my space by 25%. The person realized their mistake and retracted.

I wish everyone tries to be mindful of the surroundings and the neighbors. This will make our economy class flight experience much better.

Sunday, November 17, 2019

Revising Portuguese with Duolingo

Since I successfully defended my PhD thesis this year and left Portugal, I started to miss Portugal and hearing Portuguese. I also do not want to forget Portuguese, the language of the country that I love most. Therefore, I started practicing Portuguese with Duolingo 10 days ago. So far, good progress. Duolingo is funny with its interesting lessons and stories.

Some interesting events from Duolingo.

1. Luis is single-handedly responsible for the pineapple shortage in the world.
Image 


2.  and this woman who can eat eighteen! sandwiches.
Image 
3.  Proud to live in a world where even the cats read books.
Image 
4. and it gets creepier..
Image


5. Tell me about these unfair expectations..
Image 
6. A vegan tiger.

7. The mythical armadillo strikes again.. :D
Well, duolingo has a thing with this tatu.

Image

Thursday, November 14, 2019

Running dcm4che storescp tool

Dcm4che comes with a compact java implementation of the Store SCP.

You may easily download and run this tool by following:


$ wget -O dcm4che-5.19.0-bin.zip https://downloads.sourceforge.net/project/dcm4che/dcm4che3/5.19.0/dcm4che-5.19.0-bin.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fdcm4che%2Ffiles%2Fdcm4che3%2F5.19.0%2Fdcm4che-5.19.0-bin.zip%2Fdownload&ts=1573680007


$ unzip dcm4che-5.19.0-bin.zip

$ cd dcm4che-5.19.0/bin

$ ./storescp --accept-unknown --directory /opt/localdrive/dcm4che-dicom-root  --filepath {00100020}/{0020000D}/{0020000E}/{00080018}.dcm -b BMIPACS:4242

Saturday, November 2, 2019

Universities as mentoring organizations

A fraction of the session participants.
(Photo by akram9)
We had several exciting unconference sessions and talks at the Google Summer of Code Mentor Summit 2019. I proposed and coordinated the unconference session titled "Universities as mentoring organizations," the Sunday 20th of October 9:00 - 10:00 a.m., at the room "Studio-2" of Mariott Munich. We had around 25 active participants from multiple organizations, representing several universities from countries including the USA, Russia, Germany, and Brazil. We also had mentors from umbrella organizations such as CBioPortal, which are based mainly on universities and research labs. Later on the same day, I coordinated a session on "The great proposals" at "Studio-3" from 2:30 - 3:30 p.m.
 
The session notes are recorded in the GSoC notes. Find all the sessions with their notes linked here. In this post, I elaborate on the session "Universities as mentoring organizations" again for a wider audience. These notes are from the thoughts of the mentors from the communities involved in the discussion, and they will reflect the communities involved. Discussions are grouped under topics, rather than by the person who discussed it in detail.


Administrative Challenges from the Universities
The discussions started interactively with self-introductions from the participating mentors and their mentoring organizations. Tiago and Frederico represented their mentoring organization, which is a university in Brazil. They noted the challenges in convincing the university administration to join the GSoC and then accepting payments from Google. Their organization was the first Brazilian university to become a GSoC mentoring organization. The university administration was expecting documents from Google in Brazilian Portuguese to consider them official. The universities expected the supporting documents could come from one of Google's Brazil offices rather than from Mountain View to make the language requirement met. This expectation created some translation requirements, and these cause some additional burden on the GSoC organization administrators. We hope that such issues would be sorted out from the universities, potentially with some help from Google, so that there would be more participation from International (i.e., non-English-speaking) universities as mentoring organizations.

GSoC Students Help Ph.D. Research
There were several observations on how GSoC students help with the implementation of research ideas. Several Ph.D. implementation works remain closed due to implementations with significant technical debt. Support from GSoC helps make the code more readable and reusable, and thus support open science and open-source contributions from the research universities. Hence GSoC students help with the host universities' research open-source. Stephanie from UC Santa Cruz stressed how GSoC helped their Ph.D. and postdoc researchers. She mentioned how the undergrad GSoC students worked with their researchers, and this was a mutually benefitting task. No one felt mentoring as a burden. Instead, they saw it as a way to build their communities. She highlighted that promoting GSoC across the departments would be easy by stressing how the GSoC students help with implementation over the summer, paid by Google. There were observations on developing projects that are helpful to Ph.D. research work. For instance, there are projects that need to get done, but the mentor (Ph.D. student) doesn’t want to do it themselves. GSoC students can be more motivated to do such implementation work, even with little scientific or research impact.

Motivating students into GSoC
Philipp and Karlheinz represented the University of Munich. They highlighted that their Ph.D. students work as GSoC mentors. However, they also stressed that it is hard to motivate students from their university to join GSoC as students due to summer holidays overlapping with the GSoC timeframe. Students do go off on a well-deserved vacation rather than taking a summer internship. Furthermore, there were observations that there are several university open source projects that are not connected to or well-received by general open-source software communities. GSoC is indeed bridging this gap, making the code quality better. I (Pradeeban from EmoryBMI - Emory University, Department of Biomedical Informatics) mentioned how we motivate our students to join GSoC while discouraging them from joining our university/department as their mentoring organization. This is mainly because we want them to build new collaborations. Collaborations inside the university or department do not require a GSoC.

GSoC in professional life
The impact of GSoC is long-lasting. Some of us found our postdoc advisors and employers through GSoC. So GSoC works as a recruiting platform for mentors as well. Furthermore, it fosters international collaborations between universities. We had research papers as outcomes of the GSoC. Nikita from a Russian university stressed the importance of GSoC and similar programs in the students' careers. Sebastian Diaz from Harvard highlighted the misalignment of university projects and open source.  While challenging, programs such as GSoC help fill this gap. Tobias highlights that their target students mostly include Ph.D. students, as they are more suited to work on the proposed projects, involving significant research component. GSoC also helps them get more funding for full-time developers, as it is considered a full-time job for the students.

Best Students Join the Universities
Aadi, a high school student from India, observed how the best students like to work with the universities that function as GSoC mentoring organizations, as this helps them with their future graduate studies and research. The observation is that the mentors from such organizations are professors and experienced researchers from the universities. This is also a mutually beneficial relationship - universities as mentoring organizations get to have the best students. Indeed, a win-win. I joined OMII-UK as a student in 2010 and Emory BMI in 2014 and 2015 (2016 onward as a mentor and then joined 2018 as an employee, and 2019 a postdoc). My interest for OMII-UK was driven by the fact that the EPCC research team from Edinburgh University was part of OMII-UK, where I worked with them on their OGSA-DAI platform for GSoC 2010.

Why not enough open-source from universities?
Arav Singhal, a student from Rice University, stressed he prefers more open-source development in his university. We agreed that a large number of research teams keep their source closed until their paper is published. Even after that, when the code is made public, most of the time, the code is not reusable, as it is usually developed as a prototype with little attention to code readability and engineering best practices. GSoC helps fix this by building up coding skill sets in the students.

Small open source presence in a country
Deniz is from Turkey. He was a GCI student in ScoReLab (an open-source community originated from the University of Colombo, Sri Lanka). He highlighted how Turkey has a small open-source presence. The lack of local open-source communities makes motivating students to join GSoC harder. The challenge starts with introducing open-source and then GSoC, among the potential students. It is essential to create larger local open source communities to build a diverse expanding FOSS contribution.

Universities/Entities collaborating as a single mentoring organization
Werner highlighted the collaboration between multiple universities as a mentoring organization. He observes that sometimes, organizations do not make it explicit enough that the organization is a research department or a collaboration of such entities. Ino from cBioPortal highlighted how hospitals and research institutes collaborate under cBioPortal for the GSoC. He also noted the positive outcomes, including peer-reviewed publications. Mentioning GSoC in CV - both as a student and a mentor - is rewarding. There were suggestions on including open source software development in university curriculums.


Starting a new GSoC organization
Akram, a researcher from the University of Tennessee (Dept. of Bioinformatics), helped his department apply and get selected as a mentoring organization as a new (i.e., first-time) GSoC organization when he moved to the current university as a postdoc from another university. He observes that the GSoC has indeed resulted in peer-reviewed journal publications. He stressed the importance of open source for university. There seems to be a common observation that receiving funding from Google (or any similar company) becomes harder due to the university regulations. We discussed how to start as a mentoring organization. We need to have precise project ideas. Of course, having established open source projects would be a big plus. However, there are also concerns about having mentors and retaining them. How to grow our mentoring community beyond the walls of the department/university? GSoC students-turning-mentors can be a solution. We also need to be clear on the bioinformatics side on what can be open source, as we deal with sensitive health data.

Recruiting Mentors
One challenge to address is how to leverage more departments/mentors from the university. Some of us view it as building the community. This requires a significant effort from the organization administrator, to convince the fellow faculty, postdocs, researchers, and staff to be GSoC mentors. Sometimes, it is faster just to do the development ourselves, rather than mentoring a student to do it. However, such mentoring can be a rewarding experience for early career researchers. We all agreed that GSoC was a productive use of our time and not overhead. We also need a "mentor pool." Projects should have back-up mentors and an active co-mentors. This helps with avoiding mentor burn-out, ensuring successful completion of GSoC.

GSoC as a funding mechanism
Some view GSoC projects as a way to fund implementation activities that other funding entities won’t financially support. For instance, development is often seen as not novel. Therefore, complete implementation and maintenance efforts do not receive sufficient funding from the funding agents. However, such maintenance and incremental developments are crucial for the usability of the project. GSoC helps improve the usability and maintenance of the code.


Did we miss anything? Also, did I fail to include any crucial aspects discussed in the session? Please share your thoughts on this topic as comments.