When 2021 started, we were already in the middle of pandemic. Working from home was a new experience. Companies in multimedia industry don’t provide work from home to their employees due to their tight compliance. But this pandemic redefined that workflow and gave us this opportunity. That too for all of us.
I had mixed experience with work from home. Yes, we don’t get to see our collegues face to face. We have to be in front of webcam for that. I really wished virtual reality was so common that companies has made it default for meeting. 😅
In this global lockdown period, I spent time with family after 6 years of a marathon of being out from my home. I am able to see now what life really is. I have started to get answers to all my childhood questions. According to me, childhood is just a demo of life. Everything which is taught is temporary, and we have to re-learn some stuff in order to grow. We can’t live with same truth which were taught. They become irrelevant.
With that said, let’s move to the more technical part of the post.
AWS EC2 as another PC
In 2021, I bought my first laptop. And it came pre-installed with Windows. And you might already know, I’ve been using Linux from about 10 years now. I could have dual-booted the laptop with Linux, but I also didn’t want to tamper my laptop for the time span of the warranty at least.
So in a nutshell, I’m using Amazon Linux 2 on EC2, Windows 10 on my local computer. This setup gives me best of both worlds. Will switch to Windows 11 on my laptop when it becomes more stable.
Using VPS as a development environment also keeps me closer to AWS and their eco-systems. It’s easy to get my hands dirty with all the buzz of cloud native and serverless going around.
This setup works in cases where your system is not very high end, but the task at hand requires some high end system. By high end, I mean superior in terms of CPU, RAM and Network. And as the workstation is in cloud, you can access it from any location from the earth.
Started exploring information security
This started when I was compelled to upgrade my website to HTTPS. HTTPS is also a pre-requisites to HTTP/2. Now I know what happens between the browser and the server when you first visit that site.
OWASP is one of the project I stepped upon in infosec regard. Specially it’s Top 10 Web Application Security Risks. You may be already aware of Cross Site Scripting and SQL injection from before. This list compiles similar vulnaribilities which we should avoid while baking our application. Every web developer must read this before they want to create something of large scale.
I’ll be creating more content with respect to information security in this year for sure.
Managing Infrastructure is DevOps
The word DevOps was not always there when I provisioned my host to install WordPress on it. It has evolved over time. If you ask me where is the line between a actual development and devops arena, I would say development is only till you push your code to source control. Everything after that is DevOps till deployment of the application and monitoring. Yes, auto-scaling is also covered in the devops.
I can do followig stuff on my own because I didn’t know the line between DevOps and a Developer.
- Registering domains and provisioning servers
- Enabling HTTPS on a domain
- Unit test and CI/CD
- Managing DNS
- Setting up Jenkins and building on Jenkins (post coming soon)
I’m thankful that enabling HTTPS on my domain has exposed me to information security.
Along with the above mentioned tasks, this year I also stepped into Terraform and Ansbile. And while being closely connected to AWS. I also had some hands on experience with CloudFormation to provision AWS resources. CloudFormation is also included in SAM framework which is a serverless offering from AWS.
But for now I am better off with Ansible for bootstrapping servers. And I also don’t understand how is Terraform cloud agnostic when we have to write code which is provider dependent. I mean, won’t it needed to be re-written when one wants to move to provider A to provider B?
I first did this, and then later realized that these falls under the umbrella of DevOps.
Pomodoro does not work for me
Talking about time management, I have tried Pomodoro technique before to stay focused on the given task. Although it’s a good start if you are looking for something in this range. We even have diffenrent gadgets and online application which follows this techniques.
But with my personal experience, I think it’s too tight and does not gives much flexibility. One might want to break the session in middle due to this inflexibility. I’m saying this because when I keep working for long.. I feel like taking a break in middle of a pomo session. But I also feel like I taking a break disturbs the flow. In lockdown period, when almost everybody is at their home, there is more distraction because of the homely environment. And this worsen the situation.
Pomodoro was started by a student. And still I guess it works best for students only, not for doing some day job.
Flowtime works better in my case. Unlike Pomodoro, Flowtime affects your psycology. You are not forced to work in a bound time. You can take as many breaks you want. And of whatever length you want. But before taking a break, you have to specify how longer your break will be. If you don’t come back to resume your task, you’ll feel guilty. That’s how it works. It is also each with Flowtime to generate a report of how long you worked, how much time in total it took to complete the task.
Along with Flowtime, there are also some general lifestyle tip and tricks I follow to keep myself productive.
Approx 10 years of GitHubbing & StackOverflowing
I have almost been on GitHub for 10 years. It was 2018 when I got my first full-time job.
During these years on GitHub, I was mostly active on Python and general web development related technologies.
There has been similar story for my StackOverflow.
In this 10 years, I’ve mostly asked questions than answering one. Once again, I was most active in Python tags spreading over all years.
The Year 2021
Now as I do each year, this section and the next one I’ll talk about what I had planned for
This was perhaps the first course I did after getting my role as a Full Stack Developer. And as a someone who had not read about SDLC in college, content in this course helped me to understand what’s happening around me. I got to know what stakeholders are (although I knew who they are before, but I didn’t what there is a word for those people).
I got to know about requirement vs specification, functional vs non-functional requirements. I got to know about different software development models, such as waterfall, spiral, agile et cetra.
I have completed the Udemy course I was having from last year and now I’m reading whitepapers and using their services/SDKs.
I have made a couple posts, which covers S3 events to invoke Lambda.
One new update regarding AWS certification is that my current employer funded for Developing on AWS classroom training for which I’m thankful for.
I have gone through the Docker part already from this course. And in the last year I also worked on creating a continuous deployment pipeline.
I can now successfully take a non-docerized application and dockerize it. I can also configure Jenkins to build and push images to Docker Registry.
- The Pragmatic Programmer
I have finally finished this book by Andrew Hunt. This book is aimed at people who want to become moreeffective and more productive programmers. Perhaps you feelfrustrated that you don’t seem to be achieving your potential.Perhaps you look at colleagues who seem to be using tools tomake themselves more productive than you. Maybe yourcurrent job uses older technologies, and you want to knowhow newer ideas can be applied to what you do.
I’m not in a mood to write a full review of the book here, but . And this is one book which I recommend to someone new in software development alongside the book Soft Skills.
The Year 2022
I haven’t explored the Kubernetes last year, but this year I plan to explore it in the first quarter.
This is my one step forward towards making data-structure less alien in life so that I can relate to it and think natively in data structure.
- Soft Skills: The Software Developer’s Life Manual
ETA to finish this book was in 2021 itself, but there are some points discussed in this book which I want to implement in my real life. I think I should just complete that book in first pass and then come back to the chapters which needs focus. And this is what I’m going to do in this year.
- Python Testing with pytest
I have been talking a lot about unit-testing and Test-Driven Development lately.
I gained traction with TDD when I read Learn Go with Tests. It was a totally new experience for me to learn a new programming language. I was not only learning Go, but also TDD.
With this book, I want to be strong in testing in the strongest language I possess.
- Delve more into Data Structure and Algorithm
I have already mentioned Data Structures in Real Life Projects above. Alongside that, I’m actively following Study Plans from Leetcode.
- Learn more about information security
There are lot more blog posts to come year which will be related to information security as I explore more into this field. So brace yourself.
- Focus on System Design; HLD and LLD
I have been getting calls from product based companies in past year, but this is one of the topics I’m not confident with. Another one being data structure and algorithms.
For lower level design, I’ve tried to read, interpret and write my own class diagrams, component diagram.
There we some books I was reading on last year. I’ll keep following them at mild pace as I proceed with my day job. I focused more on Computer Networking part. I am following the book called Computer Networking: A Top-Down Approach.
- Do more Cloud Native development
Kubernetes is my first step towards cloud native software development. Serverless is the next generation development paradigm. But according to me I think it does not play well with the traditional application servers like Flask or FastAPI. The entire Flask/FastAPI thing needs to be re-architectured into serverless paradigm.