Should you use Gemma 4 for your Development? A Multiversal Analysis to Determine if Gemma 4 is Right for You!

Image

This is a submission for the Gemma 4 Challenge: Write About Gemma 4

Disclaimer: This is an individual submission for Francis Tran (@francistrdev). Everyone involved has their own accounts of using Gemma 4 and has been paraphrased in this post. See below for the list of people involved.

 

Author: Francis Tran (@francistrdev)
Featuring: Elmar Chavez (@codingwithjiro), Konark Sharma (@konark_13), and Julien Avezou (@javz)

The cover image uses characters from various Anime chosen by the people who are featured in this post, put together in using Pixlr, and using AI to enhance the quality of the image. Some contents started off using AI and has been paraphrased by the author’s own words.

Table of Contents

  • Introduction

  • Setting up Gemma 4 using Ollama

    • Installing Ollama and Gemma 4
    • Trying out Gemma 4
    • Running Gemma 4 Offline
    • Elmar’s Verdict on Gemma 4
  • Using Gemma 4 as a Confused Developer

    • The Strawberry Test
    • The Tic Tac Toe Rotation Test
    • The Broken Cup Test
    • Konark’s Verdict on Gemma 4
  • Building a Prototype using Gemma 4

    • Results of Gemma 4 Vs. GPT 5.4

      • Technical Depth
      • Architecture & System Thinking
    • Julien’s Verdict on Gemma 4
  • Using Gemma 4 as an AI-Agent

    • Gemma 4 is Strict
    • Please Google I need this. Gemma 4 is kind of Looping Itself
    • Francis’ Verdict on Gemma 4
  • Summary

Thank you for Reading!

Image

Introduction

In the age of AI, many developers are using AI in their workflows. This can range from AI assistants cleaning up a large code-base to developers vibe coding a prototype to showcase to others.

Regardless of your use of AI in your development, it is important to choose the model you want to work with. There are a lot of choices to choose from such as ChatGPT, Gemini, Copilot, etc. The one we are talking about today is Google’s latest model: Gemma 4!

The goal of this article is to share our experiences using Gemma 4 in 4 different perspectives of Development starting from setting up Gemma 4 using Ollama, testing the hallucination of Gemma 4, how Gemma 4 outputs, and using Gemma 4 as an AI-Agent. Additionally, I will share our discoveries and whether we recommend using Gemma 4 based on our experiences! We hope that our experience of using Gemma 4 will help you to decide if Gemma 4 is right for you in any skill level of your developer career!

With that said, we will now talk about the setup process. In any development, we all experience setting up our environment whether it is OpenClaw or a simple NPM package! Having a local LLM is one of them. Here is Elmar’s experience of setting up Gemma 4 using Ollama!

 

 

Setting up Gemma 4 using Ollama

Elmar has been using ChatGPT for the past year where he mainly uses it as a mentor when doing projects. He was interested having a LLM locally. He believes that having an LLM locally is convenient for his case, due to power outages he has to faced in the Philippines. Having Gemma 4 locally will allow him to be productive when coding without the need to worry about connecting to the internet. With that said, he started to research about setting up Gemma 4 using Ollama.

 

Installing Ollama and Gemma 4

Elmar started to search on the internet, looking for tutorials on getting started on Gemma 4.

One of the ways to get started is installing Ollama, which Elmar thought was a weird name until he realized the logo was an actual llama.

When downloading Ollama, the main issue is the storage, which was nearing 100% capacity and Ollama installer defaults to the C: drive.

After searching more about installing Ollama without installing on the C: drive, which led to this command he had to run on the terminal:

C:UsersELMAR>cd Downloads
C:UsersELMARDownloads>OllamaSetup.exe /DIR="D:Ollama"

Ultimately, it worked well. He had done other configurations such as redirecting the AI model installation in the same drive under D:OllamaModels. He then downloaded the gemma4:e4b.

 

Trying out Gemma 4

The first thing Elmar tried was “hi gemma4”. Although the expected outcome is Gemma 4 saying hello back, it gave him this error:

Error
500 Internal Server Error: model requires more system memory (9.8 GiB) than is available (4.9 GiB)

 

For context, this is his device specifications:

His laptop is great for programming and other developments. The issue is that his laptop is only suitable for “lightweight models” when it comes to downloading LLMs locally.

 

Elmar discovered that local AI depends heavily on your own hardware, unlike browser-based AI tools like ChatGPT.

 

One of the things Elmar did was to run a smaller version of Gemma 4:

ollama run gemma4:e2b

It gave him a similar error as before:

Error
500 Internal Server Error: model requires more system memory (7.2 GiB) than is available (5.7 GiB)

 

After investigating a bit more, he closed other applications that were running on his computer and taking up space and it outputted!

 

The big thing about running it for the first time is that it took longer than he expected, but he mentioned that he had VSCode, Notepad, and 4 tabs currently opened in his Chrome Browser.

 

Running Gemma 4 Offline

Elmar was curious about the result of using Gemma 4 without connecting to the internet.

It ran slower than usual, but it is still under a minute.

 

Elmar then tried to ask questions to Gemma 4 that he would normally ask to ChatGPT as part of his Development workflow.

In this case, he is currently building his website portfolio. Elmar asked a question along with attaching a screenshot to Gemma 4 and here is what it output:

Surprisingly, it took less time considering the fact that he inserted an image for this use case.

 

The wait time for the LLM to respond, which is around a minute, is reasonable for Elmar since he has a decent laptop. It is quite useful especially for countries that commonly have power outages or that have unreliable internet.

 

Elmar’s Verdict on Gemma 4

This is Elmar’s Verdict of Gemma 4 in terms of setting up via Ollama and using it for the first time:

Web-based LLMs are great for convenience and device flexibility. While local LLMs are great for offline reliability and privacy, I’d say the experience of experimenting with Ollama + Gemma 4 only made my perspective with AI clearer.

It is not magic, it’s just data combined with probability and rendering models that require large amounts of RAM for compute power.

This begs the question, if I have a higher end device, would I invest fully into local LLM’s?

Image

I would not sacrifice my own hardware for running AI computations just to get responses faster.

There are data centers that have the hardware especially built for AI. I would rather give the job to them.

Overall, ChatGPT is still far more practical for my current workflow so I will be sticking to it as my default. However, I would definitely use Ollama + Gemma 4 as a reliable alternative.

That is Elmar’s Verdict on Gemma 4! In the early stage, it is fast to setup, but difficult to use when it comes to response time and the hardware needed, especially considering most users do not have a powerful laptop.

Now you know about the setup with Gemma 4! Starting off with Gemma 4 and seeing its outputs is a good sign that everything works! However, although Gemma 4 is a small and powerful model, how good is it at not being confused? We now transition to Konark where he tested Gemma 4 to the limit!

 

 

Using Gemma 4 as a Confused Developer

Konark has been using Gemma 4 for some time and the one thing he wanted to know is to see if he can abuse Gemma 4 to its confusion.

We all have that one moment where we randomly test an AI just to see “How smart are you actually?” with questions like “How many r’s are there in strawberry?”. Konark did three tests such as the Strawberry test, the Tic Tac Toe Rotation test, and the Broken Cup Test.

 

The Strawberry Test

Konark asked Gemma 4: “How many r’s are there in strawberry?” (There are three). Initially, this type of question was commonly used to confuse many AI models.

Gemma 4 thought for a while and gave Konark three different interpretations regarding the number of “r’s” in strawberry.

 

Konark realized that sometimes AI over complicates simple questions and he would rather prefer simple answers. For example, if there are 10 apples in a basket and you asked Gemma 4: “How many apples are there?”.

 

Would you prefer this answer:

“This is my first time counting. Do you mean apples inside the basket or around the basket?”

 

Or would you simply perfer:

“There are 10 apples.”

 

Konark would prefer the second answer.

 

With these results, he was curious about how Gemini would answer to the strawberry test. As such, he asked Gemini and it simply replied:

3 r’s.

It is straightforward and it is always good to have a simple, non-complex answer.

 

The Tic Tac Toe Rotation Test

Another fun question Konark asked Gemma 4 was: “How would rotating a tic tac toe board by 90 degrees change the rules of the game and its strategy?”

The whole goal is to see if Gemma 4 thinks it’s still the same, expect the board is rotated.

However, Gemma 4 took quite some time to conclude this. It explained things properly and even walked through a rotated example.

Although it is a helpful response, it would be nice to get a more straightforward answer similarly to the Strawberry Test.

 

The Broken Cup Test

This is Konark’s favorite test, in which he asked Gemma 4: “I have a metal cup with the bottom missing and the top sealed. How can I use this cup?”

The simple answer would be “Rotate the cup. And suddenly, it becomes usable again.”.

However, Gemma 4 did not really understand the trick. Instead, it started suggesting alternative ways to use the object.

Although it is creative, it is not entirely correct.

 

On the other hand, Gemini understood the trick faster and then even expanded on practical uses.

Overall, Gemma 4 still struggles with certain trick questions and edge-case reasoning.

 

Konark’s Verdict on Gemma 4

This is Konark’s verdict of using Gemma 4.

After playing around with both models, I reached a simple conclusion.

Gemma 4 feels good for:

  • learning
  • content generation
  • straightforward explanations
  • slower, detailed responses

Gemini feels better for:

  • trick questions
  • quick reasoning
  • direct answers
  • faster conclusions

And honestly, both have their place.

Sometimes I want a detailed explanation.

Sometimes I just want: “Bro, just give me the answer.”

And that matters.

Because developers don’t always want essays. Sometimes we just want the bug fixed.

This is important to consider when you want to use Gemma 4. Sometimes, we just want a simple answer to the issue we are trying to solve. Of course, prompting varies and this is Konark’s experience using Gemma 4 so it can be different from others.

Speaking of prompting, AI is used to prototype projects in development! We now transition to Julien’s experience on using Gemma 4 when it comes to prototyping a project and how it compares to what he usually uses, which is Codex!

 

 

Building a Prototype using Gemma 4

Julien planned on using AI to create a fast prototype.

 

He was curious about how Gemma 4 performs compared to his usual setup, Codex (GPT 5.4).

For context, the project is a Chrome extension to help develop better use of LLMs. He will share more on his blog page in the future!

His goal is to compare Gemma 4 Vs. GPT 5.4 when it comes to prototyping. For this comparison, he will run tests across the following 2 categories using the same prompt as input and comparing the quality of the outputs:

  1. Technical Depth: The factual accuracy, understanding of deep system mechanics and ability to compare non-trivial trade-offs.

  2. Architecture & System Thinking: The ability to think at the macro level, identifying bottlenecks, scaling issues, and making justifiable “when/why” decisions.

 

Results of Gemma 4 Vs. GPT 5.4

Here are the results for the cases of Technical Depth and Architecture & System Thinking!

 

Technical Depth

This is the prompt given to both LLMs:

I am building a Chrome extension which detects when a developer is using ChatGPT, Claude, or Gemini, shows a floating button, opens a side panel, lets the user describe their task, recommends one of five AI thinking modes, generates a better prompt, and lets the user copy it manually.

Modes:
1. Explore — when I don’t fully understand the problem yet
2. Challenge — when I have a plan, but it might be wrong
3. Decide — when I need to choose between options
4. Audit — when I need to verify quality or correctness
5. Reflect — when I want to actually learn from what I did

MVP constraints:

  • Chrome extension only
  • no login
  • no dashboard
  • no automatic prompt insertion
  • no usage tracking yet

Task:
Give me a technically detailed implementation plan for the MVP.

 

Here is the results:

Model Pros Cons
Gemma 4 Clear high-level structure. Correctly identifies manifest, background script, content script, overlay UI, and template-based prompt generation. Easy to read. Good for a conceptual first pass. Too generic. Does not mention Chrome Side Panel API. Blurs overlay and side panel. Drifts from your exact modes. Weak on privacy/security. Less actionable for immediate implementation.
GPT 5.4 Much more implementation-ready. Strong file structure. Useful code snippets. Correct Chrome APIs. Better MVP scoping. Better maintenance thinking. Exact mode alignment. Clear recommendation to avoid LLM/API in v1. Still light on deeper security analysis. The manifest/build setup would need adjustment because TypeScript files are not directly used by Chrome without bundling. Could have compared local/API/hybrid tradeoffs more explicitly.

Overall, GPT 5.4 gives the stronger Technical Depth output since it is more accurate, more build-ready, and more specific.

 

Architecture & System Thinking

This is the prompt given to both LLMs:

I am building a Chrome extension that helps developers use AI more intentionally.

It sits on top of ChatGPT, Claude, and Gemini. The user describes their task, then it recommends one of five thinking modes and generates a better prompt to copy.

Modes:
1. Explore — when I don’t fully understand the problem yet
2. Challenge — when I have a plan, but it might be wrong
3. Decide — when I need to choose between options
4. Audit — when I need to verify quality or correctness
5. Reflect — when I want to actually learn from what I did

MVP:

  • detect supported AI chat pages
  • show floating ModeCheck button
  • open side panel
  • recommend mode
  • generate better prompt
  • copy manually
  • soft CTA to the Thinking Engineer Toolkit

Future:
A SaaS dashboard may later track AI usage modes, cognitive cost, dependency patterns, and optional hard blocks.

Task:
Think at the system architecture level.

Cover:

  • best one-week MVP architecture
  • what to build now vs postpone
  • key system boundaries
  • privacy/trust risks
  • maintenance risks for a solo builder
  • how to preserve future optionality for analytics/dashboard
  • strongest argument for and against the browser extension approach
  • recommended roadmap: week 1, month 1, month 3

Be concise but thoughtful. Focus on trade-offs and “when/why” decisions.

 

Here is the results:

Model Pros Cons
Gemma 4 Good strategic restraint. Correctly recommends client-side MVP, hardcoded templates, no backend, and no dashboard at first. Good emphasis on fast time-to-value. Useful suggestion to model prompts as structured objects/schema for future flexibility. Less complete system thinking. Weak privacy/trust analysis. Weak argument for/against extension approach. Maintenance advice is shallow. Roadmap becomes generic around logging, API integration, billing. Does not fully address future cognitive-cost/hard-block architecture.
GPT 5.4 Stronger system boundaries. Better local-first architecture. Better privacy/trust framing. Better solo-builder maintenance analysis. Stronger roadmap. Better future optionality through event/data modeling without collecting data yet. Better distinction between host page, extension, and future backend. Does not go very deep on future scaling bottlenecks or hard-block mechanics. Could have included Gemma’s useful prompt-schema idea. Slightly less focused on concrete “engine” abstraction for prompt assembly.

Overall, GPT 5.4 wins on Architecture & System Thinking. Gemma 4 provides a solid, restrained MVP strategy, but GPT 5.4 gives a more complete architectural view: system boundaries, trust, local-first design, future analytics optionality, solo-builder maintenance risk, and roadmap discipline.

 

Julien’s Verdict on Gemma 4

This is Julien’s verdict on the use of Gemma 4:

GPT 5.4 seems to be the strongest at high-level reasoning and synthesis as you would expect from a recent frontier model.

However a good use case for Gemma 4 in terms of prototyping work would be for codebase analysis, running experiments through constraints and for privacy-sensitive workflows.

Being an open model which can be run locally has great specific and complementary use cases when prototyping developer tools.

I will consider this going forward.

Even though GPT is preferred when it comes to high-level reasoning and synthesis, there are other cases where Gemma 4 is useful for prototyping.

Speaking of prototyping, now we transition over to using Gemma 4 as an AI-Agent!

 

 

Using Gemma 4 as an AI-Agent

Whenever I am contributing to Open Source, it is quite useful to have an AI-Agent to work with you. My preference is to use an agent living in an application like Visual Studio Code.

I have been using GitHub Copilot when it comes to contributing to Forem and it has been useful when it comes to navigating code bases, problem solving issues, etc.

When I heard about Gemma 4, I thought it would be a good idea to try out when using Gemma 4 as an AI-Agent. I specifically used the cloud version using Ollama since the hardware I have cannot handle LLM locally, even though I tried the smaller version of the model.

 

Setting up wasn’t too difficult on my part. Since I tried Ollama to begin with before the release of Gemma 4, it was as easy as pulling the model using this command:

ollama run gemma4:31b-cloud

 

After installing, I selected the model and was ready to go!

 

When using the model, I noticed there wasn’t much of a big change compared to my initial workflow of using Copilot as my agent.

Both models asked me for permission when running commands, able to problem solve the issue I requested, etc. To be fair, I wasn’t using “Continue” Visual Studio code extension since it is quite popular when using local LLMs. Also, Visual Studio code is flexible when it comes to adding your own model in addition to using Copilot, which I wasn’t surprised that it behaves similarly when using Copilot.

However, there are a couple of things I noticed when using Gemma 4 that I believe are important to address based on my experience using Gemma 4.

 

Gemma 4 is Strict

The main difference between Gemma 4 and Copilot was that it is quite firm on the tasks it is given to them. I notice that whenever I request a plan on tackling an issue, it provides a To-do list of the steps Gemma 4 is planning on doing to fix the issue.

 

For example, this is the prompt I gave to Gemma 4:

I have this issue. How do I approach this?

https://github.com/forem/forem/issues/23277

It will output their findings like any other LLM. However, it would not act right away and instead, listed out the next steps:

 

In cases like these, I just follow up the Agent “Go for it” or “Proceed”. Sometimes it does everything in the to-do list in one go and in other cases it goes one by one where I have to tell the Agent to “Do all the tasks”. Do note that I did not change any settings as I was setting up Gemma 4 since it was just pulling the model and selecting it in Visual Studio Code.

Compare that to Copilot, where regardless of the prompt, it would take action right away. There were cases where I forgot to change the mode from “Agent” to “Chat” and I was specifically asking the AI about the plan to tackle the issue. Instead of listing out the steps, it did it right away which I did not want it to do.

In all fairness, Gemma 4 and Copilot are from different companies (Google and Microsoft) and since Copilot is built into Visual Studio Code, it is fair to assume that its actions strictly follows based on the settings you have in Visual Studio Code for Copilot.

However, it is always nice to see Gemma 4 listing out the To-do list and asking the user to proceed. I believe it is good practice by default if you are a type of user that wants to get an AI’s advice on what to do and doing it yourself from there.

 

Please Google I need this. Gemma 4 is kind of Looping Itself

It is exactly what you are thinking. This is a common occurrence where Gemma 4 will read a file from top to bottom and reread it again. Here is an example that I encountered when using Gemma 4:

I am not sure what is causing this issue since this happens randomly.

 

The solution is stopping the Agent and sending the same prompt. This fixes the issue really well, though this bug remains a mystery to why it occurs in the first place.

 

Francis’ Verdict on Gemma 4

This is my verdict on the use of Gemma 4 as an AI-Agent:

I believe Gemma 4 works really well when being an open source developer. It can navigate large code-bases and being able to solve complex problems well for a model that is quite small.

Although there isn’t a big difference between Gemma 4 and other models I have used, it is good to consider token usage. I would recommend Ollama when using Gemma 4. It is free to use the cloud version and the tokens reset weekly whereas Copilot resets monthly. If you are heavily relying on AI-Agents, I would recommend the Ollama solution since it is more flexible. Even if you reach the daily limit of tokens, it resets every few hours.

I would highly recommend Gemma 4 as a great starting point when it comes to using it as an Agent when you want to contribute to open source. Just remember to monitor the response time since there is a very good chance where it loops itself in which it would burn tokens in the process.

 

 

Summary

Gemma 4 has been used in some aspects when it comes to setting up Ollama to use Gemma 4, testing out the response of the model, prototyping using Gemma 4, and the role as an Agent. Here are the main things to consider based on what I have shared above.

 

1. Convenience

Like any other local models, you have to consider not only if you are conformable downloading a model locally, but ensuring you have enough compute power to run an LLM. Although there are options to use LLM on the cloud (for Ollama at least), having a local LLM is very convenient for developers who want to run the model locally and not worry about:

  • Use of Tokens limits and payed services.
  • The environment when it comes to data centers in the age of AI.

 

2. Performance

Speaking of compute power, having a local LLM, even with smaller models of Gemma 4, still needs a lot of power. We saw that in Elmar’s experience, it took a while for Gemma 4 to produce an output comparable to using any cloud model. If you are comfortable with the wait time of the model, then it shouldn’t be a problem!

 

3. Context Output

Every model behaves differently whether cloud or local models. This is no different to Gemma 4. If you are using Gemma 4, you have to make sure the prompt is specific to your needs. This is best practice in prompts in general when it comes to requesting your needs and being as specific as possible.

 

4. Role as an AI-Agent

It is common for developers nowadays to use a local model to run as an Agent. Using Gemma 4 via Ollama has been a great experience for me. Do note that you may encounter issues when using Gemma 4. I would recommend monitoring Gemma 4’s token usage in the event of Gemma 4 looping itself and burning unnecessary tokens.

 

Verdict: Overall, if you have enough power to run a local LLM and would like to have a model that is smaller but more powerful than other Flagship models to use in your development knowing the limitations of local LLMs in general, then I believe Gemma 4 is right for you!

 

I hope that this Multiversal Analysis has helped you to determine if Gemma 4 is right for you! If you like to learn more about Gemma 4 in detail, you can read here: https://deepmind.google/models/gemma/gemma-4/

Image

 

 

Thank you for Reading!

If you have made it this far, thank you for taking the time to read this article! I hope you have learned something based on our experiences using Gemma 4 in different areas of development.

I would like to give credit to the Virtual Coffee Group where I used their “#co-working” room to meet with Elmar Chavez (@codingwithjiro), Konark Sharma (@konark_13), and Julien Avezou (@javz) for the first time outside of DEV and would love to work with them again in the future!

 

Feel free to send us love by following us individually and our DEVenger org!

 

Challenge #1: Did you find 4 hidden random videos in this article?

Challenge #2: How many “r’s” are there in this post in total?

Challenge #3: Who are the anime characters in this article’s cover image?

Challenge #4: Based on Challenge 3, who decide to choose those anime characters in this article respectfully?

Any questions/comments? Love to hear your thoughts on Gemma 4! What’s your experience on using Gemma 4 and do you recommend it?

The Rising Trend of Creative Interview Questions in Tech

In the ever-evolving landscape of the tech industry, hiring practices are constantly being redefined. As companies strive to find the right fit for their teams, creativity in interview questions has emerged as a fresh approach to better understand candidates. A notable trend is the rise of unconventional questions that challenge applicants to think critically and showcase their problem-solving abilities. One such question, “If you were a software bug, what kind of bug would you be and why?” is gaining traction among tech recruiters.

This question, like many others in the realm of creative interviewing, serves multiple purposes. It offers insight into a candidate’s thought process, demonstrates how they articulate complex ideas, and sheds light on their approach to challenges. In this article, we will delve into this intriguing question and similar ones, exploring the rationale behind them, their impact on hiring success, and the lessons learned from their implementation.

The Evolution of Interview Questions

Traditional versus Creative Questions

For decades, the interviewing process has relied heavily on a standard set of predictable questions. Candidates often encountered queries about their past experiences, technical skills, and conflict resolution strategies. However, this traditional approach often misses out on capturing the nuanced qualities of a candidate that are critical for success in dynamic tech roles.

Creative interview questions represent a shift away from the conventional. These questions do not simply evaluate technical knowledge but instead focus on cognitive agility, creativity, and interpersonal skills. The objective is to evaluate how candidates think on their feet and how they approach complex problem-solving.

“Traditional interview questions often create standard responses, whereas creative questions allow candidates to showcase their individuality and thought processes.”

The Purpose Behind Creative Questions

The primary aim of these creative questions is to foster a dialogue that reveals a candidate’s personality and thought patterns. Companies like Google and Amazon have long advocated for unconventional questions that can lead candidates to elaborate on their experiences and viewpoints.

For instance, asking a candidate about the bug they would be allows interviewers to gauge their awareness of software issues, their critical thinking skills, and their ability to reflect on personal and professional identity. Such questions often lead to richer conversations, allowing interviewers to assess more than just technical prowess.

Analyzing the Impact of Creative Interview Questions

Candidate Experience

One significant benefit of integrating creative questions into the interview process is the improvement in candidate experience. Traditional interviews can be daunting, often creating an atmosphere of stress that hinders genuine interaction. Creative questions can alleviate some of this pressure, allowing candidates to express themselves more freely.

Consider a scenario where a candidate is asked to describe a fictional character they would embody in a tech project. This invites not only creativity but also an opportunity to discuss collaboration, leadership, and uniqueness—all valuable attributes in a tech environment.

“When candidates are encouraged to think outside the box, they often reveal their true personalities, leading to better cultural fit.”

Decision Making for Employers

Creative interview questions also help employers make more informed decisions. By facilitating discussions that reveal a candidate’s values, work style, and innovative thinking, companies can align their new hires with their organizational culture. This ultimately leads to improved retention rates and job satisfaction.

Take, for instance, the rise of remote work and the necessity for self-motivation. Interviewing a candidate about how they would structure their day working remotely might reveal their time management skills and work ethic. Such insights can be invaluable when determining if a candidate is likely to thrive in a remote or hybrid work environment.

Success Stories: Companies Embracing Creative Questions

Case Study: Google

Google is often cited as a pioneer in the realm of creative interview questions. The tech giant famously employed questions like, “How many ways can you think of to collect a penny from the ground?” This approach was intended to evaluate candidates on their problem-solving capabilities and innovative thinking.

Numerous success stories stem from Google’s unique interview style. Their practice of asking unconventional questions has led to them hiring candidates who not only possess exceptional technical skills but also demonstrate the capacity to adapt and innovate—the very qualities that keep Google at the forefront of the tech industry.

Case Study: Amazon

Amazon has also embraced creative interviewing techniques, particularly through its Leadership Principles. Candidates are often asked situational questions that require them to reflect on past experiences and demonstrate how they align with principles such as “Customer Obsession” or “Invent and Simplify.”

By concentrating on how candidates would fit within their established culture, Amazon has experienced significant success in employee satisfaction and retention. New hires often report feeling privileged to be part of a culture that values innovation and leadership, attributing it to the carefully selected interview process.

Lessons Learned from Creative Interview Questions

The Importance of Relevance

While creative questions can enhance the interviewing process, it is essential that they remain relevant to the role. Questions should align with the skills and attributes required for the position in order to yield meaningful insights. For example, a question about designing a fictional app might be great for a product manager but less applicable for a back-end developer.

“Relevance is key; creative questions must correlate with the job role to provide real insights about the candidate’s suitability.”

Training Interviewers

Implementing creative interview questions requires a paradigm shift not only in how questions are posed but also in how interviewers are trained. Equipping hiring managers and team leads with the skills to interpret the responses effectively is critical. This includes understanding the nuances in candidate answers and taking the time to allow for exploration rather than rushing through the interview.

Building a Culture of Openness

To foster an environment where candidates feel comfortable sharing their thoughts without fear of judgment, companies must prioritize a culture of openness. Creating a safe space for dialogue encourages candidates to be authentic, resulting in a more effective evaluation process.

Conclusion: The Future of Tech Interviews

As the tech industry continues to evolve, so too will the methods used for hiring. The introduction of creative questions into interview processes has shown promise in providing a more holistic view of candidates, enhancing both their experience and the quality of hires for companies.

From organizations like Google and Amazon that have successfully leveraged this trend, we see that understanding candidates beyond their resumes can lead to the discovery of hidden gems—individuals capable of bringing innovation, creativity, and value to their teams.

Going forward, businesses that embrace creativity in interviews while ensuring relevance and training will pave the way for a future that prioritizes not just skills but also personality and cultural fit. This comprehensive approach will ultimately contribute to building not only successful teams but also thriving organizations in a competitive tech landscape. The journey of integrating creative interview questions may just be beginning, but its potential impact is already evident and worth exploring.

It Worked When I Closed the Laptop. I Swear.

Dev Comics #1 — It Worked Yesterday

Dev Comics #1 — It Worked Yesterday

Last night the build was clean. This morning, five red errors before the coffee was even warm.

git log shows the only commit in the last 11 hours is yours. "Refactor player movement".

You hold the cold coffee. You stare at the screen.

If you’ve shipped any game ever, you’ve been here. Welcome to Dev Comics #1.

This is a new weekly-ish series from a small Korean indie game studio — short comics about the unglamorous moments of making games. New comics most Tuesdays and Saturdays.

Coming up:

  • #2 Shader Compile Coffee — when your Unreal shader compile outlives your coffee
  • #3 Cat.exe Has Stopped Responding — the cat owns the keyboard now

If this hit close to home, drop a 🦖 reaction or share the worst “11 hours ago, by me” commit you’ve ever seen.

We Built an Agent That Flags Fake Internships #kryx

Every placement season, students receive internship offers that look legitimate on the surface but fall apart the moment you inspect them closely.

Some ask for “training fees.”
Some guarantee placements before interviews even happen.
Some companies barely exist online.
Others hide behind generic Gmail accounts and flashy marketing.

The worst part is that many students can’t easily distinguish between a real opportunity and a well-designed scam.

So my teammates and I built a system that tries to score internship legitimacy before students commit time or money.

We call it ShieldIntern.

The Core Idea

We wanted a system that behaves less like a chatbot and more like an auditor.

Instead of simply asking an LLM whether an internship is “fake,” we structured the analysis around four specific evaluation pillars:

  • Financial transparency
  • Digital footprint
  • Recruitment authenticity
  • Marketing credibility

The system takes internship ads, screenshots, emails, company descriptions, and URLs as input. It then analyzes the content and generates a legitimacy score between 0 and 100.

But the important part wasn’t generating a score.

The difficult part was making the scoring explainable.

The Rule That Changed Everything

One design decision became the foundation of the entire system:

If a company asks students to pay upfront fees, the legitimacy score is automatically capped below 30.

That single rule solved multiple problems at once.

Without it, the LLM occasionally produced high scores for suspicious internships simply because the company had a polished website or strong marketing language.

In reality, legitimate internships rarely require students to pay to work.

So instead of relying purely on probabilistic reasoning, we introduced deterministic penalties for critical red flags.

That hybrid approach produced much more reliable outputs.

How The System Works

The frontend was built using React, Vite, and Tailwind CSS.

Students can:

  • Upload screenshots
  • Paste internship descriptions
  • Add company details
  • Submit emails or URLs

The backend uses Express.js and Multer for request handling and file uploads.

The analysis pipeline sends structured prompts to Groq running LLaMA 3 70B.

Instead of asking broad questions, the prompt forces the model to evaluate internships through individual categories.

For example:

  • Does the company use a corporate domain?
  • Is the recruitment process realistic?
  • Does the offer use urgency tactics?
  • Are responsibilities clearly defined?
  • Is there evidence of a real digital footprint?

Each category contributes to the final score independently.

That structure made the outputs significantly more consistent.

One Unexpected Problem

The first versions of the system were too optimistic.

The model often interpreted professional-looking language as credibility.

That became a serious issue because scam internships are usually designed to appear highly professional.

We had to redesign the scoring logic so that suspicious financial behavior outweighed surface-level presentation quality.

This became one of the biggest lessons we learned while building the project:

LLMs are good at pattern recognition, but trust systems still need hard constraints.

Why Explainability Matters

One thing we intentionally avoided was producing only a final verdict.

A simple “fake” or “real” label isn’t very useful to students.

Instead, the system returns:

  • positive indicators
  • red flags
  • category breakdowns
  • actionable recommendations

That way, students understand why an internship appears suspicious.

In practice, explainability matters more than raw scoring accuracy because users need confidence in the reasoning process.

Building the Frontend

We wanted the interface to feel less like an academic tool and more like a modern product.

So we added:

  • drag-and-drop uploads
  • animated score gauges
  • color-coded verdicts
  • responsive layouts
  • dark mode support

The goal was to make the analysis feel immediate and intuitive.

Tech Stack

Frontend:

  • React 18
  • Vite
  • Tailwind CSS
  • Axios

Backend:

  • Node.js
  • Express.js
  • Multer

AI Layer:

  • Groq API
  • LLaMA 3 70B

What We Learned

Building this project changed the way we think about AI-assisted trust systems.

A few lessons stood out:

  1. Pure LLM reasoning is not enough for fraud detection.
    Critical rules still need deterministic enforcement.

  2. Explainability matters more than confidence scores.
    Users trust systems that show reasoning transparently.

  3. Scam detection is largely behavioral analysis.
    Many fake internships reveal themselves through recruitment patterns rather than obvious technical signals.

  4. Small prompt structure changes drastically affect consistency.
    Breaking scoring into categories improved output quality significantly.

Final Thoughts

Internship scams are becoming increasingly sophisticated, especially in online hiring spaces.

We don’t think AI alone can solve that problem.

But we do think systems that combine structured rules with language models can help students make safer decisions faster.

That was the goal behind ShieldIntern.

GitHub Repository:
https://github.com/ryxonix/HackWithBangalore

Your Personal AI Stack Is the New Dotfiles

Every senior engineer who has shipped meaningful work in the last thirty years has carried a personal dev environment with them. Emacs configs, vim plugins, shell aliases, dotfiles repos, custom prompts, terminal multiplexer setups, a handful of scripts that exist only on their laptop and do exactly what the work needs. Nobody waited for IT to mandate the right .bashrc. The configurations that actually got used were the ones tuned to the operator, by the operator, and accumulated over years.

AI adoption is the same shape, on a thirty-year delay. The “wait for the enterprise plan to roll out” path is the same path that left people running Outlook in 1998 while the early adopters ran their own mail server with elm and procmail. The configuration that wins, again, is the one tuned to your work — not the team average.

The Institutional Lag Is Structural, Not Solvable

The enterprise AI committee, the IT rollout, the sanctioned LLM provider, the official acceptable-use policy — these are eighteen to twenty-four months behind what the team’s power users already do. The cause is structural. Committees cannot iterate at the rate of an individual operator who is using the tool every day and rewiring their workflow weekly. Putting better people on the committee does not fix this; the structure itself caps the rate of change.

The historical record is unambiguous. Git was an individual-power-user tool from Linus’s 2005 release through about 2010, and only became enterprise standard somewhere around 2015 — a full decade after it existed. As of the 2025 Stack Overflow Developer Survey, Git sits above 90% adoption across professional developers. The enterprise mandate followed the power-user adoption by years. Same story for Slack (founded 2013, dominant by ~2019), Docker (released 2013, enterprise standard by ~2017), VS Code (released 2015, dominant IDE by ~2019). The mandate always followed.

The people who outperformed in each of those windows were the people who adopted early, built personal infrastructure around the new tool, and accumulated workflow taste before the enterprise plan caught up. In every case, the official plan eventually arrived, and in every case it was late, incomplete, and missing the discipline-specific patterns the power users had already worked out. The same thing is happening with AI right now.

What a Personal AI Stack Actually Is

The concrete components are not exotic. Most of them ship in the tools you already have. The work is in assembling them.

A persistent memory layer in files you own. CLAUDE.md, MEMORY.md, per-project context files, an agents/ directory of role-specific context. Not vendor memory. Filesystem memory that travels with you across providers and survives any model deprecation. This is the wrapper-pattern argument from earlier this month.

A hooks system that enforces your taste. Anthropic shipped hooks in Claude Code — PreToolUse, PostToolUse, Stop, SessionStart, SubagentStop, UserPromptSubmit. The hooks are how you encode your own non-negotiables: don’t let the agent run a destructive command without confirmation, lint every write, log every session, refuse to commit with TODO markers. The hook is the editor’s auto-format on save for AI work.

A set of slash commands for your repeatable workflows. The five or six things you do every week — the standup digest, the PR review pass, the architecture sketch, the test triage — get encoded as one-character invocations. The commands are personal because the workflows are personal.

Skills, the procedural memory layer. Anthropic’s skills documentation covers the platform-native version. The open standard at agentskills.io makes skills portable across agents — Claude Code, Codex, Gemini CLI, the Hermes orchestrator from yesterday’s piece. A skill captures a pattern you have already executed enough times to formalize.

MCP servers wrapping the tools you actually use daily. Not a marketplace download. A small set of MCP integrations for the specific systems your work touches — your data warehouse, your project tracker, your finance system, your private docs. Most people will end up writing one or two themselves; the rest can be borrowed.

An orchestrator-worker compose. Claude Code as the in-session worker, a wrapper like Hermes Agent (or one you write yourself) as the durable cross-session orchestrator. The compose pattern was the argument of yesterday’s piece and it is the structural answer to single-vendor lock-in.

That is the kit. None of these components is hard individually. The work is in assembling and tuning them to the actual job.

Why “The Way You Want” Matters

Enterprise AI plans optimize for the median user, which is by definition not you. The median user does not have your discipline-specific edge cases, your taste in code, your judgment about what is worth automating, the specific failure modes you have learned to anticipate from a decade of doing the work. The committee output is a lowest-common-denominator policy, and lowest-common-denominator policies produce lowest-common-denominator outputs.

A personal AI stack optimizes for the operator, which is you. The skill that captures your specific way of running a PR review will outperform a generic prompt template. The hook that enforces your team’s actual code conventions will outperform the model’s default style guide. The memory file that holds your project’s actual history will outperform a context window that starts empty every Monday.

How the Personal Stack Becomes the Official One

This is the part the institutional planners get wrong. Every enterprise standard started as one person’s hobby project. The path is consistent across thirty years of tools: someone builds it for themselves; it outperforms the team’s sanctioned approach; other engineers adopt it informally; the informal pattern becomes “how we do this here”; eventually official sanction follows, or the official plan is quietly replaced by the personal pattern.

This is happening at companies right now with AI infrastructure, in places where the official plan has not yet arrived. A working content pipeline that ships across five surfaces a day with a SQLite memory database and a hand-rolled orchestration layer — for a concrete example, the kind of system the marketing team would have built if there were a paved road — starts as one engineer’s weekend project and ends as the de facto company standard. The official plan eventually arrives and either ratifies the existing pattern or admits it lost.

The Honest Caveat

Some employers will discipline shadow tooling on principle. If your environment is one of those, you have to play by it. But most companies do not. Most companies have a vague “AI policy in progress” posture that buys nine to eighteen months of operator latitude, and the operators who use that window will be the ones authoring the policy when it eventually drops. The right posture during that window is the same posture senior engineers have always taken with personal infrastructure: do not ask permission for your own dev environment, ship value, let the work speak.

The Window

The official AI adoption plan at most companies will land in 2027 or 2028. It will be late, incomplete, and miss the discipline-specific work you do. The personal AI stack you build in 2026 is the only piece under your direct control. The institutional plan will, as it has every time before this, eventually follow the people who built theirs early.

Build the stack you want. Make it the official one by being the person who knew how before the committee did.

Your LLM Bill Is Exploding Because of Architecture, Not Pricing — Here’s the Fix

LLM per-token prices fell between 9x and 900x over the past year. Yet most teams running agentic AI in production are seeing their API bills go up, not down. Here is exactly why, and the three code-level interventions that cut spend 60-80% without touching quality.

Why Agentic Workloads Break Your Token Budget

A chatbot interaction: 1 LLM call, ~3,000-10,000 tokens. Done.

An agentic task: plan the approach, call a tool, process results, decide next step, call another tool, validate output, loop if needed. That is 10-20 LLM calls, each carrying the growing context window from all previous steps. By step 8, you may be passing 60,000 tokens into every call — most of it noise.

The math: agentic workflows burn 5-30x more tokens per completed task than a standard chatbot exchange. A 10x price drop combined with a 20x token increase means your bill doubled.

There are three places the money leaks.

Leak 1: Context Bloat — Fix with Compression

Most agentic pipelines append every step’s output to a running context that gets passed to every subsequent LLM call. By step 6, you are paying full price to send the model information from step 1 that is no longer relevant.

Before passing context to any LLM call, compress it:

from anthropic import Anthropic
client = Anthropic()

def compress_context(conversation_history: list[dict], current_task: str,
                     token_budget: int = 20000) -> list[dict]:
    """
    Compress older turns if context exceeds budget.
    Keeps recent turns intact, summarizes older ones.
    """
    raw_tokens = sum(len(str(m)) // 4 for m in conversation_history)
    if raw_tokens <= token_budget:
        return conversation_history

    recent = conversation_history[-3:]
    older = conversation_history[:-3]
    if not older:
        return recent

    summary_prompt = f"""Summarize the following conversation history into 2-3 sentences,
keeping only information relevant to: {current_task}

History: {older}"""

    summary = client.messages.create(
        model="claude-haiku-4-5-20251001",  # cheap model for summarization
        max_tokens=300,
        messages=[{"role": "user", "content": summary_prompt}]
    ).content[0].text

    compressed = [{"role": "system", "content": f"[Earlier context summary]: {summary}"}]
    compressed.extend(recent)
    return compressed

# Before any LLM call in your agent loop:
context = compress_context(conversation_history, current_task="validate invoice fields")
response = client.messages.create(model="claude-sonnet-4-6", messages=context, max_tokens=1000)

This alone typically reduces context size by 50-70% in long-running agentic workflows.

Leak 2: Frontier Model Overuse — Fix with Model Routing

Using a frontier model for every step in your pipeline is like hiring a principal engineer to sort your email. Most agent steps — classification, format conversion, simple lookups, routing decisions — work fine with a small, fast, cheap model.

from enum import Enum
from dataclasses import dataclass

class TaskComplexity(Enum):
    SIMPLE = "simple"
    MEDIUM = "medium"
    COMPLEX = "complex"

@dataclass
class ModelConfig:
    model: str
    cost_per_1k_input: float
    cost_per_1k_output: float

MODEL_TIERS = {
    TaskComplexity.SIMPLE: ModelConfig("claude-haiku-4-5-20251001", 0.00025, 0.00125),
    TaskComplexity.MEDIUM: ModelConfig("claude-sonnet-4-6", 0.003, 0.015),
    TaskComplexity.COMPLEX: ModelConfig("claude-opus-4-6", 0.015, 0.075),
}

def classify_task(task_description: str) -> TaskComplexity:
    simple_keywords = ["classify", "categorize", "is this", "format", "convert", "route", "label"]
    complex_keywords = ["analyze", "reason", "debug", "design", "plan", "evaluate", "compare"]
    task_lower = task_description.lower()
    if any(kw in task_lower for kw in simple_keywords):
        return TaskComplexity.SIMPLE
    elif any(kw in task_lower for kw in complex_keywords):
        return TaskComplexity.COMPLEX
    return TaskComplexity.MEDIUM

def routed_llm_call(task: str, messages: list[dict]) -> tuple[str, float]:
    complexity = classify_task(task)
    config = MODEL_TIERS[complexity]
    response = client.messages.create(model=config.model, max_tokens=1000, messages=messages)
    input_tokens = response.usage.input_tokens
    output_tokens = response.usage.output_tokens
    cost = (input_tokens / 1000 * config.cost_per_1k_input +
            output_tokens / 1000 * config.cost_per_1k_output)
    return response.content[0].text, cost

In most production pipelines, 70-80% of steps classify as SIMPLE or MEDIUM. Routing those to cheaper models cuts your average cost per task by 60-70%.

Leak 3: Redundant Calls — Fix with Semantic Caching

Your agentic system is probably making the same LLM calls repeatedly. Different phrasing, same semantic content. Standard caching misses these. Semantic caching embeds the query and retrieves cached results for near-matches.

import numpy as np
from datetime import datetime, timedelta

class SemanticCache:
    def __init__(self, similarity_threshold: float = 0.92, ttl_hours: int = 24):
        self.cache: list[dict] = []
        self.threshold = similarity_threshold
        self.ttl = timedelta(hours=ttl_hours)

    def _embed(self, text: str) -> list[float]:
        # Replace with real embedding model in production
        import hashlib
        seed = int(hashlib.md5(text.encode()).hexdigest(), 16) % (2**32)
        return np.random.RandomState(seed).randn(1536).tolist()

    def _cosine_similarity(self, a, b) -> float:
        a, b = np.array(a), np.array(b)
        return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))

    def get(self, query: str) -> str | None:
        query_embedding = self._embed(query)
        now = datetime.utcnow()
        for entry in self.cache:
            if now - entry["timestamp"] > self.ttl:
                continue
            if self._cosine_similarity(query_embedding, entry["embedding"]) >= self.threshold:
                return entry["response"]
        return None

    def set(self, query: str, response: str):
        self.cache.append({
            "query": query,
            "embedding": self._embed(query),
            "response": response,
            "timestamp": datetime.utcnow()
        })

Production deployments with repetitive enterprise workloads typically see 30-50% cache hit rates — eliminating a third to half your API calls entirely.

Putting It Together: Cost Tracking Per Step

None of this works without measurement. Add per-step cost tracking to your agent loop:

from dataclasses import dataclass, field
import time

@dataclass
class AgentStep:
    name: str
    model: str
    cache_hit: bool
    cost_usd: float
    duration_ms: float

class CostAwareAgentRunner:
    def __init__(self):
        self.steps: list[AgentStep] = []
        self.cache = SemanticCache()

    def run_step(self, name: str, task: str, messages: list[dict]) -> str:
        start = time.time()
        cached = self.cache.get(task)
        if cached:
            self.steps.append(AgentStep(name, "cache", True, 0.0, (time.time()-start)*1000))
            return cached

        response_text, cost = routed_llm_call(task, messages)
        self.cache.set(task, response_text)
        self.steps.append(AgentStep(
            name, classify_task(task).value, False, cost, (time.time()-start)*1000
        ))
        return response_text

    def cost_report(self) -> dict:
        total = sum(s.cost_usd for s in self.steps)
        hits = sum(1 for s in self.steps if s.cache_hit)
        return {
            "total_cost_usd": round(total, 6),
            "steps": len(self.steps),
            "cache_hit_rate": hits / len(self.steps) if self.steps else 0,
            "by_step": [{"name": s.name, "cost": s.cost_usd, "model": s.model} for s in self.steps]
        }

Once you have this instrumentation, the top three steps by token consumption almost always account for 60-70% of total spend. That tells you exactly where to focus.

A logistics client: $40K/month in LLM API costs, down to under $12K after model routing + semantic caching + context compression. Same volume, same quality. Frontier model performed better on complex steps because it was receiving cleaner, more focused context.

If you are hitting this in production and want a second set of eyes, feel free to DM me — happy to dig in.

How We Prevent Attendance Fraud Using GPS Verification

In many universities, seminars, and training programs, attendance systems are still surprisingly vulnerable.

Students sign in for absent friends. Paper sheets get manipulated. QR codes are shared remotely. Manual verification wastes time and creates inaccurate records.

While building Attendify, we wanted to solve one core problem:

How do you prove someone was physically present at an event without slowing down the check-in experience?

Our answer was browser-based GPS geofencing with strict integrity validation.

The Problem With Traditional Attendance Systems

Most attendance systems fail because they trust the user too much.

Common weaknesses include:

  • Shared QR codes
  • Remote sign-ins
  • Duplicate attendance submissions
  • Fake GPS apps
  • Manual attendance manipulation
  • Slow paper-based verification

In large classrooms or organizational events, verifying hundreds of attendees manually becomes nearly impossible.

We needed a system that could:

  • verify physical presence,
  • reduce fraud,
  • work instantly,
  • and require no app installation.

Our Approach: GPS Geofencing

Attendify uses secure browser-based GPS verification to validate attendance in real time.

Instead of simply clicking “I’m here,” participants must physically exist inside a defined geographic boundary.

How It Works

An organizer creates an attendance session and defines a GPS radius around the venue.

For example:

  • Event Hall Radius: 50 meters
  • Lecture Room Radius: 20 meters

When a participant attempts to check in:

  1. The browser requests secure location permission
  2. The device coordinates are collected
  3. Distance calculations run in real time
  4. The system verifies whether the device is inside the allowed radius
  5. Attendance is approved or rejected instantly

If the user is outside the boundary, the check-in fails automatically.

Why Browser-Based GPS?

We intentionally avoided requiring a mobile app.

Modern browsers already support highly accurate geolocation APIs, especially on mobile devices.

This gave us several advantages:

  • Zero installation friction
  • Faster onboarding
  • Cross-platform compatibility
  • Easier adoption in universities and events

Participants simply open a link and verify attendance directly in the browser.

Preventing Remote Check-Ins

GPS alone is not enough.

A user could still attempt to manipulate attendance using multiple devices or browser tricks.

To reduce this, Attendify adds several integrity checks:

Device Identity Validation

We generate strict device-level identifiers to reduce duplicate or impersonated check-ins.

Multi-Browser Detection

The platform checks for suspicious multiple-session behavior across browsers.

Single Attendance Enforcement

Each participant can only successfully verify once per session.

Timestamp Validation

Every attendance record is logged with precise timing data for auditing.

Real-Time Attendance Sync

One major issue with paper systems is delayed visibility.

Attendify updates attendance ledgers instantly.

Organizers can:

  • monitor attendance live,
  • detect missing participants immediately,
  • and export records securely to PDF or Excel.

This becomes especially useful during:

  • university lectures,
  • bootcamps,
  • corporate trainings,
  • conferences,
  • and seminars.

Technical Challenges

Building reliable GPS verification inside browsers introduced several engineering challenges.

GPS Accuracy Variability

Different devices report different levels of GPS precision.

We solved this by:

  • adding tolerance handling,
  • validating coordinate confidence,
  • and optimizing acceptable geofence thresholds.

Browser Permission Handling

Many users deny location access accidentally.

We designed fallback guidance flows that clearly explain why location access is required.

Mobile Performance

Real-time calculations needed to remain lightweight and fast, especially on low-end devices common in emerging markets.

Why This Matters

Attendance data affects:

  • academic records,
  • certification eligibility,
  • training compliance,
  • and organizational accountability.

If attendance systems are unreliable, the data becomes meaningless.

Our goal with Attendify is simple:

Make physical presence verifiable, secure, and effortless.

Final Thoughts

Attendance fraud is still a massive operational problem in schools and organizations.

By combining:

  • GPS geofencing,
  • browser-native verification,
  • device integrity checks,
  • and real-time synchronization,

Attendify creates a more trustworthy attendance system without increasing friction for users.

We’re continuing to improve the platform with stronger verification methods, analytics, and smarter fraud detection.

You can learn more here:

Attendify Official Website

From Problems to Patterns: Generative AI in .Net (C#)

Learn to ship autonomous agents, RAG pipelines, and AI tools using Microsoft.Extensions.AI, Microsoft.Agents.AI, and Model Context Protocol — with 37 runnable code samples.

The Problem

Most AI books teach you OpenAI’s API in Python. They skip over:

  • How to route between 5 different providers (OpenAI, Azure, GitHub Models, Ollama, Anthropic) with one interface
  • How to build a RAG pipeline that doesn’t hallucinate on page 50 of a document
  • How to deploy autonomous agents that your team can actually maintain
  • How to package AI tools as MCP servers and drop them into production
  • How to defend against prompt injection, monitor token costs, and test non-deterministic systems

Meanwhile, your .NET team is stuck reinventing these wheels or shipping Python sidecars.

Meet From Problems to Patterns

This is the only book that covers the full Microsoft AI stack in production depth:

  • Microsoft.Extensions.AI — One interface across every provider; middleware for caching, logging, cost tracking, and fallback logic
  • Microsoft.Agents.AI — Build autonomous agents with persistent sessions, human approval flows, and multi-agent orchestration
  • Model Context Protocol (MCP) — Ship AI tools as NuGet packages; secure, auditable, enterprise-ready
  • .NET 9 + real C# code — 37 runnable companion projects. Every example builds. Every example ships.

What You’ll Build

Real patterns for real problems:

✅ Semantic Search Engine — embeddings, vector similarity, and ranking

✅ Production RAG Pipeline — ingestion, chunking, retrieval, inline citations, LLM-as-judge evaluation

✅ Vision AI Document Processor — read receipts from photos, extract structured data

✅ Autonomous Expense Report Agent — handles approvals, maintains context across sessions

✅ Multi-Agent Workflows — agents coordinating with each other to solve complex problems

✅ MCP Servers as NuGet Tools — deploy to Azure Container Apps, lock down security layers

✅ Fully Offline AI App — Ollama integration, no API keys, no cloud costs, data stays local

What You’ll Learn

Six chapters. Six patterns. Production-ready.

  1. Foundations — What generative AI is, why it’s probabilistic, how to reason about it
  2. Microsoft.Extensions.AI — Streaming, structured output, function calling, prompt engineering, context windows
  3. RAG End-to-End — The enterprise pattern that powers 90% of production AI (100 pages, every decision explained)
  4. Microsoft Agent Framework — Sessions, approval workflows, graph execution, A2A communication
  5. Model Context Protocol — Build servers, choose transports, secure for enterprise
  6. Production Patterns — OpenTelemetry tracing, Polly resilience, cost-aware routing, responsible AI, testing non-deterministic systems

Plus 4 appendices: package reference, model quick reference, provider support matrix, Extensions.AI API reference.

Who This Is For

You’re a .NET developer or solution architect with solid C# experience. You don’t need an ML background. You need to ship AI features — now — and they need to hold up in production.

You’re tired of:

  • Shipping Python sidecars just to call an LLM
  • Reinventing RAG chunking strategies
  • Wondering how to deploy agents safely
  • Learning “AI for Python devs” books that skip the .NET tooling

This book is written for you.

The Stack (Validated May 2026)

  • .NET 9
  • Microsoft.Extensions.AI 10.5.2
  • Microsoft.Agents.AI 1.3
  • ModelContextProtocol 1.2
  • Real production patterns you can deploy tomorrow

Get It Now

📖 Order on Amazon UK

Ready to build AI that ships? Stop waiting for Python docs to translate to C#. Read the book written for .NET teams, by someone who’s shipped this stack to production.

Get your copy →

GemmaOps Edge: From 373 Alarms to 1 Root Cause Using Local AI (Gemma 4)

This is a submission for the Gemma 4 Challenge: Build with Gemma 4

🚨 From 373 alarms to 1 root cause in seconds

A production-grade AI reasoning agent that turns a wall of network alarms into clear root-cause analysis — running entirely on your own hardware.

What I Built

The Problem

It is 3 AM. A NOC engineer receives an alert:

“North region customers reporting intermittent connectivity drops. Possible fiber cut or BGP flap.”

The system shows:

  • 373 alarms
  • 45 active
  • 6 CRITICAL

The challenge:

  • Identify root cause
  • Determine blast radius
  • Estimate impact and resolution

This typically takes 20–120 minutes depending on expertise.

The Solution

GemmaOps Edge is a fully local AI reasoning agent that enables operators to query network state in natural language and receive precise, actionable insights.

While GemmaOps Edge is demonstrated using telecom NOC scenarios, the same architecture applies to any high-volume event-driven system — including cloud observability, microservices monitoring, and enterprise infrastructure platforms.

🚨 This is not alert summarization — it is reasoning-driven root cause analysis.

Key Capabilities

  • Topology-aware Root Cause Analysis
  • Multi-condition Correlation (alarms + topology + history + traffic)
  • Service Impact Propagation
  • Historical Incident Matching with MTTR estimation
  • Natural Language Query Interface

Example Interaction

Operator: Why is the North region experiencing outages?

Agent:

  • BGP SESSION DOWN on CR-NOR-01 (ALM-00196)
  • CE-NOR-02 (ALM-00199) — 1,252+ prefixes withdrawn
  • SERVICE_OUTAGE affecting 2,560 customers

Historical match:

INC-2026-017 (BGP failure, MTTR 53 min)

Recommended actions:

  1. Check BGP config changes
  2. Rollback recent changes
  3. Initiate incident bridge

Architecture

✔ Fully local deployment

✔ No cloud/API dependency

✔ Runs on commodity hardware

How It Works

ReAct Agent (Reasoning + Acting)

The agent dynamically:

  1. Reads summarized network state
  2. Calls tools based on need
  3. Correlates multiple data sources
  4. Produces precise RCA output

NOC Tools

Tool Purpose
alarm_search Fetch active alarms
topology_lookup Get network relationships
path_finder Analyze routes
incident_search Retrieve historical incidents

Context Engineering (Critical Innovation)

Priority-based prompt construction:

  1. KEY FACTS (highest impact)
  2. Query intent
  3. Active alarms
  4. Topology graph
  5. Historical incidents

➡ Improved accuracy from ~40% to ~90%

The 128K Advantage

Two Operating Modes

Mode Description
ReAct (6K) Fast, tool-driven RCA analysis
Full Context (128K) Whole-network reasoning in one pass

Why It Matters

Questions like:

“Which nodes appear in both CRITICAL alarms AND past P1 incidents?”

❌ Cannot be solved by RAG or smaller-context models

✅ Solved using full-context reasoning

Benchmark Results

Model Context Performance
Gemma 4B 128K ✅ 5/5 (Best)
Mistral 7B 32K ⚠️ 2/5 (Partial)
Gemma 2B 8K ❌ 1/5 (Limited)

➡ The limitation is context window, not model size

Demo

Code

https://github.com/praveen-sinha-ai/gemmaops-edge

How I Used Gemma 4

Model Selected

gemma4:e4b (4B)

Why This Model

  1. Edge Deployment Requirement
  2. Runs locally (no GPU required)
  3. < 3GB footprint
  4. 1–4s response time

  5. Reasoning Capability

  6. Handles multi-condition correlation:

    • alarms
    • topology
    • incidents
    • traffic
    • config
  7. Accuracy vs Efficiency Balance

  8. E2B → insufficient reasoning

  9. 31B → impractical for edge deployment

  10. E4B → optimal trade-off

Two Usage Modes

  1. ReAct Agent Mode (6K)
  2. Multi-step reasoning
  3. Tool-based retrieval
  4. Fast responses

  5. Full Context Mode (128K)

  6. Entire dataset in prompt (~43K tokens)

  7. No retrieval needed

  8. Enables deep correlation queries

Key Insight

The biggest differentiator was not model size —

it was how much data the model could see at once.

What Makes This Different

  • Not a basic RAG system or generic LLM wrapper
  • Performs multi-step reasoning with tool execution (ReAct)
  • Understands network topology as a graph, not just text
  • Combines alarms, topology, and incident history in one reasoning flow
  • Supports full-network reasoning using 128K context
  • Runs fully local — no cloud, no data exposure
  • Produces specific, verifiable outputs (IDs, nodes, incidents) — not vague summaries

What’s Next

  • Graph Neural Networks (GNN-based RCA)
  • Predictive failure detection
  • Automated remediation workflows
  • Larger Gemma models (26B, 31B)
  • Domain fine-tuning (3GPP, TM Forum)

Closing

The biggest insight from building GemmaOps Edge:

The limitation is not model intelligence — it is how much of the system the model can see at once.

By combining:

  • Structured context engineering
  • Topology-aware reasoning
  • Large context windows (128K)

…it becomes possible to move from alert noise → precise root cause in seconds.

In a real NOC, that difference is not theoretical:

  • 2 hours MTTR → 20 minutes
  • Fewer escalations
  • Faster recovery
  • Better customer experience

Local AI for enterprise operations is no longer a future concept.

With Gemma 4, it is practical today.

Tech Stack: Python, FastAPI, NetworkX, FAISS, Ollama, Gemma 4

Tags: gemma ai telecom llm fastapi

Feedback & Discussion

I built GemmaOps Edge to solve a very real problem I’ve seen repeatedly in telecom NOCs — too many alarms, too little clarity.

If you’re working on similar problems (telecom, observability, AI agents), I’d genuinely like to hear your thoughts.

  • What would you improve in this approach?
  • Would you trust this in a real NOC?
  • Any ideas for scaling this further?

Feel free to drop your questions or suggestions in the comments.

Building an Amazon EKS Security Baseline

Amazon EKS makes it easy to start a Kubernetes cluster on AWS, but the real work begins after the control plane is running. Security in EKS is not a single feature or a one-time checklist. It is a layered posture that spans image hygiene, identity, network boundaries, data protection, and runtime monitoring.

This article walks through a practical security baseline for EKS, the reasoning behind each control, and the lessons that tend to matter most in production. Every section is grounded in working infrastructure: real AWS resources, real Kubernetes manifests, and real verification steps that were exercised against a live cluster.

Secure the Container Images

Every Kubernetes workload begins with an image, which makes image security the natural starting point. If the image is vulnerable or overly privileged, the rest of the stack inherits that weakness before the pod even starts. The fundamentals are straightforward: use minimal base images, run as a non-root user, never set the privileged flag on a container, scan images before they are pushed, and enforce repository scanning in Amazon ECR. A Dockerfile linter such as Hadolint, run locally or in CI, adds a cheap second line of defense by catching bad patterns before the image is even built.

The broader lesson is that a secure deployment pipeline starts well before a pod ever reaches the cluster. When the image is small, hardened, and scanned, the attack surface is already much smaller by the time Kubernetes is involved.

Control Who Can Access the Cluster

Once the image layer is under control, the next question is identity. EKS uses AWS IAM for authentication and Kubernetes RBAC for authorization, which means access spans two systems at once. EKS Cluster Access Management offers a cleaner way to map IAM principals to Kubernetes permissions and is the preferred path over the older aws-auth workflow.

The goal is access that is explicit, scoped, and reversible. Developers and testers should only get the permissions they need, namespace scoping should be preferred over broad cluster access, and cluster-admin style privileges should remain tightly controlled. One detail that is easy to miss: the IAM principal that creates the cluster is automatically a full cluster admin, and that principal should be removed (or replaced) once a proper set of access entries is in place. This is not only about blocking attackers. It also makes internal access easier to understand and audit as teams change.

Build Network Boundaries

Kubernetes namespaces are helpful, but namespaces alone are not isolation. Pods can still talk to each other unless the network layer is controlled. A solid baseline establishes a default-deny posture and then opens only the traffic that is actually required. That is the difference between a flat pod network and a controlled application boundary.

In practice, network policy is what stops a compromised pod from moving laterally through the namespace. The model is simple: deny all pod-to-pod traffic by default, allow only the exact paths that are required, and keep frontend, backend, and unknown workloads separated. For workloads that need finer-grained isolation than a node-level security group can provide, EKS also supports security groups for pods, which attach an ENI and its own security group directly to the pod. Network segmentation should be paired with encryption in transit, whether through TLS on a load balancer, end-to-end TLS to the pod, or a service mesh handling mTLS between workloads.

Remove Application Permissions from the Node Role

One of the most common EKS mistakes is letting workloads inherit permissions from the worker node IAM role. That pattern works until it becomes a privilege escalation problem. Pods should not rely on the node instance profile for application access. Application permissions belong on the workload identity itself.

Both modern EKS Pod Identity and the older IRSA model can achieve this, and the right choice depends on the workload. The security value is least privilege at the pod level: give the pod only the AWS actions it actually needs, avoid attaching application policies to the node group, and use a service account as the identity boundary. That shift moves AWS permissions away from infrastructure and onto the application that genuinely needs them.

Protect Data at Rest and in Use

Data security is more than encrypting a disk. It also includes secrets, key management, and the way applications consume sensitive values. A complete baseline uses KMS-backed encryption for EBS and EFS volumes (and for RDS, when a database sits behind the cluster), envelope encryption for Kubernetes Secrets in etcd, and secret consumption through mounted volumes instead of environment variables. KMS keys should have automatic rotation enabled so that key material is refreshed on a regular cadence without breaking access to existing ciphertext.

A distinction worth making early is that Kubernetes Secrets are base64-encoded by default, not encrypted. They have to be protected at the storage layer and, ideally, encrypted again through envelope encryption. Mounted volumes are also a safer way to consume secrets inside pods than environment variables. Environment variables are convenient, but they are far more likely to leak into logs or debugging output. Volume mounts are temporary, isolated, and easier to clean up.

Monitor Runtime Behavior and Audit Everything

This is where the cluster finally becomes observable, and it is the part that should never be skipped. Static controls are essential, but they cannot catch every threat. A pod can pass every build-time check and still become suspicious after it starts running, which is exactly why runtime security matters.

A strong runtime layer combines EKS control plane logging for audit and authenticator visibility, GuardDuty Runtime Monitoring for threat detection inside running workloads, and CloudWatch alarms for unusual authentication or authorization patterns. CloudTrail Insights complements this on the AWS API side by flagging unusual call patterns originating from inside the VPC, including from pods. The runtime threats that matter most are crypto mining behavior, command-and-control callbacks, metadata service enumeration, and unauthorized access attempts that show up as repeated 401 or 403 responses. The value here is not only detection. It is also accountability. Audit logs make it possible to reconstruct who did what and when, and runtime monitoring surfaces behavior that was never visible during deployment.

What This Approach Shows in Practice

The main lesson from a full build is that EKS security is cumulative. Image hardening reduces software supply-chain exposure, access management limits who can reach the cluster, network policy limits lateral movement, pod identity limits AWS privilege, encryption limits data exposure, and runtime monitoring limits dwell time and detection gaps.

That layered approach is what makes the cluster resilient. No single control solves the problem, but together they create a much stronger baseline than any of them on their own.

A Practical Security Mindset for EKS

The goal on EKS is not perfection. The goal is to make compromise harder, detection faster, and blast radius smaller. A hardened image, intentional IAM and RBAC boundaries, namespace-aware network policy, workload-bound AWS permissions, encryption at rest, protected secret usage, and early logging together turn a working cluster into a defensible one.

Closing Thoughts

EKS makes it easy to run Kubernetes, but secure Kubernetes still requires deliberate design decisions. The controls are available, and when they are used together they form a strong operational baseline. The path that usually works best starts with image hardening and ends with runtime monitoring, which mirrors how a real security posture should evolve: from build time to deploy time to run time.

The right question for any EKS environment is not just whether it runs. The more important question is what happens when it is attacked.

Let’s Connect

If this was useful, or if you are working on something similar and want to compare notes, feel free to reach out.