C++ // C# // Games programmer // Website developer
Software developer
POLITICA DE CONFIDENȚIALITATE
1. Introducere
Prezenta Politică de Confidențialitate explică modul în care Alexandru Mihai MN Persoana Fizica Autorizata colectează, utilizează și protejează datele personale ale utilizatorilor care accesează și utilizează serviciile noastre.
2. Informații colectate
Colectăm următoarele categorii de date personale:
Nume și prenume;
Adresă de e-mail și număr de telefon;
Informații de facturare (CUI, cont bancar, adresă sediu social);
Adresa IP, tipul dispozitivului și browserul utilizat.
3. Scopul colectării datelor
Datele colectate sunt utilizate exclusiv pentru:
Crearea și gestionarea conturilor utilizatorilor;
Procesarea și gestionarea programărilor prin aplicația web;
Comunicarea cu utilizatorii pentru suport și asistență;
Respectarea obligațiilor legale și fiscale.
4. Confidențialitatea și securitatea datelor
Ne angajăm să protejăm datele utilizatorilor prin măsuri tehnice și organizatorice adecvate, pentru a preveni accesul neautorizat, pierderea sau utilizarea abuzivă a acestora.
5. Partajarea datelor
Nu vindem, nu închiriem și nu transferăm datele personale către terți fără consimțământul utilizatorului, cu excepția cazurilor în care este necesar pentru:
Respectarea obligațiilor legale;
Executarea unui contract cu utilizatorul;
Protejarea drepturilor și siguranței noastre sau ale utilizatorilor.
6. Drepturile utilizatorilor
Utilizatorii beneficiază de următoarele drepturi:
Dreptul de acces la datele personale;
Dreptul de rectificare a datelor incorecte;
Dreptul de ștergere a datelor („dreptul de a fi uitat”);
Dreptul de restricționare a prelucrării;
Dreptul la portabilitatea datelor;
Dreptul de opoziție la utilizarea datelor în anumite scopuri.
7. Perioada de stocare a datelor
Datele sunt păstrate pe perioada necesară prestării serviciilor, conform obligațiilor legale aplicabile. După această perioadă, datele sunt șterse sau anonimizate.
8. Modificări ale politicii de confidențialitate
Ne rezervăm dreptul de a modifica această politică. Orice modificări vor fi publicate pe website-ul nostru.
9. Contact
Pentru întrebări sau solicitări privind prelucrarea datelor, ne puteți contacta la:
Alexandru Mihai MN Ionescu Persoana Fizica Autorizata
Str. Piscului 11, bl.78, ap.25
pfa.ionescu.alexandru@gmail.com / pfa@alexionescu.onmicrosoft.com
0730305974
Termeni și Condiții
1. Disclaimer
Acest site este oferit în forma în care se prezintă la accesarea sa de către utilizatori, fără niciun fel de alte garanții.
PFA Alexandru Ionescu nu este și nu poate fi făcut responsabil pentru nepotriviri, indisponibilități sau alte defecte ale acestui site sau ale conținutului său.
Dacă folosiți serviciile sau informațiile oferite de acest site, acest lucru va fi echivalent cu acceptarea de către dumneavoastră a termenilor și condițiilor de mai jos.
Acești termeni și condiții se pot modifica din timp în timp. Veți fi notificat ori de câte ori se produc modificări ale termenilor și condițiilor website-ului.
2. Protecția Proprietății Intelectuale
Conținutul și designul site-ului, precum și orice alt material având legătură cu site-ul, aparțin PFA Alexandru Ionescu și sunt
protejate de legislația privind proprietatea intelectuală.
Nu puteți utiliza, reproduce sau permite nimănui să utilizeze sau să reproducă materialele fără permisiune scrisă.
3. Utilizarea Conținutului Site-ului
Puteți copia și printa conținutul site-ului doar pentru folosința personală, lipsită de intenție comercială. În orice alte cazuri, conținutul site-ului nu poate fi reprodus,
modificat sau exploatat fără acordul nostru.
4. Modificări de Conținut
Ne rezervăm dreptul de a suspenda, modifica, adăuga sau șterge în orice moment porțiuni ale conținutului acestui site.
5. Acord de Confidențialitate
Informația pe care o furnizați va fi utilizată doar în conformitate cu Politica noastră de Confidențialitate.
6. Forța Majoră
PFA Alexandru Ionescu nu poate fi făcut responsabil pentru întârzieri sau erori cauzate de factori externi precum defecțiuni
tehnice, viruși informatici, acces neautorizat
sau alte probleme independente de voința noastră.
7. Legislația
Acest acord este guvernat de legislația română. Orice litigiu va fi soluționat în fața instanțelor românești.
Introduction
Hello, and welcome to my portfolio
My name is Alexandru Ionescu, I am from Romania, Bucharest
I have studied Mathematics and Informatics at "High School Miguel de Cervantes"
I have finished my degree in the United Kingdom, studying Games programming at "Staffordshire University"
I am now pursuing a Masters degree in Environental Physics, at Bucharest University
I am working as self employed as an application developer.
Ray tracing is a technique used in computer graphics, to render shadows, reflections and refract lights. Classic ray tracing shoots
invisible rays from the camera and traces the path as they bounce from object to object. The main areas of this project were
the optimizations techniques through the use of kernel threads and user level threads, file reading and writing optimizations, and the low
level memory managenent. For the memory manager, I made use of the C style operators "malloc" and "free", that are used to allocate
and deallocate chunks of memory. The memory manager helps developers to find memory leaks easier, or check if any variable is overwriten.
We can create a header and a footer for the memory we create, that way we can declare an unused variable in the header and footer, and
check if that variable has changed at any point during the program. The optimizations techniques I used are mainly based on
threads, and Parallel tasking. If the program runs sequentional, with only one thread working on all images, the program is slow.
Adding more worker threads helps with the performance of the program.
Sequentional time: 120 seconds /-/-/-/-/-//-/-/-/-/-//-/-/-/-/-//-/-/-/-/-//-/-/-/-/-/
Threads time: 9 seconds
A representation of the project I managed to create is available here:
3D // DirectX11 (Physics) // C++ // HLSL
The physics system I managed to create is a representation of forces applied to objects
of different masses. The first cube has a thrust force applied to it from below, that
launches it upwards when arrives in position(0,0,0), and another brake force that is applied
in the opposite direction, so only gravity can affect it and bring it back to ground.
The second cube is a representation for Quaternion rotations.
Cube 3 and cube 4 are a representation of velocity and acceleration being applied.
Cube 3 will move at the same speed whenever the button is pressed. Cube 4 will start moving
slowly, and then increase its speed over time.
Cube 5 can be moved by player input, and can apply forces to the other game objects in the
scene.
There are 2 types of collision detection implemented. AABB or axis aligned bounding box, which can be
visible on screen through the collision resolution applied to other objects, and sphere collision which
can be seen in the output window.
A representation of the game I managed to create is available here:
3D // DirectX11 (Graphics) // C++ // HLSL
DirectX is a collection of APIs that you can use to create games and high-performance graphics applications.
DirectX11 graphics includes support for both 3D and 2D graphics. Direct3D is an industry standard, low-level
graphics API, used to draw primitives through the rendering pipeline, and enables us to render 3D worlds
using 3D hardware acceleration. The main competitor to Direct3D is OpenGL, because both APIs are commonly
used to create graphics for Windows PC.
The DirectX project I managed to make is a representation of a 3D scene, that contains 4 objects.
I made a real life cube out of paper to be able to visualize and understand the vertices.
On paper, I have drawn the wall's vertex coordinates, normals, and texture coordinates. The floor is scaling
up and down constantly, due to the time period passed since the last frame (delta time); At first, I implemented
the scaling into the shader calculations, all objects in the scene suffering the transformation.
For the airplane, we have been given an OBJ loader and the airplane model.
The pyramid is rotating around a pivot of coordinates(0,0,0).
For the lighting calculations, we needed to have a look at the vertex and fragment shaders, and alter
which variables get passed in the constant buffer, and use them to calculate the ambient, diffuse and specular
lights. Intellisense does not recognise HLSL code, which makes it harder to find errors. Towards the end of the
semester, we found that there is an extension that can be applied to Visual Studio, that helps developers
find errors easier.
A representation of the game I managed to create is available here:
Task based software engineering // C# // WPF // F#
This project was about designing a C# application that can deal with a large amount of data
query the data and make calculations based of the required data type.
the project presents is a simple data reading algorithm, which calculates the sum between elements of a list,
depending on what the consumer wants to know. For example, the consumer might want to find the cost of all orders available in the
supplied data, or the cost of the orders for a supplier type, in a week for a specific location. To do the calculation for every order,
a “Parallel.ForEach” does the job, if it has the reference to the correct set of data. The easy way to do it is to use the correct
override method and reference the “orders” list where the data is stored and use a “Lambda” expression for performing the equation
for sum. The problem comes when different threads try to access the same variable at the same time, and different sums are shown at
the end of each run.
I started with a console output, where the user can select what information he wants to access, then
I implemented the functionality to a WPF GUI.
A representation of the game I managed to create is available here:
Mario // C++
In the first year, during the second semester at Staffordshire University, we have been required to create a 2D game in C++,
using SDL 2.0, that is simmilar to Mario Bros. A simple 2D game, with different levels,
enemies, tasks, or with an implemention of textures or animations. I managed to create a similar
experience with the actual game, by using similar textures,
but I have added my original ideas, such as a puzzle(level 2), and pixel art textures created by me.(grass, brick)
A representation of the game I managed to create is available here:
Pacman // C++
In the first year, I learned bit-by-bit how to create a 2D game, a representative game, "Pacman".
I remember that when I made pacman move up, down, left, and right,
I was so excited to learn how to improve the project, by implementing the ghosts, the menus.
For this project we used the library S2D, which helped us with the window handling,
input controls, audio, and drawing objects in 2D. To draw the map, I used pen and paper to
get the correct coordinates for the walls, and set the munchies on positions where the
player can get achieve them.
A representation of the game I managed to create is available here:
WPF (WINDOWS PRESENTATION FOUNDATION), is a UI framework that creates desktop applications, or a server-client architecture.
The framework has a similar interface experience with other .NET frameworks, so if you have previously worked with applications that
are using ASP.net, Windows Forms, XML or HTML, the programming experience should be familiar. Syntactically, the language might
be slightly different, for some of the wording, but the layout should be common. WPF uses the Extensible Application Markup
Language (XAML), and can be used to display graphics, can be used to layout the features that you might want to implement.
WPF can be used for a lot of different areas, such as chat communication, 2D and 3D graphics, the relationship between video and
animation, data binding, styles and control templates.
At first I started with a simple console application, where a person was able to communicate with a computer.
Then I made a simple GUI, with multiple instances (chats), where you could enter a name and connect to the server.
Messages that are sent by a user can be seen across the other clients.
A representation of the game I managed to create is available here:
3D // OpenGL // C++
3D OpenGL is a pretty hard to understand framework, in which you can add, change, move objects around the scene,
objects that can have different colors, textures, dimensions,
or objects that can have their size changed from the scene. Lights and materials are important features for
a game scene, features that can give your game a better perspective of a scene.
OpenGL can be used to create a custiomizable game engine.
A representation of the game I managed to create is available here:
Side projects
1. Find and Replace in multiple EXCEL files
The idea behind this project was that I had been assigned to replace a specific
generic sentence with another similar one, in more than 500 ".xls" files. Windows
lets you open 10 files at a time, which takes time as well, in adition to the
time it would take to find and replace manually using the built in function.
This is where I got the idea to create an application where you can select a folder
where you have all the Excel files, opens each one, and if there is any cell value
matching with the word we are looking for, it would change it to the other one.
This app will save a lot of time, since it takes only a few seconds to open the folder
that contains all the files.
The program creates a copy of each files in case anything goes wrong, so they can be
reverted to original.
A video of the app working:
2. Generic website with included meeting scheduler
I have been suggested a project idea to create a link that people can access
anytime and schedule a meeting with a doctor, barber, shop, or any other type of
business that requires meetings. To access the website
CLICK HERE
The information on the website can be changed to match someone else's expectations,
as well as the structure or design of the website.
The idea of this project was to implement the meeting scheduler, and to make
it work without direct access to the customer's email account. This way, I can create
a new workspace on my Microsoft account, asign the staff privileges based on the email
address and share the booking page with customers.
The workspace has multiple options when it comes to assinging staff members,
sending emails to the staff and customers such as reminders or feedback.
3. Schedule application demos
I have created a few demos for different clients as collab proposals. Different
designs for the scheduling application:
One of the skills I am most confident with, is programming in C++. I started with learning pseudocode for C++, in order to understand the logic behind the program.
When I got my PC during high-school, I had no idea what a computer was or how it worked, but the problem solving skills developed during my education years helped
me comprehend quickly the basics of the C++ programming.
I started by learning simple management of different variables types, and then perfectining on manipulating different kinds of collections. The final exam for
programming is structured in 3 sections.
The first one is more about solving mathematical problems such as simple integer calculations, recursion, nodes, binary trees, and string manupulation, and
with multiple choices with no solving required .
The second section is more focused on solving and writing both C++ and pseudocode to achieve the wanted result. This secton is where the imagination and
problem solving skills are handy.
The last section is focused heavily on writing object oriented code and optimization. It is very important to understand each problem's starting values and
solving requirements.
This is bold and this is strong. This is italic and this is emphasized.
This is superscript text and this is subscript text.
This is underlined and this is code: for (;;) { ... }. Finally, this is a link.
Heading Level 2
Heading Level 3
Heading Level 4
Heading Level 5
Heading Level 6
Blockquote
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
Preformatted
i = 0;
while (!deck.isInOrder()) {
print 'Iteration ' + i;
deck.shuffle();
i++;
}
print 'It took ' + i + ' iterations to sort the deck.';