mariossimou.dev is a gateway for developers to read and experiment building modern web software!
Feeling lazy to go through the posts? Here is the hottest one.. straight out from the over!
Published on 17th January 2024
By Marios Simou
New articles are released every few weeks. Topics will vary over the period, but in general, they will cover the full development cycle of a software.
Published on 17th January 2024
By Marios Simou
Published on 25th January 2023
By Marios Simou
I don't want to rant too much, especially since that skill has never been my strongest point, but here is a quick introduction to myself.
I am passionate about web technologies and I like to experiment with tools and libraries on a regular basis. This activity it more like a habit to me. Although the bulk of my experience is focused in front-end development, I am also interested in back-end development and architecture. For those reasons, you will see me writing posts that span between both of those areas, including design patterns.
Lastly, my experience has taught me that there isn't a perfect software, rather a software that is developed based on the trade-offs of a list of business requirements.
Simply put, cloud computing is the delivery of computing services—including servers, storage, databases, networking, software, analytics, and intelligence—over the Internet (“the cloud”) to offer faster innovation, flexible resources, and economies of scale. You typically pay only for cloud services you use, helping you lower your operating costs, run your infrastructure more efficiently, and scale as your business needs change.
Back-end development means working on server-side software, which focuses on everything you can’t see on a website. Back-end developers ensure the website performs correctly, focusing on databases, back-end logic, application programming interface (APIs), architecture, and servers. They use code that helps browsers communicate with databases, store, understand, and delete data. Containerization is also another skill that is required.
Continuous Integration involves a series of practises that evaluate the artifacts of your software in a continual manner. The end goal is to automate repeated tasks between members of a team, allowing to them to focus implementing the bussiness logic of your software. It's often implemented in a collaborating environment, where multiple developers are working on the same software using a version control system such as github. A step further, is Continuous Delivery, which automates the deployment workflow of your software. Over the years, practises such as blue-green and canary deployments have evolved to accomodate that need.
A decade ago, the definition of front-end development would only meant the creation of a graphical user interface (UI) using HTML, CSS and Javascript. However, the field has massively changed since then, adopting sophisticated tools/complex abstractions that achieve the same goal but also ensure scalability and work in a collaborating environment. We call those abstractions frameworks/libraries and the most known ones are React, Vue, Angular and Svelte. In addition, nowdays, accessibility and performance monitoring play a crucial role within the field.
A software is intended to cover the core functionality of a business idea, but at the same time, developers need a way to assess and evaluate the correctness of their functionality. For that reason, the act of software testing was born, which introduced different types of testing on different parts of the development cycle of a software. The most common ones are unit testing, functionals and end-to-end(e2e) testing.
Design patterns suggest the use of industry's common best practises for developing a specific piece of software. However, design patterns are not there to force you to write software using those patterns religiously, but to suggest ideas and ways to approach different types of problems. A good understanding of design patterns will help you to design more efficient and structured softwares.
A Data Management Systems (DBMS) is a set of programs that allow a user to interact with a database. The combination of a DBMS and a database allow to users to store, manipulate and retrieve data in a secure location, however, the architecture of each DBMS may vary. Dozens of databases are available, with most of them to support either an object-relational (ORDBMS) or object-oriented (OODBMS) architectural paradigm.
Stay up to date subscribing to my newsletter. You will be notified with the latest published articles!
Feel free to ask questions, report issues and meet new people
All my projects are on github. Check them out!
Tweet with me any question you may have