<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: saleemha</title>
    <description>The latest articles on DEV Community by saleemha (@saleemha).</description>
    <link>https://dev.to/saleemha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4067241%2F0e571a62-9ecb-4e55-8af2-8e16a5b30d55.png</url>
      <title>DEV Community: saleemha</title>
      <link>https://dev.to/saleemha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saleemha"/>
    <language>en</language>
    <item>
      <title>Beyond Static Notes: Building an Agentic AI "Second Brain" That Actually Works</title>
      <dc:creator>saleemha</dc:creator>
      <pubDate>Tue, 15 Sep 2026 15:14:11 +0000</pubDate>
      <link>https://dev.to/saleemha/beyond-static-notes-building-an-agentic-ai-second-brain-that-actually-works-cd2</link>
      <guid>https://dev.to/saleemha/beyond-static-notes-building-an-agentic-ai-second-brain-that-actually-works-cd2</guid>
      <description>&lt;p&gt;Most developer knowledge bases and "Second Brain" systems eventually rot. &lt;/p&gt;

&lt;p&gt;You spend hours setting up complex folder structures, tagging markdown files, or configuring Notion databases by topic (e.g., &lt;em&gt;Docker, Kubernetes, Cryptography, Frontend&lt;/em&gt;). Fast forward three months, and it’s just a digital graveyard. You spend more time organizing information than actually building things.&lt;/p&gt;

&lt;p&gt;The fix isn't a better folder hierarchy. It’s shifting from &lt;strong&gt;static storage to actionability&lt;/strong&gt;, supercharged by &lt;strong&gt;Agentic AI&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmxm9qry5it4bxza2agb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmxm9qry5it4bxza2agb.png" alt=" " width="799" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Core Flaw of Traditional Note-Taking
&lt;/h2&gt;

&lt;p&gt;Traditional systems fail because they rely on a &lt;strong&gt;topic-based approach&lt;/strong&gt;. They ask: &lt;em&gt;"What category does this snippet belong to?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Tiago Forte’s &lt;strong&gt;PARA/CODE&lt;/strong&gt; framework completely flips the script by organizing information based on &lt;strong&gt;actionability right now&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CODE Workflow:&lt;/strong&gt; Capture $\rightarrow$ Organize $\rightarrow$ Distill $\rightarrow$ Express&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PARA Structure:&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Projects:&lt;/strong&gt; What you are actively coding/building right now (has a deadline).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Areas:&lt;/strong&gt; Ongoing responsibilities (no end date, like infrastructure maintenance or security patches).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; Reference material, code snippets, and docs you might need later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archives:&lt;/strong&gt; Completed projects or deprecated tech stacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When Meta rolled out an AI second brain for over 60,000 knowledge workers (&lt;a href="https://medium.com/@AnalyticsAtMeta/how-we-built-an-ai-second-brain-for-60k-knowledge-workers-78c507dd795b" rel="noopener noreferrer"&gt;read their engineering case study here&lt;/a&gt;), it succeeded because it wasn't a fancy wiki—it directly reduced repetitive busywork and sped up technical decisions.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Why You Need &lt;em&gt;Agentic&lt;/em&gt; AI, Not Just a Chatbot
&lt;/h2&gt;

&lt;p&gt;Standard LLMs are passive. You paste a chunk of code or a system design doc, ask for a summary, and wait for your next command. That’s an intern in a box.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;Agentic AI&lt;/strong&gt; system introduces execution loops (relying on reasoning, planning, and tool use) that turn your second brain into an active co-pilot. Instead of just holding your files, an agentic system actually &lt;em&gt;drives&lt;/em&gt; your workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Housekeeping:&lt;/strong&gt; If an active project in your PARA structure hasn't been touched in a month, the agent flags it, prompts you to archive it, and auto-extracts reusable code snippets into your &lt;em&gt;Resources&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Cross-Pollination:&lt;/strong&gt; As you drop a new note about a containerization setup or a data pipeline, the agent scans your graph and automatically bridges it to related architecture notes you saved months ago.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Step Execution:&lt;/strong&gt; You give it a high-level goal (&lt;em&gt;"Prep the migration brief for next sprint"&lt;/em&gt;), and the agent loops through your tools—pulling past project logs, drafting technical specs, and checking your active tickets without manual hand-holding.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. Designing the Stack
&lt;/h2&gt;

&lt;p&gt;If you're looking to build or wire one of these systems together, your architecture needs three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Ingestion Layer (Capture):&lt;/strong&gt; Automated scrapers, CLI hooks, or browser extensions that feed raw markdown/data into your system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Structured Layer (PARA + Graph):&lt;/strong&gt; A vector database or local markdown vault (like Obsidian) structured strictly by actionability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Execution Layer (Agents):&lt;/strong&gt; Custom loops (using tools like LangChain, LlamaIndex, or custom Python scripts with tool-calling APIs) that monitor your vault and execute automated tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your Second Brain should do one thing exceptionally well: &lt;strong&gt;help you ship code and produce work that matters.&lt;/strong&gt; Anything else is technical debt.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How are you currently managing your technical notes and snippets? Are you experimenting with local RAG or AI agents to automate your workflow? Let's discuss in the comments below!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>systemdesign</category>
      <category>devops</category>
    </item>
    <item>
      <title>Threat Modelling Using Threat Dragon</title>
      <dc:creator>saleemha</dc:creator>
      <pubDate>Mon, 14 Sep 2026 12:06:33 +0000</pubDate>
      <link>https://dev.to/saleemha/threat-modelling-using-520m</link>
      <guid>https://dev.to/saleemha/threat-modelling-using-520m</guid>
      <description>&lt;p&gt;I have tried to use a tool from OWASP called Threat Dragon for threat modelling. It took me 6 hours honestly in total. But if you follow my guide, you can see if it worths to try. &lt;/p&gt;

&lt;p&gt;Security expert Adam Shostack, a leading authority on threat modeling, emphasizes the importance of understanding the system before assessing risks. Which means, you can't draw it, you can't secure it. &lt;/p&gt;

&lt;p&gt;What Governance,  Regulators, auditors like to see: Nice graphs, signatures, dates. Jokes aside. Let's break down who, should own what.&lt;/p&gt;

&lt;p&gt;1- At Tribe (product) level: The tribe architect draws the diagram. Security engineer should always be part of it (not optional). Three model lives in wiki / confluence/ documented. &lt;/p&gt;

&lt;p&gt;2- Company Level (yearly): This is the main document that auditors like to see the threat landscape and the threat modelling exercise, owned by security engineer. Make sure, the mitigations for the risks are actual and not out of date.&lt;/p&gt;

&lt;p&gt;3- After incidents, suggest to go through the threat model document and update it after incidents hit if applicable. &lt;/p&gt;

&lt;p&gt;Now, back to engineering.. What did I do?! &lt;/p&gt;

&lt;p&gt;Remember the rule, you have to draw it so you can secure it. &lt;/p&gt;

&lt;p&gt;Start with Data Flow Diagram: In Data Flow Diagrams (DFDs), external entities are typically represented by rectangles, processes by circles, and data stores by parallel lines.&lt;/p&gt;

&lt;p&gt;The tool was not very much user friendly, as I run it on virtual machine, so it was super slow. The outcome of the DFD (Data Flow Diagram was as below).&lt;/p&gt;

&lt;p&gt;The diagram is a simple application (for abstract only) to understand the idea how we would make the threat model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F63etjd3w6264vq7o8k01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F63etjd3w6264vq7o8k01.png" alt=" " width="800" height="682"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Content Delivery&lt;/p&gt;

&lt;h1&gt;
  
  
  From → To                 What Happens
&lt;/h1&gt;

&lt;p&gt;2   CDN → User Browser        Delivers static content&lt;br&gt;
3   Web Frontend → User Browser   Returns web app responses&lt;/p&gt;

&lt;p&gt;Authentication Flow&lt;/p&gt;

&lt;h1&gt;
  
  
  From → To                 What Happens
&lt;/h1&gt;

&lt;p&gt;4   Web Frontend → External IdP   Redirects user to log in&lt;br&gt;
5   External IdP → API Gateway    Sends back auth response&lt;br&gt;
6   API Gateway → Auth Service    Requests token validation&lt;br&gt;
7   Auth Service → Credentials DB Checks user credentials&lt;br&gt;
8   Credentials DB → Auth Service Returns validation result&lt;br&gt;
9   Auth Service → API Gateway    Issues session token&lt;br&gt;
10  API Gateway → Web Frontend    Returns authenticated session&lt;/p&gt;

&lt;p&gt;Product Data Flow&lt;/p&gt;

&lt;h1&gt;
  
  
  From → To                 What Happens
&lt;/h1&gt;

&lt;p&gt;11  Web Frontend → API Gateway    Requests product data&lt;br&gt;
12  API Gateway → Product Service Forwards the request&lt;br&gt;
13  Product Service → Product DB  Queries product info&lt;br&gt;
14  Product DB → Product Service  Returns product data&lt;br&gt;
15  Product Service → API Gateway Sends product details&lt;br&gt;
16  API Gateway → Web Frontend    Returns product data&lt;/p&gt;

&lt;p&gt;The result of the Data Flow Diagram as follows (The tool is not user friendly, and it was lagging a little on the virtual machine, thus the outcome):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F97yqyunocw8wx3gvwzy7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F97yqyunocw8wx3gvwzy7.png" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Later you can click on each object and open a threat as follows, with the suggested mitigation and identify the status:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzq11bxpeq0nzldy5imv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzq11bxpeq0nzldy5imv.png" alt=" " width="800" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the end of this excersise, you would be able to identify all the threats and the mitigation controls for each threat tied to an object in the Data Flow Diagram (DFD). The process of the threat modelling is not a one time, it keeps updated, and each time a threat is identified, it needs to be communicated. &lt;/p&gt;

&lt;p&gt;Next, you need to identify for each threat, the threat source and the impacted assets. &lt;/p&gt;

&lt;p&gt;For each component you need to ask STRIDE:&lt;br&gt;
STRIDE = Spoofing, Tampering, Repudiation, Info Disclosure, Denial of Service, Elevation of Privilege.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhtzv3ov9hu8m4asfk1ml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhtzv3ov9hu8m4asfk1ml.png" alt=" " width="800" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get even more out of it, we can use Threat Composer &lt;/p&gt;

&lt;p&gt;The threat model at the end will contain all impacted assets with linked threats, and each threat linked to mitigation. You will also have the list of mitigations (called mitigation pack). &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhysoilti3zwpf0zws3ne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhysoilti3zwpf0zws3ne.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Certain points and challenges that I found in threat modelling: &lt;/p&gt;

&lt;p&gt;1- A threat model is useless if you don't verify it. Write tests for every mitigation. Run those tests before deployment and yearly in audit. If reality doesn't match the model, update the model.&lt;/p&gt;

&lt;p&gt;2- Assumptions, in cybersecurity are dangerous. You assume things are true but they are not.&lt;/p&gt;

&lt;p&gt;3- Third party dependencies, for example the rate limiting you do for API is handled by third party Cloudflare, and the rate limiting silently stops working. &lt;/p&gt;

&lt;p&gt;The above would give you the know-how, key takeaways, the minimum, main challenges for threat modelling. &lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>security</category>
      <category>threat</category>
    </item>
    <item>
      <title>AWS WAF: Lets configure it</title>
      <dc:creator>saleemha</dc:creator>
      <pubDate>Sat, 08 Aug 2026 17:21:19 +0000</pubDate>
      <link>https://dev.to/saleemha/aws-waf-lets-configure-it-opj</link>
      <guid>https://dev.to/saleemha/aws-waf-lets-configure-it-opj</guid>
      <description>&lt;p&gt;Background: &lt;/p&gt;

&lt;p&gt;Sharing some intro about AWS WAF. If you are designing applications on AWS eco-system it worths to explore to use WAF. &lt;/p&gt;

&lt;p&gt;Usually AWS suggests to use application load balancer and configure WAF.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmnp60urprf6uugk2751c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmnp60urprf6uugk2751c.png" alt=" " width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below are the technicalities: &lt;/p&gt;

&lt;p&gt;1- Always, make sure if you have admin page on your website, /admin ensure there is access control preventing unauthorized users from reaching the page.&lt;/p&gt;

&lt;p&gt;2- A fast test to ensure if your website accepts malicious user. A very nice tool that you can use which can ensure you have WAF in place or if you want to trigger the logging and test is below two commands:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Leveraging curl and sqlmap:&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl -v -H "User-Agent: sqlmap/1.5" "http://globomantics-alb-576723268.eu-west-1.elb.amazonaws.com/"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Sqlmap: Familiarize yourself with SQLmap it is a free, open-source penetration testing tool that automates finding and exploiting SQL injection flaws in web applications. &lt;/p&gt;

&lt;p&gt;-v: for verbose&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;br&gt;
Leveraging the internal address that AWS gives &lt;a href="http://169.254.169.254/" rel="noopener noreferrer"&gt;http://169.254.169.254/&lt;/a&gt; for finding internal metadata&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl "http://&amp;lt;ALB_DNS&amp;gt;/search.php?q=http://169.254.169.254/latest/meta-data/iam/security-credentials/"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Ok for the above if you are getting responses: 200 then your WAF is not configured:&lt;/p&gt;

&lt;p&gt;So, for the sake of understanding I will just add the points, they are generic and usually it can be configured through infrastructure as a code.&lt;/p&gt;

&lt;p&gt;But below are the main points to keep in mind:&lt;/p&gt;

&lt;p&gt;1- WAF is firewall, and firewall has rules so you need to add them (rules and rule groups).&lt;br&gt;
2- AWS WAF Managed Rule Groups: AWS has managed group rules and you can utilise them:&lt;/p&gt;

&lt;p&gt;a) Core Rule Set: Catches common general attacks like SQL injection, XSS, and malformed requests — it's the baseline "seatbelt" protection almost every app should have.&lt;br&gt;
b) Known Bad Inputs: Blocks specific request patterns already known from real-world exploits, like SSRF payloads (e.g. 169.254.169.254) or log4j-style strings.&lt;br&gt;
c) Admin Protection: Blocks public access to admin/management paths (like /admin or /wp-admin) that shouldn't be reachable from outside.&lt;/p&gt;

&lt;p&gt;3- Build your own rules. For the /admin rule you can go to rule builder and add your own rules, string match / admin.&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
Validate, test and validate and check logging also what things are kept in the log. Traffic overview and traffic metrics are also important to keep in mind.&lt;/p&gt;

&lt;p&gt;Regulators, auditors always ask for these rules that they are configured, logged and periodically reviewed. So make sure you have the evidences at least for a period of 1 year depending on the criticality. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
