The White Rabbit

I would spend 55 minutes defining the problem and then five minutes solving it. (Albert Einstein)

Published on Monday, 27 March 2023

Tags: about1 cv1 contacts1

About me

Who's behind this blog? Short self-introduction. Contacts, links and further websites are provided for more details.

Who am I?

Hello World! 🤓 I'm T.W.R. (or Antonio for anyone outside The Matrix), a software developer with a passion for programming, data analysis and maths 📉. Currently, I work as a Specialist Programmer 👨‍💻 in a DevOps team at Infosys.

I graduated in Electrical and Electronic Engineering (Bachelor) and Embedded Systems (Master) at Duisburg-Essen University (Germany)... and none of these degrees were really that relevant for my daily work, which is instead more aligned with my personal interests. Anyway, if you're interested in a useless keywords-oriented and misused CV, check out my LinkedIn Page.

Usually, I upload some code to my personal Github Repo, except for this blog code, which is hosted on my new Github Repo.

I started my first long-lasting blog as a bachelor student many years ago to simply not forget things. Later on, I realized blogging was pretty satisfying, for the sake of sharing my dev journey 🙂.

Last but not least... I like coffe ☕︎ (espresso, american, whatever kind of ...), patterns and recently got interested in financial investments.

If you would like to give me a feedback, just drop me a message on Twitter or fill out this form.

Experience with Cloud

Despite being familiar with the cloud semantic, I only have experience with Google Cloud Platform, which I used to host some of my online apps. In particular, I've used services like Cloud Run (deployed using Docker), Cloud Storage and Firestore.

Experience with programming, query languages and frameworks

I'm most proficient in Python. Whenever possible, I use it for all my personal applications backend (with Flask), due to the very fast development process. I started to use it since years, during my Bachelor. Common applications: API fetching, time series analysis, machine learning models testing, statistics, simulation of scientific models, algorithms implementation (markov chains, graph theory, matrices).

In my daily work I use (Oracle) SQL to manipulate data, together with Bash scripting for automating report generation and data log analysis.

If need to implement a well-structured and user friendly frontend, I use Javascript frameworks. In particular, ReactJS (e.g. "Diet App" calculator is one of my first small ReactJS online applications).

To build this blog, I used NextJS 13, built on top of ReactJS. I preferred it because of the more suitable framework structure and the chance to deploy with server side rendering (other than with static client-side content).

There are some programming languages I used in the past for more than 1 year (especially before and during my university studies), but not using lately: MATLAB, C/C++, Visual Basic, PHP, LabView.

I've dealt with Java (in particular Spring Frameworks) coupled with Angular for less than ~6 months, during my onboarding process in 2021.

I like to do exploratory analysis with Orange (it's like Tableau, but open source), to test ideas quickly. I use it to start designing machine learning models or investigate some statistical hypotesis, beside Python.

What Version Control System do I use?

For very small personal projects in Python I start using Jupyter Notebook (local development only). As soon as it get more "interesting", I will upload things on GitHub using TortoiseGit.

My development core philosophy

Programming languages are mostly part of the implementation layer, which only comes after the design. Implementing any "cool" feature in a project which should not exist at all is just a waste of time. Therefore, the priority is to first answer the question: What are the requirements?. That is the starting point.

If you don't get the requirements right, it doesn't matter how well you do anything else. (Karl Wiegers)

The second question is: What are the optimization metrics?. For example, performance is not always critical. Indeed, sometimes development time is the most important factor. Therefore different approaches must be taken for different metrics.

Premature optimization is the root of all evil. (Sir Tony Hoare)

Depending on the project complexity, it can make sense to follow the Test-Driven-Development principles or keeping them in mind even if not strictly following them. I think development must be also flexible and often TDD does't offer the right degree of flexibility. The same can be said about programming paradigms: better OOP or procedural? Should we use complex Logging tools just the print function? Can caching be used in my project?

So we need to think about what's the best compromise for our goals and do not forget that tools and strategies must fit our needs - if possible - and not viceversa.

If the only tool you have is a hammer, it is tempting to treat everything as if it were a nail (Abraham Maslow)

My experience with Linux

I use linux systems as backend servers, in both my daily job and hobbist activity. In the latter case, I started to use a 24h active Ubuntu Server on Raspberry Pi for personal financial analysis and managing Telegram bots. Why? Because these tasks require collecting information quite often or being active most of the time: using a personal computer or laptop would be a waste of resourses, while cloud computing would be too expensive.

2022 Milestones

  • Created a coding contest (here's the winner's LinkedIn post). I really enjoyed creating test cases and reviewing programmers submitted codes.
  • Passing exams to become a power programmer at Infosys.
  • Finishing the Google foobar challenge challenge.
  • Finishing a GCP project, but later shifted to home server backed with GitHub (currently archived (app)[/tools]). This made me learn ReactJS and Docker too, for the first time.

  • Published ~293 total posts on my old blog and an year average of 20 unique users per day.