About
Table of contents
Hello, I'm Willian Antunes! Feel free to call me Antunes if you like so. I enjoy sharing what I learn and code, but not only that. Here I outline some information about me that may come in handy for you.
β Tools I use to work
Here's what I use. Suggestions appreciated!
Software
Either I code on Ubuntu or macOS. Thanks to my personal-environment project, I can quickly set up a new Ubuntu OS. My personal computer is a Windows 10 Pro, but I use VMWare Workstation Player to run an Ubuntu VM. Apart from the operational system, I use the following:
- JetBrains All Products Pack
- Excalidraw / tldraw
- StackEdit
- diagrams.net (formerly draw.io)
- SqlDBM
- PEV2: Visualize your EXPLAIN plans
- Postman
Hardware
- Gaming and working PC:
- CPU: Intel i7-4770
- Motherboard: Gigabyte GA-Z87X-UD3H
- Memory: 32 GB of Corsair Vengeance LPX
- GPU: Radeon RX 560 Graphics
- PSU: GAMEMAX GM500
- Case: Cooler Master ELITE 335U
- Headphones: AKG K92
- Keyboard and mouse: all from HP and wired
- Webcam and microphone: Logitech C270 HD
- Laptops:
- Dell Vostro 14 5402
- Dell Inspiron 14 5402
π Fun facts
- π§β𦲠I had lots of hair when I was a teenager.
- πΈ I played drums during a music festival in high school.
- π As you can see here, I tried to surf.
- π Jump rope is one of my passions.
- πΉ When I visit a new city, I have to do a kickflip, like I did in Toronto, Canada.
- π€ I wrote my political stance on my BlogSpot.
- π² I coded a lot of VB.NET, C# and Java especially, but now Python is what I love most.
- π I have Osgood-Schlatter disease.
- π± I had Prognathism. Know how it was solved here.
- π΄ I went from S. Paulo to Santos, but with my "little thin" (Brazilian term for bicycle)!
π A Brief Story of Myself
I always defend my passion for programming because of my curiosity π.
The trigger
My first job was with CartogrΓ‘fica in 2006. It is (or was) a graphical industry company. I would use Adobe Creative Suite 2 (mainly with PhotoShop, Illustrator, and InDesign) and CorelDraw 12, being the latest tool I used the most during that time. Because of an economic crisis emerging years later, the company where I was working suffered a massive drop in incoming requests.
Typically, I would work all day creating folders, flyers, cards, and many other graphical things, but it dropped to around 60%. Thus, I had a great deal of time to do whatever I wanted. Researching about some competitors, I noticed that most of them had websites, but my company did not. That's when suddenly the penny dropped. I realized an opportunity to create a site for them! From there, I started watching many tutorial videos about PHP, JavaScript, HTML, and CSS, as well as about how the internet works, what a domain is, HTTP, FTP (I'd use it a lot to deploy websites), and many more. Apart from graphical tools, this was my first contact with technology! Afterward, I could create and deploy a website using PHP! I fell in love at that time π. It was in 2008.
As a result, I started developing many sites for some companies.
Here I give my thanks to Maujor. It was essential. Many tutorials for HTML and CSS in there!
Internship and my first permanent job
Understanding what I was supposed to do, I began studying to enroll in college finally. Subsequently, I could start a technical course in 2009 and college as Information Systems Technologist in 2010. I was doing both simultaneously, but when the first one finished, I had more time, hence finally going over the idea to get a job.
Thus, my first job as an intern was at Siemens Enterprise Communications (nowadays known as Atos Unify) in 2011. I was in the Professional Services team. I could perform between many areas such as contact center, networking, and applications. The last one was my focus. I was made permanent in 2013, and I worked there until 2016. I learned so much during that time that I am grateful for the great opportunity I had, not only because I could "taste" many flavors of IT areas, but the people I met β fantastic humans beings with great knowledge π€.
I think it was fundamental for my career for many reasons. To point out some:
- I learned a lot of English through documentation and meetings. I had to read documents about OpenScape Voice, OpenScape UC Application, OpenScape DLS, and many other products to understand them and create custom applications on top of their SDKs.o
- I had to develop software, know what applications had been developed so far, and support them. Java, VB.NET, and C# were the languages I used.
- I had to comprehend TDM, VoIP, SIP, RTP, and many other protocols.
- I had to understand networking because it plays a key whole in everything, that's why I got my CCNA (know how I got it here), even working in the application team. That opened my mind and only showed that I only knew a glimpse of the whole thing (still being true nowadays).
- I got in touch several times with Windows Servers, Linux servers, either through virtual machines (VMware solutions) or physical ones.
Soon, the economy would face another crisis, proving again life is not a bed of roses. As a consequence, companies started to reduce costs. Unify was hit hard, and I was fired during the whole process π¨, but I was working in another company one month later π₯³.
My focus in programming as a developer
In April of 2016, it was only possible in my new job as a web developer at Editora Globo. Even being in the application team at Unify previously, I had to touch on many other aspects. It isn't good if you're willing to concentrate your efforts in one specific area of IT, given it's enormous, but I could circumvent that with this new job.
Formerly I was used to PMOK. Then I had to understand KANBAN, and afterward, SCRUM (by luck at that time, using JIRA as the tool π).
Over almost three years, I met amazing people and learned even more things, to mention a few:
- Usage of git as the main version control (yes, I had to get in touch with SourceSafe and SVN in my previous job).
- Java 1.6, 1.7, and 1.8 versions. JEE servers (nowadays is known as Jakarta EE) such as JBoss.
- Could implement Kotlin in an application based on JVM 1.7. Huge improvements, like preventing NullPointerException to occur, including as well many tests to assert developed business rules.
- VRaptor, Apache CXF, Spring Web, and Spring Boot.
- Even more HTML, CSS and JavaScript.
- First contact with Docker and CI/CD solutions.
- First contact with integration tests and functional tests. I even gave a talk about the topic where I discussed Cucumber and how to use it with Selenium and Spring (Infoglobo/cucumber-selenium-spring-test).
- How to handle meetings that indeed bring value π and leading projects.
- Could understand a lot about business rules which govern how products work for the users
- I got another certification, this time OCPJP 8 (know more how I got it here).
My first contributions to open-source projects came in that period, where I saw opportunities for WSO2 (esb-connector-ldap/pull/3) and Apache Camel (camel/pull/2318 and camel/pull/2350).
Everything is eventually going to come to an end, and it wasn't different with this job. After a time, my manager quit his job and started in another company called Juntos Somos Mais (it will be identified by JS+ from now on). After his departure, after many other situations that had happened, most developers of the digital strategy area decided to leave the company, I included. My ex-manager then, looking at this, invited two other colleagues and me to work with him on a new adventure, where I would learn a new language and build with them an entire software ecosystem, from zero, starting from the end of 2018.
Building everything from scratch
I think here was the game changer for my career. I had to deal with many business rules, new technologies, and people. The latter I had much contact with in my previous job, but totally different in this one. Because after some time, I would experience a role as a coordinator, it was really great by the way.
JS+ had a partner that served his products. None of them was ours because we didn't own the source code. Thus we were hired to solve this and bring a digital strategy culture inside the company, to put it shortly. It might also be noted that the IT area was born at that moment.
Getting to know Python
Time was a critical factor. The idea was to deliver everything JS+ had with the partner in less than eight months. To achieve that, we decided to use Python and Django as the main framework. I even created some playground projects to understand how they work, including Flask as well:
- willianantunes/python-playground: Getting to know Python
- willianantunes/django-graphql-playground: Yet another Django GraphQL Playground project
- willianantunes/flask-playground: One drop at a time? Let's see if that's true
I wrote an article too, in which I made a comparison between Python and Java; it was my primary language at that time.
Translating business rules into code
This title reflects what we did a lot, and people were key here. After many meetings and playing with what had been built by the partner, we took what we had understood and translated that into code. Django made it a lot easier. With a vast ecosystem, strong community, and well-known plugins, it was pretty easy and straightforward to deliver empathetic code, including meaningful tests.
Being resilient and asynchronous
To pull off these two essential properties, we decided to use a managed message broker; it was Amazon MQ at that time. Sadly Pika Python Client wasn't an option because of its current implementation of the AMQP protocol. Amazon MQ required version 1, and Pika only supports 0-9-1. Then we had to study alternative protocols; that's when we knew stompy.py, which implements STOMP. Django didn't have any plugin for that. Thus we decided to create a plugin for our own and released that to the community:
It was used in many services to accomplish many tasks and was one of our keys to success.
CI/CD
We struggled a lot with it. We hired a third-party company to create what we needed, but it didn't work. Then we had to do that ourselves. We had to quickly choose one tool out there. Azure DevOps was our choice, and we had to understand how it works to match our gitflow and environments (like development, staging, and production). It was difficult, but we could handle it!
Azure DevOps Classic Interface was good for people to quickly get to know how it works, then spreading the knowledge among the company.
Libraries
We created many libraries to deal with and solve various problems, like connecting with the broker, logging, authentication/authorization, and many more. Some are private, but some are public too! I recommend that you access the organization here.
What helped us sleep
People are crucial, but the tools they use are too. What helped us sleep during the night is easy to answer, which is Kubernetes. No more words, but soon I'll write some articles and attach them here π.
New challenges
We delivered the new platform on time, but soon after that, more was needed. JS+ had to grow the team to build even more fantastic things on top of what we had built. Thus the platform would have to be evolved as well to support everything. To handle all aspects of it, the CORE team was created, and I was put as the coordinator for this team. It was a great experience!
Culture plays a vital role in the whole game. As more people are engaged, how could we keep it that way? Apart from that, how to use agile in a company that wasn't accustomed to it? I had the opportunity to live that moment too. Hence I got more experience in that field.
As any developer out there, suddenly, the idea to work abroad would knock on my door.
What is happening now and the future
At the beginning of 2021, I looked over some opportunities to work in a company abroad. Although my English wasn't good, I could pass in an interview. In March, I was gathering all the required documentation needed to go into this new adventure. Sadly the plan had to be stopped π€― because of the pandemic. If I had started months ago, I think the story would have been different.
Since the English part of the interview wasn't good, I decided to focus on it. Also giving some personal projects that I would like to concentrate on, I thought it was time to quit my job at the beginning of 2021, and so I did.
Rave of Phonetics and this website are some results of my decision to take a sabbatical period. Nothing like new experiences π!
As a consequence of the love I told you at the beginning of my journey, I've never stopped studying and learning new things in programming. Have you ever read something like "software developers are students for life"? This can be seen as a burden because it's accurate, but I love it π!
Get discounts! Let's help each other π
β Buy me a coffee
If you enjoy my content and would like to buy me an honest coffee β for that, I would very much appreciate it π.
bc1q7tcdads60k7m9qu9xemuc8rct3ut5zsed9ajfs