<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mario Kranjec | Backend Developer & IT Consultant]]></title><description><![CDATA[Expert backend developer and IT consultant specializing in system architecture, Kubernetes, and scalable solutions. Professional consulting services in Slovenia and internationally.]]></description><link>https://mariokranjec.dev</link><generator>GatsbyJS</generator><lastBuildDate>Tue, 26 Aug 2025 17:45:20 GMT</lastBuildDate><item><title><![CDATA[This Week I Realized - Recap]]></title><description><![CDATA[End of the road for 'This week I realized' series]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-recap</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-recap</guid><pubDate>Fri, 31 Dec 2021 08:15:00 GMT</pubDate><content:encoded>&lt;p&gt;All things come to an end. So did this ‘This week I realized’ series.&lt;/p&gt;
&lt;p&gt;At first I had no special plans with it, looked like something I could entertain myself with. But now looking back I realized couple of things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;my English grammar skills need improvement&lt;/li&gt;
&lt;li&gt;writing meaningful things is hard&lt;/li&gt;
&lt;li&gt;content could be more high-quality&lt;/li&gt;
&lt;li&gt;high quality content was not the main goal, main goal was building a regular writing habit. Nailed that.&lt;/li&gt;
&lt;li&gt;with help of this ‘challenge’ I appreciate people like Jure Č., Swizec, Julia E. and their content even more&lt;/li&gt;
&lt;li&gt;getting a glimpse at ‘what did I think back then’ is something special&lt;/li&gt;
&lt;li&gt;I’ll keep writing something similar but in a more personal matter and stop publishing it&lt;/li&gt;
&lt;li&gt;offloading thoughts feels great&lt;/li&gt;
&lt;li&gt;this series helped me get a better reflection at the things I did and I want to do in the future&lt;/li&gt;
&lt;li&gt;and the best part: all the feedback I got was far surpassing what I expected in the start&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks for sticking around. Happy new year!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 9]]></title><description><![CDATA[This week's (random) realizations]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-9</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-9</guid><pubDate>Fri, 31 Dec 2021 07:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;This is the last part of this series. That was fun.&lt;/li&gt;
&lt;li&gt;Complain mode on: 500+ MB docker images are the worst. Complain mode off.&lt;/li&gt;
&lt;li&gt;I’m really impressed at &lt;a href=&quot;https://www.curve.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Curve&lt;/a&gt; experience. One card to rule them all. And they even offer anti-embarrassment mode for times when your primary card fails, it automatically switches to second one in line.&lt;/li&gt;
&lt;li&gt;Do you like music? Have you ever heard of Rick Rubin? No? &lt;a href=&quot;https://www.youtube.com/watch?v=vabwGiTWRVo&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;You’re welcome&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 8]]></title><description><![CDATA[This week's (random) realizations about office search, traveling and sickness]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-8</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-8</guid><pubDate>Sun, 26 Dec 2021 11:15:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Office search sit-rep: with each day passing I’m more inclined on joining a coworking space. Company of like-minded professionals never hurts. That specific coworking place ticks all the boxes (and more) for me.&lt;/li&gt;
&lt;li&gt;Realized I never visited Italy, besides Gardaland or passing through. Seems an interesting country and not that far at all.&lt;/li&gt;
&lt;li&gt;Having a sick child is a whole another level of pain. Don’t get me wrong, I mean it in a way that as a parent you would do anything to make it go away in an instant. Instead, all you can do is sit and wait and comfort poor child. I’m starting to understand what my parents tried to tell me so many years ago.&lt;/li&gt;
&lt;li&gt;According to some people 4chan level of communication is something completely normal. If you’re not willing to tolerate it, either on Internet or outside of it, you should “grow a pair”. I’ll spare you of my judgement.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 7]]></title><description><![CDATA[This week's (random) realizations about blogging, my English skills and end of the year]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-7</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-7</guid><pubDate>Mon, 13 Dec 2021 22:30:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Seems like writing these posts is becoming a habit. Don’t need reminders or anything else to get me started which is great. I was hoping to reach this point at some time but not that soon.&lt;/li&gt;
&lt;li&gt;Writing these blog posts also shed a light on my lack of English skills, I could and should improve them.&lt;/li&gt;
&lt;li&gt;Office search is still “in progress”.&lt;/li&gt;
&lt;li&gt;In more positive note, I’m looking forward to 2022. In the past I would regret all the things I didn’t do. But last couple of years, despite all the things that happened, I’m having a positive look on the past year. I’ll go into details in my yearly recap post. What can I say, I guess I’m growing up. Funny to say that at my age, mature seems to be more appropriate word.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 6]]></title><description><![CDATA[This week's (random) realizations about budgeting, office hunt, The Sopranos]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-6</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-6</guid><pubDate>Tue, 07 Dec 2021 08:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Figured I need to improve my budgeting process. Currently trying out YNAB. One major flaw of it is lack of auto sync with neo-banks like N26 and Revolut. I’ll give it couple of months if I won’t be satisfied I will give Toshl a chance.&lt;/li&gt;
&lt;li&gt;Started watching The Sopranos for “I don’t even remember anymore” time. Never actually finished watching. Finger crossed I’ll finally make it this time.&lt;/li&gt;
&lt;li&gt;Remote work started taking its toll. I guess I have to change scenery to improve my productivity. At first, I was on a hunt for a new office space. Nothing came up, except one place. One small problem, I would have to rent an entire building. Sure, let’s name it Fortress of Solitude as well. Then I got even a better idea, why not join a coworking space. Might even have an opportunity to get to know some interesting people in my area.&lt;/li&gt;
&lt;li&gt;One of my goals for this year was one blog post per month or 12 blog posts until end of 2021. There’s still time, four more to go.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 5]]></title><description><![CDATA[This week's (random) realizations about Black Friday and sales in general]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-5</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-5</guid><pubDate>Sat, 27 Nov 2021 23:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Didn’t fall for this year’s Black Friday sales, decided to spend 0 EUR.&lt;/li&gt;
&lt;li&gt;Over the last couple of years I noticed that a lot of sales are only perceived as sales and prices stay the same. Of course I’m lacking a proper analysis here, but usually any time of the year I’m able to find pretty similar deals. Except online courses, at least decent ones, those are usually off only for Black Friday.&lt;/li&gt;
&lt;li&gt;I’m amazed at how much people are FOMOing into Udemy courses because they are cheap. Not all, but a lot of Udemy courses in my experience aren’t worth their price and turned out to be a waste of time. If you can’t afford a proper course in x topic then book from a respected publisher is a better alternative than a cheap course. General rule of thumb, there might be exceptions.&lt;/li&gt;
&lt;li&gt;You’re not spending money buying a book, course or coaching membership. You’re investing. Big difference. You’re spending money when buying beer or a pack of cigarettes. Think of it as a shortcut - someone else already did that research for you. And last but not least - future you will be thankful for knowledge gained early in your life.&lt;/li&gt;
&lt;li&gt;Future you will hate present you for buying useless courses, or even for buying good ones and not finishing them.&lt;/li&gt;
&lt;li&gt;Speaking of which, have bunch of unfinished books to read. Womp, womp.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Appreciate you reading my ramblings. Feedback far exceeded my expectations and I decided to continue writing at least until end of this year. Thanks!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 4]]></title><description><![CDATA[This week's (random) realizations about computer monitors and productivity]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-4</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-4</guid><pubDate>Sun, 21 Nov 2021 12:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Monitors with over 110 PPI are surprisingly rare. And before someone starts recommending Apple monitors, I would prefer not to pay 5000 € for it. &lt;/li&gt;
&lt;li&gt;Finally, found a computer monitor which I’m satisfied with. Since newest DELL model P32* wasn’t available I had to settle with LG 34WP85C. &lt;/li&gt;
&lt;li&gt;For n-th time started with regular physical activities. Regret not maintaining that consistency over longer time span.&lt;/li&gt;
&lt;li&gt;Recently discovered &lt;a href=&quot;https://ulauncher.io/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Ulauncher&lt;/a&gt; and using it feels like cheating. Still figuring out my optimal workflow, but for now I’m impressed. If you’re using Mac you should look at something like Alfred.&lt;/li&gt;
&lt;li&gt;I should look into &lt;a href=&quot;https://insomnia.rest/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Insomnia&lt;/a&gt;, I have a hunch I’m missing out on something important. What’s your favorite feature?&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 3]]></title><description><![CDATA[This week's (random) realizations about Android 12, computer monitors and DIY fixes]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-3</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-3</guid><pubDate>Tue, 09 Nov 2021 08:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Noticed that Google Analytics Android app has either caching or eventually consistency issues. Sometimes fetches fresh results, sometimes outdated ones. Interesting.&lt;/li&gt;
&lt;li&gt;Upgrading to Android 12 was a mistake. My phone’s battery life is much shorter since upgrade. :|&lt;/li&gt;
&lt;li&gt;Learned about pre- and post-conditions in Clojure. Amazing.&lt;/li&gt;
&lt;li&gt;After so many years I still don’t get the concept of official hours in public services. “We’re available to you three times a week during time when you are usually working”. Imagine picking up support tickets and fixing bugs only three days a week. Doesn’t make much sense from end-user perspective, right?&lt;/li&gt;
&lt;li&gt;Found out that there is such thing as a monitor being too big. Bought Dell U4919DW, returned it after a couple of days. Next candidate: Dell P3222QE. Fingers crossed.&lt;/li&gt;
&lt;li&gt;My Ikea Marcus chair is squeaking. &lt;a href=&quot;https://www.youtube.com/watch?v=CH6U5Zk4-b8&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Found a possible fix&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 2]]></title><description><![CDATA[This week's realizations about Android and note-taking apps]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-2</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-2</guid><pubDate>Tue, 02 Nov 2021 08:15:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Surprised at how much paper and money is being wasted on monthly paper invoicing. Considering costs and environment impact, digital invoices are a no-brainer.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://obsidian.md/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Obsidian&lt;/a&gt; seems like go-to note-taking app. Much better than 1000 scratch files in PyCharm / Webstorm IDE.&lt;/li&gt;
&lt;li&gt;Last week I upgraded my phone to Android 12. First impression: seems like Windows Phone - and you got that right - it’s not a compliment.&lt;/li&gt;
&lt;li&gt;Interested in the latest trends in IT? &lt;a href=&quot;https://wwwhmb.si/2021/10/31/129-ali-smo-na-pravi-poti-validiranje-idej-in-produktov-malce-drugace-2/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Join wwwhmb meetup today at 19.05 GMT+2&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[This Week I Realized - Part 1]]></title><description><![CDATA[This week's realizations about blogging, switching jobs and crypto]]></description><link>https://mariokranjec.dev/posts/this-week-i-realized-part-1</link><guid isPermaLink="false">https://mariokranjec.dev/posts/this-week-i-realized-part-1</guid><pubDate>Sun, 24 Oct 2021 12:30:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Neglected blogging for too long. Decided to start with TWIR series (This week I realized). Thanks to Miha Medven for inspiration.&lt;/li&gt;
&lt;li&gt;Apparently taking a vacation as an adult means changing one type of job for another. Not complaining, just following up on bunch of stuff I’ve been procrastinating on in the past.&lt;/li&gt;
&lt;li&gt;Crypto space is huge. Staying up to date and filtering out meaningful info can quickly become a full time job.&lt;/li&gt;
&lt;li&gt;Recently switched jobs, can’t wait to start. Haven’t felt so excited in a long time. \o/&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[How to migrate Google Authenticator to another phone]]></title><description><![CDATA[Migrating entire Google Auth storage can be a pleasant experience]]></description><link>https://mariokranjec.dev/posts/how-to-migrate-google-authenticator</link><guid isPermaLink="false">https://mariokranjec.dev/posts/how-to-migrate-google-authenticator</guid><pubDate>Tue, 24 Aug 2021 15:30:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been using Google Auth as a 2FA app for quite some time. Don’t know why, but somehow I always preferred it over
Microsoft Authenticator or Authy or any other alternative for that matter. Probably it’s just the sheer simplicity of it.&lt;/p&gt;
&lt;p&gt;Over the time I figured that the only downside of this app for me is migration to another phone. Authy solves it for you
with backup to cloud (or so I’ve been told), which is great but also terrible at the same time.
Somewhere in the range of using SMS as a 2FA method. &lt;/p&gt;
&lt;p&gt;I’d prefer not to share my TOTP secrets with anyone else.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/media/i-would-prefer-not-to.png&quot; alt=&quot;Slavoj Zizek - I would prefer not to&quot;&gt;&lt;/p&gt;
&lt;p&gt;It took me one manual one-by-one secret migration and of course quite a while to finally figure out that Google Authenticator
actually offers a batch export of all your TOTP secrets in one go. If I only knew that sooner.
But as they say, you live and you learn…&lt;/p&gt;
&lt;p&gt;Here is the simple procedure of painless migration of all your TOTP secrets in one go:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;bring out your old phone &amp;#x26; open Google Authenticator&lt;/li&gt;
&lt;li&gt;tap on three dots&lt;/li&gt;
&lt;li&gt;tap on ‘transfer accounts’&lt;/li&gt;
&lt;li&gt;select ‘export accounts’&lt;/li&gt;
&lt;li&gt;bring out your new phone &amp;#x26; open Google Authenticator&lt;/li&gt;
&lt;li&gt;tap on ‘transfer accounts’&lt;/li&gt;
&lt;li&gt;select ‘import accounts’ &amp;#x26; follow procedure&lt;/li&gt;
&lt;li&gt;congrats, you did it!&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[A recap of 2020]]></title><description><![CDATA[Overview of my accomplishments and failures in the past year]]></description><link>https://mariokranjec.dev/posts/a-recap-of-2020</link><guid isPermaLink="false">https://mariokranjec.dev/posts/a-recap-of-2020</guid><pubDate>Tue, 05 Jan 2021 18:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Last year was definitely one of those years that I will tell about to my grandchildren. Most of the people I know will
remember it as a difficult year, but for me in general it wasn’t so bad, quite the contrary. Taking the pandemic and
everything into consideration it could be a lot worse.&lt;/p&gt;
&lt;p&gt;So, you might be wondering by now - what did Mario go through over the past year?&lt;/p&gt;
&lt;h2 id=&quot;becoming-a-parent&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#becoming-a-parent&quot; aria-label=&quot;becoming a parent permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Becoming a parent&lt;/h2&gt;
&lt;p&gt;Year started with the splendid news of me &amp;#x26; my SO becoming parents. Can’t describe the feeling when we got the news
and after the kiddo was born. It’s one of a kind. Still is. I’m grateful for all the support and help our families and
loved ones provided. Same goes for all the people I (we) work with. &lt;/p&gt;
&lt;p&gt;Once again, thank you all. &amp;#x3C;3&lt;/p&gt;
&lt;p&gt;On the other side, after our child was born all the parenting memes made sense more than ever.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/media/parenting-meme.png&quot; alt=&quot;parenting-meme.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Jokes aside, having a child is the most positive experience I (we) had and doesn’t look like this is going to change
anytime soon.&lt;/p&gt;
&lt;h2 id=&quot;switching-jobs&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#switching-jobs&quot; aria-label=&quot;switching jobs permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Switching jobs&lt;/h2&gt;
&lt;p&gt;The projects I worked on year before that started feeling like a drag. Writing code didn’t feel like magic anymore and
I decided it’s time to change that - sooner better than later.&lt;/p&gt;
&lt;p&gt;Of course, COVID-19 pandemic broke out at that time. Most of the companies put a brake on hiring, at least on the
outside. Having kid on the way didn’t help. Felt weird. Uncomfortable. On the plus side this situation motivated me to
get a great job, not the first one I get accepted at. I always questioned myself - is this the company I want to
dedicate a third of my life for the next few years? Is this the job I could tell my kid for years to come,
“hey, your old man was part of that”.&lt;/p&gt;
&lt;p&gt;Fortunately, I had and still have “fuck you” money fund and I could take time to “shop around”. I encourage you to have
one too, since you never know when situations like COVID-19 will occur.&lt;/p&gt;
&lt;p&gt;Spent countless of hours in interviews. Spent a bit less on interview projects. Still a lot. At that time I joined the
“interviews are somewhat broken” camp. Won’t go into details, but let’s say, not all companies respect your time.
Especially if interview process takes many weeks.&lt;/p&gt;
&lt;p&gt;Fast forward, I found a great job. The one where I can sleep without a problem the night before my vacation ends.
Where Mondays don’t feel like a drag.&lt;/p&gt;
&lt;p&gt;I’m grateful for that.&lt;/p&gt;
&lt;h2 id=&quot;web-development-bootcamp-instructor&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#web-development-bootcamp-instructor&quot; aria-label=&quot;web development bootcamp instructor permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Web development bootcamp instructor&lt;/h2&gt;
&lt;p&gt;Next major milestone for me was being a Web development bootcamp instructor. Over the course of 3 months I teached a
class of two digit eager individuals the basics of web development. Felt “the magic” again.&lt;/p&gt;
&lt;p&gt;Doing it beside full-time day job wasn’t easy, but I loved it. So did the young padawans. Being graded &gt;9/10 by the
students gave me the confirmation it was all more than worth it.&lt;/p&gt;
&lt;h2 id=&quot;on-site-to-remote-meetup-transformation&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#on-site-to-remote-meetup-transformation&quot; aria-label=&quot;on site to remote meetup transformation permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;On-site to remote meetup transformation&lt;/h2&gt;
&lt;p&gt;Since the pandemic didn’t look like it will stop anytime soon, we had to make an important decision. Stop
&lt;a href=&quot;https://wwwhmb.si/?utm_source=https%3A%2F%2Fmariokranjec.dev&amp;utm_medium=blog&quot;&gt;Spletne urice Maribor&lt;/a&gt; meetup
for unknown amount of time or go all remote? We decided to go remote. Most of the stuff stayed the same, but you can’t
replace meeting people in-person. On the positive side, we were able to host people from the other side of the pond,
&lt;a href=&quot;https://twitter.com/Swizec&quot;&gt;Swizec&lt;/a&gt; for example.&lt;/p&gt;
&lt;p&gt;Credit where is due, under the circumstances the team couldn’t do it better. Thank you
&lt;a href=&quot;https://twitter.com/gretzki&quot; rel=&quot;nofollow&quot;&gt;Jernej&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/blendorwhat&quot; rel=&quot;nofollow&quot;&gt;Blendor&lt;/a&gt;,
&lt;a href=&quot;https://twitter.com/sparkica&quot; rel=&quot;nofollow&quot;&gt;Mateja&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/thesspela&quot; rel=&quot;nofollow&quot;&gt;Spela&lt;/a&gt;
for making it happen. Great job, I’m glad I can chip in once in a while.&lt;/p&gt;
&lt;p&gt;Special thanks to all the wonderful people willing to share knowledge. &amp;#x3C;3&lt;/p&gt;
&lt;p&gt;You can find more about the meetup on our &lt;a href=&quot;https://wwwhmb.si/?utm_source=https%3A%2F%2Fmariokranjec.dev&amp;utm_medium=blog&quot;&gt;website&lt;/a&gt;,
&lt;a href=&quot;https://www.youtube.com/channel/UC0TYjK9bZZE6K8CnLgbwaCw&quot;&gt;Youtube&lt;/a&gt;,
&lt;a href=&quot;https://www.facebook.com/spletneuricemaribor&quot;&gt;Facebook&lt;/a&gt; or
&lt;a href=&quot;https://twitter.com/wwwhmb&quot;&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;succeeded&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#succeeded&quot; aria-label=&quot;succeeded permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Succeeded:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;started a second (or even third?) iteration of personal blog&lt;/li&gt;
&lt;li&gt;avoided signing up to work for a company that declared bancruptcy a few months later&lt;/li&gt;
&lt;li&gt;switched jobs in the middle of the pandemic&lt;/li&gt;
&lt;li&gt;after almost a year, no remorse on switching jobs - yes, I count this as a double success&lt;/li&gt;
&lt;li&gt;became open source maintainer (for a while)&lt;/li&gt;
&lt;li&gt;completed 3 month web dev bootcamp with 15 students as instructor&lt;/li&gt;
&lt;li&gt;continued with remote work&lt;/li&gt;
&lt;li&gt;on-site to remote meetup transformation (&lt;a href=&quot;https://wwwhmb.si/?utm_source=https%3A%2F%2Fmariokranjec.dev&amp;utm_medium=blog&quot;&gt;Spletne urice Maribor&lt;/a&gt;) still going strong&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;failed-to&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#failed-to&quot; aria-label=&quot;failed to permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Failed to:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;prepare a meetup talk in 2020 (lost a bet there)&lt;/li&gt;
&lt;li&gt;polish my frontend skills&lt;/li&gt;
&lt;li&gt;keep my ‘oooh, shiny’ character in line&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;plans-for-2021&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#plans-for-2021&quot; aria-label=&quot;plans for 2021 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Plans for 2021:&lt;/h3&gt;
&lt;p&gt;let’s keep that a secret for now. :)&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Becoming more productive with git aliases]]></title><description><![CDATA[Git faster]]></description><link>https://mariokranjec.dev/posts/becoming-more-productive-with-git-aliases</link><guid isPermaLink="false">https://mariokranjec.dev/posts/becoming-more-productive-with-git-aliases</guid><pubDate>Sun, 26 Jul 2020 15:30:32 GMT</pubDate><content:encoded>&lt;p&gt;We all know in order to be more productive we have to do things quicker (ideally automate it) or we hire
additional help. But not all scenarios are optimizable - like 9 women can’t deliver baby in a month. Fortunately we’re
discussing tech here, so let’s leave biology out of this discussion.&lt;/p&gt;
&lt;p&gt;Strictly IT speaking, in order to optimize our workflows we either build new tools or extend existing ones. So regarding
git, I do not miss any features but I do wish for shorter commands and there’s a solution for this problem!&lt;/p&gt;
&lt;p&gt;In GNU/Linux we do know a concept called shell aliases, which are just shortcuts for commands that you define them
yourself. If you’re using Bash shell you’ll find them all under &lt;code class=&quot;language-text&quot;&gt;~/.bash_aliases&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here are my git aliases:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gbr&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git branch&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gcane&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git commit --amend --no-edit&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gcm&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git commit -m&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gc&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git checkout&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gcmn&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git commit -n -m&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;glo&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git log --oneline&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gpr&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git pull --rebase&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gprd&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git pull --rebase origin develop&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;grh&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git rebase -i HEAD~2&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;grv&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git remote -v&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gs&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git status&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;gd&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;git diff&apos;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Save it to &lt;code class=&quot;language-text&quot;&gt;~/.bash_aliases&lt;/code&gt; and run &lt;code class=&quot;language-text&quot;&gt;source ~/.bash_aliases&lt;/code&gt; to load them and start using them right away.&lt;/p&gt;
&lt;p&gt;There’s even better solution. You can use global &lt;code class=&quot;language-text&quot;&gt;.gitconfig&lt;/code&gt;, usually found under &lt;code class=&quot;language-text&quot;&gt;~/.gitconfig&lt;/code&gt; and put git aliases
there.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;alias&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
  br &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; branch
  cane &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; commit &lt;span class=&quot;token parameter variable&quot;&gt;--amend&lt;/span&gt; --no-edit
  cm &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;  commit &lt;span class=&quot;token parameter variable&quot;&gt;-m&lt;/span&gt;
  cmn &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; commit &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-m&lt;/span&gt;
  co &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; checkout
  d &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt;
  last &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; log &lt;span class=&quot;token parameter variable&quot;&gt;-1&lt;/span&gt; HEAD
  lo &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; log &lt;span class=&quot;token parameter variable&quot;&gt;--oneline&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;pr&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pull &lt;span class=&quot;token parameter variable&quot;&gt;--rebase&lt;/span&gt;
  prd &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pull &lt;span class=&quot;token parameter variable&quot;&gt;--rebase&lt;/span&gt; develop
  rh &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rebase &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; HEAD~2
  rv &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; remote &lt;span class=&quot;token parameter variable&quot;&gt;-v&lt;/span&gt;
  s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; status&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can add them also by using git config command:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config &lt;span class=&quot;token parameter variable&quot;&gt;--global&lt;/span&gt; alias.br branch
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config &lt;span class=&quot;token parameter variable&quot;&gt;--global&lt;/span&gt; alias.cm &lt;span class=&quot;token string&quot;&gt;&quot;commit -m&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And then add only one alias to &lt;code class=&quot;language-text&quot;&gt;~/.bash_aliases&lt;/code&gt;: &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Simple problems, simple solutions. &lt;/p&gt;
&lt;p&gt;Which (git) aliases do you use?
Tweet me &lt;a href=&quot;https://twitter.com/kranjski&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;@kranjski&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Kubernetes invalid certificate]]></title><description><![CDATA[Fixing first issues on my Kubernetes journey, invalid certificate edition]]></description><link>https://mariokranjec.dev/posts/kubernetes-invalid-certificate</link><guid isPermaLink="false">https://mariokranjec.dev/posts/kubernetes-invalid-certificate</guid><pubDate>Wed, 20 May 2020 11:30:32 GMT</pubDate><content:encoded>&lt;p&gt;I am currently reading through Marko Luksa’s Kubernetes in Action, first edition. As a lot of things
changed since release of first edition, second edition of this book is on it’s way and it should be released sometime
this year. So, it’s expected some things to be either different in newer versions of either Kubernetes or Minikube issues
are expected.&lt;/p&gt;
&lt;p&gt;I have setup Minikube with docker driver on Ubuntu 18.04. All fine and dandy, until I reached part where author proposes
creating ReplicationController. More detailed explanation below:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl run kubia &lt;span class=&quot;token parameter variable&quot;&gt;--image&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;luksa/kubia &lt;span class=&quot;token parameter variable&quot;&gt;--port&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8080&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--generator&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;run/v1
--------------------------------------------------------------------
Flag &lt;span class=&quot;token parameter variable&quot;&gt;--generator&lt;/span&gt; has been deprecated, has no effect and will be removed &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; the future.
Unable to connect to the server: x509: certificate is valid &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;172.17&lt;/span&gt;.0.2, &lt;span class=&quot;token number&quot;&gt;10.96&lt;/span&gt;.0.1, &lt;span class=&quot;token number&quot;&gt;127.0&lt;/span&gt;.0.1, &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;.0.1, not &lt;span class=&quot;token number&quot;&gt;172.17&lt;/span&gt;.0.3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;--generator&lt;/code&gt; parameter is deprecated. I suppose fun time is over. After a bit of googling I found a link to
&lt;a href=&quot;https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;official documentation&lt;/a&gt; where they
recommend using Deployment with configured ReplicaSet as preferred / recommended way of doing replication. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: I might as well skip this, as I haven’t reached Deployment part of the book.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Next problem&lt;/strong&gt;: invalid certificate. This one always ruins the mood. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:
&lt;code class=&quot;language-text&quot;&gt;minikube stop &amp;amp;&amp;amp; minikube delete &amp;amp;&amp;amp; minikube start&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;If this doesn’t work for you, try removing minikube directory
located in &lt;code class=&quot;language-text&quot;&gt;~/.minikube&lt;/code&gt;, don’t forget to stop minikube before you delete this directory.    &lt;/p&gt;</content:encoded></item><item><title><![CDATA[How to stop Youtube videos being paused]]></title><description><![CDATA[Did you know you can play Youtube videos outside your browser?]]></description><link>https://mariokranjec.dev/posts/how-to-stop-youtube-videos-being-paused</link><guid isPermaLink="false">https://mariokranjec.dev/posts/how-to-stop-youtube-videos-being-paused</guid><pubDate>Sat, 28 Mar 2020 15:30:32 GMT</pubDate><content:encoded>&lt;p&gt;Up until now I never felt the need to play Youtube videos anywhere other than my browser (at least music ones), but
Youtube’s politics of pausing videos every now and then finally pissed me off so much that I decided - that’s it. I’m ending it. &lt;/p&gt;
&lt;p&gt;There are multiple (valid) solutions to this problem, one of them being writing a browser extension. I decided to go
the other way, why exactly I might explain in one of my future posts.&lt;/p&gt;
&lt;p&gt;Because I’m a big fan of VLC I was surprised it doesn’t support playing Youtube videos out of the box. Or does it?&lt;/p&gt;
&lt;p&gt;Simply adding Youtube video URL to playlist and playing it didn’t work. VLC managed to parse video name but after that
removed the video from playlist. I figured something might be wrong with the Youtube parser. You bet it was!&lt;/p&gt;
&lt;p&gt;Luckily, VLC is an open source software. I pranced to
&lt;a href=&quot;https://github.com/videolan/vlc/tree/master/share/lua/playlist&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Github repository&lt;/a&gt; and found out they support more
than just Youtube. The list includes: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soundcloud&lt;/li&gt;
&lt;li&gt;Vimeo&lt;/li&gt;
&lt;li&gt;Twitch&lt;/li&gt;
&lt;li&gt;DailyMotion&lt;/li&gt;
&lt;li&gt;Jamendo etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Perfect. But I still haven’t figured out why playing Youtube videos doesn’t work. According to Github repo latest
stable version is 3.0.x, version 4.0 is still in development phase. Let’s check installed version on my computer
(using Ubuntu 18.04 btw).&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;vlc &lt;span class=&quot;token parameter variable&quot;&gt;--version&lt;/span&gt;

returns: 
VLC media player &lt;span class=&quot;token number&quot;&gt;3.0&lt;/span&gt;.8 Vetinari &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;revision &lt;span class=&quot;token number&quot;&gt;3.0&lt;/span&gt;.8-0-gf350b6b5a7&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
VLC version &lt;span class=&quot;token number&quot;&gt;3.0&lt;/span&gt;.8 Vetinari &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3.0&lt;/span&gt;.8-0-gf350b6b5a7&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
Compiled by buildd on lcy01-amd64-014.buildd &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Sep &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2019&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;:39:37&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Seems like something was changed between September and now. Ok, let’s find out where VLC is installed. You might think
following command would work: &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;which&lt;/span&gt; vlc

returns:
/usr/bin/vlc&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nope, it just return path to VLC binary. Not quite there. But where is it? &lt;/p&gt;
&lt;p&gt;Few minutes later, looks like there is a similar command which returns more detailed
information like path to binary, source and man pages. Perfect!&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;whereis&lt;/span&gt; vlc

returns:
vlc: /usr/bin/vlc /usr/lib/x86_64-linux-gnu/vlc /usr/share/vlc /usr/share/man/man1/vlc.1.gz&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Seems &lt;code class=&quot;language-text&quot;&gt;/usr/lib/x86_64-linux-gnu/vlc&lt;/code&gt; is the way to go. Copy the content of
&lt;a href=&quot;https://github.com/videolan/vlc/blob/master/share/lua/playlist/youtube.lua&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;this file&lt;/a&gt; to &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/usr/lib/x86_64-linux-gnu/vlc/lua/playlist/youtube.lua&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and restart VLC.&lt;/p&gt;
&lt;p&gt;That’s it, fixed it! Youtube videos can now be played directly in your VLC player without annoying pauses.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[N26 Changes Their Fees And Services]]></title><description><![CDATA[N26 changes their fees and services starting on May 24th 2020]]></description><link>https://mariokranjec.dev/posts/n26-changes-their-fees-and-services</link><guid isPermaLink="false">https://mariokranjec.dev/posts/n26-changes-their-fees-and-services</guid><pubDate>Fri, 20 Mar 2020 13:30:32 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/media/credit-card.jpg&quot; alt=&quot;credit-card.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;Here’s what they have sent to their users:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;At N26, transparency and simplicity is at the core of everything we do, and we believe that you should never be caught by surprise when it comes to your money.
That’s why we’re getting in touch—to update you on how &lt;strong&gt;our fees and services are changing on May 24, 2020&lt;/strong&gt;. We’ve made changes to better reflect the costs of certain features so they remain clear and simple, and are only applicable to the customers who use them. These updates improve our products, while also encouraging an increasingly digital mindset. For more information, check out our &lt;a href=&quot;https://n26.com/en-eu/blog/t-and-c-pricing-changes&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;blog post&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You won’t notice much of a difference, but here’s a brief summary:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Metal customers&lt;/strong&gt; will now benefit from &lt;strong&gt;8 free ATM withdrawals per month&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;N26 You customers&lt;/strong&gt; will continue to enjoy &lt;strong&gt;5 free ATM withdrawals per month&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Customers with a &lt;strong&gt;standard N26 account&lt;/strong&gt;, and who don’t use it as their primary account, will have &lt;strong&gt;3 free ATM withdrawals per month&lt;/strong&gt;. &lt;strong&gt;Those who use this account as their primary account will continue to have 5 free withdrawals&lt;/strong&gt;, and can always access our CASH26 network of 14,550 European retailers.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To be more environmentally-conscious, we’ve revised our card replacement fees to encourage customers to only order them when needed. &lt;strong&gt;Replacing an N26 Standard, N26 Business, N26 You or N26 Business You card will now cost €10, or €30 with express delivery&lt;/strong&gt;. Metal card replacement remains unchanged.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;What does this mean for you?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;If N26 is your primary account, you can still enjoy 5 free ATM withdrawals per month&lt;/strong&gt;. As a reminder, this means that you get your salary paid directly into your N26 account, or you receive at least one payment of €1,000 or more for at least 2 consecutive months.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Want even more flexibility? Check out one of our premium plans for more ATM withdrawals, travel insurance, hand-picked partner offers, and many other exciting benefits.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You can review the full breakdown of our revised services and fees in the attachment below.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you’re happy with these new terms, that’s great—you don’t have to do anything or take any further action.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;However, if you don’t want to accept them, we’ll sadly be unable to still offer you an N26 account. Please let us know if you decide to reject the new changes via email before 24.05.2020 at terms@n26.com. We’ll then have to cancel your account—at no cost to you, of course. Bear in mind that your right to do this at any time without a notice period still remains the same.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you have any further questions, feel free to reach out to Customer Support via chat in the N26 app, or the web app.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Awesome things to do during Coronavirus outbreak]]></title><description><![CDATA[List of articles, conference talks and projects to do during Corona virus outbreak]]></description><link>https://mariokranjec.dev/posts/awesome-things-to-do-during-coronavirus-outbreak</link><guid isPermaLink="false">https://mariokranjec.dev/posts/awesome-things-to-do-during-coronavirus-outbreak</guid><pubDate>Wed, 18 Mar 2020 20:37:32 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/media/programming.jpg&quot; alt=&quot;programmer behind computer&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;articles-and-guides&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#articles-and-guides&quot; aria-label=&quot;articles and guides permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Articles and guides&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.balthazar-rouberol.com/text-processing-in-the-shell&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Text processing in the shell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/PHP/comments/cn2zsx/what_are_your_most_used_phpstorm_features_that/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Awesome PHPStorm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://roadmap.sh/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Developer roadmaps&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://roadmap.sh/frontend&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Frontend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://roadmap.sh/backend&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Backend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://roadmap.sh/devops&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;DevOps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://roadmap.sh/guides&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Programming guides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kamranahmedse/design-patterns-for-humans&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Design patterns for humans in PHP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;talks&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#talks&quot; aria-label=&quot;talks permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Talks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ted.com/playlists/171/the_most_popular_talks_of_all&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Most popular TED talks of all time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/user/phpukconference&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;PHP UK Conference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/user/PHPSrbijaVideo&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;PHP Serbia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/user/WebCampZg&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Webcamp Zagreb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/user/mediacccde&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Chaos Computer Congress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://laracon.net/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Laracon Online&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCXXNOelGiY_N96a2nfhcaDA&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Security BSides London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCWemrSP6Aba171jXReCz_Qg&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Security BSides San Francisco&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/user/grazerlinuxtage&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Linux Days Graz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;projects&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#projects&quot; aria-label=&quot;projects permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Projects&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://interpreterbook.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Write yourself an interpreter and compiler in Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linuxfromscratch.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Linux From Scratch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;resources--learning-platforms&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#resources--learning-platforms&quot; aria-label=&quot;resources  learning platforms permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Resources / learning platforms&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;FrontendMasters&lt;/a&gt; - everything regarding front-end web development&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://laracasts.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Laracasts&lt;/a&gt; - learn Laravel and Vue&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cambridge.org/core/what-we-publish/textbooks/listing?aggs%5BproductSubject%5D%5Bfilters%5D=A57E10708F64FB69CE78C81A5C2A6555&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Cambridge University Press&lt;/a&gt; - over 700 textbooks online for free until May 2020&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;programming-courses&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#programming-courses&quot; aria-label=&quot;programming courses permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Programming courses&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://gophercises.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Gophercises&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://testwithgo.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Test with Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://algorithmswithgo.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Algorithms with Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.usegolang.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Web development with Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gatsbyjs.org/tutorial/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Gatsby tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://djangogirls.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Django girls&lt;/a&gt; - learn Django&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://railsgirls.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Rails girls&lt;/a&gt; - learn Ruby On Rails&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;programming-exercises&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#programming-exercises&quot; aria-label=&quot;programming exercises permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Programming exercises&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://adventofcode.com/2019/about&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Advent Of Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codingdojo.org/kata&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Coding Dojo Katas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.codewars.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Codewars&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;see-github-repository-for-more-resources&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#see-github-repository-for-more-resources&quot; aria-label=&quot;see github repository for more resources permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/metalcamp/awesome-things-to-do-during-coronavirus-outbreak&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;See Github repository for more resources&lt;/a&gt;&lt;/h4&gt;</content:encoded></item></channel></rss>