The Benefits of side projects : Keep tinkering šŸ„·

Side projects ftw

Since 2017, I have created and been maintaining cfptime.org, a community-driven project aimed at centralizing call-for-papers information for information security conferences.

Initially, my first goal was simple: we had an intern joining our team and who was about to work on Django Framework, I didn’t know it and I wanted to know the basics. Additionally, some other goals were simply to have fun, contribute something valuable to the community.

Today, seven years later and 1200 commits after, cfptime.org is averaging 12k+ unique visitors per month.

Cfptime.org has been running for years on the cheapest DigitalOcean droplet without any flaws.

  1. The initial stack was primarily Django vanilla 2.4, with no APIs, and used Jinja templating and Bootstrap for the front end serve through Nginx.
  2. As the project grew, I splitted the back end and front end for better flexibility, keeping Django for the back end, and incorporating Angular version 8.3.21 for the front end along with APIs using Django Rest Framework (DRF), all behind an Nginx server.
  3. Everything initially ran with Python virtual environments, but managing dependencies across systems became tedious. After six and a half years, I migrated the back end to use Docker Compose, both components are still being served behind Nginx, flawlessly.

The Database? SQLite all the way since 2017. You read it right, and it rocks hard.

We don’t need expensive tech/hosting for small websites that “scale” : Don’t build a bazooka to kill a mosquito.

Side projects ftw

Here are some personal reasons why engaging in side projects is, I believe, essential for any tech enthusiasts and professionals alike.

Fueling Innovation and Growth

Mintaining relevance and expertise is paramount and hard. I remember my latest intership at school, Docker was born šŸ³. If I look back, so much things happened since then. I found that side projects serve as a crucial tool to expand horizons and help broadening opinions/views and avoid tunnel vision and biases we’re daily building/developing/facing.

1. Learning New Technologies

Again, I have never been a big fan of “follow this tutorial from A to Z” and you will learn a new skill. I needed some “wake-up call” to trigger that curiosity and enthusiasm, such as having a new intern who will tinker with a specific stack I don’t necessarily know.

The tech landscape is ever-changing, with new languages, frameworks, and tools emerging regularly. Side projects offer a playground to explore these innovations without the pressure of meeting deadlines or adhering to company protocols. By diving into new technologies on your own terms, you can:

  • Stay Current: Keeping up with industry trends and learning new skills, especially for some tech you may never use.
  • Experiment Freely: Testing new concepts and ideas without the constraints of your primary job and not the obligation to follow corporate rules. You’re sticking to Gitlab internally? Try and tinker around with Github at home!
  • Build a Portfolio: Showcasing your ability to learn and apply new technologies, which can be a significant advantage in your career.

2. Enhancing Technical Expertise

For people who may be aspiring to move into management, maintaining technical proficiency is crucial, especially to keep links with technical teams - most importantly to understand what may be their burdens. I believe that grasping strong technical skills ensures that this will help leading a team effectively and make informed decisions. Side projects help by:

  • Bridging the Gap: Keeping your technical skills sharp even as you take on more managerial responsibilities but obviously, don’t fall into the rabbit hole šŸ‡
  • Building Credibility: Demonstrating to your team that you understand the technical aspects of their work and understand the impact of specific challenges that may happen.
  • Facilitating Communication: Enabling you to speak the same language as your developers, which can lead to more efficient and productive discussions.

As I asid, when I started the project, I used Angular 8.3.21 and Django 2.4. Since then, many versions have been released, with Angular now beyond version 18 and Django in the 5.x series. Keeping the website up to date by upgrading these versions has been an interesting challenge, requiring significant time and effort to understand and implement the necessary changes and this is a great thing to keep in mind, especially when looking with a professional prism.

3. Exploring Different Approaches

Working within the same company for an extended period can sometimes limit our perspective. Side projects allow you to see beyond your current environment and explore different methodologies and workflows:

  • Broadening Horizons: Learning how other companies and communities solve problems. This can involve experimenting with stacks that are not yet in use at your current job, discovering new providers that offer innovative solutions, and investigating new ways of doing things that might not yet be mature enough for your company to adopt. For instance, starting cfptime.org with Angular 8.3.21 and Django 2.4, and later navigating the upgrades to Angular 18+ and Django 5.x, exposed me to the evolving capabilities of these frameworks and the challenges involved in maintaining and updating them.

  • Inspiring Innovation: Bringing new ideas and approaches back to your primary job. Side projects can serve as a testing ground for cutting-edge technologies and practices, allowing you to evaluate their potential before proposing them in your professional environment. This experimentation can lead to the adoption of more efficient workflows and improved processes within your company.

  • Avoiding Stagnation: Keeping your work dynamic and varied, which can prevent burnout and increase job satisfaction. Engaging with new technologies and methodologies can reinvigorate your passion for your work and provide fresh challenges that keep you engaged. By continually exploring and integrating new techniques, you ensure that your skill set remains relevant and your work remains stimulating. See those as a way to let off steam. šŸ„Š šŸ”„

This also provides an excellent opportunity to connect with others in the tech community. I vividly recall virtually meeting Jordan Wright when I first launched cfptime.org. He introduced me to Datatables (https://datatables.net/), and within a few hours, he significantly enhanced the website. It was fascinating to collaborate with him, despite never meeting in person.

Similarly, side projects have connected me with vibrant communities like Barbhack in France, RomHack in Italy, and others who appreciate the platform’s contributions. These interactions, often with people I’ve never met face-to-face, highlight the power of side projects in fostering meaningful connections and collaborations across geographical boundaries.

4. Tinkering and Creativity

For tech enthusiasts, the joy of tinkering is often a fundamental part of their identity. Side projects provide a creative outlet where you can:

  • Experiment and Innovate: Side projects allow you to build and experiment with projects that pique your interest, even if they don’t have immediate practical applications. This freedom encourages innovation and the exploration of new ideas without the constraints of traditional work environments.

  • Learn by Doing: Hands-on experience gained from side projects can be more valuable than theoretical knowledge alone. The process of “hacking” away at a problem, trying different solutions, and seeing what works can deepen your understanding and skill set in ways that textbooks and tutorials cannot.

  • Fuel Passion: Engaging with technology in this manner reignites your passion for the field. It reminds you why you chose this career path in the first placeā€”because of the thrill and satisfaction that comes from creating something new and solving complex challenges.

Even though I didn’t achieve widespread success, I ventured into creating a bug bounty program using the HackerOne platform. It was a valuable learning experience where I delved into setting up and managing such a program. While no major vulnerabilities were discovered, I encountered some interesting findings that highlighted areas for improvement. One notable issue involved a validation oversight that inadvertently exposed unreviewed entries to any users.

In essence, the journey of discovery and experimentation in side projects often matters more than reaching a predefined destination. It’s about enjoying the process of learning, growing, and pushing the boundaries of what’s possible with technology as a whole.

5. Cultivating Optimism

This is fine, at least I think so

When I switched to a “support” / operations position, I was baffled with the fact we were mainly experiencing outages, challenges, unexpected behaviours and this was really disorienting. Why don’t we stop it all and fix it all, if that’s not working?

Side projects help to take a step back and show that things can also work, bringing optimism and boosting morale. They provide a positive focus and a sense of accomplishment that counterbalances the often frustrating nature of support roles. Personally, by seeing success in some of my side projects, I was able to maintain a positive outlook and remember that the world of technology is full of potential and innovation, not just problems to solve.

Those projects can serve as a beacon of optimism:

  • Providing a Positive Focus: Offering a break from the routine challenges and a chance to work on something exciting and positive.
  • Boosting Morale: Showing tangible progress and success in side projects can help maintain a positive outlook.
  • Balancing Perspectives: Reminding you that the world of technology is full of potential and innovation, not just problems to solve.

Conclusion

Side projects are not just a hobby; they are, in my opinion, a critical component of professional development for anyone in the tech industry (and certainly beyond). They enable continuous learning, enhance technical expertise, broaden perspectives, foster creativity, and maintain optimism.

I hope this gave you insights and motivation to start or keep tinkering around if you already did!

Side projects ftw

ps: there are many more projects you may know me for (eg. Shodan mobile app, Firefox extension, WHID injector mobile app, …), I did not want to specifically delve in this article into those projects but they were as rich as cfptime.org!