Manos Liakos

Fullstack Software Engineer
Visit my blog

Athens, Greece, Attiki Area

ABOUT ME

Personal Details

  • Excited about learning and using new technologies, quick learner with a robust, get-things-done mindset.
    Regular meetup & conference attendee, passionate about FOSS.
  • Heavily results-oriented, with a strong focus in code quality. Ability to be articulate, analytical and an
    abstract thinker.
  • Strong sense of ownership: I own my work and results, just like I own my mistakes.

EXPERIENCE / PRACTICES

Writing code with software design principles in mind like SOLID, DRY, KISS and SoC (separation of
concerns) utilizing design patterns like MVC.

Solid understanding of REST architecture, JSON structures, HTTP methods & protocol, async programming
(AJAX, promises, async/await, callback functions, generators, event-driven systems / concurrency,
JavaScript’s event-loop) and Git version control system.

Fluent DOM manipulation using jQuery or vanilla JS. Extensive usage of ES6+ features (Higher-order
array methods, rest/spread operators, destructuring, etc.)

Writing testable, scalable and reusable code using modern TDD (test-driven development) practices.

Vigorous understanding of modern JS & concrete knowledge of web fundamentals.

Experienced in all kinds of web automation/bots, REST API building & Front End Engineering.

STACK

Front End

Strong knowledge. Using semantic structure and new HTML 5 APIs.

Knowledgable. Using CSS3 mostly for fine-tuning and customizing element positioning, appearance and maybe do some basic animations.

Also using Bootstrap in most of my smaller scale projects for a rapid UI setup.

Strong knowledge. Extensive use of jQuery for DOM manipulation and new ES6 features like spread/rest operators, template literals, arrow functions and the Promise interface.

Favourite tools: Webpack, Electron.js, Puppeteer, socket.io, PM2, Jest, cypress.io, Gatsby

Moderate knowledge. Also using Redux for state management.

Moderate knowledge. Also using Vuex for state management.

Back End

Knowledge of PHP, but not using any framework yet.

Using MySQL RDBMS, as well as phpMyAdmin. Fair knowledge of SQL and query optimization.

Strong knowledge. Able to leverage event loop’s full potential using modern asynchronous programming techniques.

Also knowledge of Express.js.

Knowledgable.

Tools

Using Git Version Control System. Trying to keep my code clean, organized and well documented.

Good knowledge of WordPress. Moderate knowledge of Joomla.

My editor. Used along with some very useful plugins to speed up my workflow and ease the development process.

When testing API endpoints this tool provides some quick and easy insight. All time favourite.

Using Webpack module bundler for building most of my projects and bundling my assets.

Using Webpack module bundler for building most of my projects and bundling my assets.

Using this fantastic tool to keep track of my tasks and organize stuff 🙂

Would like to check SCRUM and Agile methodologies in real work environments, given the chance.

Scripting

Strong knowledge. Used mainly for server-side scripting and web scraping / web automation.

PROJECTS

WEB

Technologies used: Vue.js, Quasar Framework, vue-router

Pokedex mobile app which queries the PokeAPI API.

Please, view on mobile!

Features include:

  • Infinite scrolling displaying 20 pokemons each time
  • 4 different information tabs

You can see the code here and a live demo here.

Credits: Inspired from this design.

Overview

From a code challenge:

The goal is to implement a web application that will be used by a remote scrum team, during their sprint planning session, to privately vote on the complexity score of a single story (task/feature to be implemented).

 

Tech stack

  • React & Redux
  • Tailwind CSS
  • Firebase

 

Features

  • Full-fledged real-time implementation (all updates happen real-time).
  • Each client gets assigned a default username when first visiting the app.
  • User refresh functionality (create a new user)
  • Any participant can edit his/her username, as well as the feature title.
  • Any participant can vote and reveal all votes, effectivelly ending the session.
  • While votes are hidden, any participant that has voted gets a “Voted!” message next to his/her username.
  • When votes are revealed, users get reordered based on their votes. After that, anyone is able to reset the session, clearing all votes and resetting the feature title.

 

You can see the code here and a live demo here.

Note: To be able to use the live demo, you have to allow “Insecure Content” in your browser’s site settings, due to the API used not supporting SSL.

Technologies used: React.js, Ant Design React Library, Debounce method from Lodash JS library

Autocomplete React component using Xrysi Eukairia’s location API and React.js. Part of interview process.

Features include:

  • Data for the autocompletion is retrieved from Xrysi Eukairia’s API.
  • Requests are made using debouncing (request happens after a specified timeout that the user has stopped typing).
  • Results can be limited for different devices (desktop/tablet/mobile).
  • There is a sample banner card only on desktop and mobile layout, which changes position responsively.
  • Requests are made only after the specified query length.
  • Button which uppon click makes a Google search with the selected search result as the query.
  • Caching mechanism that stores the results for a specified time. If results for a query already exist in cache, no request is made and cache is used instead.

 

You can see the code here and a live demo here.

Note: To be able to use the live demo, you have to allow “Insecure Content” in your browser’s site settings, due to the API used not supporting SSL.

Technologies used: React.js, CSS

From a code challenge:

Create an auto-suggest input field where the user would type at least 3 letters of a Hacker News story title and display the available stories in a dropdown list.

Features include:

  • Fetches and displays the first 20 stories from HackerNews (https://hn.algolia.com/api)., sorted by relevance.
  • Displays points, author and comments for each story.
  • Uses custom debouncing hook to limit requests.
  • Implements simple caching mechanism using the localStorage API. Each keyword:results pair is stored.
  • Results arrow navigation.

You can see the code here and a live demo here.

Technologies used: React.js, CSS

From a code challenge:

We want you to develop a small single page app, that shows us all the information related to a character from the Star Wars universe. Basically, the user submits the name of the character he is looking for, in order to see all the relevant information in a dedicated area.

Features include:

  • Live character search USING Star Wars API.
  • Character related information displayed in dedicated area, upon selection.
  • Custom debouncing hook to limit requests while typing.
  • Request cancelation to prevent race conditions.
  • Simple caching mechanism using the localStorage API. Each keyword:results pair is stored.
  • Results arrow navigation.

You can see the code here and a live demo here.

Languages used: JavaScript (Electron.js framework)

Structure / Styling: HTML, CSS, Bootstrap 

Database: NeDB (subset of mongoDB’s API)

A custom database management program for an organization made with electron.js, a JavaScript framework that allows writing native desktop apps with Node.js and Chromium. NeDB was used as an embedded database solution (noSQL database similar to mongoDB). User can add, edit and delete members, subscribers and other entities.

Features include:

  • Members subscriptions management: Automatic subscription assignment on yearly update & functionality to payoff any unpaid subscriptions. User can select members with fiscal obligations from a certain year and disable them, so they are excluded from postmail-labels prints.
  • Labels prints for various entities, functionality to merge addresses of multiple members in same lebel, etc.
  • Report prints, CSV/PDF table exports, table sorting, custom filtering and global search.
  • Email and zipcode CSV export functionality.

* Data migration, conversion and entity-relationship structuring was done with javascript, after exporting the existing tables from access and converting them to JSON.

Due to the closed-source nature of this project at the moment, a demo can only be shown in person.

Languages used: PHP, JavaScript

Custom inline edit functionality for Datatables jQuery plugin. Simulates this functionality.

This script provides (only) the front-end implementation that adds inline-editing functionality to Datatables jQuery Plugin and some sample back-end code.

You can check it out here.

Languages used: JavaScript

Simulate in-game premium features of online game “Tribal Wars”.

*** W.I.P. ***

This script aims to simulate 100% a Premium Account in online game “Tribal Wars”. Various approaches are used in order to accomplish paid features for free, including querying a local (or even remote) database to retrieve necessary data. It is intended to be used with Greasemonkey/Tampermonkey.

Features include:

  • Incoming attacks tagging and save to remote database.
  • Big map including all the popups with the extra info. (resources, troops, distance, etc.)
  • Villages overview, mass recruitment and more.

 

You can check it out here.

Languages used: JavaScript

Chrome extension which gives user Premium features in the online browser game “Tribal Wars”.

Features:
– Resize map and minimap
– See unit travel times in village popup window

You can check it out here.

Languages used: PHP, JavaScript

Structure / Styling: HTML, CSS, Bootstrap

Database: MySQL

Auth: JWT

Simple note taking app. My first dive into the web-development world. Please consider that at the time I had been coding for about 2-3 weeks 🙂

I actually did this while learning JavaScript along with PHP. Implements basic account functionality (register/login) and task status change (to do/done).

I have left the code almost untouched, to be able to always see how I started off. I only recently fixed a minor bug (2-3 lines) with note deletion.

 

You can see the code here and a live demo here.

BOTS

Languages used: Python, JavaScript

Advanced automation bot for online game “Tribal Wars”. It utilizes a sophisticated algorithm for efficient in-game farm, event logging and more. It requires a game account, as well as all the python dependencies in order to run.

You can check it out here.

Languages used: JavaScript

Bot written in Node.js which automatically places bets on a betting site when the score on a match changes, but has not been updated yet.
– The live score updates are intercepted from another website.
– The whole procedure follows a simple betting algorithm, while there is also extra automated functionality such as page translation, page reload interval, login, necessary dom manipulation, etc.
– The client is able to configure many aspects of the bot using an options-rich configuration file.

Due to the closed-source nature of this project at the moment, a demo can only be shown in person.

 

Languages used: JavaScript (Node.js & React.js)

Web application that fetches and matches odds and fixtures from OPAP and Pinnacle (bookmakers) in order to find arbitrage situations (live). Arbitrage formula is applied to 9 sports, all matches and all markets.

Due to the closed-source nature of this project at the moment, a demo can only be shown in person.

Languages used: Python

Quick Description:

This bot receives as input a list of domains that are used in Google Adwords campaign and keywords for each one of them and runs infinitely until the ad budget for the selected keywords has been depleted.

Detailed Description:

It uses selenium webdriver (regular browser) to scrape ad URLs for each keyword-domain combination and saves them in an array. Then TOR browser is used to simulate a real visit to the URL, using a different IP address each time. Every time, after executing all visits a new search is performed for each domain stacking the array with URLs and requests are done to every URL in the array including the old ones. That happens because they don’t expire (meaning they still charge the victim, so damage is done in less time). The script runs in a loop and each time a certain domain is not found using the selected keywords, it gets removed from the array. Once the array has been emptied, the script is run 4 additional times to ensure that the ad budget for each domain-keyword combo has been indeed depleted.

Disclaimer: This bot was made solely for educational purposes, aiming to expose security flaws on Google’s Adwords platform. Please test this bot on your own funded account. I am not responsible for any misuse of this script.

You can check it out here.

Languages used: Python

Quick Description:

This script provides two methods of pinging domain. Use it to test and experiment with your website’s behaviour. Detailed logging is provided on each script run, as well as IP rotation after each URL ping.

Use it to test and experiment with your website’s behaviour and SEO rank.

Detailed Description:

Mode A, Random path:

Random paths are added at the end of each provided URL. The request results in a 404 error response, if the website does not handle Not Found errors with a redirect (301). Script reads a list of provided URLs in a .xls or .xlsx file named “attack”. User inputs the following:

a) How many different URLs to construct (random paths are added at the end of each main URL, i.e. ‘test.com/f983u4’)

b) How many times to ping each unique randomly constructed URL.

c) Whether a script scheduling to rerun after it has finished is wanted or not. If yes, user needs to provide the time interval.

Mode B, Provided path:

Script reads a list of provided URLs in a .xls or .xlsx file named “boost”. User just needs to input the number of times to ping each URL.

Disclaimer: This script was made solely for educational purposes. I am not responsible for any misuse of this script.

You can check it out here.

SCRIPTS

Languages used: Python

Quick Description:

This simple, single-purpose Python script sums CSVs (comma separated values) in an excel file and groups them by their relative keys (FOO: 5, BAR: 10, FOOBAR: 12, etc.).

This script was used as a module on a bigger script I created to help a friend with  his work 🙂

Example:

In every excel sheet, each row contains a cell with food in the following format:

5 bread, 1L olive oil, 2 packs crackers, etc…

The script loops through every row in every relevant sheet and sums the food resulting in the food key with its aggregated value (i.e. BREAD: 72, OLIVE OIL: 32L, CRACKERS: 15

You can check it out here.

3D ANIMATION

Software used: Cinema4d, Adobe Premiere Pro

Instructional/Promotional video demonstrating the assembly of a kitchen/closet cabinet unit.

You can check it out here.

Software used: Cinema4d, Adobe Premiere Pro

Instructional/Promotional video demonstrating the assembly of a kitchen/closet drawer unit.

You can check it out here.

PROFESSIONAL

FromNov 2018ToMay 2019

(6 months)

Web IntelligenceAthens, GR

Junior Web Developer - Internship

• Managed and maintained existing codebase. Suggested ways of improving DevOps (version control, project management, deployment, etc.).
• Consumed 3rd party APIs (RESTful & SOAP) to enhance CRM/ERP software functionality.
• Added new features to existing Web Apps implementing both front and back-end.
• Significantly minimized time taken for certain tasks through automation scripting using Python.
• Contributed with new ideas, as to how data mining (web scraping) could upgrade the company’s
offered services .

During this time I learned a lot about server administration and DevOps/deployment, how RESTful and SOAP APIs work, as well as how the Web works (HTTP/S protocol, client-server communication, DOM and JS, etc.). It was the first time I started writing code in a professional environment and my first dive into the world of development in general.

Technologies used:
• JavaScript ES6 & jQuery
• PHP
• SQL (MySQL)
• Python

FromMay 2019ToDecember 2019

(7 months)

Web IntelligenceAthens, GR

Full Stack Developer - Contractor

  • Communicated with the company’s clients to identify and
    analyze their needs, in order to elicitate project requirements.
  • Designed, developed and deployed applications front to
    back, mainly using the MERN stack and/or Python.
  • Developed contracts including all the necessary information
    (terms & conditions, project requirements, payment
    terms, etc.) in a regular basis.
  • Delivered high quality end products which were in line
    with the agreed requirements, while also being shipped in
    time.

FromOctober 2020ToJanuary 2021

3 months

Fairplay Group (betshop.gr)Athens, GR

Frontend Software Engineer

  • Actively enhanced the front facing part of the
    betting platform betshop.gr by engineering new features.
  • Augmented test suites on both versions of the app by
    composing new tests, effectively increasing code coverage.
  • Instituted integration testing suites using cypress.io,
    further fortifying team’s confidence in shipping code.

Tech stack: Vue & Tailwind CSS (desktop version), Quasar Framework(mobile version).
Quasar Framework(mobile version).

FromMarch 2021ToPresent

RainThreadAthens, GR

Fullstack Software Engineer

Designing and engineering software solutions from the ground up, for one of the leading startups in the SEO industry.

EDUCATION

FromSeptember 2015ToSeptember 2021

6 years

National and Kapodistrian University of Athens

History and Philosophy of Science

Bachelor’s

Official: “The Philosophy and History of Science Department is focused on the philosophical and historical study of all the sciences (mathematical, physical, life, human, social, etc). In addition, it educates in areas that have developed in interaction to the philosophy and history of science (e.g., ‘history of technology’, ‘cognitive science’, ‘science, technology, society’).”

FromSeptember 2017ToJune 2019

2 years

Sivitanidios Vocational Training School

Computer Software and Media Applications

Associate’s

Education covered many aspects of the Computer Science spectrum, focusing on:
• Computer Science Fundamentals (Logic gates / Computer circuitry, CPU architecture, etc.)
• Algorithms and data structures
• Networking protocols and design patterns ( TCP/IP, etc.)
• Operating Systems’ fundamentals (focusing on MS DOS / WIndows)
• Extensive focus on languages like C & C++ and relevant libraries like OpenGL.
• Assembly language for Intel’s 8086 processor

Courses also included learning of Software Suites and Standalones such as:
• Adobe’s Creative Suite (Premiere, Animate, Photoshop, etc.)
• Autodesk’s 3DS Max
• Unreal Engine & Unity

Plus some web development courses which included:
• Technologies such as PHP, mySql, HTML & CSS, JavaScript, Bootstrap, WordPress, etc.

FromSeptember 2012ToSeptember 2015

3 years

1st General High School of Ilion

High School Diploma

General Degree

CERTIFICATES

Certificate of Proficiency in English

University of Michigan

See it here

Microsoft Office Specialist (Word, Excel, Access)

Microsoft Hellas

See Word 2007

See Excel 2007

See Access 2007

Introduction to Python Programming

Aristotle University of Thessaloniki

See it here