<?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: BabbaWaagen</title>
    <description>The latest articles on DEV Community by BabbaWaagen (@babbawaagen).</description>
    <link>https://dev.to/babbawaagen</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3762215%2F051bce80-85fb-40b6-9769-7e9576811e63.jpeg</url>
      <title>DEV Community: BabbaWaagen</title>
      <link>https://dev.to/babbawaagen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/babbawaagen"/>
    <language>en</language>
    <item>
      <title>Estimating the speed of the ISS using computer vision (Python + OpenCV)</title>
      <dc:creator>BabbaWaagen</dc:creator>
      <pubDate>Tue, 31 Mar 2026 17:13:51 +0000</pubDate>
      <link>https://dev.to/babbawaagen/estimating-the-speed-of-the-iss-using-computer-vision-python-opencv-422c</link>
      <guid>https://dev.to/babbawaagen/estimating-the-speed-of-the-iss-using-computer-vision-python-opencv-422c</guid>
      <description>&lt;h1&gt;
  
  
  Estimating the speed of the ISS using computer vision
&lt;/h1&gt;

&lt;p&gt;I recently revisited an older project I built with a friend for a school project as part of the ESA Astro Pi 2024 challenge.&lt;/p&gt;

&lt;p&gt;The idea was simple:&lt;br&gt;&lt;br&gt;
estimate the speed of the ISS using only images of Earth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approach
&lt;/h2&gt;

&lt;p&gt;The project is written in Python using OpenCV.&lt;/p&gt;

&lt;p&gt;The pipeline looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;capture two images
&lt;/li&gt;
&lt;li&gt;detect keypoints using SIFT
&lt;/li&gt;
&lt;li&gt;match them using FLANN
&lt;/li&gt;
&lt;li&gt;measure pixel displacement
&lt;/li&gt;
&lt;li&gt;convert that into real-world distance (GSD)
&lt;/li&gt;
&lt;li&gt;calculate speed based on time difference
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;p&gt;Estimated speed:&lt;br&gt;
&lt;strong&gt;~7.47 km/s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Actual ISS speed:&lt;br&gt;
&lt;strong&gt;~7.66 km/s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So roughly a 2–3% difference.&lt;/p&gt;

&lt;p&gt;Not perfect, but surprisingly close considering it’s based purely on image analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;The original runtime images are unfortunately lost, so the repository mainly contains test/template images.&lt;/p&gt;

&lt;p&gt;This obviously limits how well the results can be reproduced.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would improve
&lt;/h2&gt;

&lt;p&gt;Looking at it now, I would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;improve filtering of bad matches
&lt;/li&gt;
&lt;li&gt;make the pipeline cleaner
&lt;/li&gt;
&lt;li&gt;handle outliers more robustly
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/BabbaWaagen/AstroPi" rel="noopener noreferrer"&gt;https://github.com/BabbaWaagen/AstroPi&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you’ve worked with similar approaches or have ideas on improving matching quality, I’d be interested.&lt;/p&gt;

</description>
      <category>python</category>
      <category>computervision</category>
      <category>machinelearning</category>
      <category>imageprocessing</category>
    </item>
    <item>
      <title>Auditing repository bloat without auto-fixing anything</title>
      <dc:creator>BabbaWaagen</dc:creator>
      <pubDate>Mon, 09 Feb 2026 14:41:41 +0000</pubDate>
      <link>https://dev.to/babbawaagen/auditing-repository-bloat-without-auto-fixing-anything-45e7</link>
      <guid>https://dev.to/babbawaagen/auditing-repository-bloat-without-auto-fixing-anything-45e7</guid>
      <description>&lt;h1&gt;
  
  
  Repository Cleanup and Auditing
&lt;/h1&gt;

&lt;p&gt;Over time, repositories tend to accumulate things that were never part of the original plan.&lt;/p&gt;

&lt;p&gt;Not necessarily because someone made a mistake, but because repos live for years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build outputs get committed temporarily&lt;/li&gt;
&lt;li&gt;files get copied instead of reused&lt;/li&gt;
&lt;li&gt;directories stick around after refactors&lt;/li&gt;
&lt;li&gt;ownership changes and context gets lost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is dramatic on its own — but over time it adds up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem I Ran Into
&lt;/h2&gt;

&lt;p&gt;I wanted a way to see the current state of a repository without:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deleting anything&lt;/li&gt;
&lt;li&gt;rewriting history&lt;/li&gt;
&lt;li&gt;enforcing opinions&lt;/li&gt;
&lt;li&gt;adding heavy configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most tools I tried either focused on auto-cleanup or required a lot of setup.&lt;br&gt;
I just wanted an audit.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Small CLI for Repo Audits
&lt;/h2&gt;

&lt;p&gt;So I built a small CLI tool in Go called &lt;strong&gt;repo-clean&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It scans a repository and reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;large files&lt;/li&gt;
&lt;li&gt;duplicate files (by hash)&lt;/li&gt;
&lt;li&gt;commonly unwanted directories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;auto-delete files&lt;/li&gt;
&lt;li&gt;modify the repo&lt;/li&gt;
&lt;li&gt;push best practices&lt;/li&gt;
&lt;li&gt;hide details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It only reports what is already there.&lt;/p&gt;
&lt;h3&gt;
  
  
  Example Usage
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;repo-clean scan &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For CI or automation, JSON output is available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;repo-clean scan &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes it easy to plug into pipelines, reports, or checks without changing developer workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why No Auto-Fixes?
&lt;/h2&gt;

&lt;p&gt;This is a deliberate choice.&lt;/p&gt;

&lt;p&gt;In many teams, especially with older or shared repositories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;not everything can be removed immediately&lt;/li&gt;
&lt;li&gt;some artifacts are temporarily tolerated&lt;/li&gt;
&lt;li&gt;decisions require human context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;repo-clean is meant to surface information, not make decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  When This Is Useful
&lt;/h2&gt;

&lt;p&gt;This tool is intentionally narrow, but works well for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;legacy repositories&lt;/li&gt;
&lt;li&gt;CI audits&lt;/li&gt;
&lt;li&gt;periodic repo hygiene checks&lt;/li&gt;
&lt;li&gt;understanding why a repo feels heavier over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not a replacement for .gitignore or good Git practices.&lt;br&gt;
It's an audit tool for the current state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;The project is open source (MIT):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Bladiostudio/repo-clean" rel="noopener noreferrer"&gt;https://github.com/Bladiostudio/repo-clean&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, issues, and improvements are welcome.&lt;/p&gt;

</description>
      <category>go</category>
      <category>devops</category>
      <category>ci</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
