He spoke to “ET” about the services that Teracloud provides today, but also about the goals it sets for… the next day. on Sunday the R&D Manager of the company, Athanasios Andriopoulos.
What is Teracloud’s profile? What services does it provide and to whom?
Teracloud is a multinational technology company that produces software solutions critical to the operation of large corporate giants around the world. In particular, its clientele includes companies of all industries, which are included in the Fortune 500 list.
What are the benefits for those who choose your company?
The fact that we offer complete solutions, from the production of the software to the support of the customers regarding the operation and upgrading of the programs we provide them.
How many branches does the company have and in which countries?
Teracloud is headquartered in Denmark and maintains offices in the USA, Germany, Sweden, Armenia, Egypt, Australia, New Zealand and a few months ago it chose to expand to our country as well.
How many employees does the Greek office have and how many does the company have, in total, in all its branches?
The Greek branch, for the moment, employs 11 people, with many perspectives and development plans, while in total the company, worldwide, employs approximately 400 people. In fact, following the new trends that apply in our field, we apply a “hybrid” work model (ie, physical presence and telecommuting).
What are the goals of Teracloud Greece?
Growth and development. Currently the Greek office is active in two products. An operating system, on which customers “run” critical applications, reliably and securely, and a product for analyzing large volumes of data in real time, which helps our customers make critical decisions immediately.
At the same time, the procedures have already been launched to undertake more projects, which will also mean an increase in jobs, which in a very short period of time are expected to reach 50, with prospects for many more.
Furthermore, the company’s goal is, among other things, its presence in new markets, by expanding the products it offers to customers.
Teracloud is based overseas. What motivations led to opening a branch in Greece? Do you think that our country has left the “brain drain” in the past and has now started the “brain gain”?
It is important that a large multinational company invests in Greek engineers, that is, in Greek “minds”. Our country has great progress to show in terms of know-how.
This, combined with the talent of Greek engineers in technology, who have nothing to envy their foreign colleagues, but also the fact that we are a NATO and EU country, are an important incentive for those who want to invest in the specific sector in our country.
Personally, however, I believe that the “brain drain” – albeit at a reduced rate – still exists. As for “brain gain”, the presence of large companies, such as Teracloud, can only contribute positively.
“Patience, persistence and continuous training”
What advice would you give to someone looking to get into your industry? What has your experience in the field taught you?
Patience, perseverance and continuous training. The technology industry is one that is constantly developing at a rapid pace.
New technologies are produced every day, new terms arise. Therefore, if someone wants to deal with this industry, he must be constantly informed about any changes and adapt to the new data.
What are the main problems you face even today, which make your daily life and the development of the company difficult?
Teracloud has been active in our country for a few months, but in order to reach the desired result today and start its operation, it had to overcome many obstacles and avoid the “complications” of bureaucracy.
Unfortunately, the malfunctions that are still observed in the state agencies are an inhibiting factor for anyone who wants to invest in our country.
/* — PerfOps by Nuevvo (nuevvo.com) — */
// Utilities
const allScripts = document.getElementsByTagName(‘script’);
window.lst = allScripts[allScripts.length – 1];
window.isMobile=(function() {var ua=navigator.userAgent||navigator.vendor||window.opera;return ((/Android/i).test(ua) && (/Mobile/i).test(ua)) || (/BlackBerry|iPhone|iPod|Opera Mini|IEMobile/i).test(ua);})();
function asyncLoadScript(url) {
var alScript = document.createElement(‘script’);
alScript.src = url;
alScript.async = true;
//window.lst.parentNode.insertBefore(alScript, window.lst);
document.body.appendChild(alScript);
}
function asyncLoadModule(url) {
var alScript = document.createElement(‘script’);
alScript.src = url;
alScript.type=”module”;
//window.lst.parentNode.insertBefore(alScript, window.lst);
document.body.appendChild(alScript);
}
function displaySlot(id) {
if (document.querySelector(‘#’+id)) {
googletag.display(id);
}
}
// Fix OCM JS errors
window.defineSlots = function(t, r){};
/*! instant.page v5.2.0 – (C) 2019-2023 Alexandre Dieulot – */
(function(){
let t,e,n,o,i,a=null,s=65,c=new Set;const r=1111;function d
})();
// InMobi Choice. Consent Manager Tag v3.0 (for TCF 2.2)
setTimeout(() => {
var host=”eleftherostypos.gr”;var element=document.createElement(‘script’);var firstScript=document.getElementsByTagName(‘script’)[0];var url=” uspTries=0;var uspTriesLimit=3;element.async=true;element.type=”text/javascript”;element.src=url;firstScript.parentNode.insertBefore(element,firstScript);function makeStub(){var TCF_LOCATOR_NAME=’__tcfapiLocator’;var queue=[];var win=window;var cmpFrame;function addFrame(){var doc=win.document;var otherCMP=!!(win.frames[TCF_LOCATOR_NAME]);if(!otherCMP){if(doc.body){var iframe=doc.createElement(‘iframe’);iframe.style.cssText=”display:none”;iframe.name=TCF_LOCATOR_NAME;doc.body.appendChild(iframe);} else {setTimeout(addFrame,5);}}return !otherCMP;}function tcfAPIHandler(){var gdprApplies;var args=arguments;if(!args.length){return queue;} else if(args[0]===’setGdprApplies’){if(args.length > 3 &&args[2]===2 &&typeof args[3]===’boolean’){gdprApplies=args[3];if(typeof args[2]===’function’){args[2](‘set’,true);}}} else if(args[0]===’ping’){var retr={gdprApplies: gdprApplies,cmpLoaded: false,cmpStatus: ‘stub’};if(typeof args[2]===’function’){args[2](retr);}} else {if(args[0]===’init’ && typeof args[3]===’object’){args[3]=Object.assign(args[3],{ tag_version: ‘V3′ });}queue.push(args);}}function postMessageEventHandler(event){var msgIsString=typeof event.data===’string’;var json={};try {if(msgIsString){json=JSON.parse(event.data);} else {json=event.data;}} catch (ignore){}var payload=json.__tcfapiCall;if(payload){window.__tcfapi(payload.command,payload.version,function(retValue,success){var returnMsg={__tcfapiReturn: {returnValue: retValue,success: success,callId: payload.callId}};if(msgIsString){returnMsg=JSON.stringify(returnMsg);}if(event && event.source && event.source.postMessage){event.source.postMessage(returnMsg,’*’);}},payload.parameter);}}while (win){try {if(win.frames[TCF_LOCATOR_NAME]){cmpFrame=win;break;}} catch (ignore){}if(win===window.top){break;}win=win.parent;}if(!cmpFrame){addFrame();win.__tcfapi=tcfAPIHandler;win.addEventListener(‘message’,postMessageEventHandler,false);}}makeStub();var uspStubFunction=function(){var arg=arguments;if(typeof window.__uspapi!==uspStubFunction){setTimeout(function(){if(typeof window.__uspapi!==’undefined’){window.__uspapi.apply(window.__uspapi,arg);}},500);}};var checkIfUspIsReady=function(){uspTries++;if(window.__uspapi===uspStubFunction && uspTries 0) {
//asyncLoadScript(‘
adSenseSlots.forEach(function(e){
});
}
// Phaistos Adman
//asyncLoadScript(‘
window.AdmanQueue=window.AdmanQueue||[];
AdmanQueue.push(function(){Adman.adunit({id:338,h:’
// OneSignal
window.OneSignalDeferred = window.OneSignalDeferred || [];
OneSignalDeferred.push(function(OneSignal) {
OneSignal.init({
appId: “487cc53b-3b66-4f84-8803-3a3a133043ab”,
});
});
// Disqus
var disqus_config = function() {
this.page.url=”
this.page.identifier = 1553877;
};
setTimeout(function(){
(function() {
var d = document,
s = d.createElement(‘script’);
s.src=”
s.setAttribute(‘data-timestamp’, +new Date());
(d.head || d.body).appendChild(s);
})();
}, 3000);
function cmpActionCompleted() {
// OCM & DFP
//asyncLoadScript(‘
asyncLoadScript(‘
asyncLoadScript(‘
/*
// CleverCore
(function(document, window) {
var a, c = document.createElement(“script”);
c.id = “CleverCoreLoader57097″;
c.src = ”
c.async = !0;
c.type = “text/javascript”;
c.setAttribute(“data-target”, window.name);
c.setAttribute(“data-callback”, “put-your-callback-macro-here”);
try {
a = parent.document.getElementsByTagName(“script”)[0] || document.getElementsByTagName(“script”)[0];
} catch (e) {
a = !1;
}
a || (a = document.getElementsByTagName(“head”)[0] || document.getElementsByTagName(“body”)[0]);
a.parentNode.insertBefore(c, a);
})(document, window);
*/
// Taboola/Project Agora
asyncLoadScript(‘
asyncLoadScript(‘
// For Google AdSense
if (document.querySelectorAll(‘.adsbygoogle’).length) {
asyncLoadScript(‘
}
// Phaistos Adman
asyncLoadScript(‘
// Glomex
if (document.querySelectorAll(‘glomex-integration’).length) {
setTimeout(function(){
asyncLoadModule(‘
}, 2000);
}
// Dalecta
setTimeout(() => asyncLoadScript(‘ 800);
// Vidoomy
//asyncLoadScript(‘
// Weather
setTimeout(() => asyncLoadScript(‘ 1000);
/*
// Facebook Pixel
!function(f, b, e, v, n, t, s) {
if (f.fbq) return;
n = f.fbq = function() {
n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments)
};
if (!f._fbq) f._fbq = n;
n.push = n;
n.loaded = !0;
n.version = ‘2.0’;
n.queue = [];
t = b.createElement(e);
t.async = !0;
t.src = v;
s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t, s)
}(window, document, ‘script’, ‘
fbq(‘init’, ‘618972382017166’);
fbq(‘track’, ‘PageView’);
*/
// OneSignal
setTimeout(() => asyncLoadScript(‘ 5000);
}
// Microsoft Clarity
(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=”https://www.clarity.ms/tag/”+i+”?ref=wordpress”;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window, document, “clarity”, “script”, “l14tw277rg”);
// Yandex Metrica
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();for(var j=0;j<document.scripts.length;j++){if(document.scripts[j].src===r){return;}}k=e.createElement
#Teracloud #Multinational #invests #Greek #minds
It seems that you’ve provided a code snippet that includes various sections for loading different advertising scripts, handling notifications, and integrating third-party services like Disqus. It looks like a part of a larger JavaScript codebase for a web page, likely for managing ads and user engagement tools. Below are some key components described in the provided snippet, along with suggestions for potential improvements or clarifications:
### Key Components
1. **Ad Management:**
– The snippet attempts to remove certain AdSense elements based on some unspecified condition.
– Ads are being managed through multiple different providers (Phaistos Adman, Taboola, Glomex, etc.).
2. **Asynchronous Script Loading:**
– The function `asyncLoadScript` is referenced multiple times but not detailed; it’s assumed to load scripts asynchronously. It’s crucial to ensure that error handling and success callbacks are provided in these functions for smooth operation.
3. **OneSignal Integration:**
– The snippet initializes OneSignal for push notifications, which is useful for engaging users directly via browser notifications.
4. **Disqus Configuration:**
– There’s a configuration function for Disqus comments that sets up the necessary page information.
5. **CleverCore (Commented Out):**
– There is a commented-out section for loading CleverCore. If needed, this could be uncommented, but ensure that it’s implemented correctly to avoid loading errors.
6. **Timeout for Load Delays:**
– There are server-side timeouts for the loading of certain scripts, which may be intentional to improve page load performance or address render-blocking scripts.
### Suggestions for Improvement
1. **Consolidate Script Loading:**
- If multiple ads are loaded via `asyncLoadScript`, consider creating a singular function that handles all ads in a more organized manner, potentially using promises to manage dependencies.
2. **Error Handling:**
- Ensure that error handling is implemented in each script loading to provide debugging information if a script fails to load.
3. **Modularize Code:**
– If this is a large file, consider breaking down the functions into smaller modules/files for ease of maintenance and readability.
4. **Variable Definitions:**
– Ensure that all variables used (like `adSenseSlots`, `OneSignal`, etc.) are defined and scoped appropriately to avoid potential conflicts or errors.
5. **Clean Up Unused Code:**
– Commented-out code can be removed unless it’s explicitly needed for future reference, as it can clutter the codebase.
6. **Improved Commenting:**
– Provide contextual comments on each block or section to clarify what each part is responsible for, especially for future developers (or yourself) revisiting the code later.
### Example of a Simplified Script Loading Function
Here is a simplified representation of how you might bundle loading and error handling for scripts:
“`javascript
function asyncLoadScript(url) {
return new Promise((resolve, reject) => {
const script = document.createElement(‘script’);
script.src = url;
script.async = true;
script.onload = () => resolve();
script.onerror = () => reject(new Error(`Failed to load script: ${url}`));
document.head.appendChild(script);
});
}
// Usage example:
asyncLoadScript(‘https://some.ad.server/script.js’)
.then(() => {
console.log(‘Ad script loaded successfully’);
})
.catch(error => {
console.error(error);
});
“`
This sort of abstraction can reduce redundancy and increase readability in your code base.