Sitemap
A list of all the posts and pages found on the site. For you robots out there is an XML version available for digesting as well.
Pages
Posts
Future Blog Post
Published:
This post will show up by default. To disable scheduling of future posts, edit config.yml
and set future: false
.
Blog Post number 4
Published:
This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.
Blog Post number 3
Published:
This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.
Blog Post number 2
Published:
This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.
Blog Post number 1
Published:
This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.
mentoring
Teaching experience 1
Undergraduate course, University 1, Department, 2014
This is a description of a teaching experience. You can use markdown like any other post.
Teaching experience 2
Workshop, University 1, Department, 2015
This is a description of a teaching experience. You can use markdown like any other post.
portfolio
Portfolio item number 1
Short description of portfolio item number 1
Portfolio item number 2
Short description of portfolio item number 2
publications
Inline PDF Viewer in an Angular App? Now you can!
Published in Redgate, 2022
In this article, I provide developers with a practical way to integrate in-app PDF viewing within Angular applications. I also explore the limitations of conventional approaches and share how to overcome them using my ng2-pdfjs-viewer library. With step-by-step instructions, I demonstrate how to enable seamless PDF viewing, enhancing app functionality and user experience without relying on external plugins.
How to secure legacy ASP.NET MVC against Cross-Site (CSRF) Attacks
Published in Redgate, 2023
CSRF attacks are a real threat to legacy ASP.NET MVC apps, especially with today’s sophisticated cyber threat landscape. In my guide, I cover straightforward techniques to secure these applications without needing a full-scale rewrite. I dive into the risks posed by CSRF, highlight key defense mechanisms like tokens and validation techniques, and provide practical steps to implement these defenses effectively. For developers managing legacy systems, this guide ensures you can enhance security standards with minimal disruptions.
A Guide to Establishing a Thriving .NET User Group from Scratch
Published in .NET Foundation Blog, 2024
In this article, “A Guide to Establishing a Thriving .NET User Group from Scratch,” I outline essential steps to build and sustain an active .NET user community. I cover foundational strategies like setting a clear mission, fostering member engagement, organizing events, and maintaining consistent communication. I also dive into practical aspects such as securing sponsorships, leveraging social media for promotion, and scaling the group effectively over time. My goal with this guide is to provide a valuable resource for anyone looking to create and nurture a vibrant .NET community.
Cloudfare Turnstile, A New Way To Prove You Are Real
Published in Redgate, 2024
In this article, I explain how Cloudflare’s Turnstile reimagines bot detection by moving away from traditional CAPTCHAs toward a user-friendly, nearly invisible solution. Turnstile minimizes user friction by evaluating browser signals and using adaptive machine learning challenges to validate real users without disrupting their experience. I highlight how this tool, which is simple for developers to integrate, combines strong security with smooth usability, offering a seamless way to guard against bots.
From Zero to AI Hero, Part 1: Jumpstart Your Journey With Semantic Kernel
Published in DZone, 2024
In my article, Zero to AI Hero Part One: Semantic Kernel, I introduce readers to Microsoft’s Semantic Kernel as part of a broader series aimed at guiding developers from foundational AI concepts to practical, hands-on applications. In this first installment, I explain how Semantic Kernel can help build AI-powered applications by simplifying language model integration, managing memory, and embedding intelligent prompt handling. This article sets up a solid framework, laying the groundwork for upcoming installments in the series to further develop your skills in implementing AI solutions effectively.
Zero to AI Hero, Part 2: Understanding Plugins in Semantic Kernel, A Deep Dive With Examples
Published in DZone, 2024
In this article, Zero to AI Hero Part Two: Semantic Kernel Plugins, I dive into how plugins expand Microsoft’s Semantic Kernel by enabling deeper integration of specialized tools and data sources. As part of the Zero to AI Hero series, this piece provides examples and practical steps for developing plugins that make AI applications more context-aware and responsive. I showcase plugins for tasks like time management, search, and data calculations, highlighting their value in building interactive AI systems capable of handling dynamic, real-world scenarios. This article is a must-read for developers looking to unlock the full potential of Semantic Kernel in their AI projects.
Zero to AI Hero, Part 3: Unleashing the Power of Agents in Semantic Kernel
Published in DZone, 2024
In this article, I explore the concept of agents within Microsoft’s Semantic Kernel framework, highlighting their critical role in orchestrating complex, multi-step AI workflows. Agents serve as a bridge between multiple plugins, enabling cohesive solutions and allowing AI models to collaborate dynamically. Through a practical example of a trip planner, I demonstrate how agents enhance usability and functionality, making them a central component in building responsive, adaptable AI applications. This piece is part of my broader Zero to AI Hero series, aimed at guiding developers in effectively leveraging advanced AI tools.
Zero to AI Hero, Part 4: Harness Local Language Models With Semantic Kernel; Your AI, Your Rules
Published in DZone, 2024
In Zero to AI Hero Part Four: Harnessing Local Language Models with Semantic Kernel, I explore how developers can leverage local language models within Microsoft’s Semantic Kernel to enhance security, control, and adaptability. This installment highlights the unique advantages of local models, particularly for privacy-focused applications, and provides a practical guide on how to configure and integrate them effectively. My goal is to empower developers with strategies to maintain flexibility in AI model deployment, making this article a valuable resource for those looking to combine Semantic Kernel with secure, locally hosted models.
Building a Zero Trust API With ASP.NET Core: A Developer’s Guide
Published in DZone, 2024
In my article, Building a Zero Trust API with ASP.NET Core: A Developer’s Guide, I explore how to implement a Zero Trust security model in ASP.NET Core APIs. Emphasizing the “never trust, always verify” approach, I guide developers through essential components like authentication, role-based access control, and multi-factor authentication to safeguard APIs from unauthorized access. I also cover best practices for securing API endpoints and monitoring for potential threats, highlighting that a Zero Trust model requires continuous updates to remain effective against evolving security challenges.
software
Parkr - Alternate Side Parking App
Launched on App Store & Google Play, 2015
Parkr is a cross-platform app I developed to simplify alternate side parking management for residents of New York City and New Jersey. Initially launched on Android over a decade ago, it was later rewritten from Xamarin to React Native, allowing for a complete revamp of its structure and an expansion to iOS. With features like real-time parking suspension alerts, a detailed parking suspension calendar, and street parking maps, Parkr has become an essential tool for urban drivers navigating complex parking rules.
The app has seen over 62,000 downloads on Android alone and continues to grow rapidly on iOS. Designed to save users from costly parking tickets, it’s particularly popular among New Yorkers and New Jersey residents. The app was also recognized by NJ Tech Weekly for its community impact and practical value. Parkr represents my commitment to creating technology that directly addresses everyday challenges, making life a little easier for city dwellers.
Angular PDF Viewer
Launched on Github, 2018
The ng2-pdfjs-viewer
is an Angular library I developed and have maintained for over seven years, designed to seamlessly integrate PDF viewing into Angular applications using Mozilla’s PDF.js. With over 5 million total downloads and more than 120,000 downloads per month, it has become a trusted tool for developers looking to display PDFs directly within their apps.
Supporting a wide range of use cases, from inline PDF displays to blob and byte array handling, the library offers flexibility and robust customization options. By maintaining compatibility with the latest Angular versions and incorporating community-driven improvements, ng2-pdfjs-viewer
continues to empower developers in creating interactive and secure PDF functionality in their projects. The library is open-source and available on GitHub. The popularity of the library made it to a stack overflow tag where a community of users answer implementation related questions on stack overflow. See the top questions here
Remitto - Forex Comparison App
Launched on App Store & Google Play, 2020
Remitto is a cross-platform mobile application I co-founded to address the complexities of international money transfers. With real-time comparisons of exchange rates and fees across multiple providers, the app simplifies the process of finding the best transfer options. Built using React Native, Remitto combines functionality with a sleek and intuitive interface, making it easy for users to navigate and access key features. By providing transparency and actionable insights, the app empowers users to make informed decisions, ensuring they save on transfer costs while avoiding hidden charges.
The app supports transactions to over 50 countries, making it a global solution for both personal and business needs. Users benefit from tailored rate alerts that notify them when favorable exchange rates are available, as well as historical rate tracking to help identify trends. The seamless provider redirection feature allows users to complete their transfers quickly without leaving the app environment. Whether sending money for family, education, or business, Remitto is designed to streamline the experience, making it an indispensable tool for anyone managing forex transactions. Remitto is available for download on Google Play and the App Store, offering a reliable and user-friendly platform for managing international money transfers efficiently.
talks
Native C# Xamarin cross platform iOS/Android app
Published:
In my talk on Native C# Xamarin Cross-Platform iOS/Android App Development at Austin Space in Forest Hills, I provided attendees with a practical guide to building mobile applications using Xamarin. I introduced core concepts in native app development, demonstrated how to share code across platforms with Portable Class Libraries, and led a live demo of an app that connected to GitHub APIs to fetch repository data. The event, which drew over 35 developers and students through extensive promotion, concluded with a discussion of cross-platform alternatives like React Native and NativeScript. My goal was to give attendees a well-rounded perspective on mobile development frameworks, equipping them with insights to choose the right tools for their projects.
What they didn’t teach you about programming
Published:
My talk, “What They Didn’t Teach You About Programming,” held at Austin Space in Forest Hills, Queens, was designed to go beyond the basics and delve into critical topics often overlooked in formal education. Sponsored by Microsoft’s TEALS, the event drew around 40 developers and students—a turnout I was proud of, especially for a tech talk held outside Manhattan. During the session, I covered foundational topics like compilers, stack and heap memory, and algorithms, sharing practical insights into how code interacts with a machine at every level. I also explained concepts such as RAM, virtual memory, data storage in binary, and the intricacies of threads and thread safety, ensuring each idea was accessible and relevant to attendees. The event was a chance to bridge the gap between academic knowledge and real-world industry needs, and I enjoyed providing attendees with a deeper understanding of the systems that underpin programming. It was a rewarding experience to engage with such an enthusiastic group and share knowledge that can directly impact their growth as developers.
Getting started with .NET MAUI (Hey Flutter and RN, better watch out)
Published:
I organized a talk on .NET MAUI before its official release in November 2022. The session was live-streamed on YouTube and LinkedIn, allowing a broader audience to join in real-time. The event was also featured on the home page of the .NET Foundation website and has since gathered over 4,500 views.
Building Zero-Trust Apps with ReactJS and .NET
Published:
In my keynote at VIT-AP University’s Q-HUB, I had the opportunity to engage with over 100 students and faculty members on the fundamentals of building secure APIs with ASP.NET Core and a ReactJS SPA. Hosted over MS Teams, my talk focused on zero-trust architecture and the importance of adopting security-first practices in web development. During the session, I conducted a live coding demo to illustrate best practices in token-based authentication and endpoint security. I shared insights into how zero-trust principles can be applied in modern APIs, making them more secure and resilient. My goal was to show students how they can leverage .NET and ReactJS skills to build scalable and secure web applications, equipping them with the knowledge needed to tackle real-world development challenges.
A trip to MAUI on .NET
Published:
On October 18, 2022, I gave a talk on .NET MAUI at the Edmond .NET User Group, where I demonstrated how to build a “Famous GitHub Repositories by Year” app that connects to GitHub’s API. During the presentation, I showcased how .NET MAUI allows developers to create cross-platform applications for Android, iOS, Windows, and macOS using a single codebase, simplifying the development process. By diving into the app’s integration with GitHub’s API, I highlighted .NET MAUI’s capability to effectively handle RESTful data, giving attendees a clear understanding of the practical steps involved in creating responsive, multi-device applications with the framework.
ReactJS and ASP.NET: The Dynamic Duo of Web Development
Published:
In my February 2023 talk at the Pittsburgh .NET User Group, I demonstrated how to integrate a ReactJS SPA front end with a secure ASP.NET API backend, focusing on building interactive and scalable applications. I covered key concepts such as using Redux for state management, Bulma.io for streamlined UI design, and React Query for efficient data caching. I also highlighted how Orval JS can simplify API integration through automated query generation while emphasizing the importance of maintaining robust backend security throughout. The session, which was featured on Tech Jobs for Good, provided practical insights for modern web development.
React in Reactor: How to Azure Your .NET Apps with Confidence
Published:
During Global Azure Bootcamp 2023 in New York City, I had the opportunity to present a comprehensive talk at Microsoft’s Times Square office, focusing on securing React applications with Azure Authentication using MSAL.js and related open-source libraries. This hybrid event, which was also live-streamed on YouTube, featured a live demo where I built a React app from scratch and implemented Azure-based authentication. In the demo, I showcased how to integrate MSAL.js to ensure robust security and seamlessly connect the React app with an ASP.NET Core API. The session emphasized best practices in cloud security for modern web applications and engaged both in-person and remote attendees with practical, hands-on examples.
Tech Insights You Can’t Miss: Key Highlights from Our Latest Webinar - AlifCloud with Microsoft
Published:
In the AlifTech podcast hosted by Moin Sheikh, I reflected on my diverse experiences in software development, including the transition of a 15-year-old system to a modern platform and the careful planning it required to ensure smooth operations. I shared how my proactive approach to integrating security best practices from the very beginning has helped avoid significant challenges along the way. I also discussed managing scalability in large-scale projects, emphasizing the importance of designing systems that can grow alongside user and data demands. Additionally, I highlighted the value of a customer-centered approach to software design, sharing how focusing on user needs has led to some particularly successful outcomes in my career.
How to become a software engineer in 2023 with Aneesh Lal
Published:
In Episode 30 of Tech Guide, titled How to Become a Software Engineer in 2023 with Aneesh Lal, I had the pleasure of chatting with host Ryan Atkinson about the skills, mindset, and strategies needed to succeed as a software engineer in today’s rapidly evolving industry. I emphasized the importance of having strong fundamentals, maintaining a proactive learning approach, and contributing to open-source projects to build both experience and credibility. During the conversation, I shared actionable insights on adapting to modern technologies like cloud services and AI, while also encouraging new engineers to actively engage with the tech community. My goal was to provide practical advice for aspiring software engineers to navigate the ever-changing landscape of technology.
Semantic Kernel
Published:
In my recent talk for the Pittsburgh .NET User Group (PGHDOTNET), I explored the practical applications of Semantic Kernel (SK), a lightweight open-source SDK that integrates AI capabilities into new and existing software. To demonstrate the power of SK, I built an interactive app designed to streamline communication with potential tech speakers by generating “call for proposal” content. Using a custom-built SK agent, I showcased how developers can automate email composition, including generating personalized subjects and confirming details with recipients before sending. The session provided attendees with valuable insights into the flexibility of SK, particularly in enhancing productivity for tasks like content creation and AI-assisted communication.