

<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://blog.nedtechie.com/</id>
  <title>NedTechie</title>
  <subtitle>NedTechie blog about DevOps, Linux etc.</subtitle>
  <updated>2026-06-13T14:16:36+07:00</updated>
  <author>
    <name>Nedim Hadzimahmutovic</name>
    <uri>https://blog.nedtechie.com/</uri>
  </author>
  <link rel="self" type="application/atom+xml" href="https://blog.nedtechie.com/feed.xml"/>
  <link rel="alternate" type="text/html" hreflang="en"
    href="https://blog.nedtechie.com/"/>
  <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator>
  <rights> © 2026 Nedim Hadzimahmutovic </rights>
  <icon>/assets/img/favicons/favicon.ico</icon>
  <logo>/assets/img/favicons/favicon-96x96.png</logo>


  
  <entry>
    <title>I Wrote Ruby and the Compiler Made It 10x Faster</title>
    <link href="https://blog.nedtechie.com/posts/i-wrote-ruby-and-the-compiler-made-it-10x-faster/" rel="alternate" type="text/html" title="I Wrote Ruby and the Compiler Made It 10x Faster" />
    <published>2026-05-23T16:00:00+07:00</published>
  
    <updated>2026-05-23T16:39:59+07:00</updated>
  
    <id>https://blog.nedtechie.com/posts/i-wrote-ruby-and-the-compiler-made-it-10x-faster/</id>
    <content type="text/html" src="https://blog.nedtechie.com/posts/i-wrote-ruby-and-the-compiler-made-it-10x-faster/" />
    <author>
      <name>Nedim</name>
    </author>

  
    
    <category term="development" />
    
    <category term="ruby" />
    
    <category term="compilers" />
    
    <category term="performance" />
    
  

  <summary>I wrote a log analyzer in Ruby. Then I compiled it to a native binary. It ran 10 times faster than the same algorithm in CRuby, and 3 times faster than idiomatic Ruby with regex and each.

The part that surprised me most: the idiomatic Ruby version – the one with regex parsing and sort_by and Hash.new(0) – was already 4.7x faster than the while-loop version running in CRuby. The interpreter rea...</summary>

  </entry>

  
  <entry>
    <title>Your S3 Bucket Is an Open Directory and You Probably Don't Know It</title>
    <link href="https://blog.nedtechie.com/posts/your-s3-bucket-is-an-open-directory/" rel="alternate" type="text/html" title="Your S3 Bucket Is an Open Directory and You Probably Don&amp;apos;t Know It" />
    <published>2026-04-24T16:00:00+07:00</published>
  
    <updated>2026-04-24T16:00:00+07:00</updated>
  
    <id>https://blog.nedtechie.com/posts/your-s3-bucket-is-an-open-directory/</id>
    <content type="text/html" src="https://blog.nedtechie.com/posts/your-s3-bucket-is-an-open-directory/" />
    <author>
      <name>Nedim</name>
    </author>

  
    
    <category term="security" />
    
    <category term="aws" />
    
    <category term="devsecops" />
    
  

  <summary>One curl command can enumerate every file in your S3 bucket. No credentials. No login. Just an HTTP GET. Here is how to find it, why it matters more than you think, and the Terraform fix.</summary>

  </entry>

  
  <entry>
    <title>Breaking My Own Infrastructure: 12 Days, 19 Findings, 3 False Positives</title>
    <link href="https://blog.nedtechie.com/posts/breaking-my-own-infrastructure-what-i-found/" rel="alternate" type="text/html" title="Breaking My Own Infrastructure: 12 Days, 19 Findings, 3 False Positives" />
    <published>2026-04-23T16:00:00+07:00</published>
  
    <updated>2026-04-24T05:26:55+07:00</updated>
  
    <id>https://blog.nedtechie.com/posts/breaking-my-own-infrastructure-what-i-found/</id>
    <content type="text/html" src="https://blog.nedtechie.com/posts/breaking-my-own-infrastructure-what-i-found/" />
    <author>
      <name>Nedim</name>
    </author>

  
    
    <category term="security" />
    
    <category term="devsecops" />
    
    <category term="pentesting" />
    
    <category term="retrospective" />
    
  

  <summary>Twelve days ago I opened a terminal, pointed curl at our staging API, and started breaking things. I didn’t have a plan. I didn’t have a timeline. I just had coffee, paranoia, and a vague sense that “it probably works fine” wasn’t good enough anymore.

This is what I found.

The Series at a Glance

What started as “let me test this one form” turned into a full infrastructure security audit span...</summary>

  </entry>

  
  <entry>
    <title>What --dryrun Taught Me About Confidence</title>
    <link href="https://blog.nedtechie.com/posts/what-dryrun-taught-me-about-confidence/" rel="alternate" type="text/html" title="What --dryrun Taught Me About Confidence" />
    <published>2026-04-22T16:00:00+07:00</published>
  
    <updated>2026-04-24T05:26:55+07:00</updated>
  
    <id>https://blog.nedtechie.com/posts/what-dryrun-taught-me-about-confidence/</id>
    <content type="text/html" src="https://blog.nedtechie.com/posts/what-dryrun-taught-me-about-confidence/" />
    <author>
      <name>Nedim</name>
    </author>

  
    
    <category term="security" />
    
    <category term="aws" />
    
    <category term="devsecops" />
    
    <category term="lessons" />
    
  

  <summary>I shipped a false positive to my team. In bold. With a CRITICAL severity tag. And I was wrong.

Not “wrong about a detail” wrong. Wrong about the entire finding. The vulnerability I described didn’t exist. I had tested it with --dryrun, seen a “success,” and written it up with the confidence of someone who has never been humbled by AWS IAM.

This post is about the 48 hours between “I found some...</summary>

  </entry>

  
  <entry>
    <title>The Load Balancer That Trusted Everyone</title>
    <link href="https://blog.nedtechie.com/posts/the-load-balancer-that-trusted-everyone/" rel="alternate" type="text/html" title="The Load Balancer That Trusted Everyone" />
    <published>2026-04-21T16:00:00+07:00</published>
  
    <updated>2026-04-21T16:00:00+07:00</updated>
  
    <id>https://blog.nedtechie.com/posts/the-load-balancer-that-trusted-everyone/</id>
    <content type="text/html" src="https://blog.nedtechie.com/posts/the-load-balancer-that-trusted-everyone/" />
    <author>
      <name>Nedim</name>
    </author>

  
    
    <category term="security" />
    
    <category term="infrastructure" />
    
    <category term="devsecops" />
    
    <category term="aws" />
    
  

  <summary>Rate limiting is supposed to stop brute-force attacks. Ours didn’t. Not because the rate limiter was broken – it worked perfectly. The problem was that it was counting the wrong IP addresses.

An attacker could make unlimited login attempts by adding one HTTP header to each request. No tools. No exploits. Just curl -H &amp;quot;X-Forwarded-For: random-ip&amp;quot;.

This is the story of trust proxy: 2, an ALB se...</summary>

  </entry>

</feed>


