<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Maciej Błędkowski</title>
    <description>The latest articles on DEV Community by Maciej Błędkowski (@mble).</description>
    <link>https://dev.to/mble</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F238969%2F6db2dc62-5120-43ee-b603-6d7569d65ada.png</url>
      <title>DEV Community: Maciej Błędkowski</title>
      <link>https://dev.to/mble</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mble"/>
    <language>en</language>
    <item>
      <title>Installing Obsidian and other deb packages on Debian</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 13 Sep 2023 18:57:49 +0000</pubDate>
      <link>https://dev.to/mble/installing-obsidian-and-other-deb-packages-on-debian-5h5</link>
      <guid>https://dev.to/mble/installing-obsidian-and-other-deb-packages-on-debian-5h5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Many programs that you would like to run are not in the APT repositories. What to do in this case? There are multiple solutions, and one of them is to just install it from deb file.&lt;/p&gt;

&lt;h2&gt;
  
  
  .deb
&lt;/h2&gt;

&lt;p&gt;In order to install .deb package on Debian execute the following command:&lt;br&gt;
&lt;code&gt;sudo dpkg -i &amp;lt;path_to_deb_file&amp;gt;&lt;/code&gt;&lt;br&gt;
In case of the latest Obsidian text editor package downloaded into "Downloads" directory it is:&lt;br&gt;
&lt;code&gt;sudo dpkg -i ~/Downloads/obsidian_1.4.5_amd64.deb&lt;/code&gt;&lt;/p&gt;

</description>
      <category>debian</category>
      <category>obsidian</category>
      <category>deb</category>
      <category>apt</category>
    </item>
    <item>
      <title>Installing latest Neovim and LunarVim on Debian</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 13 Sep 2023 18:53:44 +0000</pubDate>
      <link>https://dev.to/mble/installing-latest-neovim-and-lunarvim-on-debian-3cg1</link>
      <guid>https://dev.to/mble/installing-latest-neovim-and-lunarvim-on-debian-3cg1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;What is the first thing, that we would love to do on our freshly installed Debian instance? Code of course! There multiple great code editors out there, but the one that is almost universaly beloved by the hackers is Vim and its successor Neovim.&lt;br&gt;
Here you can find how to install the latest release of Neovim; and its distribution LunarVim, that makes coding in nvim easier than ever.&lt;/p&gt;
&lt;h2&gt;
  
  
  Neovim
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to Neovim &lt;a href="https://github.com/neovim/neovim/releases/latest/"&gt;release page&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download an AppImage&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open Bash (or any other POSIX compliant shell)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move an AppImage file to &lt;code&gt;/usr/local/bin/&lt;/code&gt;, and rename it from &lt;code&gt;nvim.appimage&lt;/code&gt; to just &lt;code&gt;nvim&lt;/code&gt; - &lt;code&gt;mv ~/Downloads/nvim.appimage /usr/local/bin/nvim&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set the &lt;code&gt;CUSTOM_NVIM_PATH&lt;/code&gt; to the location of Neovim binary - &lt;code&gt;CUSTOM_NVIM_PATH=/usr/local/bin/nvim&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run the following commands:
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/ex ex &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/vi vi &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/view view &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/vim vim &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-alternatives &lt;span class="nt"&gt;--install&lt;/span&gt; /usr/bin/vimdiff vimdiff &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUSTOM_NVIM_PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 110
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://github.com/neovim/neovim/wiki/Installing-Neovim#debianusing"&gt;1&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;[Optional] Add neovim python package for python support - &lt;code&gt;sudo apt install python3-neovim&lt;/code&gt; &lt;a href="https://github.com/neovim/neovim/wiki/Installing-Neovim#debianusing"&gt;1&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  LunarVim
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install all the necessary packages (some of them are optional):
&lt;code&gt;sudo apt install git make python3 python3-pip python3-pynvim npm nodejs cargo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run command from &lt;a href="https://www.lunarvim.org/docs/installation#release"&gt;LunarVim's installation guide&lt;/a&gt; to get the latest release. As of the day I am writing this post it is:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LV_BRANCH='release-1.3/neovim-0.9' bash &amp;lt;(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Answer as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;NodeJS dependencies - Yes&lt;/li&gt;
&lt;li&gt;Python dependencies - No (pip environment is managed by the system, and we have already installed pynvim)&lt;/li&gt;
&lt;li&gt;Rust dependencies - No (because &lt;code&gt;rustc&lt;/code&gt; is probably to old)
## Nerd Fonts
In order for LunarVim to render correctly, you need one of the Nerd Fonts patched font.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the Nerd Fonts repo - &lt;code&gt;git clone --depth=1 &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:ryanoasis/nerd-fonts.git&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cd into cloned repo - &lt;code&gt;cd nerd-fonts&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run shell script in the repo, to install all Nerd Fonts patched fonts - &lt;code&gt;./install.sh&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change the default font in your terminal to one of the Nerd Fonts (e.g. JetBrains Mono Nerd Font) and restart it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>debian</category>
      <category>vim</category>
      <category>neovim</category>
      <category>nerdfonts</category>
    </item>
    <item>
      <title>Getting newer packages, by using Testing repositories on Debian</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 13 Sep 2023 18:52:39 +0000</pubDate>
      <link>https://dev.to/mble/getting-newer-packages-by-using-testing-repositories-on-debian-pmk</link>
      <guid>https://dev.to/mble/getting-newer-packages-by-using-testing-repositories-on-debian-pmk</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you are in need of newer packages, you can get them by using Testing repositories, here I will show you how.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modify /etc/apt/sources.list
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Testing
deb http://deb.debian.org/debian/ testing main contrib non-free-firmware non-free
deb-src http://deb.debian.org/debian/ testing main contrib non-free-firmware non-free

# Testing security updates
deb http://security.debian.org/debian-security testing-security main contrib non-free-firmware non-free
deb-src http://security.debian.org/debian-security testing-security main contrib non-free-firmware non-free

# Stable
deb https://deb.debian.org/debian stable main contrib non-free-firmware non-free
deb-src https://deb.debian.org/debian stable main contrib non-free-firmware non-free

# Stable security updates
deb http://security.debian.org/debian-security stable-security main contrib non-free-firmware non-free
deb-src http://security.debian.org/ stable-security main contrib non-free-firmware non-free
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that is it. Now you can enjoy the latest and gratest packages from Debian Testing. If there is a package that you need, that has not been added to Testing, you also have the Stable repository, so you can get it without any problems. Using "testing" and "stable" instead of current distribution name, means that you do not need to worry about regularly changing your sources.list.&lt;/p&gt;

</description>
      <category>debian</category>
      <category>linux</category>
      <category>package</category>
      <category>repository</category>
    </item>
    <item>
      <title>Is jail-breaking a BlackBerry possible?</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Sun, 07 May 2023 12:48:26 +0000</pubDate>
      <link>https://dev.to/mble/is-jail-breaking-a-blackberry-possible-5g94</link>
      <guid>https://dev.to/mble/is-jail-breaking-a-blackberry-possible-5g94</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Almost a year ago I bought a BlackBerry Passport with intend of running Linux on it. The problem is that I did not do a lot of research on this topic. I assumed that "of course you can install whatever you want on it, back in the 2014 every phone had its bootloader unlocked". Maybe every phone had, but with exception of BlackBerry.&lt;br&gt;
BlackBerry do not have a standard Android installed. What is installed on this phone, is BlackBerry 10 OS, which uses QNX kernel under the hood (UNIX), and Android emulation layer on top of it. All of the 10.3.x releases (only those apply to the BlackBerry Passport) are based on the modified version of QNX 6.6. You can run on it both BAR, and APK apps. BAR is a BlackBerry OS application, and APK is an Android application.&lt;br&gt;
The version that my device is running it the latest one - 10.3.3.3216, released in 2018. When you run &lt;code&gt;uname -a&lt;/code&gt; on it, it would tell you that the QNX version is 8.0.0, but this is not true, as the latest QNX version released at the time was QNX SDP 7.0, and it is probably not the one, that is running on my device. The Android emulation layer version is Android 4.3 Jelly Bean (API 18).&lt;/p&gt;

&lt;h1&gt;
  
  
  Applications and Terminal
&lt;/h1&gt;

&lt;p&gt;The BlackBerry 10 OS has two app-stores - BlackBerry World and Amazon Appstore. There is no Google Play, because it is not an Android phone, and it do not meet the Google's requirements for its apps to be provided.&lt;br&gt;
BlackBerry World was turned off in January 2022, and I could not figure out how to login into Amazon Appstore, so we have to get our apps the other way.&lt;br&gt;
First you have to complete the setup process, here is the detailed guide on how to do this: &lt;a href="https://forums.crackberry.com/blackberry-10-os-f269/fix-bb10-devices-stuck-setup-sideloading-issue-1193846/"&gt;https://forums.crackberry.com/blackberry-10-os-f269/fix-bb10-devices-stuck-setup-sideloading-issue-1193846/&lt;/a&gt; You cannot simply log into your BlackBerry ID, as it was also turned off.&lt;br&gt;
There is a reupload site for BlackBerry apps, and Android apps that support API 18. &lt;a href="https://bbstore.vercel.app/apps"&gt;https://bbstore.vercel.app/apps&lt;/a&gt;&lt;br&gt;
There is also an F-droid store, that allows you to download open-source apps from different F-droid repositories. &lt;a href="https://f-droid.org/en/"&gt;https://f-droid.org/en/&lt;/a&gt;&lt;br&gt;
You can easily install Android apps from unknown sources, but when it comes to installing BAR files, it is not as easy as downloading it on your device and running it.&lt;/p&gt;

&lt;h2&gt;
  
  
  BAR - BlackBerry apps
&lt;/h2&gt;

&lt;p&gt;In order to install BAR files on your phone, you need to complete the setup on your phone (see above), download and install BlackBerry Link with BlackBerry drivers - &lt;a href="https://www.blackberry.com/us/en/products/devices/software/desktop/blackberry-link"&gt;https://www.blackberry.com/us/en/products/devices/software/desktop/blackberry-link&lt;/a&gt;, download and install DBBT - &lt;a href="https://bbstore.vercel.app/tools/0001"&gt;https://bbstore.vercel.app/tools/0001&lt;/a&gt;, connect your device, and in the DBBT select and install your BAR file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal
&lt;/h2&gt;

&lt;p&gt;The most interesting BAR application, that I wanted to try out was the terminal. There are multiple terminal emulators available, but the most interesting one is Term48 and its fork Term49.&lt;br&gt;
I took my terminal app from &lt;a href="https://bbstore.vercel.app/apps/pXamnItRxbzmRZLwIJUN"&gt;https://bbstore.vercel.app/apps/pXamnItRxbzmRZLwIJUN&lt;/a&gt; It is some sort of modded Term48/Term49. You can also install the Term49 from its GitHub page &lt;a href="https://github.com/BerryFarm/Term49/releases"&gt;https://github.com/BerryFarm/Term49/releases&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  UNIX tools
&lt;/h3&gt;

&lt;p&gt;After installing it, you now have access to QNX shell, but you may notice, that there are not a lot of tools accessible inside of it.&lt;br&gt;
This is where BerryMuch comes in handy. In order to install it, take a look at the guide at BerryMuch's GitHub page - &lt;a href="https://github.com/BerryFarm/berrymuch#user"&gt;https://github.com/BerryFarm/berrymuch#user&lt;/a&gt; If you have problems with running the script, remember to change the permissions of the file - &lt;code&gt;chmod +x&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Jailbreak
&lt;/h1&gt;

&lt;p&gt;The bootloader on BlackBerry devices is locked, and protected by a security chip. Without major changes to the hardware, you would not be able to install your own operating system. Only the images signed by the BlackBerry can be installed. But not all hopes should be lost, the part protected by the security chip is only the QNX kernel in /.boot and /base directories, so theoretically with root access, you could modify everything in the user space, without bricking the phone. You could possibly change everything and leave only the kernel in place.&lt;br&gt;
The problem is that you do not have access to the root account. And there is no documented way of getting an access to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privilege escalation
&lt;/h2&gt;

&lt;p&gt;There are multiple CVEs documenting privilege escalation vulnerabilities in the QNX kernel &lt;a href="https://www.opencve.io/cve?cvss=&amp;amp;search=qnx"&gt;https://www.opencve.io/cve?cvss=&amp;amp;search=qnx&lt;/a&gt; The problem is that most of them are not public, with very little information about the vector of attack. The only documented one I have found for my version of QNX - 6.6, was this one - &lt;a href="https://www.opencve.io/cve/CVE-2017-3891"&gt;https://www.opencve.io/cve/CVE-2017-3891&lt;/a&gt; and it did not work on my device.&lt;/p&gt;

&lt;h2&gt;
  
  
  So is it possible?
&lt;/h2&gt;

&lt;p&gt;If you could find more information, about how this CVE was discovered &lt;a href="https://www.opencve.io/cve/CVE-2021-32025"&gt;https://www.opencve.io/cve/CVE-2021-32025&lt;/a&gt; then of course. You still would not have the ability to remove QNX kernel and replace it with your own, but at least you could change the version of Android emulation, or install the Linux virtual machine. There is also the other way of desoldering the memory chip, and changing the files not secured by the chip directly, although I do not know much about it.&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;
mble&lt;/p&gt;

</description>
      <category>blackberry</category>
      <category>qnx</category>
      <category>jailbreak</category>
      <category>root</category>
    </item>
    <item>
      <title>10 Reasons Why JavaScript is Homophobic: A Critical Examination of the Language's Design and Impact</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Fri, 05 May 2023 06:54:39 +0000</pubDate>
      <link>https://dev.to/mble/10-reasons-why-javascript-is-homophobic-a-critical-examination-of-the-languages-design-and-impact-1811</link>
      <guid>https://dev.to/mble/10-reasons-why-javascript-is-homophobic-a-critical-examination-of-the-languages-design-and-impact-1811</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;JavaScript, one of the most widely used programming languages in the world, has had a significant impact on web development and software applications. However, there is a growing concern within the developer community that JavaScript harbors a hidden prejudice against the LGBTQ+ community. This article will explore 10 reasons why JavaScript can be perceived as homophobic and the potential consequences of this prejudice on the developer community and society as a whole.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lack of LGBTQ+ Representation in JavaScript's History&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript was created in 1995 by Brendan Eich, a heterosexual white male. The erasure of LGBTQ+ individuals in the history of the language's development is a concern, as it contributes to the invisibility and marginalization of the LGBTQ+ community in the tech industry.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Binary Representation of Gender&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript, like many programming languages, uses binary values (0 and 1) to represent data. This binary system can be seen as a reflection of the harmful binary gender construct that excludes non-binary and genderqueer individuals.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Discriminatory Terminology&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript uses terms like "parent" and "child" for object inheritance, reinforcing traditional and heteronormative family structures. This language choice excludes non-heterosexual families and fails to recognize the diversity of family structures in the LGBTQ+ community.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Implicit Heteronormativity of JavaScript's Syntax&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript's syntax, which uses symbols and commands to create code, is inherently heteronormative. The language's structures, such as loops and conditionals, are based on a linear, binary logic that mirrors the dominant heterosexual narrative.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Exclusion of Queer Coding Practices&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript's rigid syntax rules and conventions do not accommodate alternative, queer coding practices. This exclusion further marginalizes LGBTQ+ developers and perpetuates the idea that there is a "correct" way to code, which is inherently heteronormative.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Limited Access to LGBTQ+ Resources and Communities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The JavaScript community, like the tech industry as a whole, lacks diversity and inclusivity. This lack of representation limits access to LGBTQ+-specific resources, mentorship, and support for queer developers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Failure to Acknowledge Intersectionality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript, as a language and community, fails to acknowledge the intersectionality of different marginalized identities. This lack of understanding perpetuates the erasure of LGBTQ+ individuals who also hold other marginalized identities, such as people of color or disabled individuals.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Homophobic Online Harassment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The JavaScript community, like other tech communities, has a long history of online harassment and abuse. LGBTQ+ developers are often targeted with homophobic slurs and hate speech, making it difficult for them to participate in discussions and contribute to the development of the language.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lack of Diversity in JavaScript Conferences and Events&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript conferences and events often lack diversity in their speaker lineups and panel discussions. This lack of representation perpetuates the exclusion of LGBTQ+ voices and experiences from important industry conversations.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Perpetuating a Culture of Toxic Masculinity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The JavaScript community, like the broader tech industry, is dominated by cisgender, heterosexual men. This culture can foster toxic masculinity, which can manifest as discrimination, harassment, and homophobia towards LGBTQ+ individuals.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;It is crucial that the JavaScript community acknowledges and addresses these issues to create a more inclusive and diverse programming environment. By actively working to dismantle homophobia and promote LGBTQ+ representation, the JavaScript community can help foster a more inclusive and equitable tech industry.&lt;/p&gt;

</description>
      <category>shitpost</category>
      <category>aigenerated</category>
      <category>javascript</category>
      <category>lgbtq</category>
    </item>
    <item>
      <title>Technologies I'm learning in 2023, and what I have learned in 2022</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Fri, 30 Dec 2022 20:31:29 +0000</pubDate>
      <link>https://dev.to/mble/technologies-im-learning-in-2023-and-what-i-have-learned-in-2022-351d</link>
      <guid>https://dev.to/mble/technologies-im-learning-in-2023-and-what-i-have-learned-in-2022-351d</guid>
      <description>&lt;p&gt;As the year 2022 comes to a close, I wanted to reflect on the technologies I learned and accomplished this past year and also look forward to the technologies I hope to learn in 2023.&lt;/p&gt;

&lt;h2&gt;
  
  
  2022 - what I have learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Web Technologies and other
&lt;/h3&gt;

&lt;p&gt;In 2022, I made significant progress in my web development skills by learning and working with a variety of frameworks and tools. These included Nuxt 2 and Nuxt 3, Nestjs, and Deno + Fresh. I learned about TailwindCSS, a CSS framework for building custom user interfaces, and also read a book called Refactoring UI (by the author of Tailwind). I also became proficient in using Puppeteer, Playwright and Crawlee for web scraping and crawling, and learned about the powerful NixOS operating system with its reproducible configs. I also gained experience with the Go programming language through competitive programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI, text models, image generators
&lt;/h3&gt;

&lt;p&gt;In addition to web development, I also delved into the world of artificial intelligence and machine learning by learning about the GPT-3 and GPT-3.5 models, as well as Dall-E 2, Midjourney 3 and Stable Diffusion 1.5 image generation models. I even made a little bit of money by generating images with Midjourney for a friend who creates animations using those images. These tools have the potential to revolutionize the way we build our systems. I believe that they can dramatically improve certain elements of our work, such as generating code or helping to solve problems. For example, I have started using GPT-3 to implement a "title to standard name" converter for a repository of Minecraft plugins. I am also planning to create a "versions to semver" converter, where you can give versions in any format and it will give them back in a format that is semver compatible. While GPT models are not free and can get expensive at scale, they can be very useful for certain tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  2023 - what I want to learn
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mostly low level things
&lt;/h3&gt;

&lt;p&gt;As I look ahead to 2023, I have several technologies on my learning list. At the top of the list is Rust, a programming language known for its performance and memory safety. I also hope to learn about Ansible, a configuration management tool, and Jest, a popular JavaScript testing framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Technologies, Graphics Design and other
&lt;/h3&gt;

&lt;p&gt;I also plan to continue learning and gaining experience with React and NextJS, as well as Go. In terms of design, I'm excited to learn more about UI and logo design using Affinity Designer and Figma. I am also interested in learning about Base Web, a design system developed by Uber, and implementing it in my next project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In summary, 2022 was a great year for learning and I'm excited to continue expanding my skills in 2023. I'm looking forward to diving into Rust and other new technologies, as well as continuing to improve my skills in web development and design.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Creative Commons Attribution Share Alike 4.0 International (&lt;a href="https://spdx.org/licenses/CC-BY-SA-4.0"&gt;CC-BY-SA-4.0&lt;/a&gt;)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Listening to Spotify fully open-source way</title>
      <dc:creator>Maciej Błędkowski</dc:creator>
      <pubDate>Wed, 25 May 2022 00:03:00 +0000</pubDate>
      <link>https://dev.to/mble/listening-to-spotify-fully-open-source-way-4540</link>
      <guid>https://dev.to/mble/listening-to-spotify-fully-open-source-way-4540</guid>
      <description>&lt;h1&gt;
  
  
  Listening to Spotify fully open-source way
&lt;/h1&gt;

&lt;p&gt;Hi, in this article I am going to show you how to listen to Spotify using only open-source software.&lt;/p&gt;

&lt;h2&gt;
  
  
  First of all you need to install those two packages:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;spotifyd&lt;/li&gt;
&lt;li&gt;spotify-qt&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Second of all you need to configure &lt;code&gt;spotifyd&lt;/code&gt;.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create if not present, and edit the &lt;code&gt;~/.config/spotifyd/spotifyd.conf&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Assign your Spotify nickname to the &lt;code&gt;username&lt;/code&gt; variable.

&lt;ol&gt;
&lt;li&gt;To get your nickname open &lt;code&gt;open.spotify.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click on your profile icon and select &lt;code&gt;Profile&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click on three dots and select &lt;code&gt;Copy link to profile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://open.spotify.com/user/themcmaciej?si=496a60d5280d4360&lt;/code&gt; - in place of &lt;code&gt;themcmaciej&lt;/code&gt; there will be your nickname&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Provide your password. There are three ways to do this.

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;password&lt;/code&gt; - just put your password in the config&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;password_cmd&lt;/code&gt; - provide a command that would output on STDOUT your password

&lt;ol&gt;
&lt;li&gt;You can use the &lt;code&gt;cat&lt;/code&gt; command to print your password from the file - &lt;code&gt;cat /.config/spotifyd/.env&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;use_keyring&lt;/code&gt; - your password is being taken from the system's keyring&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Set bitrate using the &lt;code&gt;bitrate&lt;/code&gt; variable

&lt;ol&gt;
&lt;li&gt;E.g. &lt;code&gt;bitrate = 320&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Enable cache by setting &lt;code&gt;no_audio_cache = false&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;initial_volume&lt;/code&gt; to a value between 0 and 100 for your initial volume

&lt;ol&gt;
&lt;li&gt;If &lt;code&gt;spotifyd -V&lt;/code&gt; shows you version lower than 0.4 use string as a value - &lt;code&gt;initial_volume = "45"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If it displays a version equal to or higher than 0.4 use an integer as a value - &lt;code&gt;initial_volume = 45&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example of &lt;code&gt;spotifyd.conf&lt;/code&gt; you may want to check out &lt;a href="https://github.com/mbledkowski/dotfiles/tree/main/global/home/mble/.config/spotifyd"&gt;my dotfiles repository&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Last but not least, you need to set up &lt;code&gt;spotify-qt&lt;/code&gt;.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://developer.spotify.com/dashboard/"&gt;https://developer.spotify.com/dashboard/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a new app&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;Client ID&lt;/code&gt; and &lt;code&gt;Client Secret&lt;/code&gt; and enter them in the spotify-qt login screen&lt;/li&gt;
&lt;li&gt;In the terminal enter the &lt;code&gt;which spotifyd&lt;/code&gt; and copy the value&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;Settings&lt;/code&gt; &amp;gt; &lt;code&gt;Spotify&lt;/code&gt; and enter the copied value in &lt;code&gt;Client Path&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;Start with app&lt;/code&gt;, go to &lt;code&gt;Configuration&lt;/code&gt; and check &lt;code&gt;Use global config&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In &lt;code&gt;General&lt;/code&gt; click the &lt;code&gt;Start client&lt;/code&gt; or restart an app.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  And that's it, enjoy your fully libre Spotify experience :D
&lt;/h2&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;Creative Commons Attribution Share Alike 4.0 International (&lt;a href="https://spdx.org/licenses/CC-BY-SA-4.0"&gt;CC-BY-SA-4.0&lt;/a&gt;)&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
