<?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>Git Repo Tracker</title>
      <link>https://laszukdawid.com/blog/2026/07/03/git-repo-tracker</link>
      <pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I built a small menu-bar app because I was tired of discovering that a repository had moved without me.&lt;/p&gt;
&lt;p&gt;`git fetch`, `git status`, pull, rebase, continue. Nothing dramatic. The annoying part was realizing it late, after the local context was already gone. Someone pushed changes, my repo was behind, and now I had to rebase while also remembering what I was doing two days ago.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Internal prototypes should be easy to share</title>
      <link>https://laszukdawid.com/blog/2026/06/20/internal-prototypes-should-be-easy-to-share</link>
      <pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I built a small thing at work recently. I won't go into the details because it is an internal tool, but the idea is simple: let people turn an idea into a small interactive page and share it with others inside the company.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using an AI agent to migrate Kubernetes</title>
      <link>https://laszukdawid.com/blog/2026/06/19/using-ai-agent-to-migrate-kubernetes</link>
      <pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Another great use for AI agents: Kubernetes migrations.&lt;/p&gt;
&lt;p&gt;I used to be quite anti-Kubernetes. It is a big, convoluted thing with creeping complexity. It lures you in with "simple orchestration" and the fact that every cloud provider has managed Kubernetes. You think this is a great step on the cloud-agnostic journey. Built-in high availability. Similar manifests everywhere. A bit more painful at the start, sure, but maybe a good long-term investment. Then the scaling starts and things get hairy.&lt;/p&gt;
&lt;p&gt;Kubernetes assumes that pods are cattle. Anything can happen to them. Most engineers don't even think something bad can happen to their processes. Their processes are immortal, obviously. Then there are network issues, resource slang, verbose manifests, storage classes, ingress controllers, secrets, certificates, and twenty different ways to spell "this should be running".&lt;/p&gt;
&lt;p&gt;It is not a one-off set-and-forget job. Not unless your cluster is small enough that you can pretend the hard parts do not exist. So, yes, I was anti-Kubernetes until about half a year ago.&lt;/p&gt;
&lt;p&gt;I joined a project with someone who had swallowed the LinkedIn marketing pill. Kubernetes, 5 different vector bases, LangChain, an LLM provider I never heard of with some weird embeddings. We already had enough friction points in the project and this was not the hill I wanted to fight on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Opus 4.6 v Qwen3.6-35B-A3B</title>
      <link>https://laszukdawid.com/blog/2026/06/12/opus-4-6-v-qwen3-6-35b-a3b</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;This table has been showing up on my feeds for a few days.&lt;/p&gt;
&lt;p&gt;Then someone sent it to me and asked, basically, "so the gap is gone, right?"&lt;/p&gt;
&lt;p&gt;No. Two reasons.&lt;/p&gt;
&lt;p&gt;The problem is two-fold: with the benchmark, and with the model.&lt;/p&gt;
&lt;p&gt;The benchmark first. SWE-bench has been around for a while. Everyone trying to beat it kind of knows what's in there. So they bring their own intelligence - personal meat, or AI brain - and aim at the solutions with the best chance of moving the number. That's target distillation. The benchmark isn't solved, sure, but those gradual better results aren't a sign of catching up. They're a sign of the benchmark being stale. The opposite of fresh. Stick a dart target on a wall, throw tons of darts at it for long enough, and occasionally one lands closer than the ones before. That's not better aim. That's just darts and time.&lt;/p&gt;
&lt;p&gt;Now the model. Any model can be good at a thing. If that's the goal of the model, then great, that's a success. A narrowly scoped model is *better* for a narrowly scoped problem, because it usually needs fewer resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dynamic theme change in Kitty on Ubuntu</title>
      <link>https://laszukdawid.com/blog/2026/05/18/dynamic-theme-change-in-kitty-on-ubuntu</link>
      <pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Kitty does not automatically follow the Ubuntu desktop light/dark theme in the way I wanted. New windows can pick up config changes, but existing windows will happily stay wrong unless you push new colors into the running instance.&lt;/p&gt;
&lt;p&gt;So I set up a native GNOME-based solution with no extra theme daemon. Just `gsettings`, a small shell script, and a user `systemd` service.&lt;/p&gt;
&lt;p&gt;The setup has four moving parts:&lt;/p&gt;
&lt;p&gt;That last part matters. Without it, only newly opened Kitty windows get the new theme.&lt;/p&gt;
&lt;p&gt;In `~/.config/kitty/kitty.conf` I added:&lt;/p&gt;
&lt;p&gt;This does three things:&lt;/p&gt;
&lt;p&gt;I created two files:&lt;/p&gt;
&lt;p&gt;Then `current-theme.conf` becomes a symlink to one of them.&lt;/p&gt;
&lt;p&gt;Example dark theme:&lt;/p&gt;
&lt;p&gt;Example light theme:&lt;/p&gt;
&lt;p&gt;The core script is:&lt;/p&gt;
&lt;p&gt;A small but important detail: I first assumed the socket would exist exactly at:&lt;/p&gt;
&lt;p&gt;That was wrong.&lt;/p&gt;
&lt;p&gt;Kitty created instance-specific sockets like:&lt;/p&gt;
&lt;p&gt;So the fix was to target `kitty-theme-sync.sock*` and update every live Kitty socket.&lt;/p&gt;
&lt;p&gt;That was the difference between:&lt;/p&gt;
&lt;p&gt;The watcher script is simple:&lt;/p&gt;
&lt;p&gt;`gsettings monitor` blocks and emits a line every time the GNOME color scheme changes. That is enough.&lt;/p&gt;
&lt;p&gt;I run the watcher as a user service:&lt;/p&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;p&gt;It is native to Ubuntu GNOME, minimal, and boring in a good way.&lt;/p&gt;
&lt;p&gt;No extra background tool. No desktop-agnostic abstraction layer. No polling loop.&lt;/p&gt;
&lt;p&gt;Just:&lt;/p&gt;
&lt;p&gt;That is enough.&lt;/p&gt;
&lt;p&gt;There are really two separate problems here:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Terminal Agent popup now works on Fedora and Ubuntu</title>
      <link>https://laszukdawid.com/blog/2026/05/02/terminal-agent-popup-on-fedora-and-ubuntu</link>
      <pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;We added desktop integration for the Terminal Agent popup GUI on both Fedora and Ubuntu, and this is one of those tiny upgrades that changes daily flow.&lt;/p&gt;
&lt;p&gt;After setup, I can hit `Ctrl+Shift+Space`, type a question, and get an answer without context switching away from what I am doing.&lt;/p&gt;
&lt;p&gt;The best part is that this works the same no matter where your model runs. You can point Terminal Agent at local models for privacy and offline workflows, or use cloud models when you want broader capability and speed.&lt;/p&gt;
&lt;p&gt;If you want to try it:&lt;/p&gt;
&lt;p&gt;The Fedora and Ubuntu integration tasks install `agent-gui`, set up the launcher path, and make the `Ctrl+Shift+Space` popup workflow practical for everyday use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LLM for RL</title>
      <link>https://laszukdawid.com/blog/2026/04/25/llm-for-rl</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I've been thinking about reinforcement learning (RL) much more recently.
It's *always* been on my mind but recently it got much more attention.
Multiple reasons. The strongest one hearing calling everything "agent" and then trying to understand what the author means by that.
To me, it always comes back to RL definition: an actor which can observe some representation of an actual state and acts on it with a feedback.
That's quite dry for most; they usually mean "LLM does something in a loop".
I guess that works as well.
So, if it works in definitions, does it work in "practise?"&lt;/p&gt;
&lt;p&gt;To be honest, I've been missing an opportunity to play around with RL a bit more.
This might be the time to play with it. My old project - [ai-traineree](https://github.com/laszukdawid/ai-traineree) which I haven't updated in 4 years(!), except small chores - seems to be calling me.&lt;/p&gt;
&lt;p&gt;When LLMs were getting popular there were some attempts at using them as RL agents. Some attempts were around playing games with a popular meme of Pokemon Red was the thing. At the time, I thought that's just a waste of time and resources. Way too large a model for such a thing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Customization: the privilage of the rich</title>
      <link>https://laszukdawid.com/blog/2026/04/11/customization-the-privilage-of-the-rich</link>
      <pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate>
      <description />
    </item>
    <item>
      <title>VSCode used to be good</title>
      <link>https://laszukdawid.com/blog/2026/04/08/vscode-used-to-be-good</link>
      <pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Every company wants to be an AI company. Every text editor wants to be the AI-first text editor.
VSCode used to be that "bloated electron app which could" - relatively quick startup and enough default config so to allow text editing.
A rich extension ecosystem allowed to quickly turn into a minimal IDE, and profiles allowed to have multiple minimal IDEs per purpose / project.
Even after MS bought VSCode it was still relatively "yours", as long as you disabled telemetry.
Advertising own extensions and preferred solutions wasn't obtrusive and often they were useful.&lt;/p&gt;
&lt;p&gt;Now, the Copilot is there by default and can't be removed.
Every update is a major change to the Copilot.
That Copilot is a terrible product - less than useful because it's difficult to undo changes and other useful coding assistants are being forced into terrible "Chat" panel.
Yes, I have opinion on how things should work in my editor and VSCode is taking away that option from me.
Guess Microsoft finally found a way to make VSCode into a product and moniteize it.
Good luck, Microsoft, I will check out VSCode again in a few years.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The more I write</title>
      <link>https://laszukdawid.com/blog/2026/03/31/the-more-I-write</link>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;It's kind of obvious. Everything that I write is obvious. At least to me. Usually when I write it down, it's already thought through, thus obvious.
I don't like saying obvious stuff, let alone writing obvious stuff. It just feels - hmm - unnecessary. But, I'm writing again, so what gives?&lt;/p&gt;</description>
    </item>
    <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>&lt;p&gt;tl;dr: There are preferred languages and frameworks. Use them and you'll have better GenAI code assistant experience. Don't use them, and things will likely be fine, though different.&lt;/p&gt;
&lt;p&gt;Many people who "code" have likely used generative AI (GenAI) recently to assist them with "coding." At the moment, their text generation part via large language models (LLMs) is arguably best utilised in programming as code writing assistants. If you've used those assistants, e.g. Github Copilot, then you've probably noticed that they handle easy or common queries quite well. However, for more complex tasks --- especially those requiring an understanding of the existing logic --- code assistants often struggle. The common solution is "*just pass more context*," but if the relevant information is spread across multiple large files, you're likely to get slow and inaccurate suggestions[^2].&lt;/p&gt;
&lt;p&gt;That's probably what you already know or have heard. You've also likely encountered people swearing by code assistants, saying they make them significantly more productive. You likely also heard that soon "software engineering won't be needed anymore" or that we'll only write in prompts. Well, *maybe*? I don't think so but undoubtedly the domain is changing. Why is that? Here's my informed (to a certain degree) speculation.&lt;/p&gt;
&lt;p&gt;Large language models (LLMs) have been trained on vast amounts of data, likely including GitHub repositories.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu - dynamic background</title>
      <link>https://laszukdawid.com/til/2025/ubuntu-dynamic-background</link>
      <pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;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&lt;/p&gt;
&lt;p&gt;That xml file should go either to `/usr/share/gnome-background-properties` (requires sudo) or `~/.local/share/gnome-background-properties`.
Internet claims different locations, e.g. `~/.local/share/backgrounds`.
For me, they didn't work. If they don't work for you, manually add an image as a Background, e.g. right click on image and "Set as Background..." and check where it was added.
The image should be copied over to some location with name being `{dateISO}-{filename}.{fileextension}`.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VSCode copilot debug is great</title>
      <link>https://laszukdawid.com/til/2024/vscode-debug</link>
      <pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Just as I was getting tired of all these incorrect suggestions by the Github Copilot, I learned about its `copilot-debug` option ([link](https://code.visualstudio.com/docs/copilot/copilot-vscode-features#_debug-and-fix-problems)).
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).&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Here's release note for the feature:
[https://code.visualstudio.com/updates/v1_96#_debugging-with-copilot](https://code.visualstudio.com/updates/v1_96#_debugging-with-copilot)&lt;/p&gt;</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>&lt;p&gt;One thing I've seen people conflate is "Independent" and "Alone". Especially at work.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Beyond having someone helping the person with the project, they're also helping simply by being there.
Unfortunately, I talked with too many people --- and have had this experience --- when working on a solo project, there just wasn't anyone to talk to.
This could be due to working on a completely unrelated project (such as a proof of concept), others being busy, or being paired with someone with whom you have only "tolerable" interactions.&lt;/p&gt;
&lt;p&gt;All this comes from a few past experiences when with managers we were allocating projects. There's a common argument that if a person owns a project end to end they'll grow.&lt;/p&gt;</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>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;To me, the main punchline is the highlight how corporate world works.
Enterprise "goods and services" need to sell, and what is being sold is often a promise or an idea rather than the product.
There's a whole department (marketing) which need to figure out what people want and then place the product in such a frame.
We live in times when technology is the king.
Both consumers and stakeholders want to have the highest of high tech; consumers want to feel like the sci-fi of 30 years ago is here, and stakeholders want to see products scaling for cheap.
To pander to masses marketing will take `if $loss &gt; $income then 'echo problem'` and will call it "Your personal financial AI."
Funny, right?&lt;/p&gt;
&lt;p&gt;Another punchline (layer?) of the joke is the observation how "newcomers" or "accidental influencers" will showcase their skills. They'll find something ingenious created by someone else, slap simplistic `if` somewhere and call it their "new AI solution".&lt;/p&gt;</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>&lt;p&gt;There's a tool called Terminal Agent - check it out on GitHub at https://github.com/laszukdawid/terminal-agent.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;(Full disclosure: I'm writing about this to improve SEO visibility. Hopefully, this will help others discover the tool and potentially contribute to its development. Positive feedback and contributions are really motivating, so I hope you'll forgive this bit of self-promotion.)&lt;/p&gt;
&lt;p&gt;In its current form, the Terminal Agent supports four providers:&lt;/p&gt;
&lt;p&gt;All currently can be used to ask a question, and all (except Perplexity) support streaming back the results.
Similarly, most providers can be used in an agent-like fashion with tools.&lt;/p&gt;
&lt;p&gt;While there are many similar 'agents' out there, what sets this one apart is that it's written purely in Go. From a user's perspective, this might not mean much. However, from a developer's standpoint, it required writing significant code to make all these providers work properly. For example, since Anthropic doesn't provide a Go SDK, I had to write my own (github [anthropic-go-sdk](https://github.com/laszukdawid/anthropic-go-sdk)) based on a semi-provided OpenAPI spec.&lt;/p&gt;</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>&lt;p&gt;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 [HomeHero](/blog/2024/03/09/homehero) 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.&lt;/p&gt;
&lt;p&gt;Two significant changes are the UI and the custom item types.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</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>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</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>&lt;p&gt;No one plans to fail, yet everyone has seen failed projects.
Why is that? I don't know.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;These principles are not new, they're not mine, and they're not unique. They're just a collection of principles that I find useful and that I try to follow. The common theme is that mistakes happen, and almost all of them are of human nature. It's ok to make mistakes, but it's better to minimise their occurrences and learn from those that have already happened.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sending docker images manually</title>
      <link>https://laszukdawid.com/til/2024/sending-docker-images-manually</link>
      <pubDate>Sun, 17 Mar 2024 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;If we can ssh into the remote machine then we can easily send the image over.&lt;/p&gt;
&lt;p&gt;Now the image `my_image:latest` is available on the remote machine. Job done easily.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding package that imports a module</title>
      <link>https://laszukdawid.com/til/2024/finding-importing-package</link>
      <pubDate>Sun, 17 Mar 2024 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;When working with IDE, commenting out an import often triggers validation error and the IDE will highligh which symbols are missing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HomeHero - the app</title>
      <link>https://laszukdawid.com/blog/2024/03/09/homehero</link>
      <pubDate>Sat, 09 Mar 2024 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;We just released the HomeHero app. It's a multi-platform app that helps you manage your household tasks, schedules, and documents.&lt;/p&gt;
&lt;p&gt;The app came from the frustration of having to do many things around the house and not being able to keep track of them.
When you notice something that needs fixing or replacing, rarely you can do it right away.
I'd add a note or a todo in my phone but these would get lost in the myriad of other notes and todos.
Once I get to it, then there's a typical a few steps dance "what's needed", "do I have the tools" and "where did I put the manual".&lt;/p&gt;
&lt;p&gt;In general, I much prefer to have a paper copy of the manual, warranty, and bill for every appliance and furniture in the house.
But the problem with paper is that it's easy to lose, it's difficult to search through, and eventually it becomes unreadable.
Even worse, you might need some information when you're not at home, and you don't have access to the paper copy.&lt;/p&gt;
&lt;p&gt;Of course, these aren't new problems and people have been solving them in various ways. One app (or notepad) for notes. One app (or notepad) for todos and schedules. One app (or folder) for documents. But my philosophy on resolving problems have slightly shifted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Coming soon - HomeHero</title>
      <link>https://laszukdawid.com/blog/2024/02/08/coming-soon-homehero</link>
      <pubDate>Thu, 08 Feb 2024 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I've been working on another bigger project. It's called [HomeHero](https://homehero.pro) and it's coming soon.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;What is it? It's a management app for home.
I use it to keep track of my stuff (inventory) through appropriate allocations and tags, allowing to easily search for items.
Also, I can assign recurring tasks and files (photos, documents) in context of some items.&lt;/p&gt;
&lt;p&gt;I understand that this app might not be for everyone.
As a "recent" homeowner, it's been very useful when some appliances broke and at the home improvement store I had to recall what the model number, or dimensions.
Or, searching for Christmas decoration; is it in the attic or in the shed?
Small things, but they add up.&lt;/p&gt;
&lt;p&gt;The reason for the delay is that it's my multi-platform (web, mobile, desktop) project and there's plenty to learn.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Central Limit Theorem of behaviour</title>
      <link>https://laszukdawid.com/blog/2023/12/09/ctl-of-behaviour</link>
      <pubDate>Sat, 09 Dec 2023 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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](https://en.wikipedia.org/wiki/Central_limit_theorem).&lt;/p&gt;</description>
    </item>
    <item>
      <title>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>&lt;p&gt;Python has a built in argument parser called [argparse](https://docs.python.org/3/library/argparse.html). 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.&lt;/p&gt;
&lt;p&gt;I'm also guilty of too quickly switching to [click](https://pypi.org/project/click/) (nice package) or [fire](https://github.com/google/python-fire) (least favourite evil). I think that's because I have outdated view of what `argparse` can and cannot do. Just the other day, through accidental laziness I've learned that by default `argparse` does [prefix matching](https://docs.python.org/3/library/argparse.html#prefix-matching). A flag can be shortened to the shortest unique prefix. For example, if a program has a flag `--verbose` it can be called with `--verb` or `--verbo` or `--verbose`. This is a very useful feature that I've been missing out on.&lt;/p&gt;
&lt;p&gt;Here's a quick example:&lt;/p&gt;
&lt;p&gt;And if there's an overlap in prefixes then `argparse` will raise an error:&lt;/p&gt;</description>
    </item>
    <item>
      <title>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>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;In any case, I was expecting this to work but it **did not**:&lt;/p&gt;
&lt;p&gt;I'm getting the following error:&lt;/p&gt;
&lt;p&gt;Conclusion, for now, is to use https instead of ssh.&lt;/p&gt;</description>
    </item>
    <item>
      <title>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>&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;The above code can be compiled into a shared library by running the following command:&lt;/p&gt;
&lt;p&gt;The shared library can then be called from Python by using the `ctypes` package. The following is an example of how to do this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Boto3 for GovCloud</title>
      <link>https://laszukdawid.com/til/2023/govcloud-boto3</link>
      <pubDate>Sat, 26 Aug 2023 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thematic quarters</title>
      <link>https://laszukdawid.com/blog/2023/07/02/Thematic-quarters</link>
      <pubDate>Sun, 02 Jul 2023 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unsuppervised learning in a supervised problem</title>
      <link>https://laszukdawid.com/blog/2023/04/23/Unsuppervised-learning-in-a-supervised-problem</link>
      <pubDate>Sun, 23 Apr 2023 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick tips on ML Infrastructure</title>
      <link>https://laszukdawid.com/blog/2023/01/14/quick-tips-on-ml-infrastructure</link>
      <pubDate>Sat, 14 Jan 2023 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;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 projects are one-offs and optimising might derail your enthusiasm, and some projects are so large that everything becomes an exception.
Most projects, however, are (un)fortunately going to be very similar from a high-level perspective.
Each will need some data storage, computation units and means to deploy models.
Here are a few short tips.&lt;/p&gt;</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>&lt;p&gt;It's been over a year since [I left a stable and well paying job](/blog/2020/09/07/leaving-amazon-for-a-sabbatical/), 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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One year later - a year without a job</title>
      <link>https://laszukdawid.com/blog/2021/11/06/one-year-later</link>
      <pubDate>Sun, 03 Oct 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;In less than 12 hours after publishing this note I'll be talking to my new colleagues at my new job.
About a year ago was the last time that I talked with colleagues about job related stuff.
Rudimentary maths - I haven't worked for anyone for over a year.
Below are some thoughts and feelings regarding this gap.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Agents Bar is on hiatus</title>
      <link>https://laszukdawid.com/blog/2021/09/29/agents-bar-is-on-hiatus</link>
      <pubDate>Wed, 29 Sep 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;It barely started and now I'm forced to move Agents Bar on an indefinite hiatus. There are many feelings associated with this move and sadness is the strongest as I truly enjoyed working on it. Hiatus, however, seems to be the best option for clearly separating intellectual property in case of joining another company. It also leaves the *token unclosed*, requiring revisiting and reviewing it in the future with, likely, a different perspective.&lt;/p&gt;
&lt;p&gt;There are a few reasons why I'm joining a company, this particular company. I won’t list them here. All in all, I believe that this is a great opportunity for me to grow in skills that I haven’t had a chance and polish those that I think I'm good at.&lt;/p&gt;
&lt;p&gt;What exactly does the hiatus mean? It means that I won't be able to work on my proprietary code. That’s the core service responsible for managing all micro-services, scaling them, properly integrating with one another. However it leaves me free to work on open source parts including deep reinforcement learning packages and clients. Some might argue that these are the cool parts of Agents Bar but I'm one of those weirdos who finds beauty in proper integration. It’s the boring stuff that makes the cool stuff much cooler.&lt;/p&gt;
&lt;p&gt;Things will change but things won't stop. Hopefully.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Agents Bar - First newsletter</title>
      <link>https://laszukdawid.com/blog/2021/08/01/agents-bar-first-newsletter</link>
      <pubDate>Sun, 01 Aug 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;There are a few things that I'd like to announce and preserve for accountability.
Unfortunately, Agents Bar News page isn't ready yet so my blog will have to do. Hopefully the following newsletters are "more professional".&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experiments in Agents Bar</title>
      <link>https://laszukdawid.com/blog/2021/07/12/experiments-in-agents-bar</link>
      <pubDate>Mon, 12 Jul 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;A small big milestone. This is a press release without a press. You might get here from our [LinkedIn account](https://www.linkedin.com/company/agents-bar/) in which case shout out to Agents Bar's social media team.&lt;/p&gt;
&lt;p&gt;Today we're launching **Experiments**. In simple terms these are bridges between Agents and Environments. They allow Agents to interact with Environments, managing their states and learning process. We're excited about it as it mitigates the main disadvantage of using Agents Bar over doing things yourself. What, I hear you ask?&lt;/p&gt;
&lt;p&gt;[Agents Bar](https://agents.bar) provides deep reinforcement learning (DRL) agents and allows for their quick training and usage. It is a [MLOps](en.wikipedia.org/wiki/MLOps) for Deep Reinforcement Learning although we know there are a few things missing.
Focus on (deep) reinforcement learning means that we inherit one of its biggest problems - data famine (step above hunger).
Yes, all machine learning (ML) are data hungry and doing "one up" never helps but, but, but.
Reinforcement learning comes with a feedback loop; you observe, you deduce, you interact, you change, you observe.
What you learned yesterday might be incorrect or insufficient today.
Because the environment changes, agents need to change as well.
So, it isn't enough to collect data once and then do some extensive learning. We need to keep collecting data and keep on doing extensive learning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Can't go alone. Give me a sword, axe or a bow.</title>
      <link>https://laszukdawid.com/blog/2021/07/02/cannot-go-alone</link>
      <pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;A downbeat this one is.&lt;/p&gt;
&lt;p&gt;It officially started a few months ago. The execution plan was formed over a year ago. The expected long term result is with me for circa 20 years. Though the rest might sound like I'm giving up, I certainly am not. Just following internet customs of shouting out one's intentions, thus avoiding prolonged gossips by squeezing them into a burst. Ay, clever, ain't it?&lt;/p&gt;</description>
    </item>
    <item>
      <title>It's amazing and/but I don't know why</title>
      <link>https://laszukdawid.com/blog/2021/05/08/its-amazing-and-but-i-dont-know-why</link>
      <pubDate>Sat, 08 May 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;One of those notes written under a sudden and noticeable motivation spike. I'll attribute it to coffee but it's obviously not the only factor. I had coffee many times in the last week but this feeling came maybe once or twice. Something needs to be attributed and as the author I need to give you an anchor, otherwise you'll go on a wild hunt.&lt;/p&gt;
&lt;p&gt;What am I talking about? Yes. I'm with you on this question. (No, this post is not written by GPT-X.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Agents Bar is in public beta</title>
      <link>https://laszukdawid.com/blog/2021/04/26/agents-bar-is-in-public-beta</link>
      <pubDate>Mon, 26 Apr 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;It’s a huge pleasure to announce, yet it is rather scary. As in title – [Agents Bar](https://agents.bar) is now in public beta. Go ahead, sign up, sign in and try it. I’d love to hear what you think.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Agents Bar looking for co-founders</title>
      <link>https://laszukdawid.com/blog/2021/04/02/agents-bar-looking-for-co-founders</link>
      <pubDate>Fri, 02 Apr 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;!-- class="content" is needed because everything is in Bulma and it doesn't understand &lt;hX&gt; by default --&gt;
&lt;div class="content"&gt;
&lt;p&gt;&lt;strong&gt;tl;dr:&lt;/strong&gt; I'm looking for co-founders to help push the &lt;a href="https://agents.bar"&gt;Agents Bar&lt;/a&gt; to glory. Everyone deserves an easy access to deep reinforcement learning (DRL) agents in their applications.&lt;/p&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing TensorBoard data locally</title>
      <link>https://laszukdawid.com/blog/2021/01/26/parsing-tensorboard-data-locally</link>
      <pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;TensorBoard seems to be a de facto standard tool for displaying your ML experimental data. There are some alternatives, but likely due to "being first" and "by google" stamps the TensorBoard (TB) is still the most common one. Many of these alternatives are far superior, especially if you're using something else than Tensorflow, but TB is still the first go to.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tis the writing season</title>
      <link>https://laszukdawid.com/blog/2020/11/19/tis-the-writing-season</link>
      <pubDate>Thu, 19 Nov 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Usually around this time I spend more days actively thinking and writing. As a boring person I write predominately about ideas for the future, conclusions from the past, experience to repeat, how others should conduct their lives... The boring stuff. Since this is rather cyclical my guess is that it's mainly because nights are coming early and they bring quietness, bring focus. Coming of the holidays and the new year is also a trigger for reminiscence and planning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RuntimeError: cuda runtime error (999) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:47</title>
      <link>https://laszukdawid.com/blog/2020/11/07/runtimeerror-cuda-runtime-error-999-unknown-error-at-pytorch-aten-src-thc-thcgeneral-cpp47</link>
      <pubDate>Sat, 07 Nov 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;p&gt;Whenever I'm running PyTorch with enabled CUDA and laptop decides to turn off/put to sleep the GPU, executed script will fail with some CUDA allocation error. Not cool, laptop, super not cool. Restarting the script, or starting any other program that uses CUDA, might not be possible since the memory wasn't properly released. When trying to run PyTorch you might see the same error as in the title, i.e.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;blockquote class="wp-block-quote"&gt;&lt;p&gt;RuntimeError: cuda runtime error (999) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:47&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Re: Why is machine learning 'hard' by S. Zayd Enam</title>
      <link>https://laszukdawid.com/blog/2020/09/27/re-why-is-machine-learning-hard-by-s-zayd-enam</link>
      <pubDate>Sun, 27 Sep 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;p&gt;I saw a few people referring to &lt;a href="http://ai.stanford.edu/~zayd/why-is-machine-learning-hard.html"&gt;S. Zayd Enam&lt;/a&gt;'s article as an explanation of why machine learning (ML) is hard. It is a good read with some visuals so I'd recommend reading it. However, I don't entirely agree with author's arguments and so I thought about highlighting a few nuances.&lt;/p&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leaving Amazon for a sabbatical</title>
      <link>https://laszukdawid.com/blog/2020/09/07/leaving-amazon-for-a-sabbatical</link>
      <pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;It's been over a week since I left Amazon where I've worked for over three years. It seems like a right time to write out some thoughts on the journey.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Traineree - PyTorch Deep Reinforcement Learning lib</title>
      <link>https://laszukdawid.com/blog/2020/08/21/ai-traineree-pytorch-deep-reinforcement-learning-lib</link>
      <pubDate>Fri, 21 Aug 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;p&gt;tl;dr: &lt;a href="https://github.com/laszukdawid/ai-traineree"&gt;AiTraineree&lt;/a&gt; is a new Deep Reinforcment Learning lib based on PyTorch.&lt;/p&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Timed OS light/dark theme switching</title>
      <link>https://laszukdawid.com/blog/2020/06/08/timed-os-light-dark-theme-switching</link>
      <pubDate>Mon, 08 Jun 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;tl;dr: A GitHub gist with commands walk-through is &lt;a href="https://gist.github.com/laszukdawid/8777bc3c211a4e78f1998be0125f9e4d"&gt;available here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Project closing note: Personal Progress</title>
      <link>https://laszukdawid.com/blog/2020/05/02/project-closing-note-personal-progress</link>
      <pubDate>Sat, 02 May 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I've been evolving my productivity process for a long time and there are a few aspects that really work for me. One of them is doing &lt;em&gt;official &lt;/em&gt;starting and ending ceremonies. By official I mean a session where you pretend to report findings to your boss although they and everyone else are (suspiciously) quite. Often that report means going through the &lt;a href="https://laszukdawid.com/2019/02/17/project-template/"&gt;project template&lt;/a&gt; and discussing all notes. Then, ceremonially move the project file/note to a different directory with all other completed (not necessarily successfully) projects and writing out learnings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speeding up EEMD / CEEMDAN</title>
      <link>https://laszukdawid.com/blog/2020/04/10/speeding-up-eemd-ceemdan</link>
      <pubDate>Fri, 10 Apr 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;tl;dr: PyEMD documentation has a section on &lt;a href="https://pyemd.readthedocs.io/en/latest/speedup_eemd.html"&gt;speeding up&lt;/a&gt; tweaks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let me just do this manually</title>
      <link>https://laszukdawid.com/blog/2020/02/18/let-me-just-do-this-manually</link>
      <pubDate>Tue, 18 Feb 2020 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Have you seen cartoons drawn by the XKCD or, alternatively, Randall Munroe? A definite recommendation to check out his &lt;a href="https://xkcd.com/"&gt;comic strips&lt;/a&gt;. They are quite geeky but on a wide range of topics. In particular, he has &lt;a href="https://xkcd.com/1205/"&gt;this cartoon&lt;/a&gt; which is a drawing of a spreadsheet with "how often used" vs "time saved". It's good generic guidance to consider when being tired with a mundane task and thinking about automating it. My personal spreadsheet is inexistent but if I were to do it there would be additional dimensions, e.g. what's the learned value. Even if I'm not saving much time the knowledge gain and scratch of curiosity itch is a big win.&lt;/p&gt;
&lt;p&gt;Recently I've adopted and embraced the containerization through the Docker family. These lightweight, all-inclusive environments allow to develop, build and deploy locally and make sure that when deployed they'll behave the same. Smack everything in containers, create a yaml template for the docker-composer and deploy on a remote host through docker-machine. Quick and easy. Except for some caveats.&lt;/p&gt;
&lt;p&gt;One of the issues that almost made me regret all these containers was with getting CA certificates to terminate TLS on the remote host using the &lt;a href="https://letsencrypt.org/"&gt;Let's Encrypt&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Personal Progress - opinion tracker</title>
      <link>https://laszukdawid.com/blog/2019/11/03/the-personal-progress-opinion-tracker</link>
      <pubDate>Sun, 03 Nov 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Presenting to you one of the side projects: the &lt;a href="https://personalprogress.site/"&gt;Personal Progress&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS' CDK for ECS Fargate, or how to run infrequent large jobs</title>
      <link>https://laszukdawid.com/blog/2019/10/25/aws-cdk-for-ecs-fargate-or-how-to-run-infrequent-large-jobs</link>
      <pubDate>Fri, 25 Oct 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Yep, it's one of those titles where unless you know what it's about you probably don't know what it's about. If you feel with these abbreviations, go ahead and scroll down a bit. Otherwise, let me go ahead and expand here a bit: Amazon Web Services' &lt;a href="https://aws.amazon.com/cdk/"&gt;Cloud Development Kit&lt;/a&gt; for &lt;a href="https://aws.amazon.com/ecs/"&gt;Elastic Container Service&lt;/a&gt; &lt;a href="https://aws.amazon.com/blogs/compute/aws-fargate-a-product-overview/"&gt;Fargate&lt;/a&gt;. That's probably not clearer so on to the descriptions we go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refreshment. Ain't no scientist no more.</title>
      <link>https://laszukdawid.com/blog/2019/10/19/refreshment-aint-no-scientist-no-more</link>
      <pubDate>Sat, 19 Oct 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;In the software world, there's a saying "if you want users to get excited about a new release, change buttons' colours." (I'm saying this.) Go ahead, look around; looks different, right?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Habituating to AWS Glue</title>
      <link>https://laszukdawid.com/blog/2019/09/15/habituating-to-aws-glue</link>
      <pubDate>Sun, 15 Sep 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Despite my strong opinion against the &lt;a href="https://aws.amazon.com/glue/"&gt;AWS Glue&lt;/a&gt; with its unfriendly documentation and strange approach to anything... I ended up using it as the main framework for an AWS native &lt;a href="https://en.wikipedia.org/wiki/Extract,_transform,_load"&gt;ETL (Extract, Transform, Load)&lt;/a&gt; service. The whole journey felt like trying to make divorced parents get back together. They're working together but the process felt artificial and not sure whether they're meant for each other. The success was due to finding out Glue's some dirty secrets.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Workspace with the tmux</title>
      <link>https://laszukdawid.com/blog/2019/08/26/workspace-with-the-tmux</link>
      <pubDate>Mon, 26 Aug 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Most of my projects now are separated from the beginning into logical entities and put into docker. This makes the deployment and replacement much easier to manage but the development many rituals comands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS Glue? No thank you.</title>
      <link>https://laszukdawid.com/blog/2019/07/04/aws-glue-no-thank-you</link>
      <pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I've been postponing describing my experience with &lt;a href="https://aws.amazon.com/glue/"&gt;AWS Glue&lt;/a&gt; for a couple of months now. It's one of those things that I really wanted to get out of myself but it hurts to even speak up. Let's end this pain, let's end this now. Ehkem... AWS Glue sucks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exist - the personal dashboard</title>
      <link>https://laszukdawid.com/blog/2019/06/06/exist-the-personal-dashboard</link>
      <pubDate>Thu, 06 Jun 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Let me share with you the thing I found on the internet. That thing is called &lt;a href="http://exist.io/"&gt;Exist.io&lt;/a&gt;. They aren't paying me for this ad but I'm still going to do it as it reignited my push for the &lt;i&gt;quantified self&lt;/i&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Barren pages get some words raining</title>
      <link>https://laszukdawid.com/blog/2019/04/20/barren-pages-get-some-words-raining</link>
      <pubDate>Sat, 20 Apr 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;There has been a surprising shift in my approach to writing. Any external request to express or clarify something in a written for would evoke a passionate hatred. I could feel the amount of time that is going to be wasted for no good reason what-so-ever. What others might complete in 5 min I would need to spend more than an hour. The reason was that many people considered my expression style as "weird" or "unusual", and would often ask for clarifications in the way they wanted just to make sure that we are on the same page. Talking is easier because you quickly clarify these concerns and carry on. Writing, however, is a double pain. I'd spend hours on rewiring and polishing a couple of sentences trying to clarify what might be potentially unclear and, then, I'd spend a couple on replying to feedback which typically meant "unclear." It's a frustration spiral.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Project template</title>
      <link>https://laszukdawid.com/blog/2019/02/17/project-template</link>
      <pubDate>Sun, 17 Feb 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Having more time I started retrospect on my previous projects and attempt to extract characteristics that lead either to success, or failure. As one might expect, these characteristic change in time. Currently, I’m doing better off dividing work into chunks and deal one at the time but a while back it was easier to just get into working and the immediate task would pop out. Going forward my habits and motivation will definitely change again so it’s difficult to impose a strict ‘successful project’ template, but, we aren’t setting things in stone and if needed we’ll change them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two-way doors decisions</title>
      <link>https://laszukdawid.com/blog/2019/01/12/two-way-doors</link>
      <pubDate>Sat, 12 Jan 2019 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Working for a tech behemoth corp is significantly different than what I expected joining. There is plenty of corpo bullshit, "vapor-ware" and ass-lickers that simply want to game out the system to climb the ladder. But, obviously, that's not all it has. Can't tell how is everywhere, but where I am, I must admit that I'm surrounded mainly by competent people and well-matured ideas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Toggling academia status to halted</title>
      <link>https://laszukdawid.com/blog/2018/12/16/toggling-academia-status-to-halted</link>
      <pubDate>Sun, 16 Dec 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;There was a significant update on my title. Since the end of November, I am officially a PhD. The relief is immense. Obviously, life goes on and nothing has significantly changed on the outside but I can see that my approach to things lighten up and the approach of "Yes can do" returned. I'm open to new projects and ideas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>When will this finish...</title>
      <link>https://laszukdawid.com/blog/2018/10/25/when-will-this-finish</link>
      <pubDate>Thu, 25 Oct 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;For the past few years, my life has been on hold. I go to work and do something there but the majority of the time I'm still spending on PhD. It's such an existential trap. It's close to the second year when I'm trying to impress a single person who doesn't really care. It's close to four years when I'm trying to improve some idea that I had and thought that it might work because the previous 3 years gave no results.&lt;/p&gt;
&lt;p&gt;When I started the PhD I was motivated, interested in everything and shaking from the excitement that I'll be pushing humanity forward. Now, I just want to do the minimum required. In the hindsight, I've wasted my life. Nothing good is coming from this. Hopefully, that is "yet". December is in or out and, at this stage, I don't really care.&lt;/p&gt;</description>
    </item>
    <item>
      <title>"Type ahead search" in Ubuntu 18.04+</title>
      <link>https://laszukdawid.com/blog/2018/07/21/type-ahead-search-in-ubuntu-18-04</link>
      <pubDate>Sat, 21 Jul 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;In Ubuntu 18.04, typing in Nautilus file manager makes a deep search through it's all subdirectories. This is potentially a powerful and convenient tool but, unfortunately, not for me as it doesn't fit into my workflow. I'm less of the GUI fan and only use a graphical file manager when I need to do some quick drag and drops on file bulks. Typically, if I'm using Nautilus, I'm already in the directory where I need to be and just want to quickly jump to a file/dir by the name. Shortly: yes, bring back the ye olde stuff.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS EMR with data in medium input and large output in AWS S3</title>
      <link>https://laszukdawid.com/blog/2018/05/20/aws-emr-with-data-in-medium-input-and-large-output-in-aws-s3</link>
      <pubDate>Sun, 20 May 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;The last post about AWS EMR and S3 has resulted in a few people messaging me directly. To ease others let me add something about how I approach a specific problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tiny bit about AWS EMR on big data</title>
      <link>https://laszukdawid.com/blog/2018/05/12/tiny-bit-about-aws-emr-on-big-data</link>
      <pubDate>Sat, 12 May 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;One of the recent projects I've worked on involved processing billions of row stored in &lt;a href="https://aws.amazon.com/s3/"&gt;AWS S3&lt;/a&gt; in terabyte size data. That was the biggest I've worked so far and, even though I don't like the term, it broke through the big data barrier. Just handling the data with popular toolkits, such as &lt;a href="http://scikit-learn.org/"&gt;scikit-learn&lt;/a&gt; or &lt;a href="https://mxnet.incubator.apache.org/"&gt;MXNet&lt;/a&gt;, created so many problems that it was easier to create our own solutions. But the biggest surprises came from places least expected.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWS Polly GUI</title>
      <link>https://laszukdawid.com/blog/2018/04/21/aws-polly-gui</link>
      <pubDate>Sat, 21 Apr 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Although learning and book knowledge are the best, my personal relationship with reading activity is not the friendliest. Being focused on the text is a huge struggle and I often need to re-read sentences to actually read it. That's why sometimes I use text-to-speech (TTS) software or service.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JSON pretty formatting in vim</title>
      <link>https://laszukdawid.com/blog/2018/03/26/json-pretty-formatting-in-vim</link>
      <pubDate>Mon, 26 Mar 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Quick ad hoc command:
&lt;blockquote&gt;:%!python -m json.tool&lt;/blockquote&gt;
For reusing and typing more update your `.vimrc` file with:
&lt;blockquote&gt;com! FormatJSON %!python -m json.tool&lt;/blockquote&gt;
After this you should be able to use :FormatJSON command.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiprocessing in Python - all about pickling</title>
      <link>https://laszukdawid.com/blog/2017/12/13/multiprocessing-in-python-all-about-pickling</link>
      <pubDate>Wed, 13 Dec 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Chances are you heard that multiprocessing in Python is hard. That it takes time and, actually, don't even try because there's something like global interpreter lock (GIL), so it isn't even true parallel execution. Well, GIL is true, but the rest is a lie. Multiprocessing in Python is rather easy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Complete Ensemble EMD with Adaptive Noise (CEEMDAN) in Python</title>
      <link>https://laszukdawid.com/blog/2017/11/17/complete-ensemble-emd-with-adaptive-noise-ceemdan-in-python</link>
      <pubDate>Fri, 17 Nov 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;CEEMDAN is available in Python through &lt;a href="https://github.com/laszukdawid/PyEMD"&gt;PyEMD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are as many empirical mode decomposition (EMD) variations as many teams are working on it. Everyone notices that in general EMD is very helpful method, yet, there's room for improvement. Few years back I have stopped doing modifications myself in exchange for working on mathematically sound model of coupled oscillator. Nevertheless, since I spent quite a lot of time on EMDs and have enjoy playing with it, from time to time something will catch my eye. This is what happened with &lt;em&gt;Complete Ensemble EMD with Adaptive Noise&lt;/em&gt; (CEEMDAN).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google wants back my microphone</title>
      <link>https://laszukdawid.com/blog/2017/11/05/google-wants-back-my-microphone</link>
      <pubDate>Sun, 05 Nov 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;My "writing" work currently goes somewhere else and have little motivation to write anything here. But, there's something that only internet can help, whether that's through actual help or simply transferring my annoyance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Free AWS is good. Not awesome, but good.</title>
      <link>https://laszukdawid.com/blog/2017/08/19/free-aws-is-good-not-awesome-but-good</link>
      <pubDate>Sat, 19 Aug 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Amazon with it's &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Service (AWS)&lt;/a&gt; is pretty cool. It gives you access to remote machine which you don't have to maintain. Actually you don't have to do anything other than &lt;em&gt;use it&lt;/em&gt;. All machines come in different flavours, but what tastes better than free? Granted that it's extremely limited, but surely we can squeeze something out of it. Right?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python Empirical Mode Decomposition on Image</title>
      <link>https://laszukdawid.com/blog/2017/07/28/python-empirical-mode-decomposition-on-image</link>
      <pubDate>Fri, 28 Jul 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;One of the packages I intend long term maintain and support is &lt;a href="https://github.com/laszukdawid/PyEMD"&gt;Python implementation of Empirical Mode Decomposition (EMD) called PyEMD&lt;/a&gt;. I will skip introduction of the method as it has been explained in few other posts [&lt;a href="http://laszukdawid.com/2014/07/21/emd-as-dyadic-filter-bank/"&gt;1&lt;/a&gt;, &lt;a href="http://laszukdawid.com/2015/09/04/emd-on-audio-wav-and-recurrance-plots/"&gt;2&lt;/a&gt;, &lt;a href="http://laszukdawid.com/2016/09/16/on-the-phase-coupling-of-two-components-mixing-in-empirical-mode-decomposition/"&gt;3&lt;/a&gt;, ...]. This blog entry is more about announcement of new feature which also means new version.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Cartopy on Ubuntu 14.04 (or Travis-CI)</title>
      <link>https://laszukdawid.com/blog/2017/06/04/installing-cartopy-on-ubuntu-14-04-or-travis-ci</link>
      <pubDate>Sun, 04 Jun 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I'm becoming increasingly convinced that using &lt;a href="https://github.com/laszukdawid"&gt;GitHub&lt;/a&gt; to share projects, even in &lt;i&gt;work-in-progress&lt;/i&gt; (WIP) state is quite beneficial. For one, someone can quickly point out that such project exists or suggest a tool which would simplify some operations. What's more, with tools like &lt;a href="http://travis-ci.org/"&gt;Travis-CI&lt;/a&gt; or &lt;a href="https://codecov.io/"&gt;CodeCov&lt;/a&gt; it's easy to follow whether the project is actually buildable or whether updates broke functionally of other features. Real convenience! Although, there is some price to pay for these goods.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kuramoto in Stan (PyStan)</title>
      <link>https://laszukdawid.com/blog/2017/05/19/kuramoto-in-stan-pystan</link>
      <pubDate>Fri, 19 May 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;b&gt;tl;dr&lt;/b&gt;: Project on github: https://github.com/laszukdawid/pystan-kuramoto&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spellchecker in VIM</title>
      <link>https://laszukdawid.com/blog/2017/04/24/spellchecker-in-vim</link>
      <pubDate>Mon, 24 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Only recently I've started using VIM as my default editor and... I'm amazed.&lt;/p&gt;
&lt;p&gt;I'm not advocating here for its superiority over any other text editor. You might be into design or simply wish for a graphical interface. I'm into not-using-mouse too much, so it actually fits quite well my purposes. Having said that, it took me a while to &lt;em&gt;discover&lt;/em&gt; it with more commands than saving and exiting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy clipboard in bash</title>
      <link>https://laszukdawid.com/blog/2017/04/12/easy-clipboard-in-bash</link>
      <pubDate>Wed, 12 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Those who know me, know that I'm not a fan of using mouse. Whenever possible I try to avoid using it. Although, after years of experience, I am fluent in keyboarding there are still some tasks that I need mouse. Well, until quite recent.&lt;/p&gt;
&lt;p&gt;The number one of annoying tasks is copying things from terminal to clipboard. Depending what exactly I needed to do with it I'd either select something with mouse and then copy, or stream output to file and then select it within editor. Some people found it weird, but yes, often copying through editor is much faster.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kuramoto in Python</title>
      <link>https://laszukdawid.com/blog/2017/03/02/kuramoto-in-python</link>
      <pubDate>Thu, 02 Mar 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Code for Kuramoto in Python is available &lt;a href="https://github.com/laszukdawid/Dynamical-systems/blob/master/kuramoto.py"&gt;here&lt;/a&gt; or from &lt;a href="https://laszukdawid.com/codes/"&gt;code&lt;/a&gt; subpage.
Explanation on how to use it is on the bottom of this post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update: Particle Swarm Optimisation in Python</title>
      <link>https://laszukdawid.com/blog/2017/02/19/update-particle-swarm-optimisation-in-python</link>
      <pubDate>Sun, 19 Feb 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;It came to my attention that my &lt;a href="http://laszukdawid.com/2015/03/10/particle-swarm-optimisation-in-python/"&gt;PSO for Python&lt;/a&gt; is actually quite popular. Only after few people contacted me I've noticed that the public version was not the same that I've been using. It wasn't bad, but definitely not as good. Thus, obviously, I've updated the version and cleaned it a bit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Common dtype for NumPy arrays</title>
      <link>https://laszukdawid.com/blog/2017/02/10/common-dtype-for</link>
      <pubDate>Fri, 10 Feb 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Recent challenge I had was to convert two given numpy arrays such it'll be possible to have them in common type without losing information. One can follow this &lt;a href="http://stackoverflow.com/questions/42163983/select-type-with-higher-precision"&gt;link&lt;/a&gt; for stackoverflow entry.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Halton sequence in Python</title>
      <link>https://laszukdawid.com/blog/2017/02/04/halton-sequence-in-python</link>
      <pubDate>Sat, 04 Feb 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Sometimes when we ask for &lt;i&gt;random&lt;/i&gt; we don't actually mean &lt;b&gt;random&lt;/b&gt; by just random. Yes, pseudo-random.&lt;/p&gt;
&lt;p&gt;Consider unitary distribution with ranges 0 and 1. Say you want to draw 5 samples. Selecting them at random would mean that we might end up with set of {0, 0.1, 0.02, 0.09, 0.01} or {0.11, 0.99, 0.09, 0.91, 0.01}. Yes, these values don't seem very random, but that's the thing about randomness, that it randomly can seem to not be random.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Matrix Multiplication with Python 3.5</title>
      <link>https://laszukdawid.com/blog/2017/01/17/matrix-multiplication-with-python-3-5</link>
      <pubDate>Tue, 17 Jan 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Only recently I have started to use Python 3. It's been out for good 8+ years and all these excuses about &lt;em&gt;incompatibility &lt;/em&gt;with some packages were just lazy. Most packages I use are already ported and if I ever find that something is incompatible... well, I'll think then. But for now let me pat myself on the back for this great leap, because:&lt;/p&gt;</description>
    </item>
    <item>
      <title>More links</title>
      <link>https://laszukdawid.com/blog/2017/01/08/more-links</link>
      <pubDate>Sun, 08 Jan 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;A while ago I've started to taste a bit how it feels to work in industry and it feels quite nice. Maybe that's the specificity of field projected onto the industry, or being tired of how academia works, but I'm enjoying extremely learning all the details about Computer Science, programming and newest technologies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Science podcasts</title>
      <link>https://laszukdawid.com/blog/2016/10/23/data-science-podcasts</link>
      <pubDate>Sun, 23 Oct 2016 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I'm an avid podcast listener. Whenever there's something that only requires sight or not much focus I'll try to do it with my headphones on. Great thing about podcasts is that they they are more up-to-date than audiobooks and have reasonably short lengths, so there's always a fit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Machine Learning competition on Seizure Prediction</title>
      <link>https://laszukdawid.com/blog/2016/10/17/machine-learning-competition-on-seizure-prediction</link>
      <pubDate>Mon, 17 Oct 2016 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;u&gt;&lt;b&gt;tl;dr:&lt;/b&gt; Read subject and click on link below.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Some of you, i.e. those lucky ones with connection to the outside World, are probably aware about Machine Learning community trying to aggressively change our lives for better. Regardless whether we like it or not, they're doing it. Some do this for money, others for fame, and those wicked ones just for fun.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Facebook birthday</title>
      <link>https://laszukdawid.com/blog/2016/09/27/facebook-birthday</link>
      <pubDate>Tue, 27 Sep 2016 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;This blog needs some lightening up and what a better way to do that than post some graphs? Exactly! I like to collect data on various things and then make a  graph of them. Things are much better when presented with axis and some number around it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Take it easy</title>
      <link>https://laszukdawid.com/blog/2016/09/25/take-it-easy</link>
      <pubDate>Sun, 25 Sep 2016 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;: I'm going less quality, more quantity.&lt;/p&gt;
&lt;p&gt;I like to write. I write lots, but usually don't publish it. Whenever I think about something and write it down, I then rethink what I thought and want to rewrite what I wrote. It takes me ages to write something very precise and something that I wouldn't be immediately ashamed of. This blog was meant to be the place for that content, for things I wouldn't quickly regret. And, although, I'm rather OK with the content, I'm deeply disappointed with the frequency. Thus: change.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On the Phase Coupling of Two Components Mixing in Empirical Mode Decomposition</title>
      <link>https://laszukdawid.com/blog/2016/09/16/on-the-phase-coupling-of-two-components-mixing-in-empirical-mode-decomposition</link>
      <pubDate>Fri, 16 Sep 2016 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Another of my papers [1] (see &lt;a href="http://laszukdawid.com/about/"&gt;About&lt;/a&gt;) has been published recently. Unfortunately, I cannot present it here in a full scope. Below I'm presenting an abstract from the paper and invite interested people in contacting me. This topic is really interesting and there is plenty to be done.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Objective Empirical Mode Decomposition metric</title>
      <link>https://laszukdawid.com/blog/2016/02/21/objective-empirical-mode-decomposition-metric</link>
      <pubDate>Sun, 21 Feb 2016 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;blockquote&gt;This is a summary. If you wish to read full paper, please visit &lt;a href="http://laszukdawid.com/about/"&gt;About me&lt;/a&gt; section and click on appropriate link, or follow one of these: &lt;a href="http://ijates.org/index.php/ijates/article/view/139"&gt;[1]&lt;/a&gt; &lt;a href="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7296314"&gt;[2]&lt;/a&gt;. Python code for metrics calculation is in &lt;a href="http://laszukdawid.com/codes/"&gt;Code&lt;/a&gt; section.&lt;/blockquote&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Part of my research has been concentrated on empirical mode decomposition (EMD). It's quite nice decomposition method and can generate interesting results. Nevertheless, due to its empirically, it's quite hard to determine what those results represent. Moreover, they will change if we change some parameters of the decomposition; parameters such as stopping criteria threshold, interpolation spline technique or even definition of extremum. Having two different decompositions of the same signal, one needs to decide which one is better. What researchers have done most often is to visually compare obtained decompositions and, based on their expertise, decide which one is better. Naturally this is not an ideal solution. Despite all our good (objective) intentions, observer's bias is unavoidable. We have tried to mitigate this problem by referring to the original concept of EMD and intrinsic mode functions (IMFs). We have came up with metrics, which are based on IMF's idealised properties: 1) an average frequency decreases with increase of IMF's index, 2) distinct instantaneous frequency for each IMF and 3) disjoint Fourier spectra support for IMF's amplitude and phase.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Buffer (Python)</title>
      <link>https://laszukdawid.com/blog/2015/11/26/data-buffer-and-power-spectral-densitypython</link>
      <pubDate>Thu, 26 Nov 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;For the past few years I've been teaching few modules for Master students, such as programming or signal processing. In most of them, one of the main and important tasks is to write a data buffer. Usual requirement is to be able to return last N samples or T seconds. However, conceptually most of students understands, implementing this seems to be quite difficult. But it is not. Unfortunately their first line of action, rather than think themselves, is to search for the solution on the Internet. There are many attempts, better or worse, but since they are looking for it, I could also provide with my own solution. Hopefully it helps others as well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EMD on audio - wav and recurrance plots</title>
      <link>https://laszukdawid.com/blog/2015/09/04/emd-on-audio-wav-and-recurrance-plots</link>
      <pubDate>Fri, 04 Sep 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;
Code and direct access to examples can be found on my &lt;a href="https://github.com/laszukdawid/recurrence-plot"&gt;GitHub reccurrence-plot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There was an idea that has been bothering me for past few months, but due to time restrictions and many commitments I just couldn't do it. Then came the conference quite far away and few transit hour at an airport. And now, few words about it.&lt;/p&gt;
&lt;p&gt;Question: &lt;i&gt;What do you get when you perform EMD on an audio?&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Sound is nothing else than a vibration of the air in area where we happen to be. Human ear can register vibration of frequency roughly between 20 Hz and 20 kHz. In order to fulfil &lt;a href="https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem"&gt;Nyquist sampling&lt;/a&gt; (in essence, the fastest frequency one can detect is up-down-up-down..., i.e. half the sampling rate) we need to record with at least 40 kHz sampling rate. Taking into account some additional technical difficulties and &lt;i&gt;just in case&lt;/i&gt; sounds are typically recorded at sampling rate around 44 kHz. But there is also stereo, and... well, my point is, there is a lot of data in 1 second of sounds. For most common methods of signal analysing, say short-time Fourier transform or filters, processing is relatively fast. However, in case of EMD it is not that good.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Frequentism and Bayesianism</title>
      <link>https://laszukdawid.com/blog/2015/08/25/frequentism-and-bayesianism</link>
      <pubDate>Tue, 25 Aug 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;This won't be long entry. Just wanted share a nice introductory tutorial on Bayesian statistics and its comparison to Frequentism. It didn't start my interest in Bayesian, but definitely provided with few nice insights. I have referred to it many times, thus it is only fair if I share it with bigger audience.&lt;/p&gt;
&lt;p&gt;Tutorial: http://jakevdp.github.io/blog/2014/03/11/frequentism-and-bayesianism-a-practical-intro/&lt;/p&gt;
&lt;p&gt;Paper partially based on referred content: http://arxiv.org/abs/1411.5018&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bayesian inference in Kuramoto model</title>
      <link>https://laszukdawid.com/blog/2015/05/18/bayesian-inference-in-kuramoto-model</link>
      <pubDate>Mon, 18 May 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;For a while now, I've been involved in Kuramoto models and adjusting them to data. Recently I've stumbled upon using Bayesian inference on predicting parameters in time-evolving dynamics. Team from Physics Department at University of Lancaster has produced many papers, but to provide with some reference it might be worth to look at [&lt;a href="ref1"&gt;1&lt;/a&gt;].&lt;/p&gt;</description>
    </item>
    <item>
      <title>Particle Swarm Optimisation in Python</title>
      <link>https://laszukdawid.com/blog/2015/03/10/particle-swarm-optimisation-in-python</link>
      <pubDate>Tue, 10 Mar 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;a href="http://laszukdawid.com/2017/02/19/update-particle-swarm-optimisation-in-python/"&gt;[Updated version available. See newest post.]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;tl;dr&lt;/b&gt;: For Python PSO code head to &lt;a title="Codes" href="https://laszukdawid.wordpress.com/codes/"&gt;codes subpage&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Training in Mathematica</title>
      <link>https://laszukdawid.com/blog/2015/02/18/training-in-mathematica</link>
      <pubDate>Wed, 18 Feb 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;On Friday 13th Feb I went to Wolfram Research European Ltd in Oxfordshire for Introductory training* on Wolfram Mathematica. Although I already had some experience with Mathematica I thought that it might be better to have professional guide. Few topics included in presentation sounded very interesting, i.e. parallelisation, usage of GPU, data visualisation and dynamic modifications to formulas. As one might expect in introductory course it was a brief sweep through all possible functions, thus not much was said about mentioned points. It was useful, however, to learn about different approaches or to see what is possible in Mathematica. They provided us with executable notebooks [download below] which are quite helpful to look in for examples. Additionally, we were using Mathematica 10, which I think is much better than version 9. Most helpful is quick tool-hint pop-up with possible argument for typed command and also easier change of writing style.&lt;/p&gt;
&lt;p&gt;For later reference, I will mention here some commands and pages:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://reference.wolfram.com/language/ref/Parallelize.html"&gt;Parallelize&lt;/a&gt; is a CPU-based parallelisation. It automatically attempts to divide problem by available cores and if it determines that it is impossible it will solve it in serial.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://reference.wolfram.com/language/CUDALink/ref/CUDAFunctionLoad.html"&gt;CUDAFunctionLoad&lt;/a&gt; and &lt;a href="http://reference.wolfram.com/language/OpenCLLink/ref/OpenCLFunctionLoad.html"&gt;OpenCLFunctionLoad&lt;/a&gt; use GPU to execute function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mathematica for solving coupled ordinary differential equation</title>
      <link>https://laszukdawid.com/blog/2015/01/31/mathematica-for-solving-coupled-ordinary-differential-equation</link>
      <pubDate>Sat, 31 Jan 2015 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Probably many know that Wolfram Mathematica is a great tool. I knew it as well, but now I'm actually observing first hand how powerful it really is. It is like with chilli pepper - everyone knows that it is hot, but you unless you taste it you won't really understand it. My work involves solving and manipulating many ordinary differential equations (ODE) which quite often are coupled. Writing basic script in Python to do that isn't hard. For simple cases one can use SciPy's build-in function &lt;em&gt;ode&lt;/em&gt; from class &lt;em&gt;integrate&lt;/em&gt; (&lt;a title="scipy.integrate.ode" href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.ode.html#scipy.integrate.ode"&gt;documentation&lt;/a&gt;). It isn't very fast, and writing everything takes some time, but it was still faster than solution I saw for Matlab or C++. However, the winner, in my opinion, is Mathematica with it's simple structure. I don't have it often, but looking at code for generating and solving $n$ coupled ODEs and seeing how fast it's performed makes me simply happy. Really simple!&lt;/p&gt;
&lt;p&gt;Below is code to generate $n$ coupled ODEs and parameters for them. Note: Subscript[x, i] is only syntax and could be exchanged with $x_i$, but for copying purposes I left it in long form.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ensemble empirical mode decomposition (EEMD)</title>
      <link>https://laszukdawid.com/blog/2014/09/10/ensemble-empirical-mode-decomposition-eemd</link>
      <pubDate>Wed, 10 Sep 2014 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;As mentioned in previous posts, one of the main drawbacks of EMD is its poor stability. This means that slight changes to input signal will cause changes in the output. Sometimes small, sometimes big, but almost always some changes. Ensemble empirical mode decomposition (EEMD) [&lt;a href="#ref1"&gt;1&lt;/a&gt;] is based on the assumption that small perturbations to input signal will also perturb slightly results around the true output. In fairness, we don't know whether the data we are using are noise free (almost never they are) and this contamination itself affects the output.&lt;/p&gt;
&lt;p&gt;How does EEMD work? It creates a large set (an ensemble) of EMD boxes. Let's assume there are &lt;em&gt;N&lt;/em&gt; of those boxes, but typically $N \geq 100$. Each of them process data &lt;em&gt;s(t)&lt;/em&gt;, but with artificially injected noise &lt;em&gt;n(t)&lt;/em&gt;. The true result is a grand average over all sets for each component, i.e. $c_j(t) = \frac{1}{N} \sum_{i=0}^{N} EMD_j \left[ s(t) + n_i(t) \right]$,
meaning that component &lt;em&gt;j&lt;/em&gt; is a grand average of all &lt;em&gt;j&lt;/em&gt; components for each contaminated &lt;em&gt;i&lt;/em&gt; data out of &lt;em&gt;N&lt;/em&gt; sets. This should work because of the noises' zero mean property. Originally it was suggested to use random white noise distribution with a finite amplitude of 0.2 data's standard deviation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plots in matplotlib pylab</title>
      <link>https://laszukdawid.com/blog/2014/08/13/plots-in-matplotlib-pylab</link>
      <pubDate>Wed, 13 Aug 2014 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;When trying to explain something to someone it is usually much better to actually present it in a graphical form. For this, I'm usually using Python and its module &lt;a href="http://matplotlib.org/" title="MatPlotLib"&gt;Matplotlib&lt;/a&gt;. It is highly customizable package with lots and lots different display techniques both for 2D and 3D images. Great feature is that one can also create animations to include in presentations.&lt;/p&gt;
&lt;p&gt;One of the classes in Matplotlib is called PyLab. It is meant to have the same functionality as Matlab's plotting functions. For my everyday activity that's typical more than enough. I'm not going to discuss package in details. I just want to mention few nice options when displaying and saving plot to a file.&lt;/p&gt;
&lt;p&gt;As a default, pylab leaves lots of whitespace for axis, titles and borders. On one hand this is good, because it makes everything look really nice, but on the other, we are losing some space for actual graphs. If you are going to discuss the plot while presenting, sometimes you can remove "unnecessary" content.&lt;/p&gt;
&lt;p&gt;Supposedly one imports pylab with
[code language="python"]
import pylab as py  # including pylab lib
[/code]&lt;/p&gt;
&lt;p&gt;To remove ticks from axis:
[code language="python"]
frame = py.gca()  # returns (gets) current axis
frame.axes.get_xaxis().set_ticks([]) # removes all x axis ticks
frame.axes.get_yaxis().set_ticks([]) # removes all y axis ticks
[/code]&lt;/p&gt;</description>
    </item>
    <item>
      <title>EMD as dyadic filter bank</title>
      <link>https://laszukdawid.com/blog/2014/07/21/emd-as-dyadic-filter-bank</link>
      <pubDate>Mon, 21 Jul 2014 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Soon after EMD was proposed researchers started analysing it and testing it for different sorts of applications. And obviously for papers, but it follows the other. One of the first discovered behaviours was acting as a dyadic filter bank on random data. This was shown in 2004 both on fractal Gaussian noise [1] and on white noise [2]. Those are very interesting papers and definitely worth reading.&lt;/p&gt;
&lt;p&gt;Quick example of such behaviour is presented in Figures 1 and 2. The first one shows input data - 256 data samples of normal random noise with 0 mean and variance 1 - and its EMD decomposition. Each row relates to different IMF. Figure 2 presents Fourier spectrum for signals in Figure 1, i.e. first row is spectrum for whole signal, second is for first IMF, third for second IMF and so on. Vertical lines relates middle (red) and end (black) of dyadic (powers of two) bands. Values of those lines are given as 256/n^2 and 256/(n+1)^2 respectively for black and red. Although they are not ideal they fit quite nicely and closely.&lt;/p&gt;
&lt;p&gt;What is the reason for such behaviour? Actually it's not understood well. It has been show empirically that it exists, but as many EMD related features it lacks of mathematical explanation (again, [1] and [2] discuss this very nicely).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mode mixing in EMD</title>
      <link>https://laszukdawid.com/blog/2014/07/11/mode-mixing-in-emd</link>
      <pubDate>Fri, 11 Jul 2014 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;One of the problems researchers claim that empirical mode decomposition (EMD) has is the difficulty of unmixing mixed modes [&lt;a href="#ref1"&gt;1&lt;/a&gt;]. Usually it means that EMD cannot (always) untangle two or more sine mono frequency components $s(t) = \sum_{n=0}^{N} A_n\sin(\omega_n t)$. Some say that this is big issue and propose tweaks to EMD [&lt;a href="#ref2"&gt;2&lt;/a&gt;], additional methods [&lt;a href="#ref3"&gt;3&lt;/a&gt;] or provide restrictions on when it is possible to extract [&lt;a href="#ref4"&gt;4&lt;/a&gt;]. The most widely analysed case is for $N=2$, i.e. $s(t) = \sin(t) + b \sin(\omega t)$, where $b$ and $\omega$ are relative amplitude and frequency respectively. This has been studied thoroughly in [&lt;a href="#ref4"&gt;4&lt;/a&gt;].&lt;/p&gt;
&lt;p&gt;Why is this not necessarily an issue? EMD is supposed to extract intrinsic mode functions (IMFs), i.e. functions with a single mode/frequency. Although, when hearing oscillations many probably think about sinusoid, but it actually can be in any form. &lt;a href="http://en.wikipedia.org/wiki/Wavelet"&gt;Wavelets&lt;/a&gt; are an example of weirdly looking oscillations (small waves that have beginning and end). As for the definition of oscillatory behaviour there is not a single best one. Huang et al. [&lt;a href="#ref5"&gt;5&lt;/a&gt;] defined IMF as a function that:
&lt;ol&gt;
&lt;li&gt; has number of local extrema and zero-crossings equal or different by 1,&lt;/li&gt;
&lt;li&gt; mean of its top and bottom envelopes is zero.&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>This blog.</title>
      <link>https://laszukdawid.com/blog/2014/07/01/this-blog</link>
      <pubDate>Tue, 01 Jul 2014 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;It didn't take long to forget about this blog. Now, hopefully, with revoke of motivation to post more periodically I would like to reactivate it. Content should be related to work I'm doing currently and will try to post at least once a week, probably on Tuesdays.
Yes, this is more a statement for myself. A reminder for future me!
Come on lad!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Empirical mode decomposition - Introduction</title>
      <link>https://laszukdawid.com/blog/2014/07/01/emd</link>
      <pubDate>Tue, 01 Jul 2014 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Empirical mode decomposition (EMD) is a data-driven decomposition method and was originally proposed by Huang et. al in 1998 [&lt;a href="#ref_huang1989"&gt;1&lt;/a&gt;]. Since that time the method has gained a lot of attention in the science community. EMD has been applied in a wide range of different fields, including geophysics, biomedicine, neuroscience, finance and many more.&lt;/p&gt;
&lt;p&gt;The method is defined by an algorithm as follows:
&lt;ol&gt;
&lt;li&gt;Identify all local extrema (both minima and maxima) in input signal $s(t)$.&lt;/li&gt;
&lt;li&gt;If the number of extrema is less or equal 2 then $s(t)$ is considered as a trend ($r(t) := s(t)$ ) --- finish with one component.&lt;/li&gt;
&lt;li&gt;Estimate top (env_max) and bottom(env_min) envelopes by interpolating respectively local maxima and local minima with natural cubic splines.&lt;/li&gt;
&lt;li&gt;Calculate local mean (mean of both envelopes) --- $m(t) = 0.5(env_{max} + env_{min})$.&lt;/li&gt;
&lt;li&gt;Subtract the mean from the input signal $h(t) = s(t) - m(t)$ .&lt;/li&gt;
&lt;li&gt;If $h_j$ fulfills the stopping criteria, then it is considered an intrinsic mode function (IMF) (a component $c_j(t)$ ) and algorithm starts again from step 1 for a signal $s(t) := m(t)$. Otherwise, it starts with $s(t) := h(t)$.&lt;/li&gt;
&lt;/ol&gt;
Empirical evidence is that the algorithm converges to finite number of IMFs, with which input signal can be reconstructed :&lt;/p&gt;
&lt;p&gt;$$s(t) = \sum_n^N c_i (t) + r(t)$$&lt;/p&gt;</description>
    </item>
    <item>
      <title>VMWare path to kernel issue</title>
      <link>https://laszukdawid.com/blog/2013/06/03/vmware-path-to-kernel-issue</link>
      <pubDate>Mon, 03 Jun 2013 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;p&gt;There is an issue with proper configuring of the VMWare on newer linux kernels. While running &lt;em&gt;'vmware-config.tools.pl'&lt;/em&gt;, it may ask you for exact path to the kernel's headers as its default path is empty. The problem is that even though you pass the correct path it still cannot find it. The query looks like this:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Searching for a valid kernel header path...&lt;br /&gt;The path "" is not a valid path to the 3.8.0-23-generic kernel headers.&lt;br /&gt;Would you like to change it? [yes]&lt;/code&gt;&lt;/p&gt;&lt;p&gt;The solution depends on what linux distro (and version) you are using. For Ubuntu I've used commands like (source: &lt;a href="http://askubuntu.com/questions/40979/what-is-the-path-to-the-kernel-headers-so-i-can-install-vmware" target="_blank"&gt;link&lt;/a&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /lib/modules/$(uname -r)/build/include/linux
sudo ln -s ../generated/utsrelease.h
sudo ln -s ../generated/autoconf.h
sudo ln -s ../generated/uapi/linux/version.h &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;Whereas for Fedora apparently it is (source: &lt;a href="http://forums.fedoraforum.org/showthread.php?t=263717" target="_blank"&gt;link&lt;/a&gt;):&lt;/p&gt;
&lt;code&gt;Firstly, do a uname -a to see if your kernel version (the number, and PAE/not PAE) matches the kernel-devel installed. If not, that is where the problem lies.&lt;br /&gt; &lt;br /&gt; Do a YUM install for the kernel[.PAE] again to bring it up to the same version as the kernel-devel[.PAE].&lt;/code&gt;&lt;/p&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>VMWare sharing folders after kernel's change</title>
      <link>https://laszukdawid.com/blog/2013/05/28/vmware-sharing-folders-after-kernels-change</link>
      <pubDate>Tue, 28 May 2013 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;If you're using VMware and having Linux system as a guest you may have seen that shared folders disappear after installing new kernel. To restore them just type (with super user's privileges) 'vmware-config-tools.pl' in guest system terminal. That is, if your using Ubuntu, the command will be:
&lt;code&gt;$ sudo vmware-config-tools.pl&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When prompt type your sudo user password. It will also ask you many questions to which the answer is typically [Enter] (defualt). However, if you know what you are doing, do as you wish.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NumPy's array dimension</title>
      <link>https://laszukdawid.com/blog/2013/05/12/array-dimension</link>
      <pubDate>Sun, 12 May 2013 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;To determine dimension of an NumPy (np) array simply check length of its shape
[sourcecode language="python"]
&amp;gt;&amp;gt;&amp;gt; r = np.random.random((4,2,512,2,256))
&amp;gt;&amp;gt;&amp;gt; r.shape
(4, 2, 512, 2, 256)
&amp;gt;&amp;gt;&amp;gt; Dimension = len(r.shape)
&amp;gt;&amp;gt;&amp;gt; Dimension
5
[/sourcecode]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Warning! Numerical approximation.</title>
      <link>https://laszukdawid.com/blog/2013/02/13/warning-numerical-approximation</link>
      <pubDate>Wed, 13 Feb 2013 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;For the last 3 weeks (or even more) I've been comparing results from two programs: one written in Matlab and the other in Python. Although great effort has been put into making them as similar as possible, the outputs were 'a little bit' different. Needless to say, I've wasted three weeks. Here's the problem:&lt;/p&gt;
&lt;p&gt;[sourcecode language="python"]
&amp;gt;&amp;gt;&amp;gt; import numpy as np
&amp;gt;&amp;gt;&amp;gt; rand = np.random.random
&amp;gt;&amp;gt;&amp;gt; r1 = rand(10)
&amp;gt;&amp;gt;&amp;gt; r2 = rand(10)*0.01
&amp;gt;&amp;gt;&amp;gt; R1 = r1 - 10*r2
&amp;gt;&amp;gt;&amp;gt; R2 = r1.copy()
&amp;gt;&amp;gt;&amp;gt; for i in xrange(10): R2 -= r2
...
&amp;gt;&amp;gt;&amp;gt; R1 - R2
array([ -5.55111512e-16,   4.44089210e-16,  -1.11022302e-16,
-1.11022302e-16,   0.00000000e+00,   4.44089210e-16,
6.93889390e-18,  -5.55111512e-16,   0.00000000e+00,
0.00000000e+00])
[/sourcecode]&lt;/p&gt;
&lt;p&gt;What I did there was creating two random sets of data (r1, r2) and then assigning value of r1 - 10*r2 to R1 and R2. However, the R2 is done in steps - R2 = ((((((((((r1-r2)-r2)-r2)-r2)-r2)...) -r2), if you prefer. The problem here is that with each iterations numbers are rounded to their nearest representation of the number. Oddly as it sounds, without additional effort computers don't usually have representation of all values as this would be inefficient. Thus, even after 10 iterations there is a little discrepancy in results of two methods. This error grows and accumulates even more after greater number of iterations!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythons 'if' conditions</title>
      <link>https://laszukdawid.com/blog/2013/02/06/pythons-if-conditions</link>
      <pubDate>Wed, 06 Feb 2013 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;The 'if' condition, being frequently used as it is, is not always well understood. Most of the people don't care about the order of referenced conditions, which is fine. However, wanting to get most of it, one should consider putting the less compute demanding conditions first. Here is an example in Python:&lt;/p&gt;
&lt;p&gt;[sourcecode language="python"]
&amp;gt;&amp;gt;&amp;gt; def one():
...   print '1'
...   return True
...
&amp;gt;&amp;gt;&amp;gt; def two():
...   print '2'
...   return False
...
&amp;gt;&amp;gt;&amp;gt; one() and two()
1
2
False
&amp;gt;&amp;gt;&amp;gt; two() and one()
2
False
[/sourcecode]&lt;/p&gt;
&lt;p&gt;As you can see, having two conditions linked with 'and', they are checked one at the time starting from left most. It is not magic. This is exactly what one would expect. If 'if' statement is able to make a decision during the evaluation, it will!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ethernet Vostro 3460 Ubuntu 12.04</title>
      <link>https://laszukdawid.com/blog/2012/12/19/ethernet-vostro-3460-ubuntu-12-04</link>
      <pubDate>Wed, 19 Dec 2012 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;p&gt;Installing Ubuntu 12.04 on Vostro 3460 can be ch painful due to lack of default Ethernet drivers. The laptop comes with AR8161 which is a Ethernet/Bluetooth combined controller and for which one needs alx driver. The procedure of obtaining them can be found on AskUbuntu.com (http://askubuntu.com/questions/165192/how-do-i-install-drivers-for-the-atheros-ar8161-ethernet-controller).&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;However, to speed things up, this is how it should be done (thanks to izx). Just open terminal (CTRL+ALT+T) and type (or copy-paste) these lines:&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;blockquote&gt;
$ sudo apt-get install build-essential linux-headers-generic linux-headers-`uname -r`&lt;/br&gt;
$ wget -O- http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2012-07-03-pc.tar.bz2 | tar -xj&lt;/br&gt;
$ cd compat-wireless-2012-07-03-pc&lt;/br&gt;
$ ./scripts/driver-select alx&lt;/br&gt;
$ make&lt;/br&gt;
$ sudo make install&lt;/br&gt;
$ sudo modprobe alx&lt;/br&gt;
&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;Please note, that in first line there is a "grave accent" (`) and not apostrophe ('), and it can be evoked with the same key as for the tilde. To see if you're using the right one, just type in shell
&lt;blockquote&gt;
$ echo `uname`&lt;/br&gt;
Linux&lt;/br&gt;
&lt;/blockquote&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[LaTex][Beamer] Windows API error 5: Access is denied</title>
      <link>https://laszukdawid.com/blog/2012/11/30/latexbeamer-windows-api-error-5-access-is-denied</link>
      <pubDate>Fri, 30 Nov 2012 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;Recently I had to change from Linux (Ubuntu) environment to this Windows 7 (do you know which one?). Now I am discovering whole new system, with whole new level of difficulties and limitations.&lt;/p&gt;
&lt;p&gt;In few days I am giving talk about "Self-organization criticality", thus a presentation would be handy. When I wanted to download a 'beamer' packaged via MiKTeX "Windows API error 5: Access is denied". It means that the program does not have read-write permission to some folder it wants to modify. There are three solutions (as I see now) to this:&lt;/p&gt;
&lt;p&gt;&lt;ol&gt;
&lt;li&gt;Start "package manager" as administrator, i.e. right mouse button (RMB) and "Run as administrator".&lt;/li&gt;
&lt;li&gt;Give public access to all directories that MiKTeX needs to acces. This is done in RBM on folder which you want to modify -&amp;gt; Properties -&amp;gt; Security.&lt;/li&gt;
&lt;li&gt;Download and manually place the essential files in the right places.&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>This is exactly...</title>
      <link>https://laszukdawid.com/blog/2012/11/18/this-is-exactly</link>
      <pubDate>Sun, 18 Nov 2012 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;blockquote&gt;This is exactly what it looks like&lt;/blockquote&gt;&lt;p&gt;Hello&lt;/p&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>