Hello! My name is Alessandro Morio and I started programming when I was 16 years old. Writing and maintaining clean code fascinates me.
I am interested in software architecture. I like to understand and design an entire system/game. Which, sometimes, leads to
the topic performance. That is also one of my favourite domains. First of all to determine whether an optimization is
necessary or not. Optimizing code that is rarely used can even backfire. However, applying Data-Oriented Design or the correct multithreading
strategy can improve performance and design a lot.
During my career I gained a lot of experience in fullstack development. I designed and implemented various REST interfaces
and have experience in processing heavy data-loads in micro-service architectures. I was one of the lead engineers for the web visualization of the zenon software platform at Copa-Data.
C# - .Net | C++ | Flutter/Dart | Java |
---|---|---|---|
- .Net 5/6 (.Net Core 2/3) | .Net Framework 4.5 - 4.7.2 - ASP.Net Core web application (SignalR), REST interface development. - EntityFramework - Always trying to use new language features. - Async, Generics, Delegates, Events, Extension-Methods, Lambda-Expressions, Anonymous Types, Caller Information |
- Desktop application development: WebUI backend - Usage of C++11/14 - Aware of C++17 - Smart pointer, const correctness, std::atomic, templates, auto, ... |
- Used to create mobile app used for a card game. - Neat language to code in. |
- Java basics - Developed with Eclipse and IntelliJ |
VBA | |||
- Usage of VBA in Excel files |
Angular | Typescript | Javascript | HTML + CSS |
---|---|---|---|
- Enterprise frontend development - NgRx, Angular Material, NX Monorepo - Use for service/event monitoring frontend |
- Experienced in Typescript 2.X to 4.X - Usage of dependency injection frameworks (TSyringe, Angular) - WebUI development with KendoUI |
- Basic JS: closures, hoisting, events - Microsoft Dyamics CRM: Xrm.Page objects and functions - Development of 2D games/animations |
- Creation and editing of new/existing web applications/websites |
Microsoft Dynamics CRM SDK | jQuery + KendoUI | Windows Forms (.Net) | SFML (.Net) |
---|---|---|---|
- Implementation of (sandboxed) Plugins, WorkflowActivities (Custom Action, Workflow-Step), Web-Services - Implementation of Javascript Form Extensions - Working with FetchXML, Web API, CRM dashboard diagrams |
- Basic jQuery functionality: traverse/manipulate DOM and event handling,... - WebUI usage of KendoUI for: chart, grid, dialog, treeview, slider, ... |
- Used in a variety of projects. E.g. Cranberry RPG Editor |
- Used in several projects: Maze Run, Cranberry RPG Editor, Tower Defense Game, ... |
wxWidgets | OpenCV | RapidXML | LuaPlus |
- Implementation of a basic game editor during my studies |
- Manipulate images and their histograms (point/filter operations) - Fingertip tracking |
- Used to serialize game objects in a basic game engine |
- Used for simple scripting support in a game engine written in C++ |
pixi.js | |||
- Used to create the 2D game: Stick Beat 'em Up |
Microsoft SQL | SQLite | MySQL | Access |
---|---|---|---|
- Entity-relationship and relational data models - Basics: select - join, views, transactions and stored procedures |
- Entity-relationship and relational data models - Basics: select - join, views |
- Entity-relationship and relational data models - Basics: select - join, views |
- Administration and maintenance of small databases |
Software/Game Engine Architecture | Data-Oriented Design | Multithreading and Task Scheduling | Clean Code |
---|---|---|---|
- Component-based and hierarchy-based architectures - Favourite architecture: Entity-Component-System (ECS) |
- Organization of data in a cache-friendly way - Three basic principles: contiguous arrays, packed data, hot/cold splitting |
- Basics: fork and join, coarse threading, task scheduler/job system - Implementation of a task scheduler in C++ with kernel-level threads and fibers |
- Meaningful variable and function names - Short functions/classes - Diverse principles: SRP, DRY, KISS, YAGNI, ... |
Multimedia Processing | Mixed Reality | Software Design Patterns | Interfaces |
- Working with OpenCV - Image processing: histograms, point/filter operations, edge detection, morphological filters - Feature points: SIFT/SURF - Hough transform: line/circle/... detection |
- Augmented Reality and Virtual Reality - Working with OpenCV - Depth cameras: time of flight, structured light, stereoscopic - Google AR SDK - Fingertip detection |
- MVC, UML, Open-Closed, Composition over Inheritance - Abstract Factory, Factory Method, Singleton - Adapter, Composite, Decorator, Proxy - Command, Mediator, Observer, State, Strategy |
- Real estate: ImmoWelt, ImmoScout24 - Financial accounting: DATEV, BMD - Payments: SEPA - Point of sale: LS One POS |
Algorithms and Datastructures | Game Development | Computer Graphics | Multimedia Formats |
- Stack - Hashtable - Search algorithms - Sorting algorithms - Graphs |
- AI (Steering behaviours, decision making), Pathfinding (Dijkstra, A*), Scripting, Data-Driven Design, Collision Detection |
- Shader programming: vertex and fragment - Programable pipeline, object space -> screen space, lambert-, phong and blinn-phong shading |
- Image: BMP, JPEG, PNG - Video: Motion JPEG, MPEG |
Mobile Apps | Network | ||
- Writing basic mobile apps in Swift |
- IPv4/IPv6, TCP/UDP, HTTP Requests - Peer2Peer, Client/Server, Authoritative Server, Lag Componsation |
Microsoft Dynamics CRM SDK 2011-2016 | Unity 3D Engine | Unreal Engine 4 | Git |
---|---|---|---|
- Usage and customization of Microsoft Dynamics CRM via Internet Explorer - Creating and maintaining processes via the browser - Implementation of programs for Dynamics CRM |
- Implementation of a 3D game (UI: UnityEngine.UI) - Scene management, Definition of Unity workflow and coding conventions, using UnityYAMLMerge |
- Implementation of a 3D VR game (visualization of damage feedback) - Implemented mainly with C++, worked with sublevels |
- Basics: add -> commit -> push, tags - Branching Workflows: master-develop-feature, develop-on-master |
Visual Studio | Intel VTune Amplifier | MediaWiki | |
- IDE of choice - Used in several .Net, C++ and web projects |
- Used to measure the performance of my implementations of job systems |
- Setup and maintenance - Installation of extensions |
Agile/Scrum | Software: Trello and Favro | Controlling | Project Planning |
---|---|---|---|
- Iterative stages - Sprint backlog, sprint planning, daily stand-ups, sprint retro |
- Active usage of project management software - Designed for working with sprints - Overview and controlling |
- Definition of goals and controlling team to focus on goals - Communication with the team |
- Providing and maintaining an infrastructure for the project/team (Favro, MediaWiki, Google Calendar, Slack, ...) - Project structure plan - Planning project cycles (iterative) |
Windows XP - 10 | Ubuntu |
---|---|
- Preferred operating system - Installation, maintenance and basic administration |
- Installation and configuration - Working with the terminal |