<?xml version='1.0' encoding='UTF-8'?>
<rss version="2.0">
  <channel>
    <title>Less than personal. Dawid Laszuk's world.</title>
    <link>https://laszukdawid.com</link>
    <description>Mainly blog but also a few things.</description>
    <item>
      <title>Align to work with AI</title>
      <link>https://laszukdawid.com/blog/2025/03/07/aligning-with-ai</link>
      <pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate>
      <description>AI-powered code assistants are becoming an integral part of modern programming, influencing how developers write and structure their code. These assistants perform well with commonly used languages and frameworks but struggle with less familiar ones, raising questions about their broader impact. As AI-generated code becomes more widespread, programming patterns may shift in ways that favor certain technologies over others. This trend could reshape coding practices, prompting discussions about the long-term effects of AI on software development.</description>
    </item>
    <item>
      <title>TIL - Ubuntu - dynamic background</title>
      <link>https://laszukdawid.com/til/2024/ubuntu-dynamic-background</link>
      <pubDate>Sat, 25 Jan 2025 00:00:00 +0000</pubDate>
      <description>
      It should've been easy but it wasn't. To setup a dynamic background, i.e. one that wallpaper between light and dark modes, you need:

* Two different wallpapers (duh!)
* Locate where to put a config
* Write a config into an xml file

Assuming you have `light.jpeg` and `dark.jpeg` files in dir `/home/user/wallpapers`.
Create an xml file, e.g. called `my_dynamic_wallpaper.xml` with the following content
      </description>
    </item>
    <item>
      <title>TIL - VSCode copilot debug is great</title>
      <link>https://laszukdawid.com/til/2024/vscode-debug</link>
      <pubDate>Thur, 26 Dec 2024 00:00:00 +0000</pubDate>
      <description>
Just as I was getting tired of all these incorrect suggestions by the Github Copilot, I learned about its `copilot-debug` option.  When executing something in the (VSCode built-in) terminal, if you append `copilot-debug` to its name, it'll try to figure out vscode setting for debugging.  It can take a while to get the proper VSCode launch.json config, but once it's there, you can just save it.  They also provide a *nice* prompt asking what you want to do with the output (of the debug config).

I'm not sure how it works on more complicated setups. Likely, not great, as with most LLMs on more convoluted questions, but I don't recommend anyone rely on it for difficult tasks (yet). Anyway, it came in handy today. I hope I won't forget about it the next time I want to debug something.

Here's release note for the feature:
https://code.visualstudio.com/updates/v1_96#_debugging-with-copilot
      </description>
    </item>
    <item>
      <title>Independent but not alone - have a buddy</title>
      <link>https://laszukdawid.com/blog/2024/12/09/independent-but-not-alone</link>
      <pubDate>Mon, 09 Dec 2024 00:00:00 +0000</pubDate>
      <description>
One thing I've seen people conflate is "Independent" and "Alone". Especially at work.

Having a project and working on it by yourself doesn't mean that no one else should be involved.
There are multiple ways how others could help without directly working on the project.
In fact, I always recommend project leaders to have a project buddy.
Even if they're the only person who is going to design, execute and own, it helps to have someone to discuss the project.
The buddy's involvement can vary from just listening (a.k.a. "rubber ducking") to suggesting some relevant resources or proposing design modifications.
</description>
    </item>
    <item>
      <title>AI is not just ifs</title>
      <link>https://laszukdawid.com/blog/2024/11/22/ai-is-not-ifs</link>
      <pubDate>Fri, 22 Nov 2024 00:00:00 +0000</pubDate>
      <description>
        <p>
A common joke in the corporate world is that "AI is just a bunch of `if` statements."
It's funny on a few levels which is why I'd like to make it unfunny.
I'm taking the burden because people are stretching this joke and starting to believe it is true.
</p>
      </description>
    </item>
    <item>
      <title>Terminal Agent</title>
      <link>https://laszukdawid.com/blog/2024/11/10/terminal-agent</link>
      <pubDate>Sun, 10 Nov 2024 00:00:00 +0000</pubDate>
      <description>
        <p>There's a tool called Terminal Agent - check it out on GitHub at https://github.com/laszukdawid/terminal-agent.</p>
        <p>It's an interface for making LLM requests from the terminal. It helps with asking questions (primarily regarding Unix tooling and commands) and can perform basic agent functions, like executing Unix commands. Of course, it's still under development with more features to come, but I'm writing about it because it's already quite useful.</p>
      </description>
    </item>
    <item>
      <title>HomeHero - next iteration</title>
      <link>https://laszukdawid.com/blog/2024/07/28/homehero-next-iteration</link>
      <pubDate>Sun, 28 Jul 2024 00:00:00 +0000</pubDate>
      <description>
        <h1>HomeHero - next iteration</h1>
        <p> It's time for me to write an "I'm excited to share"
        blog post. This time, the excitement is regarding the second phase of the HomeHero app. The <a href="/blog/2024/03/09/homehero">HomeHero</a> app was released a few months back,
        initially more of a proof of concept than a useful tool. I released it to gather early
        feedback fom friends and family. The feedback was positive, but it was clear that the app
        needed improvement. I've been working on it since then, and I'm proud to say that it's now a
        (more) useful tool! Of course, there's plenty of room for further enhancements, but I'm
        happy with the progress so far.</p>
        <h2> What's new?  </h2> 
        Two significant changes are the UI and the custom item types. 
        <h3> Improved User Interface </h3>
        <p>
          Initial users (myself included) really didn't like the look and feel.
          It was ugly.
          I'm not a designer and I prefer usability rather than looks, but it was ugly.
          Others also didn't like it as it looked half-baked and, well, ugly.
          I've updated the UI significantly, and while it isn't perfect, it's much better now.
      </p>
        <h3>Custom Item Types </h3>
        <p> A key piece of feedback was that people didn't care about
        appliances as much as I do. Fair enough! However, it turns out that everyone has something
        else that they care about in a similar way. Examples include plants, books, and craft
        supplies. There isn't an easy way to organize and keep track of these items. </p>
        <p>
          To address this, I've added custom item types. This feature allows users to specify what
        they want to track, what is important to them. We are (cough cough) *democratizing* the
        tracking of things by letting users decide what "things" are! </p>
        <h2> What's next? </h2>
        <p>
        The app isn't perfect, and there are many improvements and additions I'd like to make: <ul>
            <li>Better photos and files handling, especially improving local previews and adding
              more sharing options</li>
            <li>Improving automation and "one-click" experiences, such as linking to or importing
        from external resources</li>
          </ul> The mantra is: <u> Inventory management is
            easier when there's less of it. </u>
        </p>
        <p> Besides app improvements, I'm also
        enhancing my internal tooling. I started this journey almost from scratch. My backend is in
        Go, the frontend is in Flutter, and the cloud provider is not one of the big four. Except
          for Go, everything else was new to me, which meant learning many basics and reinventing
        tools available in other ecosystems. This includes working with GenAI components. (Yes, of
        course, there are GenAI components in the app and tooling!) As I polish these tools, I might
        start sharing them as well. </p>
        <h2> Call to action </h2>
        <p> What's the call to action here?
        Give HomeHero a go! Android user? Visit the Google Play Store and search for <a href="https://play.google.com/store/apps/details?id=pro.homehero.app.free">HomeHero</a>.
        Do you prefer the web? Visit <a href="https://console.homehero.com">HomeHero console</a> and
        start tracking your items and tasks. Let me know your thoughts, feelings, desires, and
        frustrations. I'm open to feedback and eager to make this app better for you. </p>
      </description>
    </item>
    <item>
      <title>Do repeat yourself</title>
      <link>https://laszukdawid.com/blog/2024/07/20/repeat-stuff</link>
      <pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate>
      <description>
        It's Ok to repeat yourself. You've likely heard this before. You might have heard this so
        many times that you're tired of hearing it again. If not, then congratulations you're about
        to read something new. Otherwise, time to chose whether to read on or not.

        ### The Importance of Repetition

        Repeating is important. For the "repeater," it's about consolidating and organizing the
        message.
        Our opinions change over time, sometimes faster than we think.
        There's a chance that what you believed in, even if it's something technical, might not
        resonate with you anymore as you learn about other relevant topics.

        Most people need to actively "visit" a thought to check it; saying it aloud or writing it
        down is a good way to do that. Saying it aloud to someone else has the added benefit of
        seeing and hearing their reaction. You might either help someone learn something new, or you
        might hear feedback that will help you validate your thought. It's a win-win situation,
        provided you're both civil about it.

        ### Why we avoid repeating ourselves

        One of the most common reasons why people avoid repeating themselves is because they don't
        like to repeat themselves, and they don't like to hear something they already know again.
        Yes, let me repeat that: I believe we avoid repeating ourselves because we don't like to
        repeat.

        We might think, "Why tell something again and again? It's a waste of time. Shouldn't they
        already know this? I mentioned this at some point." Reading this sentence might make the
        problem quite clear, but, thematically, let me repeat the conclusion: they aren't you. There
        are many reasons why they might not have heard this; for one, weren't around when you said
        it, or they contemplated on the previous point, or there was an explosion nearby and they
        didn't hear it. So, it's less about you and more about them. Sorry.

        ### Dealing with repetition-averse listeners

        Lastly, and perhaps the most difficult part: what if you're sharing something with someone
        who has heard this before and doesn't like hearing things again? This is indeed a problem. I
        usually explain that I didn't have bad intentions. I add that I prefer to err on the side of
        over-explaining and risk being perceived as annoying, rather than implicitly expecting them
        to know everything and closing doors in case they don't.

        Basically, I'd rather waste 10 seconds now than leave awkwardness that lasts much longer. If
        they don't like to listen, they might not want to listen to you in the first place. And if
        they are ok with listening... maybe repeat this internet message to them?
      </description>
    </item>
    <item>
      <title>TIL - Finding package that imports a module</title>
      <link>https://laszukdawid.com/til/2024/finding-importing-package</link>
      <pubDate>Sat, 22 Jul 2024 00:00:00 +0000</pubDate>
      <description>
        The best way to understand what an import is introducing is to remove it and see what
        breaks. The even better way is to not do implicit imports. But sometimes we can't have
        things we like.

        I've been software engineering for, I think, a long while but still often get confused by
        which imports introduce what. Especially in java, javascript and dart/flutter.

        When working with IDE, commenting out an import often triggers validation error and the IDE
        will highligh which symbols are missing.
      </description>
    </item>
    <item>
      <title>Principles of improvement</title>
      <link>https://laszukdawid.com/blog/2024/05/27/principles-of-improvement</link>
      <pubDate>Mon, 27 May 2024 00:00:00 +0000</pubDate>
      <description>
        No one plans to fail, yet everyone has seen failed projects.
        Why is that? I don't know.

        At least one of the reasons for failed projects is the over-reliance on good intentions and
        hope that it'll *just* work out.
        We're going to make things good because we want to make good things so they're going to be
        good.
        Somehow, that isn't enough.
        A project can still fail and when that happens and it's our work then we justify it with
        external factors. Yet, when it's someone else's project the same arguments sound like
        excuses.
        After the fact it's easy to point out the *obvious* or the *logical* changes that should
        have been made.

        Do I have a solution for that? Not entirely.
        However, over the years, I have developed and adopted some principles that I believe help me
        in making things better.
      </description>
    </item>
    <item>
      <title>Coming soon - HomeHero</title>
      <link>https://laszukdawid.com/blog/2024/02/08/coming-soon-homehero</link>
      <pubDate>Wed, 08 Feb 2024 00:00:00 +0000</pubDate>
      <description>
        I've been working on another bigger project. It's called &lt;a
        href="https://homehero.pro" &gt; HomeHero&lt;/a&gt; and it's coming soon.

        Releasing a new project is always a bit scary. On one hand, I know that the sooner I release
        it, the sooner I can get feedback and improve it. However, I also know that the first
        impression is important and I want to make sure that it's a good one. There are still some
        things to polish and test but I'm excited of what comes. I've been using it for own purposes
        for a while now and it's been a great help.
      </description>
    </item>
    <item>
      <title>TIL - Sending docker images manually</title>
      <link>https://laszukdawid.com/til/2024/sending-docker-images-manually</link>
      <pubDate>Thu, 07 Mar 2024 00:00:00 +0000</pubDate>
      <description>
        Sometimes we want to send a docker image to dev or staging environment. That's for testing a
        small change, for example extra logs for debuging. One could push the image to a registry
        with some throw away tag, e.g. `dev`, and then pull it on the other side. But that's
        unnecessary push to and pull from the registry. Instead, we can save the image to a file and
        then load it from the file.
      </description>
    </item>
    <item>
      <title>Central Limit Theorem of behaviour</title>
      <link>https://laszukdawid.com/til/2023/12/09/ctl-of-behaviour</link>
      <pubDate>Sat, 09 Dec 2023 00:00:00 +0000</pubDate>
      <description>
        As we get older, our thoughts solidify a bit. We are unintentionally drawn into more
        experiments, we get more data, and we learn more theories that help us to make sense of the
        world. If we're lucky, these experiments are diverse enough to sample from "real-life"
        distribution, rather than repeating the same situation over and over again. If we're super
        lucky, we also get to learn about the central limit theorem.
      </description>
    </item>
    <item>
      <title>TIL - Python argparser prefix matching</title>
      <link>https://laszukdawid.com/til/2023/python-argparser-prefix-matching</link>
      <pubDate>Sat, 21 Oct 2023 00:00:00 +0000</pubDate>
      <description>
        Python has a built in argument parser called &lt;a
        href="https://docs.python.org/3/library/argparse.html"&gt;argparser&lt;/a&gt;.
        It's the first library most folks use when writing a quick CLI tool. However, it's often
        quickly abandoned once the app grows in complexity. Unfrotunately, too quickly.
      </description>
    </item>
    <item>
      <title>TIL - SSH connection in Docker image</title>
      <link>https://laszukdawid.com/til/2023/ssh-in-docker</link>
      <pubDate>Sun, 15 Oct 2023 00:00:00 +0000</pubDate>
      <description>
        Had a use case to checkout a git repository (from Github) via ssh in a Docker image. Turns
        out that it isn't simple and I'm not entirely sure what's the reason. This entry is a sorrow
        lesson without a fix. Help is welcome.
      </description>
    </item>
    <item>
      <title>TIL - Golang binaries in Python</title>
      <link>https://laszukdawid.com/til/2023/golang-bins-in-python/</link>
      <pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate>
      <description>
        To use golang binaries in Python, one can do that by first converting golang programs into
        shared libraries and then calling them from Python. This can be done by using the `cgo`
        package in golang. The following is an example of how to do this:
      </description>
    </item>
    <item>
      <title>TIL - Boto3 for AWS GovCloud</title>
      <link>https://laszukdawid.com/til/2023/govcloud-boto3/</link>
      <pubDate>Sat, 26 Aug 2023 00:00:00 +0000</pubDate>
      <description>
        When working with AWS in GovCloud, it turned out that the boto3 library is not configured to
        work with GovCloud by default. This is because the GovCloud region is not included in the
        default list of regions. To fix this, you can add the GovCloud region to the list of regions
        in the boto3 library. This can be done by adding the following code to your Python script:
      </description>
    </item>
    <item>
      <title>Thematic quarters</title>
      <link>https://laszukdawid.com/blog/2023/07/02/thematic-quarters/</link>
      <pubDate>Sat, 02 Jul 2023 00:00:00 +0000</pubDate>
      <description>
        Resolutions are a double-edged sword. On one hand, they give us hope and motivation to do
        something new. On the other hand, they can be difficult to achieve because they are
        typically big goals. It's hard to change oneself into a new mold without a driving
        motivation and stimuli. We're used to our day-to-day routines, and if we don't pay attention
        or are under stress, we'll default to them.
      </description>
    </item>
    <item>
      <title>Unsuppervised learning in a supervised problem</title>
      <link>https://laszukdawid.com/blog/2023/04/23/unsupervised-learning-in-a-supervised-problem/</link>
      <pubDate>Sat, 23 Apr 2023 00:00:00 +0000</pubDate>
      <description>
        Unsupervised learning is a powerful technique in machine learning, particularly when dealing
        with datasets where labeled data is unavailable. It allows the model to identify patterns,
        structures, and relationships in the input data without any human supervision or guidance.
        This can be particularly useful for tasks such as categorizing images, identifying anomalies
        in time series data, or detecting outliers in graphs.

        There is a common misconception that unsupervised learning methods, such as K-means or
        Isolation Forest, cannot be validated. While it may be difficult to validate the method
        itself, validating the results of the method and ensuring that they provide acceptable
        outcomes is rarely challenging. There may not be an objective truth, but there are plenty of
        subjective "yeah, that looks good." Humans are adept at spotting patterns and can often
        evaluate the quality of results simply by inspecting them. In fact, many algorithms were
        created to match our intuition on how a problem could be solved.
      </description>
    </item>
    <item>
      <title>Quick tips on ML Infrastructure</title>
      <link>https://laszukdawid.com/blog/2022/01/14/quick-tips-on-ml-infrastructure</link>
      <pubDate>Fri, 14 Jan 2022 00:00:00 +0000</pubDate>
      <description>
        ML infrastructure plays a crucial role in the success of a machine learning project.
        Building and maintaining ML infrastructure can be complex and time-consuming, especially
        when started from scratch for each project.
        Obviously, horses for courses; some project are one-offs and optimizing might derail your
        enthusiasm, and some project are so large that everything becomes an exception.
        Most projects, however, are (un)fortunately going to be very similar from high-level
        perspective.
        Each will need some data storage, computation units and means to deploy models.
        Here are a few short tips.
      </description>
    </item>
    <item>
      <title>Time off - try it yourself</title>
      <link>https://laszukdawid.com/blog/2021/11/06/time-off-try-it-yourself</link>
      <pubDate>Sat, 06 Nov 2021 00:00:00 +0000</pubDate>
      <description>
        It's been over a year since I left a stable and well paying job, and focused more on myself.
        A year feels like a nice unit of time to summarize over but I didn't feel the need to say
        something.
        Until now. Maybe it’s worth sharing what I’ve been sharing with everyone who wanted to
        listen.
      </description>
    </item>
    <item>
      <title>Agents Bar is on hiatus</title>
      <link>https://laszukdawid.com/blog/2021/09/29/agents-bar-is-on-hiatus/</link>
      <description>Agents Bar is on hiatus</description>
    </item>
    <item>
      <title>Agents Bar - First newsletter</title>
      <link>https://laszukdawid.com/blog/2021/08/01/agents-bar-first-newsletter/</link>
      <description>Agents Bar - First newsletter</description>
    </item>
  </channel>
</rss>