<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Petr Knap's Notes</title>
        <link>https://petrknap.github.io/notes/</link>
        
        
        <item>
            <title>#LowPower #EInk #Clock based on #RaspberryPi #RP2040</title>
            <description>My trusty ESP8266-based clock recently developed a fatal flaw — one segment of its display stopped working.
While still usable, it became annoying enough to justify a redesign.
Instead of repairing it, I took the opportunity to build a cleaner, low-power solution: an e-ink clock powered by the Raspberry Pi RP2040.

</description>
            <pubDate>2026-03-22T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2026/03/22/low-power-eink-clock-based-on-raspberry-pi-rp2040.html</link>
        </item>
        
        
        
        <item>
            <title>#Laravel - #PHP #Framework of #BadDesign and #Frustration</title>
            <description>If we’ve ever chatted, you’ve likely noticed that Laravel isn’t exactly my favorite PHP framework.
There are quite a few reasons for this, but most of them can be demonstrated with just a few straightforward examples from its documentation.
Are you wondering what bothers me so much about Laravel?

</description>
            <pubDate>2025-02-23T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2025/02/23/laravel-php-framework-of-bad-design-and-frustration.html</link>
        </item>
        
        
        
        <item>
            <title>XZ Utils wrapper for #PHP</title>
            <description>I took a liking to the xz compression format a long time ago.
It is a very handy format that is available almost everywhere, unfortunately not in PHP.
So I decided it is time to fix that and write an XZ Utils (wrapper).

</description>
            <pubDate>2024-11-03T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2024/11/03/xz-utils-wrapper-for-php.html</link>
        </item>
        
        
        
        <item>
            <title>Implement comments for your #GitHubPages via pull requests</title>
            <description>I wanted to enable comments for my GitHub Pages for a long time.
I’ve considered various third-party services, but none of them suited me.
Anyway…

</description>
            <pubDate>2024-10-31T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2024/10/31/implement-comments-for-your-github-pages-via-pull-requests.html</link>
        </item>
        
        
        
        <item>
            <title>Use Qualcomm #aptX on Microsoft #Windows</title>
            <description>Do you like good audio quality and wireless headphones?
Then you need Qualcomm aptX, but it’s not that easy to have it on Microsoft Windows as it should be.

</description>
            <pubDate>2021-03-06T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2021/03/06/use-qualcomm-aptx-on-microsoft-windows.html</link>
        </item>
        
        
        
        <item>
            <title>Screen / desktop #streaming via #ffmpeg</title>
            <description>It is useful to stream your screen for someone else sometimes.
In these cases you can use many applications like Skype and Hangouts but you don’t get control over it.
If you will create a stream via ffmpeg than server will control quality and client will control scale.

</description>
            <pubDate>2020-06-03T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2020/06/03/screen-desktop-streaming-via-ffmpeg.html</link>
        </item>
        
        
        
        <item>
            <title>Why @EA #theSims4 crashes on @AMDRyzen? #solved</title>
            <description>I bought the Sims 4 a few weeks ago, and I noticed that the game is extremely unstable.
It simply crashes after short time of gameplay, but only if the CPU utilization is low.
After some testing I think I guessed why it is crashing.
This problem probably occurs in many EA games on multi-CCX CPUs like AMD Ryzen 5/7/9, Threadrippers and EPYCs.

</description>
            <pubDate>2020-05-11T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2020/05/11/why-ea-the-sims-4-crashes-on-amd-ryzen.html</link>
        </item>
        
        
        
        <item>
            <title>Is #SymfonyLock acquired if it is acquired? #Symfony</title>
            <description>If you are using symfony/lock you can see acquired lock as not acquired.
Method isAcquired simply returns state of the instance.
If different instance acquired the lock, your instance will return false.

</description>
            <pubDate>2019-08-09T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2019/08/09/is-symfony-lock-acquired-if-it-is-acquired.html</link>
        </item>
        
        
        
        <item>
            <title>Mathematician solves #TrickyEquation... or shows basic equation our lack of knowledge?</title>
            <description>
  Tricky equation 8÷2(2+2)=? has been puzzling people on social media for days.
Many people believed the answer is 16 while others were convinced it’s one.
FEMAIL consulted mathematician Hannah Fry to find out which answer is correct.
 – Daily Mail Online


</description>
            <pubDate>2019-08-04T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2019/08/04/mathematician-solves-tricky-equation-or-shows-basic-equation-our-lack-of-knowledge.html</link>
        </item>
        
        
        
        <item>
            <title>Do not buy #Sandboxie, crack it!</title>
            <description>I repeat - do not buy Sandboxie, crack it!
Why?
Because crackers give you better customer support for free than authors for money.
And all life-time license holders has now problems and nobody cares about it.

</description>
            <pubDate>2019-05-12T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2019/05/12/do-not-buy-sandboxie-crack-it.html</link>
        </item>
        
        
        
        <item>
            <title>Add P1M can skip next month in some #PHP cases</title>
            <description>If you are using new DateInterval(&apos;P1M&apos;) for adding month to date to get next month, do not do that.
There is huge difference between adding to begin and end of the month.
It does sense, but it is against semblance at first sight of P1M.

</description>
            <pubDate>2019-04-10T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2019/04/10/add-p1m-can-skip-next-month-in-some-php-cases.html</link>
        </item>
        
        
        
        <item>
            <title>Create multi-platform #CLI script for #Windows, #Linux &amp; #MacOSX</title>
            <description>Do you need to make run script which will work on multiple platforms?
You can use my idea.
In my case it’s run script which runs Java application and you can found it here.
Interested in how it works?

</description>
            <pubDate>2019-02-21T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2019/02/21/create-multiplatform-cli-script-for-windows-linux-macosx.html</link>
        </item>
        
        
        
        <item>
            <title>How to make #DIY CPU air tunnel?</title>
            <description>I needed air tunnel for my new Ryzen 3 2200G APU, so I was doing a little research some time ago.
There was any cheap air tunnel on the EU market at this time.
Because of that I made it myself.
Do you wish to made it too?

</description>
            <pubDate>2018-12-23T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2018/12/23/how-to-make-diy-cpu-air-tunnel.html</link>
        </item>
        
        
        
        <item>
            <title>Škoda #NewFabia vs FIAT #Tipo vs Citroën #C4Cactus</title>
            <description>Today my Citroën C4 Cactus celebrates 6000 km on the road.
It’s the right time to make some retrospective.
How do it stand next to my previous cars Škoda Fabia and FIAT Tipo?

</description>
            <pubDate>2018-06-02T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2018/06/02/skoda-new-fabia-vs-fiat-tipo-vs-citroen-c4-cactus.html</link>
        </item>
        
        
        
        <item>
            <title>How @FCAGroup still loses customers (Bravissimo @FIAT) #FCASocialConnect</title>
            <description>As you know from my first article about my factory new Fiat Tipo there was approved 2 of 3 complaints to be rapaired.
You also know, that there was a problem with a dealer, with a customer care and now there is a problem with authorized service too.
Hurrah!

</description>
            <pubDate>2018-02-10T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2018/02/10/how-fcagroup-still-loses-customers-bravissimo-fiat.html</link>
        </item>
        
        
        
        <item>
            <title>Encrypted QNAP TS-228 in OpenVPN network #solved</title>
            <description>We bought QNAP TS-228 as simple storage for @netpromotion some time ago (we also bought Synology DS216se as backup, but it’s even worse choice than TS-228).
The role of the NAS is storage for employees, so the TS-228 looks as great solution for it (in theory).
Now we know that we should have bought a HP ProLiant MicroServer instead.
So if you are planning to make storage for your company, please use standard server instead of NAS.

</description>
            <pubDate>2017-12-31T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/12/31/encrypted-qnap-ts228-in-openvpn-network.html</link>
        </item>
        
        
        
        <item>
            <title>How @FCAGroup lost customer in six months (Bravissimo @FIAT) #FCASocialConnect</title>
            <description>After two years of driving my German car it was time to say goodbye.
I said to myself:
Enough of these sharp lines, I want a car full of emotions, a car full of passion.
I wanted a car which I would be happy with, an Italian car.

</description>
            <pubDate>2017-12-03T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/12/03/how-fca-group-lost-customer-in-six-months-bravissimo-fiat.html</link>
        </item>
        
        
        
        <item>
            <title>Simplify #PHP #enum via class constants</title>
            <description>Are you using my implementation of Enumerated type for PHP?
If yes, then you should be interested in version 2.1.
Now it’s possible to use constants as members over ConstantsAsMembers trait.

</description>
            <pubDate>2017-09-11T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/09/11/simplify-php-enum-via-class-constants.html</link>
        </item>
        
        
        
        <item>
            <title>How to create #Symfony app independent #SymfonyBundle</title>
            <description>If you wish to create independent Symfony Bundle then you are on the Highway to Hell.
At netpromotion we take the ball and run with it.
Now we are ready to release our tool which solves the most common problems on the highway.
Please, take a seat and read more.

</description>
            <pubDate>2017-09-10T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/09/10/how-to-create-symfony-app-independent-bundle.html</link>
        </item>
        
        
        
        <item>
            <title>Wait for multiple #XHR with #JavaScript #Semaphore</title>
            <description>If you are playing with XHR, sometimes you need to wait for many small requests.
Sure, you can have separate callback for each request, but sometimes you need to wait until you load full dataset.
Of course you can use modern ways like promise, but there aren’t supported everywhere.

</description>
            <pubDate>2017-03-26T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/03/26/wait-for-multiple-xhr-with-javascript-semaphore.html</link>
        </item>
        
        
        
        <item>
            <title>Turn on the #retro light #Tesla #LED</title>
            <description>WARNING: I’m not an interior designer.
All walls in my flat are white.
My wooden furniture has natural surface (only clear varnish) and metal parts are matte black.
And finally my hardware (TV, PC, monitor, speakers, printer,…) is also matte black.
But even that simply designed flat can be unique and comfortable if you choose good lighting.

</description>
            <pubDate>2017-03-15T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/03/15/turn-on-the-retro-light-tesla-led.html</link>
        </item>
        
        
        
        <item>
            <title>How to scan #QRcodes on #WindowsPhone</title>
            <description>
  Tap on Search  system button (the left one)
  Tap on Bing Vision  button (above  button)
  Focus the camera on QR code and it will scan it
  Tap on scanned code


</description>
            <pubDate>2017-03-14T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2017/03/14/how-to-scan-qr-codes-on-windows-phone.html</link>
        </item>
        
        
        
        <item>
            <title>Organize your #music by markers and #PHP #CLI script</title>
            <description>Do you have any favorite songs, songs for relax, work, etc.?
If yes, how do you organize your music?
Do you prefer to use folders or playlists?
If playlists, how do you sync it between devices and keep it up-to-date?
I tried many ways before I started to use markers.
So let me introduce markers to you.

</description>
            <pubDate>2016-12-13T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2016/12/13/organize-your-music-by-markers-and-php-cli-script.html</link>
        </item>
        
        
        
        <item>
            <title>Get a #Bootstrap device by #JavaScript</title>
            <description>When you are creating responsive site, sometimes you need to separate non-touch and touch handlers.
Sure, you can have both handlers at same time or detect mobile devices by JavaScript directly.
But it will be cool to detect only Bootstrap device if you are using Bootstrap.
It eliminates the problem when your JavaScript and Bootstrap detects different devices.

</description>
            <pubDate>2016-12-01T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2016/12/01/get-bootstrap-device-by-javascript.html</link>
        </item>
        
        
        
        <item>
            <title>Cast je favoriete entertainment naar je tv #chromecast</title>
            <description>As Microsoft sheep (and Android hater) I never had reason to try Google Chromecast.
But the price, 50 USD with TAX in Czech Republic, was very interesting and when I was selecting new television I had to decide:
To buy “smart” TV or “just” TV with smart “box” and which smart “box” to choose?

</description>
            <pubDate>2016-11-27T00:00:00+00:00</pubDate>
            <link>https://petrknap.github.io/notes/2016/11/27/cast-je-favoriete-entertainment-naar-je-tv-chromecast.html</link>
        </item>
        
        
    </channel>
</rss>
