Know Me

About me

"Hello world" and welcome here. Let me introduce myself. I am a student who is progressing step by step towards becoming a computer engineer. I advanced the last years of my education life by working part-time in the sector. I had some amateur work before due to my interest and curiosity.

In my journey of self-discovery, I had little experience in many development areas such as front-end, back-end, full-stack, mobile-app and devops. I think I'm thinking of continuing from the back-end area because I'm wondering what's going on in the back side of everything. This journey will also allow me to focus on areas such as machine learning and data science for my capstone project, which is the last stage I have to graduate in the coming days.

before 2016

Before learning programming

Although we have learned the theory with the training we have received, the computer has always been in my mind as a magic box.

I started this era with windows XP, which is now known as a legend. With our internet connection, my interest in this magic box increased. Of course, at that age, the time I spent on games was much more :) , this situation was replaced by "how do they make these games?" left to the question. I spent time on the forums and learned how to open my own game server. I realized that at that time, I had taken my first step into the network without realizing it. Of course, not without developing the game I published (in my own utopia). I dived into the codes with zero knowledge. That's when my paths crossed with python for the first time. I was constantly breaking my game while trying to change the codes :D . Over time, I managed to develop something from existing codes.

During this time, my interest in coding increased and I met visual basic. I developed my own desktop applications. I had published a music application and continued to develop for a long time. Then I switched to visual c#. I also used a little database. Over time, I needed a platform where I could appeal to more users. So I switched to the web area.

C# Visual Basic
before 2019

First step on web

I created an outline for the music app with some html and css. But since I didn't know backend at that time, I developed a desktop application with c# where I kept the database in my local. With this application, I was able to render new pages from the draft of the website. It's actually the primitive version of what frameworks are doing now :D . in this way, I made the website sustainable, albeit for a short time.

C# CSS HTML
2019 - 2020

I learned basic programming

Unlike other students in the university, I quickly adapted to this course because I had a foundation. Object Oriented Programming, which I will take next semester, was extraordinary. Fortunately, I can reach the data structures and algorithms course.

C++ OOP
2019 - 2020

a software developer's kitchen : web

In the meantime, I returned to the web kitchen, which I took a long break. I came across with javascript and php. I tried to make simple web-based games to improve myself.

CSS Javascript PHP
2020 - 2021

I started taking some freelance jobs

In the beginning, i developed native drafts on web for mobile app. I was a bit biased towards mobile app development back then. We were already able to create a mobile view on the web, I used to think that there is no need for mobile applications. Then, a very important difference came to my mind, that mobile applications can be used without internet.

Then I got a comprehensive project job. Since I have PHP foundation, I decided to develop the project as LAMP Stack. I've learned enough MySQL to see what I need. I wrote more code than I needed, and now that I look back, I understand the importance of clean code and design patterns. I also applied responsive web design for the first time in this project.

Wordpress CSS PHP MySQL

jQuery
2020 - 2021

some initiatives from different fields

I attended the basic cyber security workshop. We wrote trojan virus for windows with Linux and saw the network world through the eyes of a black hat hacker. With the networking course I will take in the future, we have returned to the white hat hacker again :D. In that lesson, we learned socket programming and developed a TCP/UDP file transferring project with python.

I also used Python in a place, we formed a UAV team with friends from the university, we worked with python on the software side because we needed image processing.

Python Bash Script
02.2021 - 08.2021

I started my first internship

I worked as a front-end developer in a project called Labstar within BAUSTEM. In order to be involved in the project, I first learned reactJS. I learned how back-end and front-end teams work synchronously and the concept of API. During this time, I learned and used tools such as npm/yarn, git, postman.

I contributed to the Labstar project by developing the management panel with reactJS according to the api endpoints I got from the backend team.

ReactJS Git
in 2021

I learned advanced programming

We had entered an intense period with laboratory exercises and theoretical lessons. We no longer had the luxury of not knowing basic programming when starting a new language. We started to develop GUI desktop applications with java, an OOP based language. So I had completely figured out OOP in my head.

After that, we developed simple FPS games with java without slowing down. Thus, I have also somewhat satisfied my curiosity about the question that "how do they make these games?".

Java OOP GUI
in 2021

I continued to take some freelance jobs

My favorite thing is to be able to apply what I learned in another field in my own field. I experienced the most typical example of this here. I have used the components structure I learned from reactJS with a cleaner code and file structure in PHP. Thus, the idea of writing multiple lines of code, which I was proud of in my previous freelance project, turned into creating the project with the least amount of code.

In this project, I followed the SDLC method to avoid the chaos I experienced in the previous project. This is how I usually learn by learning from my mistakes.

Also, because Corporate Website jobs were coming in and they were often requested "urgently", I was quickly creating them with wordpress. But whenever I use site builders like wordpress, I feel like my freedom is restricted.

Apart from these, I also got a data visualization job. Getting started with another programming language was not difficult at all, once I grasped the programming basics. I completed the project by analyzing the data on graphs with Matlab.

Matlab Bootstrap PHP MySQL
in 2021

The power of the software community

The software has developed so much thanks to the community. In the simplest way, we consult google immediately to solve the bugs we encounter. Google shows us all the solutions offered by the community such as stackoverflow and github etc. In my spare time, I collect pens that I think will be useful for me from platforms such as codepen.

One day, while spending time with friends on discord with the music bot, "how do they program these bots?" The question came to my mind. I immediately installed my own bot on my discord server and started developing it. Since I am good with Javscript, I have never been unfamiliar. Then I thought why not present my improvements to the community and started contributing to open source.

Javascript Git
2021 - 2022

My new internship as a back-end developer

I started to work as a back-end developer in a major project called baugo.online within BAU Global Online. To get this job, I completed the case study by developing a simple restAPI with pure PHP. Firstly, I started by learning about the technologies that were used and planned to be used in the company. I learned CodeIgniter, a PHP framework, and MVC architecture. I can say that it is these architectures that make software one of the engineering disciplines.

Then I learned how to write restAPI and Auth procedures such as Authentication & Authorization with these and integrated the OAuth2.0 library. Although we can keep the session on the server side in PHP on the web, I have grasped the importance of JWT with Authentication procedures.

The sine qua non of restAPI are CRUD operations. In order to respond to front-end requests, we need to present our endpoints with Auth filters if necessary. Behind these are our CRUD operations that will enable interaction with our database according to the methods of the requests.

MVC OAuth2.0 CodeIgniter restAPI CRUD
2021 - 2022

RDBMS : More than 4 processes

Database management system was one of the most productive courses I took at the university, although it was not a course in which I could get a high grade. I had experience with CRUD operations and MySQL, super, I had a basic before starting the course. I was a little confused about Relational Algebra, but Relational Database is one of the most important achievements I have learned in this course.

I decided that this was exactly what I needed in my last project, and after I followed the normalization steps, I converted its infrastructure to a relational database. During this time, we also gained presentation capabilities such as Schema and UML diagrams.

RDBMS SQL
in 2022

NoBackend : Not Only Back-end

A back-end developer must have control over the entire project. Therefore, it will help as long as he has knowledge about other fields from time to time.

On this occasion, I got involved in the vueJS work of the front-end team. Since I have previous experience with reactJS, I easily understood the component structure. Unlike Prop/State parameters in ReactJS, parent/child parameters are more useful to me. During this process that I supported the front-end team, we had minor problems in building and exporting the vueJS project. I can say that it took us days to define a baseURL for assets :D . While developing our vueJS projects, our paths crossed with typescript, but I can't say that I have completely switched from javascript to typescript yet.

Later on, I had experience in CI/CD Pipelines via Gitlab. After pushing a new update to the project, I participated in devops processes to ensure that it was automatically built and deployed. Our PHP projects didn't need a build, but I wrote some YAML scripts to enable them to be deployed via ftp connection.

On the other hand, we completed and published our main project, baugo.online. Initial feedback was positive and we crowned our success by ranking 1st in the education category at the "20. Altın Örümcek Ödülleri" competition.

Typescript VueJS YAML CI/CD
in 2022

Cross-platform mobile application development

I have already stated my thoughts about mobile applications. At that time, I was a little biased, then I realized that mobile applications provide more possibilities than web applications, such as offline use.

Now I am biased towards native application development for a single platform. I was thinking old-fashioned in Web / Mobile App comparison, this time I'm on the innovative side :D . Developing a Cross Platform mobile application seems to me much more profitable in terms of both sustainability and cost. It is very advantageous in terms of being able to quickly release updates to both platforms with a single command, and not requiring development with separate programming languages for both.

Of course, although the ecosystem has shifted from the web to mobile, if web applications (I'm talking about the user interfaces we view with the browser) are not completely dead, Native application development will not die either. After all, mobile needs web tools like API. Because Cross-Platform Application development only brings together the components offered by both platforms and renders the output accordingly. I can say that this common structure meets the general user needs. Obviously, there is no need to shelve applications and develop cross-platform from scratch, but it should be the first thing that comes to mind when considering a new application, unless of course it's a comprehensive project that will use features specific to a platform. An additional advantage is that it can export to the web.

Here, I would like to give importance to the concept of Responsive. Since the primary ecosystem was personal computers in the past, after designing the desktop view for large screens, we provided a useful interface on the screens of mobile devices with responsive design. Now, since the ecosystem is oriented towards mobile, we can turn the cross-platform mobile application that I created by giving priority to mobile, into tablet and desktop view with responsive design. We can say that the concept of responsive has changed direction :D


Let's get back to our topic, we started learning React Native with an elective course I took at the university. Since I have ReactJS experience from my internship, I became familiar with the basics easily. What I noticed is that the script codes of ReactJS and React Native are the same, the component outputs are different. In addition, CSS has left its place to JSON structure, but its syntax is quite similar. Of course, such a requirement was felt in order to provide a component output suitable for every platform.

We proceeded by applying what we learned during the lesson on a project, first of all, I made it possible to use the prop/state parameters more efficiently to process the api requests we call with fetch/axios, and I also made the project a whole with Router and Navigation structures. In the future, I learned to use Hooks effectively. Although I did not use Model in the project, it was a great convenience to comply with the MVC architecture.

ReactJS React Native
in 2022

I continued to take some freelance jobs

I continued to use what I learned in my own work. Now I was able to develop projects faster with less complexity in coding. I have made the projects more sustainable by avoiding repetitive codes and by the advantages of the relational database.

When developing a project, there are 2 stages. The first is to develop from scratch and deploy the project. The second is to maintain the project after it goes live and continue to develop the requested updates. The more robust the first stage, the less difficulties we will encounter in the second stage. If a sustainable project is not developed from the beginning, that project starts to get stuck after a point and it may be necessary to start all over again.

Wordpress Bootstrap PHP RDBMS
in 2022

Get closer to machine code : embedded programming

Although it has just begun to be separated in our country, there are sub-branches called software engineering and artificial intelligence engineering in our university. At this time, I started doing a minor in software engineering. Thus, I developed my data structures and algorithm foundation and learned current methods of project management.

This is the first time I felt the difference between computer engineering and software engineering disciplines. The embedded programming course, which is mandatory in computer engineering, was not available in software engineering. Maybe that's why software engineering starts directly with high-level programming languages instead of starting with low-level languages like we do. Of course, this field is a discipline that we collaborate with electronic engineering.

We started the process with arduino, the starter package for embedded systems. Since low-level hardware is used in this way in embedded system programming, it is important to prefer a low-level programming language (close to machine language). Although I do not use a physical arduino, I developed a digital clock in a simulation environment with tinkercad. The components of the project consist of arduino, circuit boards and LCD panel. I used controllers and sensors such as buttons and potentiometers on the circuit board. In the programming phase, I created a lifecycle with the setup() and loop() functions. I also created the necessary methods to listen to the auxiliary components.

C++ Arduino
06.2022 - 11.2022

Internship as back-end developer at a startup

Every company has its own culture of buback-endsiness management. Our project management method here is Agile. We progressed as springs by sharing tasks with Jira software. Also, I realized that working with branches and pull requests is very important for team development.

New technologies are often used by startups, and I've been involved in this process. To learn NodeJS and MongoDB, I developed a simple restAPI with authentication procedures and CRUD endpoints. Now I was ready to get involved in the main project.

We started the new project with our senior's first commit push using the microservice layered architecture. Since we developed the project with NextJS, we were able to carry out back-end and front-end developments on the same repo. While we, as the Back-End team, developed restAPI, the Front-End team simultaneously created the user interface of ReactJS in NextJS. Of course, our co-working space was Postman.

On the back-end side, we have developed restAPI in accordance with the service layered architecture with Models, Repositories, Services, Controller and handlers (api endpoints) containing CRUD methods for each table. I also defined database connections, authentication and user role filtering with Middlewares. Although we need a relational database from time to time, we have successfully managed data management using MongoDB and NoSQL.

Since I had experience with authentication before, I took on the task of authentication, but I had a painful process due to a small mistake. I used Firebase because we wanted to have SMS authentication. I used firebase library on the Front-End side because I needed to use a two-stage form. I lost some time because I tried to use the firebase-admin library on the Front-End side, which I needed to use on the Back-End side. Although it was not clear from the bug reports, luckily we figured out the cause of the problem and fixed it. After completing the access_token validation methods, we defined the authentication filtering for the required endpoints with ExpressJS.

While there was a short time left for the delivery date of the project, we had an important shortcoming. I quickly developed this chaos instant payment service by taking on the task. Since I had experience on iyzico integration before, I was able to quickly adapt to a different payment service. After a difficult development process, we deployed the project by AWS with minor shortcomings. One of these shortcomings was the need to separate the development environment from the product environment. I solved this problem in the export phase by examining the Pipelines logs.

Firebase NodeJS NextJS MongoDB NoSQL AWS

ExpressJS Git
10.2022 - present

I started as a junior back-end developer

When you contribute to a big project, you embrace that project. Even though I was temporarily set aside for internship, I was following the status of the project during this time. After completing my internship, I started Bau Global Online again as a Part-Time Junior Back-end Developer.

After getting involved in the project again, I did the best thing I ever did. I included the applicable methods that I just learned in the project and the team. Thus, we created a more efficient development environment. In addition, I taught the technologies we use to newly joined interns and defined some tasks for them to improve themselves.

Over time, I made developed to our main project, baugo.online, by adding new features and improving the existing structure. I also contributed to side projects simultaneously as needed. One of them was etkilesimlikitapokuma , which is a Tübitak project.

I also noticed this while messing around with the database side. By reducing many things we do on the back-end side to a single SQL query, we can significantly increase performance with less effort. Then I started to research what SQL can do and I can say that my horizons have expanded.

MVC CodeIgniter MariaDB restAPI
in 2023

I learned native mobile app development

I mentioned my opinion on mobile applications in the previous topic. Maybe I tried to develop Native mobile application this time in case my ideas change again. The development process was a bit of a hassle because it took me some time to adapt to Kotline and Android Studio. Actually, a Cross Platform mobile application is being developed with Kotlin, but due to the content of the course, I turned to Native application development in my first project.

One of my difficulties was using a comprehensive editor. Android Studio was a bit complicated as I got used to the simplicity of VS Code. I've been trying to do it with VS Code lately so I can keep track of everything together. Another difficult point was the transfer of parameters between the components. I solved it with some effort. My first impressions are as follows: I think I prefer React Native because of the flexibility provided by javascript.

Android Studio MVVM Kotlin Retrofit
in 2023

a new field: machine learning

Artificial intelligence has been in vogue lately with ChatGPT. Due to the profession we have acquired, we have to adapt to the new transformation. We started this process with the Machine learning topic we chose in our graduation project. We are still in the learning phase, we will soon teach the machine how to learn. Before revealing the project, we came up with a proposal and determined our road plan. At this stage, we learned the relationship between Artificial intelligence, Machine learning and deep learning and data processing methods.

Future

And keep improving ourselves.