What skill or knowledge have you acquired in the past year that has been particularly helpful? What motivated you to learn it? What has the impact been for you and your team?
-
Graphql + Neo4j, I have this obsession with different database paradigms, so I thought to try something new with the graph database:
- Key-Value: Redis ✅
- Wide Column: Cassandra ❌
- Document/NoSQL: MongoDB, Firebase ✅
- Relational/SQL: PostgreSQL (with PostGIS) and MySQL ✅
- Search: ElasticSearch ❌
- Vector: WeaviateDB (this is pretty new)
- …and obvious Graph: Neo4j ✅
-
Graph databases solve a unique problem that general social media or consumer-focused applications face: highly related and nested data. SQL has relations too, but they are not pure relations (we need to add median tables and foreign keys to show ties), a Graph database has real relationships which themselves can have properties.
-
In the past year, I have used Neo4j or Graphql with 3 distinct projects: An Interview management software, An Event Management platform and A Decentralised journalism platform (this one was hard).
-
The best thing about Neo4j with Graphql is that you can have a fine grain (row level) control of your data access, which can easily be described in your schema through special directives, this helped our team a lot in implementing cookie based auth using Apollo server link with noe4j.
Describe your experience of web programming - JavaScript, Typescript, React, CSS and Python in particular.
- Javascript/Typescript: Let's classify this into 4 sections:
- Frontend: My frontend experience is quite extensive with almost 3 years of development in all sorts of Js/Ts frontend, you can check out my website vishnushon.com for an example. I have also built:
- Multiple frontends for web apps with ReactJs, NextJs and AstroJs.
- Websites with animation libraries like Framer Motion and React Spring
- Frontends for REST applications with Axios and Tanstack Query.
- Frontends for GraphQL applications with Apollo Client integration.
- Frontends for Web3 applications with EthersJs and Wagmi Hooks.
- JAM stack applications using Sanity CMS integrations.
- Backend: I have been building all sorts of backends with Js/Ts for the last 2+ years, using NodeJs I have developed/Integrated:
- REST based applications using ExpressJs with a plethora of databases like MongoDB with Mongoose ODM, PostgreSQL with Sequelize ORM and MySQL.
- GraphQL based applications using Apollo Server with Neo4J database and MongoDB.
- Web Sockets based application using Socket.io for real-time, event based communication.
- Message Queue based notifications system with rabbitMQ.
- I have also used multiple authentication paradigms like simple auth, cookies, sessions, JWT tokens and Oauth using PassportJs.
- I have experience integrating Firebase SDK on ExpressJs and NextJs
- Mobile: I have experience building cross platform mobile applications with react native and Firebase.
- Others: I have also built terminal applications, chrome extensions and custom CLI tools for blockchain contract deployments.
- React: I boast a deep and extensive experience with React and its ecosystem:
- I have a good understanding of virtual DOM, the react rendering cycle and creating custom hooks.
- I have experience with React Redux for state management, my preference is, however, the Context API with the new useReducer hook.
- I am also good with React and Chrome debugger toolkits.
- I have also used several component libraries like Material and Mantine.
- I have also used NextJs (the react meta framework) quite extensively with all its SSR and SSG capabilities, with special functionalities like custom middleware.
- CSS: Since my hobby is UI/UX design, check my community profile, I have a special place for perfect and quality styling for frontends. My workflow for any project generally considers making a preset CSS file with all the variables for easy access. In my career, I have used multiple CSS frameworks like SCSS, bootstrap and tailwind (primary). I have also used PostCSS plugins in my workflow. I am also a sucker for optimising CSS performance (love my web vitals).
- Python: I have used Python from creating simple terminal apps, telegram and discord bots for onboarding users on apps to creating flask backends with OCRs and hugging-face integrations for AI based microservices in mobile apps.
Describe your experience building large systems with many services - web front ends, REST APIs, data stores, event processing and other kinds of integration between components. What are the key things to think about regarding architecture, maintainability, and reliability in these large systems?
- I have worked on various services and their integration in my work and side projects, such as (but not limited to) Google ARI (a gRPC service) Integration, GraphQL backends, REST backends, React Native Mobile applications, PWAs, React/Next/Astro frontends, Telegram/Discord bots, RabbitMQ notification systems, Websocket backend etc. I have experience with Docker and Google Cloud platforms with services like FS storage, Cloud Run, Build Triggers, Compute Engines, Load balancers, CDN, Edge Functions, Vertex AI services etc.
- Here are a few examples of large scale applications that I have worked on:
- Staybook ( A hotel booking software ): Led the development of a Booking API microservice and Google Hotel Center Integration, Optimised performance of the web app through CDN caching and Google Cloud Load Balancing, halving LCP load times. Shipped the booking engine, to 40,000 daily users.
- InterviewLink (An interview scheduling application ): Developed a microservices architecture with NextJS, GraphQL, and Apollo Client for frontend integration. ExpressJS and Neo4J for scheduling servers and databases. Established CI/CD pipeline with Google Cloud Run and GitHub Actions. Authored tests with Cypress, adhering to test driven development. Implemented a natural language chatbot for student engagement using Python and Google vertex AI.
- 0xFethr ( A decentralised journalism platform ): Developed a blockchain app deployed on Polygon chain with NextJS, EthersJS, Apollo and GraphQL for frontend integration. ComposeDB for storing user identities over Ceramic Network and NFT.Storage for minting news articles. Developed subscription pipeline using Superfluid, digital identities with Ceramic DID and faucet feature using Wagmi SDK
- ScanFinance ( A receipt scanner application ): Developed an app to manage personal finance, scan receipts, and predict monthly budgets using Kotlin, Jetpack Compose, RoomDB, and OOP principles. Implemented streamlined data processing and coroutines for efficient data management. Developed a Flask to scan and send JPG receipts for financial data extraction using Pillow OCR and Hugging Face models.
- HashiRWA ( A lending and borrowing application): RWA (Real world assets) based options lending and borrowing protocol for the Mantra Chain. Implemented custom CosmJS hooks for contract integration on the front end. Created an SDK for rapidly deploying and testing WASM-compiled smart contracts on the COSMOS chain ecosystem.
- An Understanding of when and where to use architectures like graphQL, REST, Sockets and Message Queues is paramount in designing these systems. CI/CD utilities are also an important consideration for me before starting these projects.
Describe any experience you have with Flutter.
My work at ALT (active teaching and learning app), an open-source alternative for in-class activities, began with the conversion of existing Flutter and Firebase code to React Native and Firestore. This was done to boost maintainability, as the app is maintained by an annual team of student devs, and React Native uses real UI components rather than those generated on Canvas. React Native transforms app behaviour into a completely native experience. Over 2,000 students utilised the app for in-class quizzes and activities. We utilised react native alongside Firebase's Firestore, notification service, and authentication.
Software engineering experience
What kinds of software projects have you worked on before? Which operating systems, development environments, languages, databases and frameworks?
- Projects: I have worked on Web Apps, Mobile Apps and Blockchain Apps with gRPC, REST, Socket and graphQL architectures. I have built monolithic as well as micro service based applications.