<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Nicu Surdu's blog</title>
        <link>https://surdu.me</link>
        <description>Personal blog of Nicu Surdu</description>
        <lastBuildDate>Thu, 31 Jul 2025 18:24:38 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Feed for Node.js</generator>
        <image>
            <title>Nicu Surdu's blog</title>
            <url>https://surdu.me/favicon/android-chrome-256x256.png</url>
            <link>https://surdu.me</link>
        </image>
        <copyright>© 2025 Nicu Surdu</copyright>
        <item>
            <title><![CDATA[Write More Meaningful Time Constants]]></title>
            <link>https://surdu.me/2022/10/22/write-meaningful-time-constants.html</link>
            <guid>https://surdu.me/2022/10/22/write-meaningful-time-constants.html</guid>
            <pubDate>Sat, 22 Oct 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[One thing that I strive to achieve is to write code that doesn't need comments to convey meaning. The most basic thing when doing this is to avoid using magic numbers. In this article, I'll illustrate how I avoid using them when it comes to time constants.]]></description>
            <enclosure url="https://surdu.me/post-covers/write-meaningful-time-constants.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Automate Building GitHub Pages That Use Jekyll Plugins]]></title>
            <link>https://surdu.me/2020/02/04/jekyll-git-hook.html</link>
            <guid>https://surdu.me/2020/02/04/jekyll-git-hook.html</guid>
            <pubDate>Tue, 04 Feb 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[I wanted to add a plugin for my Jekyll-generated website, and now I need to have a custom build process, as GitHub doesn't support custom plugins. We'll go through what is needed for that.]]></description>
            <enclosure url="https://surdu.me/post-covers/jekyll-git-hook.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[How I Fixed the Beeping Problem of My 'APC Back-UPS ES 700']]></title>
            <link>https://surdu.me/2019/09/03/fix-apc-es700-constant-beeping.html</link>
            <guid>https://surdu.me/2019/09/03/fix-apc-es700-constant-beeping.html</guid>
            <pubDate>Tue, 03 Sep 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[When my APC UPS died on me, I thought I'd give repairing it a shot. Turns out, the fix was pretty straightforward.]]></description>
            <enclosure url="https://surdu.me/post-covers/fix-apc-es700-constant-beeping.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Use DigitalOcean as Dynamic DNS]]></title>
            <link>https://surdu.me/2019/07/28/digital-ocean-ddns.html</link>
            <guid>https://surdu.me/2019/07/28/digital-ocean-ddns.html</guid>
            <pubDate>Sun, 28 Jul 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[I have a server at my home on which I host various test projects and I needed a dynamic DNS service, so I decided to buy a domain and handle the DNS update myself.]]></description>
            <enclosure url="https://surdu.me/post-covers/digital-ocean-ddns.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Disable Margin Collapse in CSS with No Visual Impact]]></title>
            <link>https://surdu.me/2017/04/10/disable-margin-collapse.html</link>
            <guid>https://surdu.me/2017/04/10/disable-margin-collapse.html</guid>
            <pubDate>Mon, 10 Apr 2017 00:00:00 GMT</pubDate>
            <description><![CDATA[When working with CSS you sometimes have to work around a behavior known as margin collapsing. Let's go briefly through what it is and an easy cool hack to negate it.]]></description>
            <enclosure url="https://surdu.me/post-covers/disable-margin-collapse.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[How to Set a Variable in Django Template]]></title>
            <link>https://surdu.me/2011/02/18/set-variable-django-template.html</link>
            <guid>https://surdu.me/2011/02/18/set-variable-django-template.html</guid>
            <pubDate>Fri, 18 Feb 2011 00:00:00 GMT</pubDate>
            <description><![CDATA[As you may have figured by now, Django does not implement such a feature. That is because the logic of setting the variable must go in the view, not in the template. But there are some rare cases when you need this.]]></description>
            <enclosure url="https://surdu.me/post-covers/set-variable-django-template.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Capture the Output of a Django Command]]></title>
            <link>https://surdu.me/2011/02/06/capture-output-django-command.html</link>
            <guid>https://surdu.me/2011/02/06/capture-output-django-command.html</guid>
            <pubDate>Sun, 06 Feb 2011 00:00:00 GMT</pubDate>
            <description><![CDATA[The documentation is very slim when it talks about how to call a Django command from code. To do this, just use call_command. To solve the trick of capturing the output of this I had to dig a little into the Django source.]]></description>
            <enclosure url="https://surdu.me/post-covers/capture-output-django-command.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[How Does Shazam Work ?]]></title>
            <link>https://surdu.me/2011/01/20/how-does-shazam-work.html</link>
            <guid>https://surdu.me/2011/01/20/how-does-shazam-work.html</guid>
            <pubDate>Thu, 20 Jan 2011 00:00:00 GMT</pubDate>
            <description><![CDATA[In this article, I'll try to explain as simply as possible what I've understood about how the famous song identification app works, from the published paper by one of the authors of the app.]]></description>
            <enclosure url="https://surdu.me/post-covers/how-does-shazam-work.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Make LineString Resolution Depend on Zoom Level in OpenLayers]]></title>
            <link>https://surdu.me/2010/12/20/make-linestring-resolution-depend-on-level-in-openlayers.html</link>
            <guid>https://surdu.me/2010/12/20/make-linestring-resolution-depend-on-level-in-openlayers.html</guid>
            <pubDate>Mon, 20 Dec 2010 00:00:00 GMT</pubDate>
            <description><![CDATA[In this article will examine a solution to reduce the number of points in a route path, rendered inside OpenLayers, based on the zoom level of the map.]]></description>
            <enclosure url="https://surdu.me/post-covers/make-linestring-resolution-depend-on-level-in-openlayers.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>