Thursday, December 31, 2020

A few things that made my 2020 interesting..

Panama Canal
2020 is the weirdest year ever. Although 2020 is not close to my happy years (2019, 2017, 2015, and 2013), this post focuses on the happy moments.

1. Panamá: a lovely Central American country and wonderful people

Self-discovery on a solo trip. This country made me feel energetic.

 2. A new year in Moratuwa, Sri Lanka

Feeling like 2012 and before.

 3. Surviving the 2020 home alone, except for virtual meet-ups

The unexpected COVID-19 pandemic and forced separations of families due to travel restrictions.

4. Getting overwhelmed by the architectural marvels of Doha

The Katara Cultural village and Souq Waqif - bringing me back the memories of KAUST, Saudi Arabia.

5. Watching villagers walking the streets as early as 3 am in Northern Bali!

A scenic ride across this island of active and friendly people

6. Les Waterfalls, Tejakula

Getting soaked in the rain and a waterfall that reminded me of Sri Lanka.

7. Singapore with my niece and nephew

Some family time outside Sri Lanka and enjoying this small island nation.

Souq Waqif, Doha

8. The magnificent views from the canyons of Arizona and Utah

South Rim of the Grand Canyon and the weird cliffs seen from the Bryce Canyon.

9. Giving a keynote speech at MoNeTec 2020

Supposed to be in Moscow in October. But became virtual due to COVID-19.

10. Making a diverse array of cocktails and shots 

Made a collection of liquors to mix and drink during the weekends.

 11. Writing a grant proposal and sleepless nights

It wasn't accepted though.

12. Sand that feels like cocoa powder

Climbing up and down the Coral Pink Sand Dunes!

13. Developing Niffler open-source DICOM framework

My paper got accepted to IEEE Access. I also named two of my other research works after Portuguese towns, Sintra and Viseu.

A rainy night in Singapore

14. Receiving my Ph.D. degree certificates and diplomas

Those certificates from Belgium and Portugal signify the official completion of my Ph.D. double degree.

15. Summer and the lakes of Georgia

Lake Lanier and Allatoona lake have beautiful beaches.

16. The Disguiser and Nirvana In Fire

Yú Mànlì (于曼丽) has become my most favorite fictional character.

17. Attending KDD and EuroPar conferences at once virtually!

Two conferences, same days, different timezones -- thanks to the pandemic.

18. Camping in Dreher Island State Park

The airport sleeper tries sleeping in a tent for the first time.

19. Storm in Hunting Island beach of Atlantic Ocean

Who expected a storm when we walk on an isolated beach in South Carolina?

Non-touristy Northern Bali
20. Two nights in a boathouse in Key Largo

Just before heading south through various connected islands.

21. Walking on an abandoned national highway in Saddlebunch Keys

The old state road 4a felt like walking back in a frozen time.

22. The most vibrant Key West!

Key West had the Bahamas vibes, but crazier. It also had several stray hens, fondly known as Key West chickens.

23. Power cut in Atlanta!

Some darkness and Internet failure, thanks to some storm in a far far region.

24. Vultures and Alligators in the Everglades

And a lovely sunset walk followed by mosquitos.

25. A boat ride in the keys, Biscayne National Park

The waves were quite strong, spraying salty ocean water on us.

Moon shines over Dreher Island State Park
26. A long night walk under a snow storm in Flagstaff, Northern Arizona

First time enjoying several inches of powdered snow at the same time with a snow storm + some hail.

27. Exploring Orlando

Also, a day in Universal Studios and Islands of Adventure, eating way too many corn dogs from morning until night.

28. A random walk in Savannah

It is a beautiful and relatively walkable town.

29. The colorful petrified forest national park and the views of the painted desert

The Blue Mesa is otherworldly.

30. INESC-ID Virtual Natal

I attended several virtual sessions by ULisboa, feeling connected although I am not in Lisboa.

Every year, I have one new year's resolution - to outperform my previous years. :) Overtaking 2020 shouldn't be too hard for 2021. But I hope 2021 brings back the happiness to the 2019 pre-pandemic level. I wish you a happy new year. Thanks for reading my list until the end. You may read the blog posts of all the previous years as well.

Pandemic Atlanta Lockdown - Week 42

Winter in Flagstaff
Most of 2020 was boring. Especially the days when I was home - which is, most of the days since March. 2021 might not be exciting. But I hope to face 2021 with more optimism.

2020 was a boring year. But it went quite fast. Some intermittent activities made 2020 reasonably interesting. Besides, the first 45 days of 2020 was filled with travels. I suspect 2021 could be even more boring. Traveling is fun. The best part of a travel is, coming back home after an eventful trip, full of memories. Memories define us.

Friday, December 25, 2020

Pandemic Atlanta Lockdown - Week 41

This was a short-week. Yesterday was the last workday of 2020. Cannot believe we have reached the end of 2020. It has gone reasonably fast. So I traversed my 2017 Twitter to see how I handled my challenging days in 2017 so positively, and what do I miss in 2020. I found the secret in this tweet:
Random walk in an Alabama village

Someone told me: "You work 9 - 5 for money. The real work starts after 5 pm". I was like, "I don't consider sipping absinthe as real work. But if you insist." Anyway, in my opinion, anyone who says "Sacrifice your family/happiness/mental-health for your goal/vision/dream" should never be trusted.

When you drink ~140 proof liquors, you are drinking fire. You instantly receive the blessings of the Fire God, as the overproof rum burns your throat as it goes down. oh yes, as long as you don't mix anything; no stupid nonsense into my majestic rum.
 
#Lisboa residents be like "I know a place" and take you to the beaches, Tagus riverfront, Parque das Nações, fado bars, pastelaria restaurantes, churches, museums, and national parks all in a single day. By the end of the day, you will have decided to stay in #Portugal forever.

I hope I will be able to face 2021 with such energy and positivity how bad the year maybe, as COVID19 is still at large. Fingers crossed.

Saturday, December 19, 2020

Pandemic Atlanta Lockdown - Week 40

This week is the last complete working week of 2020. Next week is a half-week and the work year ends next Wednesday. With the pandemic induced self-isolation, loneliness, and work-from-home for the whole year, this year has seen a significant rise in online interaction - for both job and entertainment and human interactions. "Stay home" is said easier than done when it drags on forever. But most of us did our best to the best of our ability, even separated from families due to travel restrictions.

I talked to my Twitter friend about how our Twitter usage has changed this year - mostly increased.  Twitter is my only active social medium. But until 2020 (the pandemic hit hard), I wasn't as active on Twitter. From my Twitter analytics, I see that I posted and received interactions 10X more this year, compared to last year.

For example, in July 2019 (when I defended my Ph.D. thesis in Lisboa), I had 110 tweets, and in July 2020, it was 889. An 8X increase, although I had much more exciting personal updates during March - August 2019 than March - August 2020.

 With 2020 coming to an end, I consider prioritizing and refocusing things as the pandemic does not seem to end by the end of this year. As a policy, I avoid working more than 40 hours/week, as life has more than working. Pre-COVID19, I wasn't home alone, and I could spend time with family. Even when I am alone for short intervals, I tend to go randomly for walks or random trips. With those significantly reduced (not just for me - for most of my friends), we all ended up spending more time in front of computers. I hope to bring back my 2019 healthy lifestyle (both physically and mentally) this 2021.



 

Saturday, December 12, 2020

Pandemic Atlanta Lockdown - Week 39

This week I received my Ph.D. degree certificate and diploma from my university in Portugal. My Ph.D. is a double-degree from Portugal and Belgium. I already received my degree certificate from Belgium on September 17th. I completed my research by June 2018 before I moved to Atlanta. But my defense got slightly delayed as I continued to improve my thesis with the feedback from my supervisors and the thesis committee. Eventually, I defended it in July 2019 in Lisboa, Portugal, and August 2019 in Louvain-la-Neuve, Belgium. Now, after slightly longer than a year, I also have both degree certificates. It took longer than usual to receive the certificates due to the COVID19-induced university shutdowns. Now with both degrees in my hand, I feel happy. It was a good journey. I will continue to extend and apply the findings from my Ph.D. research for the problems of biomedical informatics.

I have named my next project Viseu (Virtual Internet Services at the Edge), which I am working in parallel with Sintra (Self-adaptive Inter-domain Network Transfers for Radiology). Sintra and Viseu are a continuation of the Ph.D. research I completed last year in Portugal and Belgium. They follow my tradition of naming my projects with the Portuguese town names, starting from Sendim (2015), Óbidos (2017), and Évora (2018). Now, I am running out of Portuguese town names to make acronyms or backronyms for my research projects.

The year is coming to an end soon. The coming week is the last full work-week. YouTube Music has made some  summary of the videos that I have watched in this year. I don't think it is accurate as it seems to show only the music that I listened through the YouTube Music App, and not the ones I watched directly on YouTube.com.

 


 

Saturday, December 5, 2020

Pandemic Atlanta Lockdown - Week 38

Festival mood is here
The year is moving on and is also going to reach an end soon. The pandemic of the year is going into next year as well. However, the progress made so far with vaccines seems promising. People keep saying that they already see the light at the end of the tunnel. Despite all the boring events of 2020, I have managed to keep myself overall entertained. It is no surprise 2020 is one horrible year. We have only 2 whole weeks (and another half-week) before the year-end vacation. Some years were quite boring or sad. They felt like an eternity. Some years (2013, 2015, 2017, and 2019) were so exciting, and time flew like an arrow. Then 2020. It is boring and sad. But how can such a nasty year come to an end too soon? Are we in a black hole or something? 
 
We are all optimistic about 2021. There will always be optimism every year!

Tuesday, December 1, 2020

Moments with Twitter - V

Twitter Logo | The most famous brands and company logos in the worldIt has been a while since I wrote a post on the series of Moments with Twitter. You may find the previous posts by checking out my blog label,

If you are really bored, just click one of these live cams across the globe and watch things and people moving.. :D earthcam.com/mapsearch/
 
 
PORTUGAL is BETTER - vimeo.com/124504582 (A nice promotional video on investing in #Portugal).
 
 
A free web site to find Erasmus student apartments - studentmundial.com/accommodation
 
 

 

"In Liechtenstein’s last military engagement, in 1886, none of its 80 soldiers were killed. 81 returned, including a new Italian 'friend'.”

 

The making of a cinematic linguist's office languagelog.ldc.upenn.edu/nll/?p=28924 #Arrival.

 

 

 Twitter is fun. But it does not get the sarcasm right though.

The things I have been called in the past by those who quickly glanced at a single tweet and misunderstand it (either by missing my sarcasm, or me being not quite expressive due to Twitter character limit and quick-tweeting without paying enough attention): * racist prick * troll

Tuesday, November 24, 2020

Pandemic Atlanta Lockdown - Week 36

A long walk on an abandoned FL highway
So I have lost the habit of this weekly blog post in the middle. Thoughts were getting repetitive and nothing new to report. However, I managed to start writing for this week. Perhaps, I have resumed the practice? Hard to say. We need to wait until next week to confirm that. Before the COVID-19 pandemic, I had like thousands of emotions, positive and negative. I am overall a positive person anyway. But the COVID-19 leaves me with 2 emotions - sad and not sad. haha. Boring times. Although there are vaccine candidates now, there is still a long way forward before the end of the pandemic. I have witnessed 2 strangest natural disasters in my life. First, 2004 December 26th Tsunami. Although I was not directly affected by the tsunami itself, the aftermath was visible. On the other hand, the COVID19 pandemic has directly affected us all in all sorts of ways.

Atlantic Ocean from FL
While in Lisboa for my first year (2012 August - 2013 July), I managed to keep the weekly blog posts active. At latter weeks of the first year, I had posts that merged multiple weeks. However, the posts are still there. They are a nice read when I go back in time. Those memories, coupled with those posts, are like drugs. :) Once I moved to Stockholm, I had monthly posts. Upon my return to Lisboa, I lost the habit of the weekly posts eventually, although I had a "Lisbon - Week n" post and continued to post travel and life updates on Llovizna. Another reason for the lack of posts is, my use of other social media. I had an active Facebook account until end of 2015 for such frequent updates and then an active Twitter account. It is easier to post a quick Facebook or Twitter update and also receive some audience rather than a long blog post. Now that I have deactivated my Facebook, I kinda miss those updates from my previous years.

Happy Memories of Lisboa

Often life feels like a movie. Or rather, an interesting teledrama series? There were certain years that felt like the climax, such as the happy ending of a movie? Years like 2013, 2015, 2017, and 2019, for example. Then I have this complete bizarre 2020 which feels like there is no end. However, to give some credits to 2020, the first 45 days went quite well. I felt very energetic for the whole of January until I realized the seriousness of the pandemic. With travel restrictions and ruined travel plans, I was still optimistic until mid-February.

What is interesting is, 2020 managed to portray a dystopian reality for the whole of 2020, excluding January and the early days of February when we were hopeful that these "outbreaks" would be contained soon. Now the normalcy bias of pre-COVID19 days is gone. What we now have is the "new normal," -- which, as of now, seems, sounds, and smells, like a "lonely normal" supported by technological advancements such as zoom and other online communication technologies. Years later, will I still remember 2020 as the most depressing and the worst year in recent memories? Or will I feel better about it when I look back? Is 2020 an exception, a cautionary tale that we will tell our next generations, or is this a trailer for the larger future disasters to come?

Wednesday, November 11, 2020

Running a simple CWL workflow with Toil

 These few weeks I was evaluating several workflow composers. Toil turned out to be an impressive implementation of CWL. It is easy to install Toil and run CWL workflows in it.

$ pip install toil[all]

Then define your workflow in a cwl file and your job in a YAML file. Then run it with toil-cwl-runner.

$ toil-cwl-runner example.cwl example-job.yaml
[2020-11-11T10:47:04-0500] [MainThread] [I] [cwltool] Resolved 'example.cwl' to 'file:///Users/pradeeban/Desktop/example.cwl'
[2020-11-11T10:47:05-0500] [MainThread] [I] [toil] Running Toil version 4.2.0-3aa1da130141039cb357efe36d7df9b9f6ae9b5b on host Pradeebans-MBP.attlocal.net.
[2020-11-11T10:47:05-0500] [MainThread] [I] [toil.leader] Issued job 'file:///Users/pradeeban/Desktop/example.cwl' echo kind-file_Users_pradeeban_Desktop_example.cwl/instance-6u5hrmz7 with job batch system ID: 0 and cores: 1, disk: 3.0 G, and memory: 2.0 G
[2020-11-11T10:47:06-0500] [MainThread] [I] [toil.worker] Redirecting logging to /var/folders/vz/hv1vsbpx21322d4x12xytw9c0000gn/T/node-063409e9-4e1a-4c34-a274-73c1b4d50f05-154505284860679/tmp7wlroir7/worker_log.txt
[2020-11-11T10:47:06-0500] [MainThread] [I] [toil.leader] Job ended: 'file:///Users/pradeeban/Desktop/example.cwl' echo kind-file_Users_pradeeban_Desktop_example.cwl/instance-6u5hrmz7
[2020-11-11T10:47:06-0500] [MainThread] [I] [toil.leader] 0 jobs are running, 0 jobs are issued and waiting to run
[2020-11-11T10:47:13-0500] [MainThread] [I] [toil.leader] Finished toil run successfully.

Workflow Progress 100%|████████████| 1/1 (0 failures) [00:01<00:00, 0.95 jobs/s]
{
"output": {
"location": "file:///Users/pradeeban/Desktop/output.txt",
"basename": "output.txt",
"nameroot": "output",
"nameext": ".txt",
"class": "File",
"checksum": "sha1$47a013e660d408619d894b20806b1d5086aab03b",
"size": 13
}
}[2020-11-11T10:47:13-0500] [MainThread] [I] [toil.common] Successfully deleted the job store: FileJobStore(/var/folders/vz/hv1vsbpx21322d4x12xytw9c0000gn/T/tmp4mplbec4)

Tuesday, November 10, 2020

Installing Mininet 2.2.2 on Ubuntu 20.04

I tried to install mininet from source from the latest tag 2.2.2, as suggested in Mininet README.

$ git clone git://github.com/mininet/mininet
$ cd mininet
$ git checkout -b 2.2.1 2.2.1
$ cd ..
$ mininet/util/install.sh -a
 
However, it produces the below error. 
 
Detected Linux distribution: Ubuntu 20.04 focal amd64
Ubuntu
Installing all packages except for -eix (doxypy, ivs, nox-classic)...
Install Mininet-compatible kernel if necessary
Hit:1 http://us.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Fetched 317 kB in 1s (623 kB/s)
Reading package lists... Done
Reading package lists...
Building dependency tree...
Reading state information...
linux-image-5.4.0-52-generic is already the newest version (5.4.0-52.57).
0 upgraded, 0 newly installed, 0 to remove and 229 not upgraded.
Installing Mininet dependencies
Reading package lists...
Building dependency tree...
Reading state information...
Package iproute is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
iproute2:i386 iproute2

Package cgroup-bin is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
cgroup-tools

E: Package 'iproute' has no installation candidate
E: Package 'cgroup-bin' has no installation candidate

sudo apt-get install python-scapyBuilding from the master fixes it, but gives another error:
E: Package 'python-scapy' has no installation candidate
Install scapy and nettools too!
sudo apt-get install python-scapy
sudo apt-get install nettools

Now, repeat the steps to install mininet.
$ sudo pip3 install ryu
 
$  ryu-manager ryu.app.simple_switch
loading app ryu.app.simple_switch
loading app ryu.controller.ofp_handler
instantiating app ryu.app.simple_switch of SimpleSwitch
instantiating app ryu.controller.ofp_handler of OFPHandler

$ sudo mn --topo tree,depth=2,fanout=8  --mac --controller remote --switch ovsk
*** Creating network
*** Adding controller
Connecting to remote controller at 127.0.0.1:6653
*** Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
*** Adding switches:
s1 s2 s3 s4 s5 s6 s7 s8 s9
*** Adding links:
(s1, s2) (s1, s3) (s1, s4) (s1, s5) (s1, s6) (s1, s7) (s1, s8) (s1, s9) (s2, h1) (s2, h2) (s2, h3) (s2, h4) (s2, h5) (s2, h6) (s2, h7) (s2, h8) (s3, h9) (s3, h10) (s3, h11) (s3, h12) (s3, h13) (s3, h14) (s3, h15) (s3, h16) (s4, h17) (s4, h18) (s4, h19) (s4, h20) (s4, h21) (s4, h22) (s4, h23) (s4, h24) (s5, h25) (s5, h26) (s5, h27) (s5, h28) (s5, h29) (s5, h30) (s5, h31) (s5, h32) (s6, h33) (s6, h34) (s6, h35) (s6, h36) (s6, h37) (s6, h38) (s6, h39) (s6, h40) (s7, h41) (s7, h42) (s7, h43) (s7, h44) (s7, h45) (s7, h46) (s7, h47) (s7, h48) (s8, h49) (s8, h50) (s8, h51) (s8, h52) (s8, h53) (s8, h54) (s8, h55) (s8, h56) (s9, h57) (s9, h58) (s9, h59) (s9, h60) (s9, h61) (s9, h62) (s9, h63) (s9, h64)
*** Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
*** Starting controller
c0
*** Starting 9 switches
s1 s2 s3 s4 s5 s6 s7 s8 s9 ...
*** Starting CLI:
 
mininet> pingall

*** Ping: testing ping reachability
h1 -> h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h2 -> h1 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h3 -> h1 h2 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h4 -> h1 h2 h3 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h5 -> h1 h2 h3 h4 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h6 -> h1 h2 h3 h4 h5 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h7 -> h1 h2 h3 h4 h5 h6 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h8 -> h1 h2 h3 h4 h5 h6 h7 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h9 -> h1 h2 h3 h4 h5 h6 h7 h8 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h10 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h11 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h12 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h13 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h14 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h15 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h16 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h17 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h18 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h19 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h20 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h21 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h22 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h23 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h24 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h25 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h26 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h27 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h28 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h29 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h30 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h31 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h32 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h33 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h34 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h35 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h36 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h37 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h38 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h39 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h40 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h41 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h42 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h43 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h44 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h45 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h46 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h47 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h48 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h49 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h50 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h51 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h52 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h53 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h54 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h55 h56 h57 h58 h59 h60 h61 h62 h63 h64
h55 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h56 h57 h58 h59 h60 h61 h62 h63 h64
h56 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h57 h58 h59 h60 h61 h62 h63 h64
h57 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h58 h59 h60 h61 h62 h63 h64
h58 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h59 h60 h61 h62 h63 h64
h59 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h60 h61 h62 h63 h64
h60 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h61 h62 h63 h64
h61 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h62 h63 h64
h62 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h63 h64
h63 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h64
h64 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h49 h50 h51 h52 h53 h54 h55 h56 h57 h58 h59 h60 h61 h62 h63
*** Results: 0% dropped (4032/4032 received)
mininet>


Logs in ryu...
packet in 5 00:00:00:00:00:0f 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:05 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:04 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:02 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:01 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:32 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:40 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:3b 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:2d 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:2f 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:2e 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:13 33:33:00:00:00:02 9
packet in 5 00:00:00:00:00:23 33:33:00:00:00:02 9

Monday, November 9, 2020

Twitter Threads

 This year, I have made several Twitter threads. This post is consolidating them.


1. Countries I have visited:

2. Some of the towns I have visisted in Portugal: 

3. Some of my favorite songs:

4. Some of the cocktails I have made during the lockdown: 5. Weekly posts during the COVID-19 pandemic: 6. My years:

Tuesday, November 3, 2020

Pandemic Atlanta Lockdown - Week 33

This week we had some storms in Georgia. As a result, we had a power failure. It lasted longer than a day, leaving me in darkness. Who expected power cuts outside Sri Lanka? I was significantly under-prepared compared to power cuts in Sri Lanka! The Internet was also disconnected, and came back only on Sunday, after 4 days.

Wednesday, October 28, 2020

[MoNeTec 2020] A Software-Defined Internet for Latency-Sensitive Web Service Workflows

Today I presented at MoNeTec 2020 as a key speaker remotely. We were supposed to meet in Moscow. But of course as in any conference this year, MoNeTec too has become a virtual conference due to the COVID19 pandemic. As a biennial conference, we will meet again in 2022.

Abstract: The Internet is an inefficient platform for latency-sensitive web service workflows, due to latency, jitter, and performance disparity across the globe. Executing user workflows on the Internet in a latency-aware manner is a hard problem, given the distributed nature of the Internet users. Moreover, composing workflows from several Internet services requires communication and coordination across heterogeneous execution environments, including clouds and the edge managed by several infrastructure providers.

The Internet of Things (IoT) and edge computing provide an increasing demand and potential for more user control for their workflow executions. However, the Internet largely remains under the control of service providers and autonomous systems, thus providing limited capabilities to the users to choose network paths and web service instances for their workflows.

Through complete virtualization of network and its services, network softwarization offers efficient management of network architecture. In this talk, we discuss the flexibility and management benefits of network softwarization to support network-aware web service workflows. We further envision Software-Defined Internet (SDI), an extension of classic network softwarization to the Internet-scale, to support latency-sensitive web service workflows.

Monday, October 26, 2020

Pandemic Atlanta Lockdown - Week 32

Sri Lanka - COVID19 Cases

COVID19 cases are rising again, with new heights in new cases seen in USA, Sri Lanka, and elsewhere. Although we have grown sick of the pandemic and lock down, the current trend indicates that the end is not in sight. It is quite annoying and depressing. But that is the reality. This year taught me that even perfectly crafted plans can go horribly wrong. Last November we started what we thought at that time the perfect grand Asia trip, which was cut short by an unexpected pandemic and left us oceans apart for several months (and still counting).

 Interestingly, although I left my country in 2012 August, 2020 is the first year that made me feel lonely, away from my family, my close friends, and my safe circles. Now 2020 coming to an end, yet with the COVID-19 cases climbing high every day, not too sure how will 2021 be. As of now, it seems, the pandemic will ruin the whole of 2021 as well, unless some magic happens.

Sunday, October 4, 2020

Pandemic Atlanta Lockdown - Week 29

Time flies fast...
This week went ahead as usual. I got some time to reflect on my 2010s. Interesting how people come and go in our lives. 

If we consider our life a novel or a teledrama, some people just take a few pages, some - perhaps a footnote, and some take whole chapters. Some people appear briefly before and later come back to occupy the later chapters. Life is quite dynamic, and more so for me since 2012 as I keep moving between countries. My friendships have become relatively shorter, as my friends and I, we all have been in continuous migrations thanks to the Erasmus Mundus, and its mobility during my MSc (2012 - 2014) and PhD (2014 - 2019). Sometimes, life is more interesting than a movie, with its twists and turns. Not forgetting to mention how nightmarish 2020 has been so far, for the whole world!

Monday, September 28, 2020

The 2010s









Tuesday, September 22, 2020

Pandemic Atlanta Lockdown - Week 27

Roswell, GA

When working from home started in mid-March, I did not know that this will go on forever. Now, it is already half a year has passed with no end in sight. I made some plans for the work-from-home, and most went quite well. However, overall, my happiness was at an all-time low. Most of my approach to handling the loneliness and separation induced by the COVID19 lockdown and travel restrictions was through distraction. I used my cocktails, some music, and two Chinese dramas (The Disguiser and Nirvana in Fire) to effectively spend my free time, especially during the weekends, while being stuck home alone for most of 2020 since Mid-February, and more so since Mid-March since the work-from-home.

I never compare my life with others. I do my life at my own pace. At least not after 2006, as until 2005, I had to compete for the university entrance examinations. Every year since 2010, I have had one and only one new year resolution. That is, to outperform my previous years. It has been true for most of the 2010s. Although there were years with slow-downs (specifically, 2016 and 2018), overall, I was happy and each year went on to become better than the previous. As such, 2019 has been my best year so far (followed by 2017, 2015, 2014, 2013, and 2012). 2020 indeed, started with a positive note. But with the COVID19, it took a dark turn by mid-February. Personally, 2020 also brought me to an all-time low in overall happiness and peace of mind. But I must acknowledge the fact that this is a global low, outside my control. Such a normalization will help me avoid judging the year too harshly.

 

We are still not sure how 2021 will be. We need to be prepared for a long fight. I must try to be positive again and reset my mood, rather than distract myself during my free time - as distractions are a short-term strategy.


Sunday, September 20, 2020

Duolingo and how its "rewards" work

I use Duolingo to practice my Portuguese and Chinese knowledge. I am always intrigued by their reward/point mechanism which uses multiple combinations to reward and motivate the users to continue with the lessons. I find them quite interesting. Especially when you do not have a premium account, maintaining all the rewards are not easy. One day you take a break and you may lose some of those rewards. Duolingo's reward mechanisms are good for motivating us not to give up. But at the same time, they also have the risk of us focusing on not losing the rewards and gaming the system, rather than genuinely focusing on learning the language properly at our own pace. As such, these rewards have received a fair share of criticism.
1. League
It is a 10-level series. Diamond level is the final. I have reached the diamond. To reach a higher level, you must be among the top-10 among your bunch, consisting of 50 learners who learn different language at different phases. On the other hand, the last 5 among the 50 will be demoted to a lower level. The remaining 35, stay wherever they are. Since Diamond league is the last, the top-45 stay wherever they are whereas the last 5 are demoted. So there will always be a competition not to be in the last 5 during the last minutes when these numbers are tallied.
 
2. Streak
This counts how many days you have managed to continue to practice a lesson.

3. Lingots
If you did not touch Duolingo for a week, you do not enter the week's competition. As such, your league will be preserved wherever you are. But you will lose your streak. This is where lingots come to help you. Lingots are virtual currency of Duolingo. You can earn them by completing the lessons or participating in competitions such as "Double or Nothing." If you are going to be away from Duolingo for a week, you can buy "Streak freeze" to keep your location for a day or two, and keep buying the streak freeze as your previous streak is used. However, once you run out of the lingots, you will come to the difficult decision making. Should you not touch the lessons for a week to protect the league, or protect the streak by doing the sessions but not to the expected speed and lose your league. Since I am in the diamond league, I try to protect my league.

4. Crowns
Each skill gives you a crown. Unlike the first 3, crowns are language-specific. That means, if you study 2 languages, each will have their own crown numbers. Crowns will never deplete unlike the other 3.

5. XP Ranks
How you rank among the 50 in a weekly basis as well as among your friends by measuring the all-time XP (Duolingo points). We can earn XP by completing new lessons, stories, or repeating an old lesson.