[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-my-ultimate-study-stack-using-obsidian-and-gemini-pro":3},{"id":4,"title":5,"slug":6,"excerpt":7,"contentType":8,"content":9,"metadata":10,"status":11,"createdAt":12,"updatedAt":13,"startDate":14,"endDate":14,"isOngoing":15,"featuredImage":14,"projectLinks":14,"contributors":16,"experienceCategory":14,"location":14,"locationType":14,"tags":17,"linkedSkills":18,"roles":19,"isPublished":20,"contentLinks":21,"body":-1,"markdown":-1,"html":-1},"3a1ae5b3-8f56-4471-b7b1-92ca8000b76a","From Chaos to 4.0: My Ultimate Study Stack Using Obsidian and Gemini Pro","my-ultimate-study-stack-using-obsidian-and-gemini-pro","How I use Obsidian's file structure and Gemini Pro's massive context window to turn lecture slides into interactive study guides and practice tests.","BLOG","## Introduction\n\nEngineering school is less about how much you can memorize and more about how quickly you can synthesize a mountain of technical data\\. In a single week of my System Architecture or Statistics courses\\, I might deal with 200\\+ slides\\, three textbook chapters\\, and a dozen handwritten diagrams\\. The bottleneck isn\\'t the information—it\\'s the retrieval\\.\n\nI’ve spent the last few semesters perfecting a workflow that treats my course materials like a queryable database rather than a stack of papers\\. By combining Obsidian as my structured \\\"Second Brain\\\" and Google’s Gemini 3 Pro for its massive context window\\, I’ve built a system that generates tailored study guides\\, practice exams\\, and lecture summaries in seconds\\.\n\nIf you’re tired of \\\"Ctrl\\+F\\\" being your only study strategy\\, here is how to build an AI\\-powered knowledge hub for your degree\\.\n\n## The Foundation\\: My Obsidian Setup\n\nBefore we dive into the configuration\\, you’ll need to have the app itself\\. You can **[download and install Obsidian here](https:\u002F\u002Fobsidian.md\u002F)** for free\\.\n\nObsidian is the hub where everything lives\\. It\\'s a Markdown\\-based note\\-taking app\\, with powerful extensibility\\. While you can use it right out of the box\\, a few customizations turn it from a text editor into a powerful IDE for studying\\.\n\nI use the **Things** theme for a clean look\\, but the real power lies in the plugins\\. None of these are strictly essential for the workflow\\, but they improve the quality of life significantly\\:\n\n- **Copilot\\:** A built\\-in AI chatbot for quick\\, rapid\\-fire questions within the vault\\.\n\n- **Editing Toolbar\\:** Great for formatting quickly\\, especially on a touchscreen\\.\n\n- **Excalidraw \\& Ink\\:** Allows for inline handwriting and diagramming inside my notes\\.\n\n- **LaTeX Suite\\:** Essential for editing math formulas quickly\\.\n\n- **Paste Image Rename\\:** Keeps my file attachments organized automatically\\.\n\n- **Omnisearch\\:** A powerful search engine for the vault that indexes text inside images and PDFs\\.\n\n- **Self\\-hosted LiveSync\\:** Advanced users only—this runs on a CouchDB instance for instant syncing across devices\\.\n\n![image.png](https:\u002F\u002Fapi.foligo.tech\u002Fapi\u002Fmedia\u002Faa35e9fa-273c-452c-8c93-5546d982c535\u002Ffile)\\.\n\n## The Architecture\\: Organizing the Chaos\n\nThe goal is to take _any_ file provided by a professor and store it in one central hub\\. If a file exists for the class\\, it lives in my vault\\. This ensures that when I need to study\\, I\\'m not hunting for files\\; I\\'m just querying my own database\\.\n\nMy file structure is strictly hierarchical\\:\n\n1. **Vault per Semester\\:** e\\.g\\.\\, \\\"School Spring 2026\\\"\\.\n\n2. **Root Directory\\:**\n\n    - Class Folders \\(e\\.g\\.\\, `CMPSC 455`\\, `STAT 414`\\)\n\n    - `Helpful Prompts` \\(Quick access to my AI instructions\\)\n\n    - `Ink` \\(Handwritten notes storage\\)\n\n    - `Pasted Images`\n\n3. **Class Folder Structure\\:**\n\nEach class folder is standardized\\. This consistency is crucial when you are switching between subjects mentally\\.\n\n```mermaid\ngraph TD\n  Root[\"\u002F CMPSC 455\"] --> Exam[\"\u002F Exam Review\"]\n  Root --> HW[\"\u002F Homework\"]\n  Root --> Slides[\"\u002F Lecture Slides\"]\n  Root --> Notes[\"\u002F Lectures\"]\n  \n  Exam --> E1[\"Exam 1\"]\n  E1 --> SG[\"Study Guide\"]\n  E1 --> PT[\"Practice Exam\"]\n  \n  HW --> HWI[\"\u002F Instructions (PDFs)\"]\n  HW --> HWE[\"\u002F Export (PDFs)\"]\n  HW --> HWW[\"Assignment 1\"]\n  \n  Slides --> PDF1[\"lecture_01.pdf\"]\n  Notes --> LEC1[\"Lecture 1: Intro to MATLAB.md\"]\n\n```\n\n![image.png](https:\u002F\u002Fapi.foligo.tech\u002Fapi\u002Fmedia\u002F28558a01-83ec-4060-8691-de88df129ada\u002Ffile)\\.\n\n## The Brain\\: Integrating Gemini AI\n\nThis is where the magic happens\\. I don\\'t just \\\"ask AI\\\" random questions\\. I treat different models like different employees\\.\n\n### The Models\n\nThese are freely available on **[Google\\'s AI Studio](https:\u002F\u002Faistudio.google.com\u002Fprompts\u002Fnew_chat\u002F)**\n\n- **Gemini Flash \\(gemini\\-3\\-flash\\-preview\\)\\:** I use this for speed\\. It powers my sidebar chatbot \\(via the Copilot plugin\\) for quick clarifying questions or converting PDF homework instructions into Markdown templates\\.\n\n- **Gemini Pro \\(gemini\\-3\\-pro\\-preview\\)\\:** This is the heavy lifter\\. It has a massive context window \\(up to 2 million tokens\\)\\, which means I can upload **every single lecture slide\\, textbook chapter\\, and syllabus** relevant to an exam in one go\\.\n\n### The Meta\\-Prompting Strategy\n\nTo get high\\-quality study guides\\, I don\\'t trust a single prompt\\. I use a \\\"Meta\\-Prompting\\\" strategy\\. I actually use ChatGPT to help me write and refine the prompts I feed into Gemini\\. This ensures the output follows my specific formatting rules \\(Markdown\\, LaTeX for math\\, Mermaid for diagrams\\)\\.\n\nHere are the four pillars of my prompting system\\.\n\n#### 1\\. The Meta\\-Prompt \\(ChatGPT\\)\n\nI use this to generate the instructions for Gemini\\. It defines the persona and the strict formatting requirements\\.\n\n```text\n\nWrite a prompt for Google Gemini. I will provide all of the content (slides, homeworks, etc) relevant to this exam. Give me all of the concepts I need to know. Elaborate on everything. I should be able to go from knowing nothing to knowing everything I need. This will be imported into Obsidian, so leave a space for me to provide formatting rules. The exam \"CMPSC 461 Midterm 1\" covering the following topics:\n\nLexical Analysis\n• Create Regular Expression\n• Write down the set of strings recognized by the given regular expression\n• Design NFA and DFA for given set of strings\n• Convert Regular expression to DFA\u002FNFA\nSyntax Analysis\n• Constructing Grammar (Context-free, BNF, EBNF)\n• Leftmost and Right most derivation\n• Top-down and Bottom-up parsing\n• Ambiguous Grammar\n• Convert Ambiguous to Unambiguous grammar\n• Abstract Syntax Tree\n• First, Follow, and Parsing Table\nName, Scope and Bindings\n• Lifetime, Scope and binding of variable\n• Understanding Stack(including call stacks), Heap and Static Data Segments\n• Static and dynamic scope\n• Constructing Symbol tables\n• Shallow and Deep binding\n• Static and dynamic link with call stacks\n\n```\n\n#### 2\\. The Study Guide Prompt\n\nOnce I have refined the instructions\\, I upload my class files to Gemini Pro and use this prompt to generate a comprehensive study guide\\.\n\n```text\n\n# CMPSC 461 Midterm 1 Master Study Guide\n\nYou are an expert **Computer Science educator and compiler theory instructor**.  \nI will provide you **all source material** for this exam (lecture slides, homework problems, notes, examples, and any other documents). Your task is to produce a **complete, self-contained study guide** that teaches me **everything I need to know from scratch** to fully prepare for **CMPSC 461 – Midterm 1**.\n\n---\n\n## Core Requirements\n\n- Assume I am starting with **no prior knowledge**\n- Use the provided materials as the **authoritative source**\n- **Elaborate deeply** on every concept\n- Explain **why**, not just **what**\n- Include:\n  - Clear definitions\n  - Step-by-step explanations\n  - Intuition and mental models\n  - Common pitfalls and misconceptions\n  - Worked examples\n  - Practice problems with solutions\n- Tie concepts together across sections when relevant\n- Use precise terminology consistent with compiler theory\n\n---\n\n## Output Structure Requirements\n\n- Organize the guide into **clear sections and subsections**\n- Each major topic should be **self-contained**\n- Use consistent terminology throughout\n- Make the document suitable for **long-term reference**\n- Assume the output will be imported into **Obsidian**\n\n---\n\n## FORMATTING RULES\n\n1. **General Formatting**\n    \n    - Use standard Obsidian Markdown syntax with clear structure, headings, and bullet points.\n        \n    - Expand on slide content with additional explanations, definitions, or context when helpful.\n        \n    - Maintain an academic tone suitable for lecture notes.\n        \n\t- LaTeX for Equations:\n\t    - For **inline** math, use single dollar signs: `$ E = mc^2 $`\n\t    - For **block** math, use double dollar signs on their own lines. **Never** wrap block math in fenced code blocks.\n\t      Example of correct formatting:\n\t      $$\n\t      \\int_{-\\infty}^{\\infty} e^{-x^2} dx = \\sqrt{\\pi}\n\t      $$\n\t- Code Blocks:\n\t    - Use fenced code blocks (triple backticks) **only** for programming code, pseudocode, or terminal commands. Specify the language when possible, e.g.:\n        \n        ```python\n        def example():\n            return True\n\n        ```\n        \n2. **Slide References**\n    \n    - For each main section, include a reference to the slide using:  \n        `[[filename#page=page]]`\n        \n3. **Visuals and Diagrams**\n    \n    - If the slide includes an important visual (diagram, graph, or figure), ensure it appears inline with:  \n        `![[filename#page=page]]`\n        \n    - When a concept benefits from a diagrammatic explanation, include a **valid Mermaid chart**. Pay close attention to quoting text that contains special characters (e.g., ( ), [ ], { }, ,) in subgraph titles and node labels to prevent parsing errors. For example, use subgraph \"Title with (parentheses)\" and A[\"Node with [brackets]\"]. Example:\n        \n        ```mermaid\n        graph TD\n          A[Input] --> B[Process]\n          B --> C[Output]\n\n        ```\n\n---\n\n## Exam Coverage (YOU MUST COVER ALL ITEMS BELOW)\n\n### 1. Lexical Analysis\n\nExplain lexical analysis from first principles and its role in a compiler.\n\nCover **in detail**:\n- What lexical analysis is and why it exists\n- Tokens, lexemes, patterns\n- Relationship between lexical analysis and syntax analysis\n\n#### Regular Expressions\n- Syntax and semantics of regular expressions\n- Operators (`|`, `*`, `+`, `?`, concatenation, grouping)\n- Precedence and associativity\n- Practical examples of regex used in lexical analyzers\n\n**You must be able to:**\n- Create regular expressions for given languages\n- Given a regular expression, list the **exact set of strings it recognizes**\n- Explain edge cases and ambiguous matches\n\n#### Finite Automata\n- Deterministic vs Non-deterministic Finite Automata (DFA vs NFA)\n- Formal definitions (states, alphabet, transitions, start\u002Faccept states)\n- ε-transitions and their meaning\n\n**You must be able to:**\n- Design an NFA and DFA for a given set of strings\n- Convert:\n  - Regular Expression → NFA\n  - NFA → DFA\n- Explain subset construction clearly\n- Trace strings through automata step by step\n\n---\n\n### 2. Syntax Analysis\n\nExplain syntax analysis and how it builds structure from tokens.\n\n#### Grammars\n- Context-Free Grammars (CFGs)\n- Formal definitions\n- Terminals vs non-terminals\n- Production rules\n- Start symbols\n\n#### Grammar Notations\n- BNF\n- EBNF\n- Differences, advantages, and when to use each\n\n**You must be able to:**\n- Construct grammars for given languages\n- Convert informal language descriptions into formal grammars\n\n#### Derivations\n- Leftmost derivation\n- Rightmost derivation\n- Parse trees\n- Relationship between derivations and parsing\n\n#### Parsing Techniques\n- Top-down parsing\n- Bottom-up parsing\n- High-level intuition and formal mechanisms\n- When each approach succeeds or fails\n\n#### Ambiguity\n- What ambiguous grammars are\n- Why ambiguity is a problem\n- Identifying ambiguity using parse trees and derivations\n\n**You must be able to:**\n- Detect ambiguous grammars\n- Convert ambiguous grammars into unambiguous ones\n\n#### Abstract Syntax Trees (ASTs)\n- Difference between parse trees and ASTs\n- Why ASTs are used\n- How ASTs represent program structure\n\n#### FIRST, FOLLOW, and Parsing Tables\n- Definitions and intuition\n- How to compute FIRST sets\n- How to compute FOLLOW sets\n- Constructing parsing tables\n- Detecting conflicts\n\n---\n\n### 3. Name, Scope, and Bindings\n\nExplain how programming languages manage variables and memory.\n\n#### Variables\n- Name, binding, scope, and lifetime\n- Differences between scope and lifetime\n- Examples across languages\n\n#### Memory Organization\n- Stack\n- Heap\n- Static data segment\n\nExplain:\n- What goes where\n- When memory is allocated and deallocated\n- How function calls affect memory\n\n#### Scope Rules\n- Static (lexical) scope\n- Dynamic scope\n- How variable lookup works in each\n- Examples and comparisons\n\n#### Symbol Tables\n- Purpose of symbol tables\n- What information they store\n- How they are constructed\n- How they change during compilation\n\n#### Binding Strategies\n- Shallow binding\n- Deep binding\n- When and why each is used\n\n#### Runtime Stack Mechanics\n- Call stacks\n- Activation records (stack frames)\n- Static links\n- Dynamic links\n\nExplain:\n- How function calls and returns work\n- How scopes are resolved at runtime\n- How links enable variable access\n\n---\n\n## Pedagogical Expectations\n\n- Use diagrams (described textually if needed)\n- Include **walkthroughs** of complete examples\n- Explicitly connect theory to implementation\n- Include **exam-style questions** and solutions for each major topic\n\n---\n\n## Final Goal\n\nBy the end of this study guide, I should be able to:\n- Confidently solve **any problem** related to CMPSC 461 Midterm 1\n- Explain every concept clearly to someone else\n- Recognize and avoid common mistakes\n- Move from **zero knowledge → full mastery**\n\nBegin generating the study guide only after I provide all materials.\n\n```\n\n#### 3\\. The Note Taker Prompt\n\nI use this when I want to convert a specific lecture slide deck into a readable Markdown note\\.\n\n```text\n\nThe file I am providing is \"{FILENAME}.pdf\"\n\nYou are an academic note-taking assistant. For every lecture slide deck I provide, create clear and detailed **Obsidian-formatted Markdown notes**.\n\nFollow these instructions precisely:\n\n1. **Start of Notes**\n    \n    - Begin with an inline preview of the slide deck using the format:  \n        `![[filename]]`\n        \n2. **General Formatting**\n    \n    - Use standard Obsidian Markdown syntax with clear structure, headings, and bullet points.\n        \n    - Expand on slide content with additional explanations, definitions, or context when helpful.\n        \n    - Maintain an academic tone suitable for lecture notes.\n        \n\t- LaTeX for Equations:\n\t    - For **inline** math, use single dollar signs: `$ E = mc^2 $`\n\t    - For **block** math, use double dollar signs on their own lines. **Never** wrap block math in fenced code blocks.\n\t      Example of correct formatting:\n\t      $$\n\t      \\int_{-\\infty}^{\\infty} e^{-x^2} dx = \\sqrt{\\pi}\n\t      $$\n\t- Code Blocks:\n\t    - Use fenced code blocks (triple backticks) **only** for programming code, pseudocode, or terminal commands. Specify the language when possible, e.g.:\n        \n        ```python\n        def example():\n            return True\n\n        ```\n        \n3. **Slide References**\n    \n    - For each main section, include a reference to the slide using:  \n        `[[filename#page=page]]`\n        \n4. **Visuals and Diagrams**\n    \n    - If the slide includes an important visual (diagram, graph, or figure), ensure it appears inline with:  \n        `![[filename#page=page]]`\n        \n    - When a concept benefits from a diagrammatic explanation, include a **valid Mermaid chart**. Pay close attention to quoting text that contains special characters (e.g., ( ), [ ], { }, ,) in subgraph titles and node labels to prevent parsing errors. For example, use subgraph \"Title with (parentheses)\" and A[\"Node with [brackets]\"]. Example:\n        \n        ```mermaid\n        graph TD\n          A[Input] --> B[Process]\n          B --> C[Output]\n\n        ```\n        \n5. **Content Expansion**\n    \n    - Expand briefly on key ideas using reliable academic context (e.g., explain algorithms, summarize proofs, provide short derivations).\n        \n    - Clarify ambiguous terms or summarize implied concepts if the slide is incomplete.\n        \n    - Add examples, applications, or intuitive explanations when useful.\n        \n6. **Output**\n    \n    - Produce a single, cohesive Obsidian Markdown note for all slides provided.\n        \n    - The notes should be visually clean, logically structured, and immediately ready for use.\n        \n    - Do **not** include metadata, titles, emojis, or extra commentary—just formatted notes with LaTeX, code, Mermaid, and proper slide previews.\n\n```\n\n#### 4\\. The Homework Template Prompt\n\nThis converts a professor\\'s PDF assignment into a clean Markdown structure where I can type answers or use Ink to hand\\-draw solutions\\.\n\n```text\n\nThe file I am providing is \"{FILENAME}.pdf\"\n\nYou are a document conversion assistant. Your task is to convert a provided homework assignment (in PDF format) into a reusable, blank homework template.\n\n**Primary Directive: IGNORE ALL ANSWERS.**\n\nYour goal is to strip out all provided solutions, leaving only the questions, instructions, and their surrounding structure intact. The final output must be a clean, well-formatted template ready for a student to fill out from scratch.\n\nFollow these instructions precisely:\n\n1.  **Input File:**\n    *   I will provide a homework PDF. The filename should be referenced in the output where appropriate (e.g., for embedded previews).\n\n2.  **Output Format:**\n    *   The output must be in **Obsidian-formatted Markdown**.\n    *   Retain all original questions, sub-questions, introductory text, and point values (e.g., `(20 pts.)`).\n\n3.  **Structural Elements:**\n\t*  **Begin output with:**\n| **Name**    | Aiden Johnson |\n| ----------- | ------------- |\n| **User ID** | {ID}       |\n![[{FILENAME}}]]\n    *   **Start:** Ignore instructions at the top of the document. Just include questions after embedding the document.\n    *   **Page Breaks:** Before each question (including the first), insert a page break using `\u003Cdiv style=\"page-break-after: always;\">\u003C\u002Fdiv>`.\n    *   **Questions:** Each question title should be in H3 font (###). If a point value is given in brackets (e.g. [15 pts]), make sure to break out using a backslash (\\) before the brackets. \n    *   **Answer Sections:** For every question or sub-question, create an `**Answer:**` heading but leave the space after it completely blank.\n\n4.  **Content Formatting:**\n    *   **LaTeX for Math:** All mathematical formulas and variables must be correctly enclosed in LaTeX syntax.\n        *   Inline math: `$ E = mc^2 $`\n        *   Block math: `$$ \\int f(x) dx $$`\n    *   **Mermaid for Graphs:** If the original question contains a diagram that can be represented as a flowchart, graph, or sequence, convert it into a valid Mermaid chart within a `mermaid` code block. Pay close attention to quoting text that contains special characters (e.g., ( ), [ ], { }, ,) in subgraph titles and node labels to prevent parsing errors. For example, use subgraph \"Title with (parentheses)\" and A[\"Node with [brackets]\"].\n    *   **Code Blocks:** Any programming code, pseudocode, or algorithms presented in the questions should be placed in fenced code blocks with the appropriate language specifier.\n    *   **Images:** Retain all embedded image links in their original Obsidian format (e.g., `![[image-name.png]]`).\n\nThe final output should be a single, cohesive Markdown document that perfectly mirrors the structure of the original assignment, minus any solutions.\n\n```\n\n## Workflow\\: Inline PDF Rendering\n\nOne of Obsidian\\'s \\\"killer features\\\" for students is inline PDF linking\\. Instead of just referencing a file\\, I can embed specific pages of a lecture slide directly next to my notes\\.\n\nIf Gemini references a diagram on Slide 14\\, I can render just that slide\\.\n\n**Example\\: C Structure Alignment**\n\nHere is a snippet from my notes on `CMPSC 473`\\. Notice how I link specific pages to visualize the memory layout\\.\n\n```markdown\n![[lecture2.pdf]] \n\n# C Refresher: Structure Alignment \n[[lecture2.pdf#page=2]] \n\nIn C, the memory layout of a structure is not simply the sum of the sizes \nof its members. The compiler inserts padding to ensure that each member \nis properly aligned in memory according to the CPU architecture.\n\n### Example\nConsider the following structure:\n\n     ```c\n     struct {\n         char a;\n         int b;\n         char c;\n         short d;\n         char e;\n     };\n\n     ```\n\n**Memory Layout Visualization:**\n![[lecture2.pdf#page=2]]\n\n1. **a (char)** takes byte 0.\n2. **b (int)** requires 4-byte alignment. It cannot start at byte 1. \n   The compiler inserts 3 bytes of padding.\n\n```\n\n![image.png](https:\u002F\u002Fapi.foligo.tech\u002Fapi\u002Fmedia\u002Fb640fa19-ec83-43f0-858f-8f1960dd0244\u002Ffile)\\.\n\n## The Output\\: Export to PDF\n\nAt the end of the day\\, I still need to submit assignments\\. Because my homework templates are in Markdown\\, I can use Obsidian\\'s \\\"Export to PDF\\\" feature \\(available by clicking `CTRL + P`\\)\\.\n\nThis converts my typed code\\, LaTeX math formulas \\(`$E = mc^2$`\\)\\, and even the handwritten diagrams I drew with the Ink plugin into a professional\\-looking PDF document\\. It matches the visual style of my Obsidian theme\\, making my submissions look cleaner than standard Word docs\\.\n\nWhile I can\\'t provide one of my completed assignments\\, I can provide an [sample exported lecture note](https:\u002F\u002Fapi.foligo.tech\u002Fapi\u002Fmedia\u002F38728d73-3c14-4109-a122-490f6615c0c1\u002Ffile)\\.\n\n## Key Takeaways\n\n- **Centralize Everything\\:** Your file structure is your sanity\\. Keep every PDF\\, image\\, and note in one vault\\.\n\n- **Use the Right Model\\:** Use Gemini Flash for speed and Gemini Pro for massive context \\(reading entire textbooks\\\u002Fslide decks\\)\\.\n\n- **Meta\\-Prompt\\:** Don\\'t just ask AI to \\\"make a study guide\\.\\\" Use AI to write a prompt that enforces your formatting and structure\\.\n\n- **Link\\, Don\\'t Copy\\:** Use Obsidian\\'s inline PDF linking to reference source material without cluttering your notes\\.\n\n## Conclusion\n\nThis workflow has transformed how I learn\\. Instead of spending hours organizing binders or searching for that one slide about \\\"memory alignment\\,\\\" I spend my time actually studying\\. I have a system where I can feed raw data in and get structured knowledge out\\.\n\nIf you\\'re a student or a teacher\\, I highly recommend trying out the Gemini Pro context window with your own materials\\.",{},"PUBLISHED","2026-01-23T23:41:39.635Z","2026-01-24T15:49:13.073Z",null,false,[],[],[],[],true,[]]