I'm Ramin, a software engineer living in Melbourne, Australia with a passion for developing complex systems and building high-quality applications. Over the years, I've co-founded two companies: InknowTex in 2012 and CliqMind in 2020. My expertise spans the development of a wide range of applications, including enterprise, SaaS, and mobile solutions.
This website is where I share my journey and the knowledge I've gained along the way. If you'd like to connect or learn more about me, let's connect on LinkedIn.
This article explains how RSA encryption adds an extra layer of security to sensitive data beyond HTTPS. While HTTPS protects data in transit, RSA encryption helps guard against risks like MITM attacks, compliance issues, and replay attacks. The process involves the back-end generating RSA key pairs, sending the public key to the front-end, and the front-end encrypting data before sending it back for decryption. By securely managing keys with cache expiration, RSA ensures sensitive data remains protected throughout communication.
The article discusses creating a union type in Typescript from a product taxonomy. It outlines a solution to infer unique keys directly from the taxonomy structure, thereby reducing potential errors and simplifying data management. The document includes code examples demonstrating how to traverse the taxonomy and generate a union type using Typescript's advanced features.
In Ember.js, instead of using React's refs, the “did-insert” modifier provides access to native HTML elements. To achieve similar functionality as React 's “useImperativeHandle”, you can pass a “ref” argument to a child component and call it in the constructor, allowing the parent component to access public methods of the child. This approach ensures controlled exposure of methods and properties, maintaining encapsulation.
Ramin completed a short-term contract at Equinox Ventures, developing 30 front-end components and Editor.js plugins, averaging nearly one component per day. The framework-agnostic library was built with TypeScript, Vite, TailwindCSS, and SASS Modules, and included complex elements like charts and tables. Feedback from team leaders praised Ramin's quick turnaround, technical expertise, and collaborative nature, highlighting his value as a front-end developer.
CliqMind is a team productivity tool developed from RaaiVan, designed for small teams and enterprises. It features a cloud-friendly architecture with microservices, including authentication, account management, and a search engine, utilizing technologies like Java Spring Boot, PostgreSQL, and React. The project emphasizes collaboration through templates, a social space, and a wiki, while also employing CI/CD practices with Jenkins and Docker for deployment.
The project is a refactor of an HTML to PDF converter using Java and Spring Boot, upgraded from Spring Boot 2 to 3 and Java 11 to 22. Key enhancements include adding an OpenAPI UI, updating security configurations, and implementing a Docker image. The application uses headless Chromium for PDF conversion and incorporates features like cover pages, headers, footers, and password protection.
Raminy.dev offers a Docker image that allows users to quickly and easily build their personal websites. The process involves creating a Notion account, setting up a Notion integration, initializing the website using Raminy.dev's magic tool, associating the integration with the created databases, creating a Railway account, and deploying Raminy.dev's Docker image on Railway. Optional steps include associating a personal domain with the Railway deployment. Once deployed, the website is ready to browse.
During their tenure at IE, the author worked as a Senior Front-End Developer on the Toyota website team. They contributed to the development and maintenance of the ToyotaKit component library, implemented OCR functionality using Azure Cognitive Services, and worked on various features for the Toyota.com.au website. They also provided mentorship to junior and mid-level engineers and received recognition for their technical expertise and collaborative spirit.
This blog post discusses the process of building a personal website at no cost using Next.js, Vercel, and Notion. The author shares their challenges, solution, and technical aspects of the project, including the choice of Next.js over React for better SEO, the routing mechanism, and integration with Notion using the @notionhq/client npm package.
RaaiVan is described as the author's greatest achievement, serving as an Enterprise Knowledge Management and Document/Content Management System. Its flexibility, performance, and extensive features have made it a valuable tool for many enterprise customers. The author played a key role in its design, development, and deployment, and was involved in negotiating with customers and understanding their requirements. The author also shares their journey with RaaiVan, their full-stack software development approach, and highlights key modules and features such as the Form Builder, Workflow Engine, Wiki, Search Engine, and additional modules like Social Network, Core Network, Q&A, and Poll.