-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.xml
285 lines (285 loc) · 32.9 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>madhead</title>
<link>https://madhead.me/</link>
<description>Recent content on madhead</description>
<generator>Hugo</generator>
<language>en</language>
<lastBuildDate>Sun, 28 Jul 2024 02:41:00 +0200</lastBuildDate>
<atom:link href="https://madhead.me/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>No SNAPSHOTs</title>
<link>https://madhead.me/posts/no-snapshots/</link>
<pubDate>Sun, 28 Jul 2024 02:41:00 +0200</pubDate>
<guid>https://madhead.me/posts/no-snapshots/</guid>
<description>SNAPSHOTs are a confusing Maven concept. Maven is a pre-historic build tool, invented inside The Apache Software Foundation to build its (mostly Java) projects back in the 2000s. It is, thus, very opinionated, just like this post. Those opinions — including SNAPSHOTs, maven-release-plugin, POM, repository and project layouts, and many more — are still alive today and spoil modern projects.
Even ASF does not use Maven to build some of its projects anymore: Beam, Groovy, Lucene, Geode, POI, and Solr are not built with Maven.</description>
</item>
<item>
<title>On DynamoDB's Single Table Design</title>
<link>https://madhead.me/posts/std/</link>
<pubDate>Fri, 23 Feb 2024 17:24:00 +0300</pubDate>
<guid>https://madhead.me/posts/std/</guid>
<description>What’s a Single Table Design? The world learned about the idea of Single Table Design (STD) for DynamoDB somewhere in 2019, probably when this article came out. STD wasn’t just a weird idea by some unknown blogger like me, or an AWS DevRel, or any other kind of Internet freak, but it actually has its roots in the official Amazon DynamoDB documentation. Here:
You should maintain as few tables as possible in a DynamoDB application.</description>
</item>
<item>
<title>Copying a file from a Kubernetes pod in a highly hostile environment</title>
<link>https://madhead.me/posts/kubectl-cp/</link>
<pubDate>Wed, 10 Jan 2024 12:40:00 +0200</pubDate>
<guid>https://madhead.me/posts/kubectl-cp/</guid>
<description><div class="paragraph">
<p>Do you want to get a binary file from a Kubernetes pod in an highly <del>hostile</del>secure environment where you can’t use <code>kubectl cp</code>?
Read on!</p>
</div></description>
</item>
<item>
<title>Why Declarative Gradle is a cool thing I am afraid of: Maven strikes back</title>
<link>https://madhead.me/posts/declarative-gradle/</link>
<pubDate>Fri, 10 Nov 2023 20:00:00 +0200</pubDate>
<guid>https://madhead.me/posts/declarative-gradle/</guid>
<description><div class="paragraph">
<p>Yesterday, JetBrains <a href="https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience">introduced Amper</a>.
Today, Gradle published another related article, named <a href="https://blog.gradle.org/declarative-gradle">Declarative Gradle</a>.</p>
</div>
<div class="paragraph">
<p>Now, I can see the direction it is leaning towards, and I am afraid of this future.</p>
</div>
<div class="paragraph">
<figure class="align-center"><img src="//storage.googleapis.com/madheadme-static/posts/declarative-gradle/001.jpg">
</figure>

</div></description>
</item>
<item>
<title>PR preview environments with Neon, GitHub Actions, and AWS Lambda</title>
<link>https://madhead.me/posts/neonbranch/</link>
<pubDate>Tue, 02 May 2023 18:00:00 +0200</pubDate>
<guid>https://madhead.me/posts/neonbranch/</guid>
<description><div class="paragraph">
<p>You might have heard about preview environments (AKA dynamic, or ephemeral environments) in the scope of software engineering and, particularly, this term is used when speaking about the SDLC.</p>
</div>
<div class="paragraph">
<p>A preview environment — as opposed to a permanent one, like &#34;Production&#34;, or &#34;TST&#34;, or whatever you call them — is a short-lived environment, usually bound to a pull request.
It is created on-demand when the PR is created; and destroyed when the PR is closed.
It hosts a copy of the application and is used to test the changes introduced by the pull request.</p>
</div>
<div class="paragraph">
<p>If you need more information, I encourage you to jump around a few articles on the Web to grasp the idea before continuing.
I won’t go into details here, but instead, I’ll be focusing on the most challenging aspect of preview environments…</p>
</div>
<div class="paragraph">
<p>The database.</p>
</div></description>
</item>
<item>
<title>From BotFather to 'Hello World'</title>
<link>https://madhead.me/posts/from-botfather-to-hello-world/</link>
<pubDate>Tue, 25 Oct 2022 00:23:00 +0200</pubDate>
<guid>https://madhead.me/posts/from-botfather-to-hello-world/</guid>
<description><div class="paragraph">
<p>Great news, everybody: a few days ago, Telegram team updated their Bot API documentation!
Among other things, they now have an <a href="https://core.telegram.org/bots/tutorial">end-to-end tutorial</a> on the bot creation process: starting from bot registration in <a href="https://t.me/BotFather">@BotFather</a>, going all the way to database &amp; deployment options.</p>
</div>
<div class="paragraph">
<p>Unfortunately, it features Java, Maven, and <a href="https://github.com/rubenlagus/TelegramBots">rubenlagus/TelegramBots</a> library.</p>
</div>
<div class="paragraph">
<p>So, I’ve decided to copycat it, upgrading the examples to Kotlin, Gradle, and <a href="https://github.com/InsanusMokrassar/TelegramBotAPI">InsanusMokrassar/TelegramBotAPI</a>!
Read my version below 👇🏼</p>
</div>
<div class="admonitionblock important">
<table>
<tbody><tr>
<td class="icon">
<div class="title">Important</div>
</td>
<td class="content">
<div class="paragraph">
<p>Parts of the text below are shamelessly copy-pasted from the <a href="https://core.telegram.org/bots/tutorial">original tutorial</a>.
But don’t be tough on me: I respect copyright and authorship and in this case, I’m appealing for the <a href="https://en.wikipedia.org/wiki/Fair_use">fair use doctrine</a>, which, I believe, this article would fall into.</p>
</div>
</td>
</tr>
</tbody></table>
</div></description>
</item>
<item>
<title>Docker-based GitHub Actions in orphan branches</title>
<link>https://madhead.me/posts/orphan-action/</link>
<pubDate>Sun, 10 Oct 2021 23:27:00 +0200</pubDate>
<guid>https://madhead.me/posts/orphan-action/</guid>
<description>GitHub Actions are great for sharing &amp; reusing logic across your CI/CD pipelines. However, sometimes sharing is not the highest priority. Sometimes you only want to hide the complexity by exctacting &amp; encapsulating multiple build steps and replacing them with a single action.
Anyway, you have to create a GitHub action.
You could use actions stored in the same repository as the workflow. Such actions must be either written in JavaScript or be Docker actions, i.</description>
</item>
<item>
<title>Tyzenhaus</title>
<link>https://madhead.me/posts/tyzenhaus/</link>
<pubDate>Tue, 14 Sep 2021 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/tyzenhaus/</guid>
<description><div class="paragraph">
<p><a href="https://t.me/TyzenhausBot">Tyzenhaus</a> is a Telegram bot to simplify shared expenses in chats.
It’s like Splitwise, but simpler and doesn’t required any apps except Telegram..</p>
</div></description>
</item>
<item>
<title>Grand Guide Pedestrian</title>
<link>https://madhead.me/posts/ggp/</link>
<pubDate>Wed, 21 Jul 2021 21:43:00 +0200</pubDate>
<guid>https://madhead.me/posts/ggp/</guid>
<description>Let me tell about a pet project I did recently.
It’s name is &#34;Grand Guide Pedestrian&#34;. It’s a virtual interactive experience where a player controls another human, a hero, who walks in the city like it’s a GTA game. No gunfire, no car thefts, no other crimes, though.
Look at the demo:
And here is the data flow:
A hero streams a video from his camera to the restreamer, who then streams it back to a player.</description>
</item>
<item>
<title>Sony α6300 as a webcam on Manjaro Lunux</title>
<link>https://madhead.me/posts/dslr-webcam/</link>
<pubDate>Thu, 27 May 2021 22:19:00 +0200</pubDate>
<guid>https://madhead.me/posts/dslr-webcam/</guid>
<description> Original article.
Change USB connection in settings on camera to PC Remote.
sudo pacman -S gphoto2 v4l-utils v4l2loopback-dkms ffmpeg sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2 v4l2-ctl --list-devices gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 8 -f v4l2 /dev/video&lt;N&gt; #from v4l2-ctl output </description>
</item>
<item>
<title>Reading Java properties in GitHub Actions</title>
<link>https://madhead.me/posts/read-java-properties/</link>
<pubDate>Sun, 28 Mar 2021 00:30:00 +0300</pubDate>
<guid>https://madhead.me/posts/read-java-properties/</guid>
<description><div class="paragraph">
<p>Have you <a href="../semver-utils">heard</a> that GitHub Actions are cool?</p>
</div>
<div class="paragraph">
<p>I just want to share another action with you, that you may find useful in your Java projects.</p>
</div></description>
</item>
<item>
<title>One-stop shop for working with semantic versions in your GitHub Actions workflows</title>
<link>https://madhead.me/posts/semver-utils/</link>
<pubDate>Thu, 25 Mar 2021 23:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/semver-utils/</guid>
<description><div class="paragraph">
<p>GitHub Actions are so cool!</p>
</div>
<div class="paragraph">
<p>Check out <a href="https://youtu.be/-sr9_AItFQQ">our recording</a> about them @ <a href="https://www.youtube.com/channel/UCFMIGfAAUXUqnnNcWpdezJQ">Ministry of Testing Abu Dhabi</a> if you want a quick sneak peek, but today I want to self-advertise one of the reusable Actions I made for you.
And it wasn’t hard at all, thanks to the way they work (although I’m going to <a href="../../tags/rant">rant</a> about that in future articles).</p>
</div></description>
</item>
<item>
<title>ImgMacroBot</title>
<link>https://madhead.me/posts/imgmacrobot/</link>
<pubDate>Tue, 16 Mar 2021 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/imgmacrobot/</guid>
<description><div class="paragraph">
<p><a href="https://t.me/ImgMacroBot">@ImgMacroBot</a> <del>is</del>was an <a href="https://core.telegram.org/bots/inline">inline</a> Telegram bot for <a href="https://en.wikipedia.org/wiki/Image_macro">image macros</a>.</p>
</div></description>
</item>
<item>
<title>No-bullshit guide on publishing your Gradle projects to Maven Central</title>
<link>https://madhead.me/posts/no-bullshit-maven-publish/</link>
<pubDate>Sat, 27 Feb 2021 18:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/no-bullshit-maven-publish/</guid>
<description><div class="paragraph">
<p>You’ve heard <a href="https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter">the news</a>, haven’t you?
JFrog is closing JCenter — probably the best Maven-compatible repository ever.
It was kind of a &#34;default&#34; in Gradle — a drop-in replacement for Maven Central Repository — for years.
Plus it hosted some extra artifacts from the projects that decided to not deploy into Central (and now I understand why).
With its own Gradle plugin, JCenter was drop-dead easy to publish: just a dozen of config lines, a single task invocation — and your library is available to everybody.</p>
</div>
<div class="paragraph">
<p>It was great.
Good night, sweet prince.</p>
</div>
<div class="paragraph">
<p>It’s time to move your projects to Maven Central Repository, so I’ve gathered some info for you below to minimize the pain.</p>
</div></description>
</item>
<item>
<title>How I fucked up with a private key and newlines</title>
<link>https://madhead.me/posts/private-key-newline-fuckup/</link>
<pubDate>Tue, 09 Feb 2021 23:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/private-key-newline-fuckup/</guid>
<description><div class="paragraph">
<p>A short story about wasting a day on a single newline at the end of a private key.</p>
</div></description>
</item>
<item>
<title>Hosting multiple Telegram bots with NGINX, self-signed certificates and Ansible</title>
<link>https://madhead.me/posts/nginx-tg-bots/</link>
<pubDate>Mon, 08 Feb 2021 21:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/nginx-tg-bots/</guid>
<description><div class="paragraph">
<p>Imagine you have a few cool ideas for <a href="https://core.telegram.org/bots">Telegram bots</a>.
Bots have two options of communicating with Telegram servers: either by polling the events by using <a href="https://core.telegram.org/bots/api#getupdates"><code>getUpdates</code></a> or by registering a <a href="https://core.telegram.org/bots/api#setwebhook">webhook</a> and receiving the updates as HTTPS POST requests.
But who the heck uses polling today?
Right, nobody does that, and webhooks are the option.</p>
</div>
<div class="paragraph">
<p>And here be dragons.</p>
</div></description>
</item>
<item>
<title>Graphviz @ Docker</title>
<link>https://madhead.me/posts/docker-dot/</link>
<pubDate>Thu, 24 Dec 2020 22:05:00 +0300</pubDate>
<guid>https://madhead.me/posts/docker-dot/</guid>
<description><div class="paragraph">
<p>One more article about my Docker images.
Graphviz doesn’t seem to have an official Docker image, so I’ve created <a href="https://hub.docker.com/repository/docker/madhead/graphviz">my own</a>.</p>
</div></description>
</item>
<item>
<title>Learning Kafka: Kafka Connect + Wikipedia</title>
<link>https://madhead.me/posts/kafka-connect-wikipedia/</link>
<pubDate>Thu, 18 Jun 2020 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/kafka-connect-wikipedia/</guid>
<description><div class="paragraph">
<p>I’ve been developing backend software for almost 10 years already and never had a chance to work closely with <a href="https://kafka.apache.org">Apache Kafka</a>.
After a couple of technical interviews recently I’ve realized that it’s a significant gap in my experience.
So, I’ve decided to learn it by playing with publicly available Wikipedia’s recent changes event stream.
Join me in this article, where I’ll be developing a <a href="https://kafka.apache.org/documentation/#connect">Kafka Connect</a> application listening for the latest Wikipedia edits and storing them in a Kafka topic!
I’ll develop a <a href="https://kafka.apache.org/documentation/streams">Kafka Streams</a> application processing this topic in one of the future articles, so stay tuned.</p>
</div></description>
</item>
<item>
<title>How I fucked up with enum's hashCode</title>
<link>https://madhead.me/posts/enums-fuckup/</link>
<pubDate>Wed, 27 May 2020 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/enums-fuckup/</guid>
<description><div class="paragraph">
<p>A short story about a newbie’s mistake I’ve made recently.</p>
</div></description>
</item>
<item>
<title>YouTube Watch Later Telegram Bot</title>
<link>https://madhead.me/posts/ywltb/</link>
<pubDate>Wed, 20 May 2020 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/ywltb/</guid>
<description><div class="paragraph">
<p>YWLTB — or YouTube Watch Later Telegram Bot — <del>is</del>was a Telegram bot that <del>does</del>did one simple thing: add incoming YouTube videos into your &#34;Watch Later&#34; playlist.</p>
</div></description>
</item>
<item>
<title>Redis module in Kotlin/Native</title>
<link>https://madhead.me/posts/kotlin-native-redis/</link>
<pubDate>Wed, 11 Mar 2020 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/kotlin-native-redis/</guid>
<description><div class="paragraph">
<p>Those of you who have some experience with Redis may know that it is not just a simple cache or a plain key-value store, but actually a data structures server, supporting different kinds of values.
Out of the box it supports binary-safe strings, sets, lists, hashes, bit arrays, streams and HyperLogLogs.
Redis also <a href="https://redis.io/topics/modules-native-types">provides</a> a simple C API for custom data structures, called native types.
Some of the popular community-supported native types are <a href="https://redis.io/docs/stack/bloom">Bloom filters</a>, <a href="https://redis.io/docs/stack/graph">graphs</a>, <a href="https://redis.io/docs/stack/json">JSON objects</a>, and <a href="https://oss.redis.com/redisai">tensors</a>.</p>
</div>
<div class="paragraph">
<p>Let’s use Kotlin/Native to implement a simple data structure for parentheses expression validation just because we can.
But first, I want to say thanks to <a href="https://research.jetbrains.org/researchers/artdegt">Artyom Degtyarev</a> from JetBrains, who helped a lot with Kotlin/Native in <a href="https://kotlinlang.slack.com">Kotlin Slack</a>.</p>
</div></description>
</item>
<item>
<title>Speeding up the detekt task in a multi-project Gradle build.</title>
<link>https://madhead.me/posts/detekt-faster/</link>
<pubDate>Wed, 12 Feb 2020 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/detekt-faster/</guid>
<description><div class="paragraph">
<p>I’m going to tell you how to significantly speed up the <code>detekt</code> task in a multi-project Gradle build.
Precise numbers vary depending on many factors, of course.
In my case, in a build with 56 subprojects and ~7000 lines of code, it was about <strong>10 times faster</strong>.</p>
</div></description>
</item>
<item>
<title>JUnit 5 extensions for AWS</title>
<link>https://madhead.me/posts/aws-junit5/</link>
<pubDate>Thu, 26 Sep 2019 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/aws-junit5/</guid>
<description><div class="paragraph">
<p>Do you test the code that uses AWS services?
Do you use JUnit 5 in your tests?
If you do both, I may have something useful for you.</p>
</div>
<div class="paragraph">
<p><a href="https://github.com/madhead/aws-junit5">JUnit 5 extensions for AWS</a>: a few JUnit 5 extensions that could be useful for testing AWS-related code.
These extensions can be used to inject clients for AWS service mocks provided by tools like <a href="https://github.com/localstack/localstack">localstack</a>.
Both AWS Java SDK v 2.x and v 1.x are supported.</p>
</div></description>
</item>
<item>
<title>OpenSearch</title>
<link>https://madhead.me/posts/awesome-opensearch/</link>
<pubDate>Tue, 20 Aug 2019 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/awesome-opensearch/</guid>
<description><div class="paragraph">
<p>I search online every day. I search on Google, StackOverflow, GitHub, Maven Central, Gradle Plugins repository, YouTube and dozen of other sites.
And, I won’t deny, sometimes I search on Pornhub.</p>
</div>
<div class="paragraph">
<p>I bet you search too.</p>
</div></description>
</item>
<item>
<title>Do you need a local master branch?</title>
<link>https://madhead.me/posts/do-you-need-a-local-master-branch/</link>
<pubDate>Tue, 23 Jul 2019 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/do-you-need-a-local-master-branch/</guid>
<description><div class="paragraph">
<p>I noticed recently that I’ve (almost) never used a local <code>master</code> branch in Git.
I only use it in simple one-off playground repos that I don’t plan to support and never in professional development or in “serious” pet-projects.</p>
</div>
<div class="paragraph">
<p>So, is it really required?</p>
</div></description>
</item>
<item>
<title>Keeping Gradle up-to-date</title>
<link>https://madhead.me/posts/keeping-gradle-up-to-date/</link>
<pubDate>Tue, 16 Jul 2019 09:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/keeping-gradle-up-to-date/</guid>
<description><div class="paragraph">
<p><a href="https://gradle.org">Gradle</a> is an awesome build tool, and I am always looking forward to new versions to enjoy the latest features, performance improvements and bug fixes.
Actually, forget what I’ve said about bugfixes: Gradle works like a charm.</p>
</div>
<div class="paragraph">
<p>I could just check <a href="http://services.gradle.org/distributions">Gradle’s distributions</a> page periodically, or <a href="https://help.github.com/en/articles/watching-and-unwatching-releases-for-a-repository">subscribe</a> to their <a href="https://github.com/gradle/gradle/releases">releases</a> on GitHub to get notified about new versions faster.
And I actually do that from time to time when I need to know the latest available version.
But how can I keep Gradle up-to-date in the existing codebases?</p>
</div></description>
</item>
<item>
<title>Kotlin/Native for AWS Lambda</title>
<link>https://madhead.me/posts/kotlin-native-lambda/</link>
<pubDate>Fri, 05 Apr 2019 22:02:00 +0300</pubDate>
<guid>https://madhead.me/posts/kotlin-native-lambda/</guid>
<description><div class="paragraph">
<p>Amazon <a href="https://aws.amazon.com/about-aws/whats-new/2018/11/aws-lambda-now-supports-custom-runtimes-and-layers">announced</a> Lambda Runtime API on AWS <a href="https://reinvent.awsevents.com">re:Invent</a> 2018.
It allows developers, among other things, to build Lambda functions using any technology they want via so-called <a href="https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html">Custom Runtimes</a>.
Yes, it’s now possible to author a function on PHP, Perl, Pascal (anybody?) or even Bash (they use it in the <a href="https://docs.aws.amazon.com/lambda/latest/dg/runtimes-walkthrough.html">docs</a>)!</p>
</div>
<div class="paragraph">
<p>Nice, isn’t it?
Let’s build an AWS Lambda function with <a href="https://kotlinlang.org/docs/native-overview.html">Kotlin/Native</a>!</p>
</div></description>
</item>
<item>
<title>Java classes for server-side App Store receipts validation</title>
<link>https://madhead.me/posts/appstore-receipts-validator-j/</link>
<pubDate>Tue, 13 Nov 2018 21:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/appstore-receipts-validator-j/</guid>
<description><div class="paragraph">
<p>I’m working on a bunch of apps that need to verify App Store receipts on a JVM-based server.
The process <a href="https://developer.apple.com/documentation/appstorereceipts">is described in Apples’s Documentation Archive</a> but lacks of any SDK / libraries (at least for JVM).
So I made one to improve code reuse.</p>
</div></description>
</item>
<item>
<title>Java classes for AWS Lambda Proxy Integration</title>
<link>https://madhead.me/posts/lambda-proxy-integration-java/</link>
<pubDate>Tue, 13 Nov 2018 20:00:00 +0300</pubDate>
<guid>https://madhead.me/posts/lambda-proxy-integration-java/</guid>
<description><div class="paragraph">
<p>When I had to <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html">configure Lambda Proxy Integrations in AWS API Gateway</a> for the second time for a week I thought about extracting Java classes in a small library for later reuse.</p>
</div></description>
</item>
<item>
<title>(Alpine + AWS CLI + Ansible) @ Docker</title>
<link>https://madhead.me/posts/awesible/</link>
<pubDate>Sat, 15 Sep 2018 17:14:00 +0300</pubDate>
<guid>https://madhead.me/posts/awesible/</guid>
<description><div class="paragraph">
<p>I’m using <a href="https://bitbucket.org/product/features/pipelines">Bitbucket Pipelines</a> widely for CI/CD at my current position.
It sucks a little if compare it with <a href="https://about.gitlab.com/features/gitlab-ci-cd">GitLab CI/CD</a>, but I don’t complain.</p>
</div></description>
</item>
<item>
<title>Hard lesson from NVIDIA</title>
<link>https://madhead.me/posts/nvidia-hard-lesson/</link>
<pubDate>Sun, 19 Aug 2018 01:42:00 +0300</pubDate>
<guid>https://madhead.me/posts/nvidia-hard-lesson/</guid>
<description><div class="paragraph">
<p>Last week I’ve managed to accidentally break my Linux installation.
Probably, the first time for the last ten years where Linux behaved truly “unstable”.</p>
</div></description>
</item>
<item>
<title>Maven is not as stable as many think</title>
<link>https://madhead.me/posts/maven-is-not-so-stable/</link>
<pubDate>Sun, 19 Aug 2018 00:34:00 +0300</pubDate>
<guid>https://madhead.me/posts/maven-is-not-so-stable/</guid>
<description><div class="paragraph">
<p>Sometimes I’m trying to show others that there is a better alternative to Maven: Gradle.
I’m trying to show them how Gradle can make things easy &amp; possible whereas achieving the same results in Maven are Herculean labors or literally impossible.
I often hear in reply: “Gradle sucks because it’s a hipster technology. It’s new and unstable. Will you help me if something goes wrong?”.</p>
</div></description>
</item>
<item>
<title>Using Monday as a first day of week in KDE 5</title>
<link>https://madhead.me/posts/kde-calendar-monday/</link>
<pubDate>Sat, 18 Aug 2018 22:01:00 +0300</pubDate>
<guid>https://madhead.me/posts/kde-calendar-monday/</guid>
<description><div class="paragraph">
<p><code>en_US.UTF-8</code> is a great locale and I am using it for my KDE desktop because it gives me full English UI, whereeas other locales can result in semi-translated UIs.
But it has some flaws.
For example, weeks begin on Sunday in USA.
It’s not how we do here in Europe and it’s really annoying to see Sunday as a first day of week in a calendar widget.
Unfortunatelly, there is no knob for this setting (or my Google-fu failed me), so let’s fix it in a dirty way.</p>
</div></description>
</item>
<item>
<title>BTTF-like sticker @ Inkscape</title>
<link>https://madhead.me/posts/back-to-the-inkscape/</link>
<pubDate>Sun, 12 Aug 2018 04:58:00 +0300</pubDate>
<guid>https://madhead.me/posts/back-to-the-inkscape/</guid>
<description><div class="paragraph">
<p>We’re going to organize a <a href="https://jfuture.by">Java conference</a> later this year.
And it need its stickers.
So let’s draw one!</p>
</div></description>
</item>
<item>
<title>Preserving MongoDB shell history in Docker</title>
<link>https://madhead.me/posts/preserving-mongo-history-in-docker/</link>
<pubDate>Sat, 07 Jul 2018 05:24:00 +0300</pubDate>
<guid>https://madhead.me/posts/preserving-mongo-history-in-docker/</guid>
<description><div class="paragraph">
<p>So, you run <code>mongo</code> in disposable Docker containers and want to preserve shell history?
Say no more, pal.</p>
</div></description>
</item>
<item>
<title>AWS Lambda environment variables → AWS SSM parameters in one (long) bash line</title>
<link>https://madhead.me/posts/oneliners-1/</link>
<pubDate>Wed, 04 Jul 2018 04:47:00 +0300</pubDate>
<guid>https://madhead.me/posts/oneliners-1/</guid>
<description><div class="paragraph">
<p>So, you want to use AWS SSM parameters instead of AWS Lambda environment variables?
But you already have dozens of variables defined?</p>
</div>
<div class="paragraph">
<p>Keep calm (tested in production) and use this one-liner.</p>
</div></description>
</item>
<item>
<title>Mounting directories for Docker containers from Git Bash (Windows)</title>
<link>https://madhead.me/posts/git-bash-docker-mounts/</link>
<pubDate>Wed, 21 Mar 2018 16:50:00 +0300</pubDate>
<guid>https://madhead.me/posts/git-bash-docker-mounts/</guid>
<description> Just use double slashes when mounting and accessing directories from Git Bash in Docker on Windows:
docker run --rm -it -v //c//Users//Siarhei_Krukau//Downloads:/test alpine ls -la //test </description>
</item>
<item>
<title>Speeding up Kitchen converges with Squid</title>
<link>https://madhead.me/posts/kitchen-squid/</link>
<pubDate>Sun, 17 Sep 2017 01:10:00 +0300</pubDate>
<guid>https://madhead.me/posts/kitchen-squid/</guid>
<description><div class="paragraph">
<p>One day, you may find yourself smoking too often or drinking a lot of coffee while waiting for the files to be downloaded during provisioning of Vagrant / Kitchen VMs.
E.g: JDK size is ~200 MB and it may take a dozen of minutes to download during the execution of the <code>java</code> recipe.
You can save precious seconds of your life with <a href="http://www.squid-cache.org">Squid</a>.
Though some configuration is required, it wont take more than 5 minutes.</p>
</div></description>
</item>
<item>
<title>Hello, world!</title>
<link>https://madhead.me/posts/hello-world/</link>
<pubDate>Mon, 05 Jun 2017 23:44:25 +0300</pubDate>
<guid>https://madhead.me/posts/hello-world/</guid>
<description>Hello, world! So, I’ve decided to run my own blog. I will write my thoughts here from time to time.</description>
</item>
</channel>
</rss>