Allen's Project Portfolio

Welcome to my website! I started this website from participating in a challenge called the Cloud Resume Challenge(CRC) in 2023, it was initially designed to showcase my resume. Since then, It's evolved to serve as a portfolio showcasing my various projects and experiences. Feel free to explore and learn more about my work!

Page View Counter:

The Page View Counter on this website serves as a tangible demonstration of its successful functionality, seamlessly connecting a front-end to a back-end. Each time this page is accessed or refreshed, the counter updates.

Twitter Bot Project on Azure Kubernetes with VPN

Unfortunately, due to a change in how many tweets can be made via the X API free tier, the Twitter bot is now disabled. All tweets (5,566 tweets) made during the lifetime of the bot can still be viewed on its profile.

I've finished the dynamic development of a Python Twitter bot hosted on Azure, This bot functions akin to an RSS Reader. It generates tweets upon new article postings and article title updates from the U.S. section of the New York Times. It operates in 5-minute intervals which contributes to a low cost solution and timely updates. Additionally, the project incorporates Azure AI-generated summaries for enhanced engagement and understanding.

https://twitter.com/NYTimesXBot
The bot connects to a NoSQL Cosmos DB and uses NCronTab for timer functionality.


Since being logged into Twitter is required to view tweets, below is a sample image showcasing the appearance of posted tweets. The tweet contains the date, title, URL, and an AI-generated summary of the posted article.

picture3
While users with an X Basic account enjoy the flexibility of composing lengthy tweets up to 2000 characters via the Twitter website, leveraging the Twitter API introduced a unique and unexpected challenge: The API imposes a strict character limit of 200 characters. To accommodate AI-generated summaries that may exceed this limit, It was necessary of me to adapt the way I initially planned to present the content of the summary. By generating an image (.jpg) containing the summary content and attaching it to the tweet, I effectively adhere to the API's character restriction but also effectively convey information surpassing 200 characters. This ensures that the full essence of the information is conveyed as originally intended.


This project has evolved through three different implementations. While each version has its own nuances, they all ultimately achieve the same core functionality.

  • The latest and ultimate implementation is using Azure Kubernetes Service(AKS).
  • The second implementation is using Azure Function Apps.
  • The third is a Docker-based local deployment.

  • In the AKS implementation, the project is backed by a comprehensive CI/CD pipeline, driven by GitHub Actions, it automates image building, tagging with commit SHAs, and semantic versioning of Helm charts.

    https://github.com/AllenShap/Az-k8s-Twitter_Bot-CICD_Pipeline


    Some notable modifications in the AKS implementation from the original Azure Function Apps implementation are as follows::


    The Azure Kubernetes implementation of the Twitter bot can be found at: https://github.com/AllenShap/Az-k8s-Twitter_Bot-CICD_Pipeline

    The second Twitter bot implementation using Azure Function Apps can be found at: https://github.com/AllenShap/AzPythonTweetBot

    The third Twitter bot implementation based around Docker can be found at: https://github.com/AllenShap/Dockerized-AzPythonTweetBot

    Below is the final state of the Azure environment upon successful implementation of the AKS Twitter bot.

    picture4

    The simple diagram below is the final network flow in AKS upon successful implementation of this project.

    picture5

    Technologies used to create the Azure Kubernetes Twitter bot

    Azure infrastructure supporting this website

    picture1
    This image is representation of the Python and JavaScript execution process which updates the page view counter.
    picture2
    The deployment actions depicted here offer a simplified overview of the website's creation process, designed to provide a general understanding of its development. Cloudflare related items are excluded from the image above.

    Technologies which are involved to create this website