Gabriel Willemann
Introduction
My name is Gabriel Willemann and I am a Software Developer.
I started programming in 2007, at 16, with batchs scripts and small pascal programs. My first job as Software Developer was in 2008 and if you want to know more about my experience, click here to see my linkedin.
Skills
JavaScript is my main skill. For JavaScript framework I've been working with Vue.js since 2017 and I really like it. If you see my profile on StackOverflow, you will see that I am very good with Vue.js.
I can also work with React.js, because it is very similar to Vue.js and I've good experience with JavaScript.
About CSS frameworks, sometimes I use Bootstrap or libraries based on Material Design like Vuetify. If necessary I can create styles with "Vanilla CSS".
In 2015 I learned Ruby on Rails and worked intensively with it between 2017 and 2019. At moment I still maintain some projects.
In 2020 I'm working more with Node.js and TypeScript, but I bring many concepts from the Ruby on Rails ecosystem.
I work since 2008 with PostgreSQL. I also worked with SQLite, MySQL, Oracle and SQL Server, but the PostgreSQL is my favorite relational database. I recently ran tests with MongoDB and I liked it.
Therefore my applications generally have:
- Vue.js as JavaScript framework for frontend, but I can work with React.js.
- Node.js or Ruby on Rails as framework for backend.
- Nginx as HTTP server and load balancer.
- PostgreSQL as relational database.
- Typically, I host my apps on a VPS with Ubuntu Server. But I also really like the Jamstack architecture.
- For CSS, it depends on the customer's need.
- For mobile apps, I like to create Progressive Web Apps (my preference) or Quasar Apps.
Another important skill is that I'm self-taught. I like learn from documentations and read code from frameworks and libraries. If I have a challenge, my first step is to go to the official repository and get the documentation.
Contributions to Open Source Community
In addition, I also really like open source software and whenever possible I try to contribute to the community. You can also see my GitHub profile and my main repositories are:
- sharkapi: Library built with TypeScript to create API (REST or GraphQL) importing metadata from ORM. Based on "Don't Repeat Yourself" principle.
- vuepress-theme-material-free: Theme for Vuepress used in this blog.
- my-car-came-from: Small app for information about license plates. Built with Quasar and can be run as a SPA or as Mobile App for Android.
- fast-help: This repository contains guides and commands that I can't forget. Sometimes I use some tools or commands, but after months (or years) I forget some details.
- mudese: My wife is a psychologist and I built a static website with NuxtJs for her.
There are others repositories on my GitHub, but they are examples, tests or forks for send pull requests.
I also have a profile in NPM, click here to see.
Another important contribution is that I help others on StackOverflow. I enjoy sharing knowledge and helping other software developers to grow.
My Personal Blog
The purpose of this blog is to share tips and my opinions on technologies. In addition, this is a way of helping the whole community.
As I was born in Brazil, I wrote the posts in Portuguese, but if you don't speak Portuguese I will do a summary.
My Articles About Vue.js
- Vuepress: How to install and configurate
- Vuepress: All steps to create a blog
- Vuepress: How to create custom themes
- Vuepress + Netlify: The Benefits of Jamstack Architecture
- Vuetify: How to create beautiful buttons
- Vuetify: What the difference between selects and combobox?
- Vuetify: How to create a plugin for simplify the datatables
- Prerender: Improving the SEO of Single Page Application
- Nuxt.js + Prerender: How to create a Static Site for SEO
- CSS: Using Vue.js and Tailwind together
- CSS: How to write CSS in Vue.js
- PWA: All steps to create a PWA with Vue.js and Workbox
- Quasar: How to create a Mobile App for Android
- You can use Global Event Bus, but be careful
- Vuex VS Vue.observable
- How to configurate Prettier with Vue.js
- Vue Slots: New sintax and find out what's changed
- Vue.js and i18n: How to use i18next
- How to create a filter for Vue.js
- My workflow to create screen prototypes with Vue.js
- How did I start with JavaScript and Vue.js
My Articles About Ruby
- How to configurate Ruby on Rails with Puma and Nginx
- Learn to create a Linux Service with Systemd for your Ruby on Rails app
- Fast tutorial about Rubocop
- How to sign a XML with Ruby
- Comparison between "GraphQL-Ruby" and "JSONAPI-Resources"
- Fast tutorial about Ruby on Rails with GraphQL
- Mini-course: First steps with Ruby
- How to create a REST-API with JSONAPI-Resources
- Learn Ruby and change your mindset
My Articles About Node.js
- Unit testing with Node.js, Jest and TypeScript
- Fast tutorial about Node.js and PostgreSQL
- Fast tutorial about Node.js and SQLite
- How do I use Sails.js to connect with legacy database
- How to use JWT with Node.js and Express.js
My Articles About React.js
- From Vue.js to React.js: Comparison
- Comparison: Vue Router vs React Router
- Comparison: Vuex vs Redux
My Articles About JavaScript
- JavaScript and algorithm AES for cryptography
- How to use Service Workers
- Tutorial about v8n: Library for validations
My Articles About Conferences that I Participated
My Articles About Wordpress
- Wordpress: Translate themes can help the community
- Wordpress: How to create a custom theme
- Wordpress: How to create a plugin
My Articles About Linux Containers
My Articles About Redmine
My Articles About Clean Code
Others Articles
- Tutorial about OpenSSL and certificates PKCS12
- Linux: You must to use the Snap Packages
- I found out a vulnerability in my internet provider
- Introduction for Software Architecture
- JSON-API: Standard for create a REST-API
- CSS Bootstrap V4: Tips for migration
- The best way to learn how to write code is to write code