Dublin Library

The Publishing project

Building an AI-Powered Digital Object Repository

Like many developers, I hoard digital content—articles, papers, code snippets, and videos. Over time, organization became a significant friction point. My solution was to build a Digital Object Repository: a centralized system to store, organize, and interact with this data. Rather than building a static archive, I leveraged the OpenAI API to enhance the repository with active features: content summarization, semantic search, and an interactive Q&A system. This post details the architectural decisions, technical constraints, and implementation strategies used to build this full-stack application. Phase 1: Project Scaffolding & Core Backend The project required a containerized, multi-service architecture to manage...

AI Prompts as requirements

AI introduces a new development paradigm. While using prompts seems simple, it's a classic 'garbage in, garbage out' system. The nuance of crafting a good prompt is the single biggest factor in getting a usable result, and most of us start by getting it wrong. What is Prompt Engineering? > Prompt engineering is the art and science of designing and optimizing prompts to guide AI models, particularly LLMs, towards generating the desired responses. By carefully crafting prompts, you provide the model with context, instructions, and examples that help it understand your intent and respond in a meaningful way. Think of...

Building AI Chrome Extensions

There are some use cases where building an AI application as a Chrome extension is the best way to deliver value to users. Using a Chrome extension and its associated APIs provides capabilities that a standalone web app or a native application cannot match. In this post we'll explore what types of AI applications are best suited for the extension format, why that is, and provide a complete example of a simple AI-powered Chrome extension, an "AI Right-Click Summarizer," that you can build and run yourself. Why Build AI Applications as Chrome Extensions? Building an AI application as a Chrome...

Chrome Extensions Tutorial

Chrome, and all browsers, support extensions, which are small software programs that customize the browsing experience. They enable users to tailor Chrome functionality and behavior to individual needs or preferences. As I research Chrome V3 extensions to build AI tools, I thought I'd take a look at how to build a simple Chrome extension from scratch using Manifest V3. This post will guide you through creating a basic "Focus Mode" extension that toggles a sepia background on the current webpage to help reduce distractions. We will cover the essential concepts: 1. manifest.json: The core file that tells Chrome what your...

Javascript Package Managers Deep Dive

Ever since Node was introduced, it has always included a package manager to handle dependencies. For many years NPM was the only game in town, but over time several alternatives have emerged, each with its own strengths and weaknesses. This analysis explores the four major players: NPM, Yarn Classic, PNPM, and Yarn2 Berry. Introduction: What is a Package Manager? In the JavaScript ecosystem, a package manager is an essential tool that automates the process of installing, updating, configuring, and removing "packages"—reusable pieces of code libraries, frameworks, tools that projects depend on. It reads a manifest file usually package.json to understand...

Different AI Interaction Clients

We're all into AI these days, but the way we interact with AI models can vary widely depending on the client or interface we use. Each type of client offers different features, capabilities, and user experiences. As a developer, it's important to understand these differences so you can choose the right tools for your needs or build your own custom solutions. Different target audiences may also prefer different clients based on their technical expertise and use cases. This post provides a breakdown of the primary types of AI interaction clients, with your examples and others categorized as requested. Web-Based Chat...

AI Programming Beyond Vibe Coding

It's interesting to see how AI tools have transformed programming workflows. A trend known as "vibe coding" has emerged, where developers rely heavily on AI to generate code snippets with minimal oversight. While this approach can speed up development, it can also lead to buggy or inefficient code if not carefully managed. This post will explore the concept of vibe coding, its advantages and disadvantages, and strategies for more effective AI-assisted programming. What is Vibe Coding? Vibe coding is a programming style where developers use AI tools to iteratively generate code based on prompts, often without deep understanding or thorough...

Very Large-Scale Interactive Projection Mapping

The Unnumebered Sparks project is a landmark in large-scale interactive art installations. It demonstrated how web technologies could be harnessed to create immersive experiences that engage audiences in new ways. The project is a combination of a large sculpture, and a web-based interactive system that allows users to add visual elements to the sculpture using their mobile devices. The entire system is built around the web browser as the rendering engine, showcasing the power and flexibility of web technologies. This guide details how to build an immersive, interactive art piece where many people can use their phones to "paint with...

Syft And Grype Integration

Recent supply chain attacks have highlighted the need for robust vulnerability management in Node projects. While NPM Audit provides a basic level of security scanning, it has limitations that can leave projects exposed. This post explores how to enhance your security posture by integrating Software Bill of Materials SBOM generation with Syft and vulnerability scanning with Grype into Node projects. Moving Beyond NPM Audit NPM audit is a useful tool for identifying known vulnerabilities in your dependencies. However, it has several limitations: It does not cover all types of dependencies, may miss vulnerabilities in transitive dependencies, will not handle supply...

NPM Security Best Practices

In recent months, we've seen a rise in security vulnerabilities related to the NPM ecosystem. As developers, it's crucial to follow best practices to ensure the security of our applications. This responsibility extends beyond just our own code; it includes maintaining the integrity of our dependencies. This post will cover essential NPM security best practices, focusing on two key areas: understanding the supply chain threat and implementing a layered defense for your projects. The Threat: Understanding Supply Chain Attacks NPM, like other package managers, is a common target for supply chain attacks. These attacks compromise popular packages to steal credentials,...