Key Topics:
Tool-by-Tool Exploration:
GitHub Copilot: enterprise features, integration with VSCode/IntelliJ, usage tips.
Amazon CodeWhisperer & Tabnine: comparing features, supported languages, cost models.
Cursor: real-time collaboration, prompt-based debugging, possible synergy with other tools.
V0: rapid project scaffolding, prototype generation.
Windsurf (brief overview): main use cases, unique capabilities.
Comparisons & Use Cases:
Which assistants excel at refactoring vs. generating new code?
Language coverage (Java, Python, Node.js, etc.) vs. niche languages.
Practical Integration:
Setting up each tool: config files, environment variables, or IDE plugins.
Dealing with cloud vs. local hosting (on-prem solutions).
Below you will find some suggested materials on these topics, which we believe may help you complete the final activity in the lesson. Please note that using these resources is entirely optional, and you are welcome to explore any other sources or courses at your own discretion.
Here are some recommended courses to explore:
Key Topics:
Tool-by-Tool Exploration:
GitHub Copilot: enterprise features, integration with VSCode/IntelliJ, usage tips.
Amazon CodeWhisperer & Tabnine: comparing features, supported languages, cost models.
Cursor: real-time collaboration, prompt-based debugging, possible synergy with other tools.
V0: rapid project scaffolding, prototype generation.
Windsurf (brief overview): main use cases, unique capabilities.
Copilot:
Official GitHub Copilot Docs
Explains setup in VSCode/IntelliJ and enterprise policy configuration.
Includes common troubleshooting steps and example use cases.
GitHub Copilot Community Discussions
Devs share tips on advanced usage, environment quirks, and Copilot performance.
Helpful for real-world Q&A and best practices with enterprise integration.
GitHub Copilot For Vibe Coding & Developers. Use Copilot AI to generate code, unit tests, + more. (GitHub Copilot 2025)
Discover how GitHub Copilot Enterprise transforms your experience on GitHub.com. Integrate AI-powered pair programming for productivity with context-aware suggestions.
Revolutionize your programming workflow with GitHub Copilot, your own AI-powered coding assistant!.
Amazon CodeWhisperer & Tabnine:
Official AWS page with a free tier for testing.
Explains integration with JetBrains IDEs and VSCode plus cost details.
Quickstart guides for installing Tabnine in various editors.
Outlines free vs. paid tiers, including language coverage and feature comparisons.
8+ Use Cases with Amazon Bedrock, Amazon Q, Agents, Knowledge Bases, Chatbot,LangChain,DeepSeek. No AI or Coding exp req
Cursor:
Introduces Cursor’s real-time “co-pilot” editing approach.
Showcases how prompt-based debugging speeds up diagnosing errors.
Introduces Cursor’s real-time “co-pilot” editing approach.
Showcases how prompt-based debugging speeds up diagnosing errors.
Introduces Cursor’s real-time “co-pilot” editing approach.
Showcases how prompt-based debugging speeds up diagnosing errors.
This quick tutorial will cover everything that I've learned from using this program and some of the best practices that you can apply, especially if you're just starting your programming journey and haven't used many AI tools before
V0:
v0 begins with a chat-based interface, where users can input prompts and attach files. v0 can respond with text, code, or Blocks.
Learn how to build any full-stack application with AI (Cursor, Claude, v0, Vercel, Replit) - Vibe Coding Course
How to use it to build a Hacker News clone with Neon in minutes, complete with user authentication and the ability to post stories and comments.
Windsurf:
Windsurf is a next-generation AI IDE built to keep you in the flow. On this page, you’ll find instructions on how to install Windsurf on your computer, navigate the onboarding flow, and get started with your first AI-powered project.
How to use it to build a Hacker News clone with Neon in minutes, complete with user authentication and the ability to post stories and comments.
Key Topics:
2. Comparisons & Use Cases:
Which assistants excel at refactoring vs. generating new code?
Language coverage (Java, Python, Node.js, etc.) vs. niche languages.
Both Tabnine and GitHub Copilot are powerful AI-powered code completion tools designed to increase developer productivity. Deciding which one is right for you depends on your specific needs and preferences. Here's a comparison of their key features.
The creator tests both tools on various tasks, including multi-file editing, bug fixing, and code generation.
Discover the best AI coding assistant in 2025
Which of the AI coding assistants will turn you into a 10x developer? ChatGPT? GitHub Copilot? Tabnine? AWS Code Whisperer? Bard? Sourcegraph Cody? CodiumAI?
Key Topics:
3. Practical Integration:
Setting up each tool: config files, environment variables, or IDE plugins.
Dealing with cloud vs. local hosting (on-prem solutions).
Home to official and community-supported AI plugin pages.
Check extension docs for details on environment variables or API keys.
on Prem LLM
The frontend is a boilerplate app generated by npx create-secure-chatgpt-app. It leverages several of Pangea's security services for securing ChatGPT usage.
Activity:
Choose two of the assistants (e.g., Copilot and Cursor) and install both in the same development environment.
Implement a small feature (e.g., a user login function) using only the first assistant.
Then, using the second assistant, refactor or extend that feature (add password encryption, session management, etc.).
Goal:
Directly compare how each assistant handles different stages of coding: from initial generation to refactoring or enhancements.
Pick Your Two Code Assistants
Decide which two AI tools you’ll compare (e.g., GitHub Copilot + Cursor, or Tabnine + CodeWhisperer).
Make sure both assistants support your chosen language or framework (e.g., Node.js, Python, etc.).
Set Up Your Single Dev Environment
Example: VS Code
Click the Extensions icon (left sidebar).
Search for your first AI assistant (e.g., “GitHub Copilot”) and click Install.
Search for your second assistant (e.g., “Cursor” or “Tabnine”) and click Install as well.
Confirm both extensions are enabled.
For JetBrains (IntelliJ, PyCharm, etc.), open Settings → Plugins and similarly install both plugins.
Restart your IDE if prompted.
Create a Small Demo Project
In your IDE, create a folder named something like user-login-demo.
Initialize a file, e.g.:
login.js (for Node/Express)
or
login.py (for Python Flask/FastAPI)
or whichever language you prefer.
Implement the Small Feature With Assistant #1
Sketch the requirements in code comments, e.g.:
javascript
CopiarEditar
// Let's create a simple user login function:
// - Takes a username & password
// - Checks against a hardcoded list of users (for now)
// - Returns "Login successful" or "Invalid credentials"
Type out a partial function signature:
javascript
CopiarEditar
function userLogin(username, password) {
// ...
}
Observe the suggestions from your first assistant. If none appear, prompt it explicitly in comments:
javascript
CopiarEditar
// Could you generate a basic login check?
// If username='alice' and password='secret', return "Login successful"
// else "Invalid credentials"
Accept or refine the AI’s code. By the end, you should have something like:
javascript
CopiarEditar
function userLogin(username, password) {
if (username === 'alice' && password === 'secret') {
return "Login successful";
}
return "Invalid credentials";
}
(Optional) Add a quick test or console logs to see if it behaves as expected.
Refactor/Extend With Assistant #2
Disable or pause the first assistant’s plugin (to ensure you’re now only using the second one).
In your code, comment or outline how you want to extend the feature, e.g.:
javascript
CopiarEditar
// Next, I'd like to store user data in an array or object.
// Also, I'd like to add basic password hashing or session generation.
Let your second assistant propose changes or a new function. For example:
javascript
CopiarEditar
let users = [
{ username: 'alice', password: 'secret' },
{ username: 'bob', password: 'pass123' }
];
function userLogin(username, password) {
// ...
}
Accept suggestions for session handling (if you indicated wanting session management), or password hashing approach. You might see something like:
javascript
CopiarEditar
// For example:
const bcrypt = require('bcryptjs');
// ...
async function userLogin(username, password) {
// find user in users array
// compare hashed password
// ...
}
If you see incomplete or incorrect logic, prompt the tool more specifically or add partial code to guide it.
Compare the Two Experiences
Note how Assistant #1 handled initial code generation vs. how Assistant #2 performed on refactoring or advanced tasks.
You might observe differences in style suggestions, docstring generation, or error handling.
Test the Combined Result
If you’re using Node.js, run:
bash
CopiarEditar
node login.js
or incorporate a quick Express route to test the logic in an actual endpoint.
Confirm both the initial login logic (Assistant #1) and the new additions (Assistant #2) work as intended.
Reflect on Strengths and Weaknesses
Did one tool excel at initial generation but struggle with advanced features?
Did the other do better at refactoring or adding security layers?
Which felt more aligned with your coding style?
Wrap Up
You now have a minimal user login system created by two distinct AI assistants.
This direct comparison reveals how different AI solutions approach code generation and refactoring steps.
In the same project you used in the Hands-On:
Add a third functionality or endpoint (e.g., a “forgot password” route or a data analytics function).
Use both assistants together, switching between them as needed, to see if you can combine their strengths.
In a COMPARISON.md file, summarize:
Which assistant seemed better at generating new code quickly.
Which one gave more reliable or higher-quality refactoring suggestions.
Any conflicts or oddities when using multiple tools in the same environment (e.g., overlapping suggestions).
Objective: Gain experience juggling multiple code assistants, pushing deeper into specialized features. This helps you see which tool might best fit particular tasks in your workflow.
Revisit Your Existing Project
Open the same repo or folder you used in the Hands-On (Module 2, Lesson 1), which already has two endpoints/features created—one with the first assistant, one with the second.
Ensure both code assistants (e.g., Copilot and Cursor, or Tabnine and CodeWhisperer) are installed/enabled.
Confirm you have a working setup (the endpoints or features from the Hands-On are still functional).
Plan a Third Functionality or Endpoint
Decide on a new feature that’s somewhat distinct from the first two:
Example A: “Forgot password” route—performing an email send or token generation.
Example B: “Data analytics” function that aggregates user data, returning stats.
If your project is a Node.js Express app, you might add a new route; if it’s Python, maybe a new function or Flask endpoint.
Use Both Assistants, Switching as Needed
Assistant A for new code generation:
Start writing or comment your intended functionality.
Let Assistant A propose the initial skeleton or logic.
Assistant B for refactoring or specialized tasks:
Temporarily disable or pause Assistant A’s plugin (so the suggestions don’t clash).
Let Assistant B refine or add advanced logic, like security checks, error handling, or performance improvements.
You can toggle between them in the same session:
If your IDE allows you to pick which assistant is active, do so.
If not, you may need to disable one plugin and enable the other.
Keep Notes on Observations
Throughout the process, note:
Who did the faster initial generation? (Assistant A or B)
Which suggestions felt more robust or correct on the first try?
Any conflicts or confusion in your IDE if both tried to suggest code simultaneously.
Consider aspects like:
Syntax: Did one assistant produce more accurate code for your chosen language?
Style: Did they follow your code style or introduce differences?
Refactoring: Which assistant gave more creative or effective improvements?
Finalize the Third Feature
Once you’re satisfied that the new code compiles/runs, do a quick test:
If it’s an endpoint, hit it with curl or Postman.
If it’s a function, do a quick unit test or console log.
Confirm everything is stable and integrated into the existing app or library.
Document Findings in COMPARISON.md
Create a file COMPARISON.md at the root of your project:
markdown
CopiarEditar
# Comparison of Multiple Code Assistants
**Third Functionality**: "Forgot password" (example)
- **Assistant A**:
- Quick at generating basic route scaffolding.
- Had trouble with advanced email library usage.
- **Assistant B**:
- Provided better security suggestions (e.g., recommended hashing tokens).
- Slower to propose code if environment variables not declared.
## Observations
- Speed of New Code:
- Assistant A was faster at completing basic scaffolding.
- Assistant B took longer but offered more thorough docstrings.
- Refactoring / Enhancements:
- Assistant B consistently gave better improvements around error handling.
- Assistant A rarely introduced advanced checks without prompting.
- Conflicts or Oddities:
- While both assistants were active, sometimes overlapping suggestions occurred.
- Disabled Assistant A to let B do final refactor steps.
## Conclusion
- For quickly spinning up routes, Assistant A seems best.
- For deeper logic or robust checks, Assistant B was more reliable.
Summarize your overall recommendation or preference for each scenario. For example:
"Use Copilot for scaffolding basic endpoints."
"Switch to Cursor for detailed refactors or complex domain logic."
Commit and Share
If your project is in Git, commit your changes:
bash
CopiarEditar
git add .
git commit -m "Add third endpoint using both AI assistants. Document findings in COMPARISON.md"
git push
If you prefer, invite teammates to review the repo or the COMPARISON.md file.
How to use it to build a Hacker News clone with Neon in minutes, complete with user authentication and the ability to post stories and comments.