Skip to content

Latest commit

 

History

History
1719 lines (1536 loc) · 41 KB

research-development.md

File metadata and controls

1719 lines (1536 loc) · 41 KB
bg layout title crawlertitle permalink summary active
photo-43.jpg
default
R&D
Rúben André Barreiro's Portfolio/Blog - My Research & Development Projects
/research-development/
Research & Development
Research & Development
<style> .button { background-color: #CCCCCC; /* Medium Grey */ border: none; color: white; padding: 20px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .button { background-color: #CCCCCC; /* Medium Grey */ border: none; color: white; padding: 20px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .buttonDocument { border-radius: 12px; } .loadingSuspensionPoints span { -webkit-animation-name: blink; animation-name: blink; -webkit-animation-duration: 2.4s; animation-duration: 2.4s; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; -webkit-animation-fill-mode: both; animation-fill-mode: both; } .loadingSuspensionPoints span:nth-child(2) { -webkit-animation-delay: .8s; animation-delay: .8s; } .loadingSuspensionPoints span:nth-child(3) { -webkit-animation-delay: 1.6s; animation-delay: 1.6s; } @-webkit-keyframes blink { 0% { opacity: .2; } 20% { opacity: 1; } 100% { opacity: .2; } } @keyframes blink { 0% { opacity: .2; } 20% { opacity: 1; } 100% { opacity: .2; } } .fa-beat { animation:fa-beat 5s ease infinite; } @keyframes fa-beat { 0% { transform:scale(0.8); } 5% { transform:scale(1); } 20% { transform:scale(0.8); } 30% { transform:scale(1); } 35% { transform:scale(0.8); } 50% { transform:scale(1); } 55% { transform:scale(0.8); } 70% { transform:scale(1); } } .fa-bounce { display: inline-block; position: relative; -moz-animation: bounce 1s infinite linear; -o-animation: bounce 1s infinite linear; -webkit-animation: bounce 1s infinite linear; animation: bounce 1s infinite linear; } @-webkit-keyframes bounce { 0% { top: 0; } 50% { top: -0.2em; } 70% { top: -0.3em; } 100% { top: 0; } } @-moz-keyframes bounce { 0% { top: 0; } 50% { top: -0.2em; } 70% { top: -0.3em; } 100% { top: 0; } } @-o-keyframes bounce { 0% { top: 0; } 50% { top: -0.2em; } 70% { top: -0.3em; } 100% { top: 0; } } @-ms-keyframes bounce { 0% { top: 0; } 50% { top: -0.2em; } 70% { top: -0.3em; } 100% { top: 0; } } @keyframes bounce { 0% { top: 0; } 50% { top: -0.2em; } 70% { top: -0.3em; } 100% { top: 0; } } .fa-blink { -webkit-animation: fa-blink .75s linear infinite; -moz-animation: fa-blink .75s linear infinite; -ms-animation: fa-blink .75s linear infinite; -o-animation: fa-blink .75s linear infinite; animation: fa-blink .75s linear infinite; } @keyframes fa-blink { 0% { opacity: 1; } 10% { opacity: 1; } 20% { opacity: 1; } 30% { opacity: 1; } 35% { opacity: 0.125; } 40% { opacity: 0.25; } 45% { opacity: 0.375; } 50% { opacity: 0.5; } 55% { opacity: 0.625; } 60% { opacity: 0.75; } 65% { opacity: 0.875; } 70% { opacity: 0; } 80% { opacity: 0; } 90% { opacity: 0; } 100% { opacity: 0; } } @-webkit-keyframes wrench { 0% { -webkit-transform: rotate(-12deg); transform: rotate(-12deg); } 8% { -webkit-transform: rotate(12deg); transform: rotate(12deg); } 10% { -webkit-transform: rotate(24deg); transform: rotate(24deg); } 18% { -webkit-transform: rotate(-24deg); transform: rotate(-24deg); } 20% { -webkit-transform: rotate(-24deg); transform: rotate(-24deg); } 28% { -webkit-transform: rotate(24deg); transform: rotate(24deg); } 30% { -webkit-transform: rotate(24deg); transform: rotate(24deg); } 38% { -webkit-transform: rotate(-24deg); transform: rotate(-24deg); } 40% { -webkit-transform: rotate(-24deg); transform: rotate(-24deg); } 48% { -webkit-transform: rotate(24deg); transform: rotate(24deg); } 50% { -webkit-transform: rotate(24deg); transform: rotate(24deg); } 58% { -webkit-transform: rotate(-24deg); transform: rotate(-24deg); } 60% { -webkit-transform: rotate(-24deg); transform: rotate(-24deg); } 68% { -webkit-transform: rotate(24deg); transform: rotate(24deg); } 75% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } @keyframes wrench { 0% { -webkit-transform: rotate(-12deg); -ms-transform: rotate(-12deg); transform: rotate(-12deg); } 8% { -webkit-transform: rotate(12deg); -ms-transform: rotate(12deg); transform: rotate(12deg); } 10% { -webkit-transform: rotate(24deg); -ms-transform: rotate(24deg); transform: rotate(24deg); } 18% { -webkit-transform: rotate(-24deg); -ms-transform: rotate(-24deg); transform: rotate(-24deg); } 20% { -webkit-transform: rotate(-24deg); -ms-transform: rotate(-24deg); transform: rotate(-24deg); } 28% { -webkit-transform: rotate(24deg); -ms-transform: rotate(24deg); transform: rotate(24deg); } 30% { -webkit-transform: rotate(24deg); -ms-transform: rotate(24deg); transform: rotate(24deg); } 38% { -webkit-transform: rotate(-24deg); -ms-transform: rotate(-24deg); transform: rotate(-24deg); } 40% { -webkit-transform: rotate(-24deg); -ms-transform: rotate(-24deg); transform: rotate(-24deg); } 48% { -webkit-transform: rotate(24deg); -ms-transform: rotate(24deg); transform: rotate(24deg); } 50% { -webkit-transform: rotate(24deg); -ms-transform: rotate(24deg); transform: rotate(24deg); } 58% { -webkit-transform: rotate(-24deg); -ms-transform: rotate(-24deg); transform: rotate(-24deg); } 60% { -webkit-transform: rotate(-24deg); -ms-transform: rotate(-24deg); transform: rotate(-24deg); } 68% { -webkit-transform: rotate(24deg); -ms-transform: rotate(24deg); transform: rotate(24deg); } 75% { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } } .faa-wrench.animated, .faa-wrench.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-wrench { -webkit-animation: wrench 2.5s ease infinite; animation: wrench 2.5s ease infinite; transform-origin-x: 90%; transform-origin-y: 35%; transform-origin-z: initial; } /* BELL */ @-webkit-keyframes ring { 0% { -webkit-transform: rotate(-15deg); transform: rotate(-15deg); } 2% { -webkit-transform: rotate(15deg); transform: rotate(15deg); } 4% { -webkit-transform: rotate(-18deg); transform: rotate(-18deg); } 6% { -webkit-transform: rotate(18deg); transform: rotate(18deg); } 8% { -webkit-transform: rotate(-22deg); transform: rotate(-22deg); } 10% { -webkit-transform: rotate(22deg); transform: rotate(22deg); } 12% { -webkit-transform: rotate(-18deg); transform: rotate(-18deg); } 14% { -webkit-transform: rotate(18deg); transform: rotate(18deg); } 16% { -webkit-transform: rotate(-12deg); transform: rotate(-12deg); } 18% { -webkit-transform: rotate(12deg); transform: rotate(12deg); } 20% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } } @keyframes ring { 0% { -webkit-transform: rotate(-15deg); -ms-transform: rotate(-15deg); transform: rotate(-15deg); } 2% { -webkit-transform: rotate(15deg); -ms-transform: rotate(15deg); transform: rotate(15deg); } 4% { -webkit-transform: rotate(-18deg); -ms-transform: rotate(-18deg); transform: rotate(-18deg); } 6% { -webkit-transform: rotate(18deg); -ms-transform: rotate(18deg); transform: rotate(18deg); } 8% { -webkit-transform: rotate(-22deg); -ms-transform: rotate(-22deg); transform: rotate(-22deg); } 10% { -webkit-transform: rotate(22deg); -ms-transform: rotate(22deg); transform: rotate(22deg); } 12% { -webkit-transform: rotate(-18deg); -ms-transform: rotate(-18deg); transform: rotate(-18deg); } 14% { -webkit-transform: rotate(18deg); -ms-transform: rotate(18deg); transform: rotate(18deg); } 16% { -webkit-transform: rotate(-12deg); -ms-transform: rotate(-12deg); transform: rotate(-12deg); } 18% { -webkit-transform: rotate(12deg); -ms-transform: rotate(12deg); transform: rotate(12deg); } 20% { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } } .faa-ring.animated, .faa-ring.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-ring { -webkit-animation: ring 2s ease infinite; animation: ring 2s ease infinite; transform-origin-x: 50%; transform-origin-y: 0px; transform-origin-z: initial; } /* VERTICAL */ @-webkit-keyframes vertical { 0% { -webkit-transform: translate(0,-3px); transform: translate(0,-3px); } 4% { -webkit-transform: translate(0,3px); transform: translate(0,3px); } 8% { -webkit-transform: translate(0,-3px); transform: translate(0,-3px); } 12% { -webkit-transform: translate(0,3px); transform: translate(0,3px); } 16% { -webkit-transform: translate(0,-3px); transform: translate(0,-3px); } 20% { -webkit-transform: translate(0,3px); transform: translate(0,3px); } 22% { -webkit-transform: translate(0,0); transform: translate(0,0); } } @keyframes vertical { 0% { -webkit-transform: translate(0,-3px); -ms-transform: translate(0,-3px); transform: translate(0,-3px); } 4% { -webkit-transform: translate(0,3px); -ms-transform: translate(0,3px); transform: translate(0,3px); } 8% { -webkit-transform: translate(0,-3px); -ms-transform: translate(0,-3px); transform: translate(0,-3px); } 12% { -webkit-transform: translate(0,3px); -ms-transform: translate(0,3px); transform: translate(0,3px); } 16% { -webkit-transform: translate(0,-3px); -ms-transform: translate(0,-3px); transform: translate(0,-3px); } 20% { -webkit-transform: translate(0,3px); -ms-transform: translate(0,3px); transform: translate(0,3px); } 22% { -webkit-transform: translate(0,0); -ms-transform: translate(0,0); transform: translate(0,0); } } .faa-vertical.animated, .faa-vertical.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-vertical { -webkit-animation: vertical 2s ease infinite; animation: vertical 2s ease infinite; } /* HORIZONTAL */ @-webkit-keyframes horizontal { 0% { -webkit-transform: translate(0,0); transform: translate(0,0); } 6% { -webkit-transform: translate(5px,0); transform: translate(5px,0); } 12% { -webkit-transform: translate(0,0); transform: translate(0,0); } 18% { -webkit-transform: translate(5px,0); transform: translate(5px,0); } 24% { -webkit-transform: translate(0,0); transform: translate(0,0); } 30% { -webkit-transform: translate(5px,0); transform: translate(5px,0); } 36% { -webkit-transform: translate(0,0); transform: translate(0,0); } } @keyframes horizontal { 0% { -webkit-transform: translate(0,0); -ms-transform: translate(0,0); transform: translate(0,0); } 6% { -webkit-transform: translate(5px,0); -ms-transform: translate(5px,0); transform: translate(5px,0); } 12% { -webkit-transform: translate(0,0); -ms-transform: translate(0,0); transform: translate(0,0); } 18% { -webkit-transform: translate(5px,0); -ms-transform: translate(5px,0); transform: translate(5px,0); } 24% { -webkit-transform: translate(0,0); -ms-transform: translate(0,0); transform: translate(0,0); } 30% { -webkit-transform: translate(5px,0); -ms-transform: translate(5px,0); transform: translate(5px,0); } 36% { -webkit-transform: translate(0,0); -ms-transform: translate(0,0); transform: translate(0,0); } } .faa-horizontal.animated, .faa-horizontal.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-horizontal { -webkit-animation: horizontal 2s ease infinite; animation: horizontal 2s ease infinite; } /* FLASHING */ @-webkit-keyframes flash { 0%, 100%, 50% { opacity: 1; } 25%, 75% { opacity: 0; } } @keyframes flash { 0%, 100%, 50% { opacity: 1; } 25%, 75% { opacity: 0; } } .faa-flash.animated, .faa-flash.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-flash { -webkit-animation: flash 2s ease infinite; animation: flash 2s ease infinite; } /* BOUNCE */ @-webkit-keyframes bounce { 0%, 10%, 20%, 50%, 80% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } @keyframes bounce { 0%, 10%, 20%, 50%, 80% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px); } 60% { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px); } } .faa-bounce.animated, .faa-bounce.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-bounce { -webkit-animation: bounce 2s ease infinite; animation: bounce 2s ease infinite; } /* SPIN */ @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(359deg); transform: rotate(359deg); } } @keyframes spin { 0% { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(359deg); -ms-transform: rotate(359deg); transform: rotate(359deg); } } .faa-spin.animated, .faa-spin.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-spin { -webkit-animation: spin 1.5s linear infinite; animation: spin 1.5s linear infinite; } /* FLOAT */ @-webkit-keyframes float { 0% { -webkit-transform: translateY(0); transform: translateY(0); } 50% { -webkit-transform: translateY(-6px); transform: translateY(-6px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } } @keyframes float { 0% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } 50% { -webkit-transform: translateY(-6px); -ms-transform: translateY(-6px); transform: translateY(-6px); } 100% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } } .faa-float.animated, .faa-float.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-float { -webkit-animation: float 2s linear infinite; animation: float 2s linear infinite; } /* PULSE */ @-webkit-keyframes pulse { 0% { -webkit-transform: scale(1.1); transform: scale(1.1); } 50% { -webkit-transform: scale(0.8); transform: scale(0.8); } 100% { -webkit-transform: scale(1.1); transform: scale(1.1); } } @keyframes pulse { 0% { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } 50% { -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); } 100% { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } } .faa-pulse.animated, .faa-pulse.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-pulse { -webkit-animation: pulse 2s linear infinite; animation: pulse 2s linear infinite; } /* SHAKE */ .faa-shake.animated, .faa-shake.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-shake { -webkit-animation: wrench 2.5s ease infinite; animation: wrench 2.5s ease infinite; } /* TADA */ @-webkit-keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(.9) rotate(-8deg); transform: scale(.9) rotate(-8deg); } 30%, 50%, 70% { -webkit-transform: scale(1.3) rotate(8deg); transform: scale(1.3) rotate(8deg); } 40%, 60% { -webkit-transform: scale(1.3) rotate(-8deg); transform: scale(1.3) rotate(-8deg); } 80% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } @keyframes tada { 0% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(.9) rotate(-8deg); -ms-transform: scale(.9) rotate(-8deg); transform: scale(.9) rotate(-8deg); } 30%, 50%, 70% { -webkit-transform: scale(1.3) rotate(8deg); -ms-transform: scale(1.3) rotate(8deg); transform: scale(1.3) rotate(8deg); } 40%, 60% { -webkit-transform: scale(1.3) rotate(-8deg); -ms-transform: scale(1.3) rotate(-8deg); transform: scale(1.3) rotate(-8deg); } 80% { -webkit-transform: scale(1) rotate(0); -ms-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } .faa-tada.animated, .faa-tada.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-tada { -webkit-animation: tada 2s linear infinite; animation: tada 2s linear infinite; } /* PASSING */ @-webkit-keyframes passing { 0% { -webkit-transform: translateX(-50%); transform: translateX(-50%); opacity: 0; } 50% { -webkit-transform: translateX(0%); transform: translateX(0%); opacity: 1; } 100% { -webkit-transform: translateX(50%); transform: translateX(50%); opacity: 0; } } @keyframes passing { 0% { -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); opacity: 0; } 50% { -webkit-transform: translateX(0%); -ms-transform: translateX(0%); transform: translateX(0%); opacity: 1; } 100% { -webkit-transform: translateX(50%); -ms-transform: translateX(50%); transform: translateX(50%); opacity: 0; } } .faa-passing.animated, .faa-passing.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-passing { -webkit-animation: passing 3s linear infinite; animation: passing 3s linear infinite; } /* WAVE */ @-webkit-keyframes burst { 0% { opacity: .6; } 50% { -webkit-transform: scale(1.8); transform: scale(1.8); opacity: 0; } 100% { opacity: 0; } } @keyframes burst { 0% { opacity: .6; } 50% { -webkit-transform: scale(1.8); -ms-transform: scale(1.8); transform: scale(1.8); opacity: 0; } 100% { opacity: 0; } } .faa-burst.animated, .faa-burst.animated-hover:hover, .faa-parent.animated-hover:hover > .faa-burst { -webkit-animation: burst 3s infinite linear; animation: burst 3s infinite linear; } .icon-new-university-lisbon .path1:before { content: "\e900"; color: #308041; } .icon-new-university-lisbon .path2:before { content: "\e901"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path3:before { content: "\e902"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path4:before { content: "\e903"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path5:before { content: "\e904"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path6:before { content: "\e905"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path7:before { content: "\e906"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path8:before { content: "\e907"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path9:before { content: "\e908"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path10:before { content: "\e909"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path11:before { content: "\e90a"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path12:before { content: "\e90b"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path13:before { content: "\e90c"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path14:before { content: "\e90d"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path15:before { content: "\e90e"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path16:before { content: "\e90f"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path17:before { content: "\e910"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path18:before { content: "\e911"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path19:before { content: "\e912"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path20:before { content: "\e913"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path21:before { content: "\e914"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path22:before { content: "\e915"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path23:before { content: "\e916"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path24:before { content: "\e917"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path25:before { content: "\e918"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path26:before { content: "\e919"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path27:before { content: "\e91a"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path28:before { content: "\e91b"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path29:before { content: "\e91c"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path30:before { content: "\e91d"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path31:before { content: "\e91e"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path32:before { content: "\e91f"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path33:before { content: "\e920"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path34:before { content: "\e921"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path35:before { content: "\e922"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path36:before { content: "\e923"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path37:before { content: "\e924"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path38:before { content: "\e925"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path39:before { content: "\e926"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path40:before { content: "\e927"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path41:before { content: "\e928"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path42:before { content: "\e929"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path43:before { content: "\e92a"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path44:before { content: "\e92b"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path45:before { content: "\e92c"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path46:before { content: "\e92d"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path47:before { content: "\e92e"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path48:before { content: "\e92f"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path49:before { content: "\e930"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path50:before { content: "\e931"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path51:before { content: "\e932"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path52:before { content: "\e933"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path53:before { content: "\e934"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path54:before { content: "\e935"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path55:before { content: "\e936"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path56:before { content: "\e937"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path57:before { content: "\e938"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path58:before { content: "\e939"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path59:before { content: "\e93a"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path60:before { content: "\e93b"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path61:before { content: "\e93c"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path62:before { content: "\e93d"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path63:before { content: "\e93e"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path64:before { content: "\e93f"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path65:before { content: "\e940"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path66:before { content: "\e941"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path67:before { content: "\e942"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path68:before { content: "\e943"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path69:before { content: "\e944"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path70:before { content: "\e945"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path71:before { content: "\e946"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path72:before { content: "\e947"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path73:before { content: "\e948"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path74:before { content: "\e949"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path75:before { content: "\e94a"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path76:before { content: "\e94b"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path77:before { content: "\e94c"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path78:before { content: "\e94d"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path79:before { content: "\e94e"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path80:before { content: "\e94f"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path81:before { content: "\e950"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path82:before { content: "\e951"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path83:before { content: "\e952"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path84:before { content: "\e953"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path85:before { content: "\e954"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path86:before { content: "\e955"; color: #fff; margin-left: -1em; } .icon-new-university-lisbon .path87:before { content: "\e956"; color: #308041; margin-left: -1em; } .icon-new-university-lisbon .path88:before { content: "\e957"; color: #308041; margin-left: -1em; } .icon-fct-unl .path1:before { content: "\e958"; color: #fefefe; } .icon-fct-unl .path2:before { content: "\e959"; color: #426bbc; margin-left: -1em; } .icon-fct-unl .path3:before { content: "\e95a"; color: #5abccd; margin-left: -1em; } .icon-fct-unl .path4:before { content: "\e95b"; color: #7bbc00; margin-left: -1em; } .icon-discord:before { content: "\e900"; color: #7289da; } .icon-vsco:before { content: "\e95c"; } </style>

Research and Development Projects


<font size="4">
    <a target="_blank" href="/research-development/hyrax-dice/presentation/hyrax-dice-presentation.html" title="Hyrax Project [DiCE - Distributed Collaborative Computing at the Edge] (FCT NOVA/NOVA-LINCS - between February 2017 and January 2018)">Hyrax Project [DiCE - Distributed Computing at the Edge] (FCT NOVA/NOVA-LINCS - between February 2017 and January 2018)</a>
</font>   

<p align="justify"><font size="2"><a target="_blank" href="/research-development/hyrax-dice/presentation/hyrax-dice-presentation.html" title="Hyrax Project [DiCE - Distributed Collaborative Computing at the Edge] (FCT NOVA/NOVA-LINCS - between February 2017 and January 2018)">A 3rd year's scientific research and development project, of the BSc. degree made in FCT NOVA, done between February 2017 and January 2018. This project it's called <b><i>Hyrax Project (Crowd-Sourcing Mobile Devices to Develop Edge Clouds).</i></b></a> This project it's based in the context of <b><i>Edge Computing</i></b>. I did this scientific research and development project, representing <a target="_blank" href="http://nova-lincs.di.fct.unl.pt/"><b>NOVA-LINCS</b> (<b>Departamento de Informática da Nova's Labs</b>)</a> and under the supervision of <a target="_blank" href="http://docentes.fct.unl.pt/p161/"><b><i>Prof. Hervé Paulino</i></b>.</a></font></p>

<ul>
    <li><p align="justify"><font size="2">This project, had also the collaboration of <a target="_blank" href="https://sigarra.up.pt/fcup/pt/web_page.inicial"><b>Faculdade de Ciências da Universidade do Porto</b></a> (<a target="_blank" href="https://www.inesctec.pt/en"><b>INESC TEC</b></a>/<a target="_blank" href="https://www.inesctec.pt/en/centres/advanced-computing-systems-7"><b>CRACS - Centro de Sistemas de Computação Avançada</b></a>) and <a target="_blank" href="https://www.scs.cmu.edu/"><b>Carnegie Mellon University's School of Computer Science</b></a>;</font></p></li>
  <li><p align="justify">Websites/Links:</p></li>
  <ul>
    <li>
        <p align="justify"><font size="2">1) Project's Website:</font></p>
        <ul>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://hyrax.dcc.fc.up.pt/">https://hyrax.dcc.fc.up.pt/</a>;</font></p>
            </li>
        </ul>
    </li>
    <li>
        <p align="justify"><font size="2">2) Universities' Websites:</font></p>
        <ul>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://www.fct.unl.pt/">https://www.fct.unl.pt/</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://sigarra.up.pt/fcup/pt/web_page.inicial">https://sigarra.up.pt/fcup/pt/web_page.inicial</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://www.fc.up.pt/fcup/index.php">https://www.fc.up.pt/fcup/index.php</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://www.cmu.edu/">https://www.cmu.edu/</a>;</font></p>
            </li>
        </ul>
    </li>
    <li>
        <p align="justify"><font size="2">3) Universities' Laboratories' Websites:</font></p>
        <ul>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="http://nova-lincs.di.fct.unl.pt/">http://nova-lincs.di.fct.unl.pt/</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://cracs.fc.up.pt/">https://cracs.fc.up.pt/</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="http://www.cmuportugal.org/">http://www.cmuportugal.org/</a>;</font></p>
            </li>
        </ul>
    </li>  
    <li>
        <p align="justify"><font size="2">4) Academic, Industrial and Funding Partners' Websites:</font></p>
        <ul>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="http://www.geolink.pt/index.html">http://www.geolink.pt/index.html</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="http://www.yinzcam.com/">http://www.yinzcam.com/</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://www.wavecom.pt/">https://www.wavecom.pt/</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://www.it.pt/">https://www.it.pt/</a>;</font></p>
            </li>
            <li>
                <p align="justify"><font size="2"><a target="_blank" href="https://www.fct.pt/index.phtml.pt">https://www.fct.pt/index.phtml.pt</a>;</font></p>
            </li>
        </ul>
    </li>
  </ul>        
  <li><p align="justify"><font size="2">I worked in the Services' section of the <b><i>Hyrax Project</i></b>, most preciselly, developing a data structure (for <b><i>DiCE</i></b> section), to be replicated for <b><i>Mobile</i></b> and <b><i>Handheld Devices</i></b>, in a notion of collaborative network, using <b><i>Crowd-Sourcing</i></b> features and shifting all the data processing and information services closer to the final users;</font></p></li>
  <li><p align="justify"><font size="2"><b><i>Abstract</i></b>:</font></p>
    <ul>
        <li><p align="justify"><font size="2"><b><i>Edge Computing</i></b> proposes the shifting of (some) computing tasks from centralized <b><i>Cloud</i></b> services to closer to the user, taking advantage of the computing and storage power of personal computers and hand-held devices. Accordingly, computation will be typically performed collaboratively by multiple nodes, which, depending on their current load, may offload or take computation to/from their peers. Moreover, nodes may dynamically join or leave the network, forcing the system to be resilient to <b><i>Churn</i></b>. This paper presents a system for collaborative distributed computing in a network of heterogeneous nodes. The system builds on a replicated, distributed and eventually consistent queue of tasks, that requires little coordination. We evaluate our proposal in the context of mobile computing, demonstrating that our solution scales linearly and tolerates <b><i>Churn</i></b> efficiently;</font></p></li>
    </ul>
  </li>
  <li><p align="justify"><font size="2"><b><i>Keywords</i></b>:</font></p>
    <ul>
        <li><p align="justify"><font size="2">Edge/Fog Computing, Distributed Computing, Mobile Computing, Network Computation of Mobile Devices at the Edge, Mobile Devices Replication, Replicate Data Structures, Eventual Consistency;</font></p></li>
    </ul>
  </li>
  <li>
      <p align="justify"><font size="2">Documents of <b><i>NOVA-LINCS' Hyrax Project (DiCE - Distributive Collaborative Computing at the Edge)</i></b>, in 2018:</font></p>
      <ul>
          <li><p align="justify"><font size="2"><a target="_blank" href="/research-development/hyrax-dice/report-article/hyrax-dice-report-article.pdf"> LaTeX Article/Paper (Portuguese Version)</a>;</font></p></li>
          <li><p align="justify"><font size="2"><a target="_blank" href="/research-development/hyrax-dice/presentation/hyrax-dice-presentation.pdf"> Final Presentation</a>;</font></p></li>
      </ul>
  </li>
</ul>

[![HyraxProjectBanner]({{ site.images | relative_url }}/research-development/hyrax-project-banner-01.jpg)]({{ site.images | relative_url }}/research-development/hyrax-project-banner-01.jpg)

Hyrax Project [DiCE - Distributed Collaborative Computing at the Edge] (FCT NOVA/NOVA-LINCS - between February 2017 and January 2018)