<?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[Tiia Aurora]]></title><description><![CDATA[Tiia Aurora]]></description><link>https://blog.tiia.rocks</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1643105290652/sRPOZptcn.png</url><title>Tiia Aurora</title><link>https://blog.tiia.rocks</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 10 May 2026 19:44:11 GMT</lastBuildDate><atom:link href="https://blog.tiia.rocks/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Mastodon Has a Cultural Problem]]></title><description><![CDATA[I have been thinking about writing something down for a long time and didn't do it because I had so many thoughts about it and felt like I lacked a structure to this article but with the recent discussion about content moderation and what is appropri...]]></description><link>https://blog.tiia.rocks/mastodon-has-a-cultural-problem</link><guid isPermaLink="true">https://blog.tiia.rocks/mastodon-has-a-cultural-problem</guid><category><![CDATA[Mastodon]]></category><category><![CDATA[Twitter]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[opinion pieces]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Mon, 05 Dec 2022 12:44:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1670243318342/mXs_A1cFU.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have been thinking about writing something down for a long time and didn't do it because I had so many thoughts about it and felt like I lacked a structure to this article but with the recent discussion about content moderation and what is appropriate to post and what isn't, I believe we need to address a few issues.</p>
<p>(I am using Mastodon and the Fediverse interchangeably here.)</p>
<blockquote>
<p>Before I go any further, I want to emphasise that whatever I'm implying now is still better than what's going on on Twitter right now. So don't think of this as a "Which is better, Twitter or Mastodon" debate, because Twitter under Elon Musk will always lose this debate.</p>
</blockquote>
<h2 id="heading-how-does-mastodon-work">How does Mastodon Work?</h2>
<p>Mastodon is a decentralized social networking platform that consists of many independent "instances" that are run by different organizations or individuals. These instances are interconnected and can share content with each other, allowing users from different instances to interact with one another.</p>
<p>To connect to other instances, Mastodon uses the ActivityPub protocol, which is an open federated protocol for social communication. This allows users from one instance to follow and interact with users from other instances, as well as share and view content from other instances.</p>
<h2 id="heading-the-culture-of-mastodon-before-2022">The Culture of Mastodon before 2022</h2>
<p>Many people would say Mastodon does not have a particular culture because every instance decides what culture they want to cherish, but considering that those instances connect to each other and have to somehow get along with each other, there has to be some common ground that instances that want to stay connected have to agree on (within country law boundaries).</p>
<p>To understand what happened to Mastodon this year, it's important to see what happened to their tight-knotted community during only 2022.</p>
<h2 id="heading-mastodon-in-2022">Mastodon in 2022</h2>
<p>Mastodon has been a fairly small community with around 244k in 2021, growing by around 800 over the whole year.</p>
<p>With Twitter <a target="_blank" href="https://mastodon.social/@Gargron/108205005223077798">announcing Elon Musk might be buying it</a> and him actually buying it, all hell broke loose. While in April 2022 around 90k active users joined the discussions in the Fediverse, by the <a target="_blank" href="https://fediverse.party/en/mastodon/">end of November</a> there were almost 4 million active users on Mastodon, 6 million accounts and almost 10k instances.</p>
<p>As someone who joined Mastodon just with the "Musk may buy Twitter" announcement, I was part of the "first wave" of exiled Twitter users joining the Fediverse.</p>
<h2 id="heading-the-demographics">The Demographics</h2>
<p>While I don't have official numbers, I have eyes. Mastodon is white, male and at least in their 40s. Conversations feel like a mixture of guys in bars talking and your family WhatsApp group which mainly contains of brothers and uncles. There are women, of course, and there are people of color too, but it's, unfortunately, an exception.</p>
<h2 id="heading-how-it-was-to-join-mastodon-with-a-social-media-background">How It Was to Join Mastodon With a Social Media Background</h2>
<p>I was connecting to a lot of long-time users there, to build connections and sense the "vibe" of the community to know what I can do or say there and what not. Mastodon has a reputation to be open and welcoming to new people. Many say once they joined they would never go back to Twitter again because they felt like they finally escaped the hostility that Twitter was to some.</p>
<h3 id="heading-hostility-towards-new-users">Hostility Towards New Users</h3>
<p>That was not my experience. I felt a lot of hostility from Mastodon users toward Twitter users who would join, despite the fact that many of those older users were on Twitter at the same time as well.</p>
<p>Twitter users were generally viewed as "attention-seeking", "dopamine-addicts", "hostile," and I've read a lot of war-rhetoric implying that Twitter users storm and capture their platform and "home." The hostility got only worse mid-November.</p>
<p>I'm pretty good at staying in places where I don't feel welcome just to prove those people wrong and show them that I can be of value, but many people don't. And, to be honest, I don't blame them. It takes a lot of mental energy not only to overcome the loss of a community to which you felt you belonged for years but also to find a new group for yourself. Especially when you usually don't feel like fitting in.</p>
<p>I am now in a place where I get fewer hateful messages and replies but only because I don't collect them uncommented. I will tell people when they are inappropriate. And that also takes a lot of mental energy.</p>
<h3 id="heading-racism">Racism</h3>
<p>There is no way we can't talk about racism here. There is racism on Mastodon and it is one of the things people on Mastodon really don't like talking about. And also don't like to see being talked about. I mentioned the demographics earlier and that mixture of male/white privilege and ignorance towards topics that don't involve them is showing in suggestions like hiding racism topics behind trigger warnings, so people don't get traumatized. While the argument is to protect people experiencing racism with that decision, a better approach would be.. I don't know. maybe not being racist. Hiding the experience people make instead of fighting against the root of it seems wrong.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1670238148768/TgXiAE1nT.png" alt="User comparing Mastodon with Canada and describes it self identity as &quot;smug not to be the other one but froths at the mouth when you tell them racism exists there&quot;" /></p>
<h3 id="heading-ableism">Ableism</h3>
<p>The points you see for racism are repeating themselves also for disabilities. Disability topics are sometimes asked to be hidden behind trigger warnings or people suggest to disabled people to leave a non-disability-exclusive space to rather join an instance that is for disabled people only. Talking about disability topics can cause reactions like this one here:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1670238179669/p-P906Y8D.jpg" alt="Someone joking that mentioning disability would be ableist" /></p>
<p>For the sake of not giving this person more of a platform than Mastodon already does, I removed the identifiers to this message. Making jokes about tough situations can be a coping mechanism. This is straight just harassment, especially because my initial message did not give any room for jokes of this kind.</p>
<p>Telling people they have to hide for who and how they are is straight-up discrimination. Sure it might be irritating to someone who avoided disabled people their whole life to find them "out in the public" but that's where disabled people belong. They deserve to be in the same space as abled people. No discussion.</p>
<h3 id="heading-sexism">Sexism</h3>
<p>And while we are at it, let's also look at the third of the -ism that you will experience. The sexism you will experience is not the blatant "I hate women" kind of sexism that you see on Twitter so often. It's the more subtle one. The one where a man will jump in and explain things to you, despite you never asking for an explanation.</p>
<p>The "maybe a man can help you do this technical thing" comments. The overall assumption is that women can't know anything without a man explaining it to them DESPITE the woman already showing proof that they have an in-depth knowledge of things.</p>
<p>Then jokes you would probably book in as "Boomer Humor" aka. I hate my wife and marriage is a prison kind of jokes. Something very popular in the older generation but most likely not common for anyone younger than let's say 35.</p>
<h2 id="heading-reacting-to-criticism">Reacting to Criticism</h2>
<p>There are two main points brought up to people pointing out these flaws in the Mastodon culture:</p>
<ol>
<li><p>You have no say here, you are a Twitter user. "Either take it or leave. We didn't want you in the first place" combined with pointing out registration dates.</p>
</li>
<li><p>Make your own instance if you don't like it.</p>
</li>
</ol>
<p>Neither of those is a solution.</p>
<p><strong>To 1:</strong> Mastodon users are big in pointing out that the user is the main focus of Mastodon. Not being the product anymore but having a voice to be heard. Not being silenced anymore. This behaviour is the opposite to what is preached. Sure it has its limits when it comes to breaking the law or supporting hate speech against people, stalking etc... But pointing out harmful behaviour should never be limited or silenced.</p>
<p><strong>To 2:</strong> Making your own instance has several downsides: It requires money, technical knowledge and resources. Telling a minority they only have a voice if they pay for it, is coming from a place of privilege on itself.</p>
<p>I am aware that Mastodon itself is not free. We have to rely on other people paying for it while being able to support them with donations. But using this to silence voices because you can assume they will not be able to make their own instance, hoping they just disappear is straight evil.</p>
<p>An own instance is not automatically as connected to other instances as a bigger established instance is. So you would also remove their reach. Doing this with minorities is problematic at best.</p>
<p>Locking disabled people and people who are not white males onto their own instances just makes it easier to remove their voices from your view by defederating their instance. That is a risk for minorities.</p>
<p>Last but not least. Mastodon has a scaling issue. The more instances are added, the worse it gets. There is a great article by Aral Balkan where he explains that Mastodon can't scale to accounts with many followings on many instances.</p>
<p>\&gt;&gt; <a target="_blank" href="https://ar.al/2022/11/09/is-the-fediverse-about-to-get-fryed-or-why-every-toot-is-also-a-potential-denial-of-service-attack/">https://ar.al/2022/11/09/is-the-fediverse-about-to-get-fryed-or-why-every-toot-is-also-a-potential-denial-of-service-attack/</a></p>
<h2 id="heading-there-are-also-good-things">There Are Also Good Things</h2>
<ul>
<li><p>While avoiding all these things I mentioned above is a walk on eggshells, I found many new people worth connecting with and having conversations with. The people that ARE nice I would really miss if I considered leaving Mastodon.</p>
</li>
<li><p>Because of the different text length limits, there is a lot more text-based conversation happening which at times I enjoy.</p>
</li>
<li><p>When you are on a good instance that is run by people who take those concerns seriously, you can have a really good time.</p>
</li>
<li><p>You don't have to fear Elon Musk buys this any time soon or even joins.</p>
</li>
</ul>
<h2 id="heading-conclusion-and-why-this-article">Conclusion and Why This Article</h2>
<p>This article is not to trash people. Quite the opposite. I see what a great space Mastodon could be with more inclusiveness and acceptance. Do I have a solution for it? I wish I had. Changing a years-long developed culture is nothing that can be fixed with a few rules, but I have a few suggestions:</p>
<ul>
<li><p>Include more diverse people in the decision-making. There is nothing bad about not being able to understand people's struggles because it does not affect you, but making sure to give those people a voice and involve them.</p>
</li>
<li><p>If you have no knowledge about a specific topic when making rules for a community, ask experts. Silencing or limiting the voice of victims of racism and ableism experiences is highly problematic.</p>
</li>
<li><p>When using polls for decisions, keep in mind that the group you are asking to vote can potentially be very biased and vote against what would be good for the community vs. their personal gain. Especially when your community is small and has only little heterogeneity</p>
</li>
<li><p>There will be a potential for the exclusion of marginalized individuals or groups from the decision-making process, because they are in the minority.</p>
</li>
<li><p>The best would be a global ruleset which instances can use as a guideline, but that one needs to be open for discussion or criticism in case problematic decisions are made.</p>
</li>
</ul>
<p>I really want Mastodon to be a good alternative to any other micro-blogging-service. I want it to thrive, but you need to open the doors for people that may not look like you and you need to protect the voices of marginalized individuals at all costs because otherwise it is not a safe place for us to stay and nothing else than a white, abled bodies echo chamber.</p>
]]></content:encoded></item><item><title><![CDATA[10 Python Libraries You Need to Know]]></title><description><![CDATA[Python is a well-known and flexible programming language. It is used in many different fields, including data science, web development, and automation. Python is well-known for its ease of use and simplicity. It has a clear and concise syntax, making...]]></description><link>https://blog.tiia.rocks/10-python-libraries-you-need-to-know</link><guid isPermaLink="true">https://blog.tiia.rocks/10-python-libraries-you-need-to-know</guid><category><![CDATA[Python]]></category><category><![CDATA[python beginner]]></category><category><![CDATA[python libraries]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Sun, 04 Dec 2022 02:35:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1670121254658/GI7bc2-n_.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Python is a well-known and flexible programming language. It is used in many different fields, including data science, web development, and automation. Python is well-known for its ease of use and simplicity. It has a clear and concise syntax, making it simple to read and understand for beginners. Python also has a large and active community that offers help and resources to newcomers and developers. Python has a robust ecosystem of libraries and frameworks, making it a versatile tool for a variety of tasks.</em></p>
<p><em>Here are ten Python libraries you should be familiar with.</em></p>
<h2 id="heading-pandas">Pandas</h2>
<p>Pandas is a powerful Python library for data manipulation and analysis. It provides tools for working with large datasets in a convenient and intuitive way. Pandas allows developers to easily read, filter, and transform data, as well as perform operations such as aggregation, merging, and joining. Pandas provides a range of data structures, including Series, DataFrame, and Panel, which are optimized for different types of data. Pandas is widely used in data science and analytics projects, and integrates well with other popular libraries such as NumPy and Matplotlib.</p>
<p><a target="_blank" href="https://pandas.pydata.org/">https://pandas.pydata.org/</a></p>
<h2 id="heading-flask">Flask</h2>
<p>Flask is a lightweight Python microframework for web development. It's simple and easy to use, making it a popular choice for creating small to medium-sized web applications. Flask allows developers to define routes, which map URLs to functions that handle HTTP requests. Flask provides a built-in web server and supports a range of web templates and languages. Flask is often used for creating APIs, microservices, and webhooks, and integrates well with other libraries and frameworks such as SQLAlchemy and Jinja.</p>
<p><a target="_blank" href="https://flask.palletsprojects.com/en/2.2.x/">https://flask.palletsprojects.com/en/2.2.x/</a></p>
<h2 id="heading-scikit-learn">Scikit-learn</h2>
<p>Scikit-learn is a popular Python library for machine learning. It provides a wide range of algorithms for tasks such as classification, regression, clustering, and dimensionality reduction. Scikit-learn is designed to be easy to use, and provides a consistent interface for fitting, transforming, and evaluating models. Scikit-learn integrates well with other libraries such as NumPy and Pandas, and supports a range of data formats and evaluation metrics. Scikit-learn is commonly used in data science and analytics projects, and is often used in conjunction with other libraries such as TensorFlow and Keras for deep learning.</p>
<p><a target="_blank" href="https://scikit-learn.org/stable/">https://scikit-learn.org/stable/</a></p>
<h2 id="heading-tensorflow">TensorFlow</h2>
<p>TensorFlow is a popular Python library for deep learning. It allows developers to define and train neural networks for tasks such as image recognition, natural language processing, and time series analysis. TensorFlow provides a range of optimization algorithms, regularization techniques, and loss functions, and allows developers to easily visualize and debug their models. TensorFlow is highly scalable and can run on a variety of platforms, including CPUs, GPUs, and TPUs. TensorFlow is often used in conjunction with other libraries such as Keras, which provides a higher-level interface for building and training neural networks.</p>
<p><a target="_blank" href="https://www.tensorflow.org/">https://www.tensorflow.org/</a></p>
<h2 id="heading-numpy">NumPy</h2>
<p>NumPy is a fundamental Python library for scientific computing. It provides tools for working with arrays and matrices, such as creating, slicing, indexing, and reshaping arrays, as well as performing mathematical operations such as addition, subtraction, multiplication, and division. NumPy provides support for a range of data types, including integer, float, and complex, as well as support for functions such as linear algebra, statistics, and random number generation. NumPy is often used in conjunction with other libraries such as Pandas and Matplotlib, and is commonly used in scientific and engineering projects.</p>
<p><a target="_blank" href="https://numpy.org/">https://numpy.org/</a></p>
<h2 id="heading-matplotlib">Matplotlib</h2>
<p>Matplotlib is a popular Python library for data visualization. It provides a range of plots, charts, and visualizations, which can be customized and styled using a range of options and parameters. Matplotlib allows developers to create static, animated, and interactive visualizations, and supports a range of formats for exporting and saving figures. Matplotlib is often used in conjunction with other libraries such as Pandas and Seaborn, and is commonly used in data analysis and exploratory data science projects.</p>
<p><a target="_blank" href="https://matplotlib.org/">https://matplotlib.org/</a></p>
<h2 id="heading-pygame">Pygame</h2>
<p>Pygame is a popular Python library for game development. It provides tools for creating 2D games, such as handling input from keyboard, mouse, and gamepad, rendering graphics and audio, and managing game states and scenes. Pygame provides a range of built-in modules and functions, such as sprite and image classes, sound and music classes, and collision detection functions. Pygame also provides support for creating games using object-oriented design, and allows developers to easily create games using a combination of Python and other languages such as C or C++. Pygame is popular among hobbyist game developers, and is often used to create simple games such as puzzle and arcade games.</p>
<p><a target="_blank" href="https://www.pygame.org/news">https://www.pygame.org/news</a></p>
<h2 id="heading-requests">Requests</h2>
<p>Requests is a popular Python library for making HTTP requests. It simplifies the process of sending and receiving requests and responses, and provides support for common HTTP methods such as GET, POST, and DELETE. Requests allows developers to easily specify headers, cookies, and query parameters, and supports a range of authentication methods such as basic and digest authentication. Requests is often used in web scraping and API integration projects, and integrates well with other libraries such as Beautiful Soup and JSON.</p>
<p><a target="_blank" href="https://requests.readthedocs.io/en/latest/">https://requests.readthedocs.io/en/latest/</a></p>
<h2 id="heading-beautiful-soup">Beautiful Soup</h2>
<p>Beautiful Soup is a Python library for web scraping. It allows developers to extract data from HTML and XML documents, and provides tools for navigating and parsing the resulting data. Beautiful Soup provides support for a range of HTML and XML parsers, and allows developers to easily extract data using CSS selectors, XPath expressions, and regular expressions. Beautiful Soup is often used in conjunction with other libraries such as Requests and Selenium, and is commonly used for collecting data from websites.</p>
<p><a target="_blank" href="https://pypi.org/project/beautifulsoup4/">https://pypi.org/project/beautifulsoup4/</a></p>
<h2 id="heading-nltk">NLTK</h2>
<p>NLTK is a powerful Python library for natural language processing. It provides tools for tokenizing, stemming, and lemmatizing text, as well as tools for analyzing syntax, semantics, and sentiment. NLTK provides support for a range of languages, including English, French, and Spanish, and allows developers to easily create and train custom models using machine learning algorithms. NLTK is often used in conjunction with other libraries such as scikit-learn and Gensim, and is commonly used in text analysis and machine learning projects.</p>
<p><a target="_blank" href="https://www.nltk.org/">https://www.nltk.org/</a></p>
]]></content:encoded></item><item><title><![CDATA[What is SvelteKit? And Why Should You Care?]]></title><description><![CDATA[SvelteKit is a framework for building web applications of all dimensions, with a solid development experience and flexible filesystem-based routing. It compiles your components into a vanilla JavaScript that is highly optimised. So the question of wh...]]></description><link>https://blog.tiia.rocks/what-is-sveltekit-and-why-should-you-care</link><guid isPermaLink="true">https://blog.tiia.rocks/what-is-sveltekit-and-why-should-you-care</guid><category><![CDATA[Svelte]]></category><category><![CDATA[Sveltekit]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Wed, 30 Nov 2022 15:22:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1669821621330/274ocz8D1.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>SvelteKit is a framework for building web applications of all dimensions, with a solid development experience and flexible filesystem-based routing. It compiles your components into a vanilla JavaScript that is highly optimised. So the question of why you should use SvelteKit is really a question of why you should use Svelte in the first place, because SvelteKit is built on Svelte.</p>
<h3 id="heading-so-why-should-you-use-svelte-followed-by-sveltekit">So, why should you use Svelte, followed by SvelteKit?</h3>
<p>Reading <strong>Svelte</strong> is far more structured and straightforward than reading most web frameworks. It also allows web development with far less JavaScript. This was a significant advantage for me.</p>
<p>Svelte is a project tool, whereas JavaScript has always been a project within a project. More often than not, I would struggle with JavaScript itself rather than the challenges presented by a project.</p>
<p>SvelteKit is an excellent home for Svelte and simplifies areas that used to be time-consuming or difficult:</p>
<ul>
<li><p>Server-side and client-side rendering</p>
</li>
<li><p>The easiest PWA support you can imagine</p>
</li>
<li><p>Performant websites as a default</p>
</li>
<li><p>Static site rendering</p>
</li>
</ul>
<p>Read Further &gt;&gt; <a target="_blank" href="https://thecodingchannel.hashnode.dev/turn-your-sveltekit-app-into-a-pwa-in-3-simple-steps">Turn your SvelteKit app into a PWA in 3 simple steps</a></p>
<p>Our main developer <a class="user-mention" href="https://hashnode.com/@coldino">coldino</a> has been involved with large scaled Vue projects in the past and after switching to SvelteKit he had this to say:</p>
<blockquote>
<p>SvelteKit felt like it solved so many more problems out of the box and somehow also made it a smoother development experience, especially but not exclusively together with Netlify.</p>
</blockquote>
<h2 id="heading-some-of-our-sveltekit-projects">Some of our SvelteKit projects</h2>
<h3 id="heading-wordle-solver">Wordle Solver</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669815109745/IqFDG6vlM.png" alt="Screenshot of a Wordle Solver Website" /></p>
<p>Our very first project was the <a target="_blank" href="https://codingchannel-wordle-solver.netlify.app/">Wordle Solver</a> that we created at the start of the year. Along with it but unrelated to SvelteKit, we created <strong>Wordy</strong>, a Discord Bot that used the logic of the solver to create wordle games in a variety of languages for Discord users.</p>
<p>Read Further &gt;&gt; <a target="_blank" href="https://blog.tiia.rocks/we-build-a-wordle-solver-in-svelte-here-is-how-we-did-it">We built a Wordle Solver in Svelte - Here is how we did it</a></p>
<h3 id="heading-zen-markdown-editor">Zen Markdown Editor</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669815443911/QnYZ_bMnp.png" alt="Screenshot of the Website Zen Writer" /></p>
<p>I created the <a target="_blank" href="https://zen-markdown-editor.netlify.app/">Zen Writer</a> for the Hashnode Netlify Hackathon, a distraction-free Markdown editor that saves your text locally in your browser.</p>
<p>I primarily created it for myself in order to have an eye-friendly dark mode in which to write my blogposts.</p>
<h3 id="heading-ambienzzz-background-noise-generator">Ambienzzz Background Noise Generator</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669815664480/OF-luafrK.png" alt="Screenshot of the Ambienzzz App " /></p>
<p>Coldino took part in the Hackathon as well, with the <a target="_blank" href="https://ambienzzzzz.netlify.app/">Ambienzzz App</a>. A background noise mixer that aids in the concentration of busy (ADHD) brains while working or sleeping. There are several presets available, but users can mix and match how many sounds they want to use and at what volume.</p>
<h2 id="heading-leapstone-lost-ark-tracker">LeapStone Lost Ark Tracker</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669816012002/5p6Ka0rBi.png" alt="Screenshot of the Lost Ark App LeapStone" /></p>
<p><a target="_blank" href="https://leapstone.netlify.app/">LeapStone</a> was our first major project that was more than just a showcase for SvelteKit; it was intended to be used in production outside of an educational context.</p>
<p>We added two new modes that both access the same local storage. Users told us that, while the front page is visually appealing, they would prefer a more compact view at times. As a result, we created the matrix UI.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669821101369/OuhCsTC0f.png" alt="Screenshot of the LeapStone matrix UI" /></p>
<p>This was the first project in which we used the DaisyUI Framework in conjunction with Tailwind. Previously, we made all design decisions manually in good old CSS only. DaisyUI significantly increased our production speed.</p>
<p>It was also the first project in which we actively collaborated with the community to understand their needs for such a tool. LeapStone is available as a PWA.</p>
<h2 id="heading-ark-utils-helpful-tools-for-ark-survival-evolved">ARK Utils - Helpful Tools for ARK: Survival Evolved</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669816638901/FbE01UD6Z.png" alt="Screenshot of the website ARK Utils" /></p>
<p>The companion App / Website <a target="_blank" href="https://arkutils.netlify.app/">ARK Utils</a> is our most recent project. ARK Utils is simply the website for a larger GitHub Organization that develops tools for third-party app developers as well as the ARK Wiki.</p>
<p>The data gathered for these applications is then repurposed on this website for game players. We create small tools to solve various issues in the game that have been bothering players for years.</p>
<p>This tool was only made possible by coldinos' advanced knowledge in web application development and my gameplay knowledge gained from playing this game for over 12.000 hours and creating educational content for several years.</p>
<p>Needless to say, ARK Utils combines both of our interests into a handy little tool for anyone who enjoys this game.</p>
<p>Read further &gt;&gt; <a target="_blank" href="https://blog.tiia.rocks/building-a-video-game-companion-app-publically-using-svelte">Building a Video Game Companion App publically using Svelte</a></p>
<h2 id="heading-what-the-development-with-sveltekit-was-like">What the development with SvelteKit was like</h2>
<p>Our constellation is most likely quite unique. A highly experienced developer collaborates with a novice/inexperienced developer.</p>
<p>Svelte and SvelteKit's straightforward and logical design made them a joy to use for both of us. Everything just worked. Because Svelte and SvelteKit were out of the way with complicated syntax, I was able to focus on understanding structure and logic first and syntax later.</p>
<p>As a result, my inexperience became less of a burden and more of a valuable source of input for problem solving.</p>
<p>As previously stated, the time spent prototyping and designing was drastically reduced due to the simplicity of integration with Tailwind and DaisyUI. Tailwind can be installed right at the start of a project, and I recommend doing so regardless of whether you intend to use it.</p>
<p>Read Further &gt;&gt; <a target="_blank" href="https://thecodingchannel.hashnode.dev/how-to-set-up-a-svelte-kit-project-with-vs-code">How to set up a Svelte Kit project with VS-Code</a></p>
<p>The ability to use development branches in GitHub and Netlify to create parallel copies of the web app that we can then test together and with a tester group to hunt down bugs without having to touch the production branch or the live version of the site was something I particularly liked.</p>
<h2 id="heading-some-growing-pains-of-sveltekit">Some growing pains of SvelteKit</h2>
<p>Since SvelteKit is still in active development, a lot has changed while we worked on our projects with it. When a beta deployment of SvelteKit broke the Netlify Edge adapter, our development was halted for a day. However, no one other than Rich Harris investigated the issue <a target="_blank" href="https://github.com/sveltejs/kit/issues/4692">and provided a same-day solution</a>. Nothing we would have expected, but something that will most likely stay with us.</p>
<p>Updating our largest projects to the pre-release directory structure was a lot of work that we intend to never do again. While the new structure has the potential for greater capability, we occasionally miss our more descriptive file structure.</p>
<p>As we discovered, Svelte's store system is not ideal for async. We improved the async load and wait capabilities of stores by using the <a target="_blank" href="https://github.com/square/svelte-store">Square Svelte Store package</a>.</p>
<p>We rely on data that is available on GitHub and is loaded into the web app for ARK Utils. Square Svelte Store was extremely helpful in maintaining interactivity while the data downloads and also ensuring that this data is available to the user on load.</p>
<h2 id="heading-should-you-use-sveltekit">Should you use SvelteKit?</h2>
<p>While you can't teach an old dog new tricks, I recommend that even experienced developers give it a shot and discover the possibility of shortening their development time while achieving the same or even better results than with other frameworks.</p>
<p>Teenagers in Norway learn programming in some schools, with Svelte being preferred over vanilla JavaScript. This means that a new generation of programmers will grow up learning Svelte as their first programming experience and using it for future projects. Svelte is becoming increasingly popular, and jobs requiring Svelte developers can pay well.</p>
<p>SvelteKit will soon reach version 1.0. This is an excellent time to board the train and enjoy the journey to come.</p>
]]></content:encoded></item><item><title><![CDATA[Why it is so hard to be self-taught]]></title><description><![CDATA[Are you a self-taught developer? Hey, so am I! You know how painful it can be finding the right material, the right sources that actually help you through learning? I do for sure. 
Learning JavaScript in an hour? I wish. For me, it's now almost 2 yea...]]></description><link>https://blog.tiia.rocks/why-it-is-so-hard-to-be-self-taught</link><guid isPermaLink="true">https://blog.tiia.rocks/why-it-is-so-hard-to-be-self-taught</guid><category><![CDATA[#4weeks4articles]]></category><category><![CDATA[#week4]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Sun, 11 Sep 2022 09:44:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1662889284705/4pjNc8etS.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Are you a self-taught developer? Hey, so am I! You know how painful it can be finding the right material, the right sources that actually help you through learning? I do for sure. 
<strong>Learning JavaScript in an hour</strong>? I wish. For me, it's now almost 2 years that I am learning, and I make steady progress. </p>
<p>There are a ton of people out there—on YouTube, Social Media that will tell you, that you will become rich quickly when you just buy their e-book, book their course, follow them, retweet them. But does it work? Most of the time it doesn't. But it sounds so good, doesn't it? It sounds so easy. If you just follow this one tweets content then you could make it. </p>
<blockquote>
<p>There is this joke about someone selling an eBook about how to become rich on the internet. Guaranteed success. And when you open it, there is only one advice in this book. <em>Sell eBooks</em>. </p>
</blockquote>
<h2 id="heading-what-makes-being-self-taught-so-hard">What makes being self-taught so hard?</h2>
<h3 id="heading-you-dont-know-what-to-learn-and-it-which-order">You don't know what to learn and it which order.</h3>
<p>What you should learn and above all in which order is absolutely unique to you.  Not everyone starts with the same knowledge and goals. When you're wandering through the dark, every little light seems to be a clue to how to get ahead. They know exactly that you don't know where to start and that you are looking for help. </p>
<h3 id="heading-there-is-a-whole-market-that-wants-to-profit-from-you">There is a whole market that wants to profit from you</h3>
<p>I followed a downright rabbit hole on YouTube two weeks ago. I saw a video about affiliate marketing in my recommendations. From my many years of experience I know that affiliate marketing in most cases violates the law. Especially if it is done incorrectly, and I was curious what they would recommend there and whether they point out what laws you have to comply with. </p>
<p>It was not only as bad as I had feared, <strong>but even much worse</strong>. You know those Twitter lists “Use these resources to learn”. 
Exactly those sites that were always recommended were listed there to “make money fast”. </p>
<p>See, the thing about affiliate marketing is that you always have to point out that your recommendation is a paid recommendation. You can't hide your monetary intentions. If you do, you're in violation of antitrust law. </p>
<h3 id="heading-if-i-cant-trust-those-people-who-do-i-trust-then">If I can't trust those people, who do I trust then?</h3>
<p>Trusting someone is hard. Especially when it comes to making something your job, your career. </p>
<ol>
<li><p>write down exactly what you would like to do professionally. No, “100k a year” is not a profession, it's a perk. Whether you will ever earn that much is questionable on top of that. </p>
</li>
<li><p>look at companies and individuals working in the field. And be careful here. There will be many who will pretend they can help you without ever having set foot in the field themselves. </p>
</li>
<li><p>Get in touch with a person who works in the field. Sometimes it takes time and not everyone wants to network outside their job, but sometimes you get lucky, and it works out. </p>
</li>
<li><p>Alternatively, if number 3 isn't quite your cup of tea, <a target="_blank" href="https://blog.tiia.rocks/open-source-maintainers-are-actual-superstars">check out GitHub for open source projects</a> you can help out with. In these projects often work developers who are actually full-time in large companies and support their hobby projects on the side. </p>
</li>
</ol>
<p>Be very sceptical when someone asks you for money for seeking advice and help. </p>
<h3 id="heading-learn-public-but-dont-turn-into-a-guru-after-your-first-lesson-of-javascript">Learn public but don't turn into a guru after your first lesson of JavaScript</h3>
<p>The biggest mistake people make on their journey to become developers is that when they hear they are supposed to learn in public and share their successes, that they directly think they have to sell themselves as influencers and gurus of content they didn't even know a week ago. </p>
<p>By doing so, you're just feeding into the vicious cycle of misdirecting other beginners. 
Learning in public means sharing mistakes. Sharing ideas and guesses. Admitting where you went wrong. </p>
<p>This way you can also connect with other beginners and learn together with them, organize projects. </p>
<h2 id="heading-but-how-long-will-it-take">But how long will it take?</h2>
<p>Now to the point of how long it takes to get perfect. Years. Let's not kid ourselves. Sure you can do the basics in a year, but you'll never know as much as an experienced developer because you took a course, even if you completed it. And the more time you waste chasing gurus the longer it will take. </p>
<p>100k? Maybe someday. But keep in mind that with every week you waste following strategies that inexperienced people sell you, other people will pass you by, learn and become successful. </p>
<p>I know it is painful to realize, but perhaps this is a wakeup call for you so you understand that chasing the wrong rabbit doesn't get you anyway. It most likely will make you rather quit. And when you are ready, <a target="_blank" href="https://github.com/TiiaAurora">I'll see you around on GitHub</a>. </p>
<p>Title Image: Photo by Tim Gouw: https://www.pexels.com/photo/man-in-white-shirt-using-macbook-pro-52608/</p>
]]></content:encoded></item><item><title><![CDATA[Building a Video Game Companion App publically using Svelte]]></title><description><![CDATA[The best projects are built upon experience, creativity, knowledge, and skill. And if this can't be archived by a single person, having a team that covers all fields can solve problems that a programmer alone couldn't. 
When it comes to building Comp...]]></description><link>https://blog.tiia.rocks/building-a-video-game-companion-app-publically-using-svelte</link><guid isPermaLink="true">https://blog.tiia.rocks/building-a-video-game-companion-app-publically-using-svelte</guid><category><![CDATA[#4weeks4articles]]></category><category><![CDATA[#week3]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Fri, 02 Sep 2022 18:41:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1661937488626/X1yPJsUUj.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The best projects are built upon experience, creativity, knowledge, and skill. And if this can't be archived by a single person, having a team that covers all fields can solve problems that a programmer alone couldn't. </em></p>
<p>When it comes to building Companion-Apps, we gathered some experiences a few months ago, when building <a target="_blank" href="https://blog.tiia.rocks/introducing-leapstone-a-lost-ark-quest-tracker-made-in-svelte-kit">LeapStone - The Companion Tracker</a> for the MMO-game “Lost Ark”. </p>
<h2 id="heading-what-is-ark-utils">What is ARK Utils?</h2>
<p>With ARK Utils we made an app for yet another ARK game, this time ARK: Survival Evolved. The insanely successful game by Studio Wildcard that was released 2015 and managed to grow its player base since. Funny enough—my mentor <a class="user-mention" href="https://hashnode.com/@coldino">coldino</a> and I met through ARK because I needed help with some data for my <a target="_blank" href="https://www.youtube.com/channel/UC1yWB1LmHaKn4_hS9Fozzkg">YouTube-Channel</a>. 
He is the person who created and maintains the data collection for this game. The data collection feeds <a target="_blank" href="https://ark.wiki.gg">the official ark game wiki</a>,  another companion app—<a target="_blank" href="https://github.com/cadon/ARKStatsExtractor">a breeding calculator</a> to help with the in depth breeding and mutation mechanic in the game, and several other tools—at least one commercial one—which use the publicly available game data.</p>
<p><a target="_blank" href="https://github.com/arkutils">ARK Utils is the Organization on GitHub</a> in which he collected all the tools to encourage more people to participate in the work that's done for the players of the game. It did not exist outside of GitHub and the data collected was mainly used by other people and was provided for their usage. </p>
<p>And then I ran into him looking for specific data, and we decided to work together. </p>
<p>Before I met him I had basically no programming background other than creating websites with WordPress / HTML / CSS. We went through some code together to clear up my understanding of certain mechanics which helped me in the end to make a gaming tutorial on my channel based on facts and not hearsay.  </p>
<h2 id="heading-the-first-baby-steps">The first baby steps</h2>
<p>After building a few projects together we decided to come back to ARK—the game where it all began and to make a few tools that would help me as a content creator. A few weeks prior a friend of mine made 2 tools that would help me with my game tutorials. He later decided to take them offline and with his permission we reworked the code and created a Svelte website just for us personally to use. It was an internal collection never meant to be shared with players. So it was basically a plain HTML website with 2 links to the tools. That's it. </p>
<p>A few weeks went by, and I published another video and ran into a problem for me. I tried to explain to players how the breeding mechanic in the game really works. And the data I need to show that is not really in the game—at least not easily to access especially for players on consoles that can't use mods or third party programs. So I just mentioned in a side sentence: “How nice would it be to be able to see this data, even if you don't have a PC.” and <a class="user-mention" href="https://hashnode.com/@coldino">coldino</a> answered “Well actually we have all the data, we just need to use it.”  This is how the Incubator Calculator was born. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662140769162/Y_urTtmc0.png" alt="Incubator Calculator" /></p>
<p><em>Screenshot of the Incubator Calculator tool page</em></p>
<p>When creating the tool we focussed on our target group and in opposite to what you would normally target—our users were people who did not have a PC at home but only their phone and a console, because the previously mentioned breeding tool had already been established for PC players.  That's why more than usually we focussed on a mobile first design. Looking at our statistics a few months later, this was the right choice. </p>
<p>I planned the design in <strong>Canva</strong> and then later put it into CSS once I got the “okay” for it. Canva made it super easy for me to make different prototypes and discuss things live in a video call with screen share. </p>
<h2 id="heading-opening-the-site-for-others">Opening the site for others</h2>
<p>I used this tool to do support work for the game in my community and people were excited, because they had been looking for an easy-to-use tool for years. I always linked directly to the tool subpage because the main site yet was still just a list of links and nothing else. But from our analytics I could see that people would still go back to the main page checking it out. We had a long discussion about it and then decided to turn ARK Utils into a public website with different tools for players. </p>
<p>The big rework of the home page started, and I tried to get some inspiration from different mobile websites that used a very clear design language, big shapes. </p>
<p>I also wanted to be playful with the different categories and tiny cute dinosaurs would guide the players through the menu. </p>
<p>It took a few weeks and the main page was done, and we were happy about how it looked. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662142326975/qZ3qZNAU9.png" alt="ARK Utils" /></p>
<p>At this point I also shared the page with the developers of the game to see if they would approve of the tools or not. They were excited to see the page and even <a target="_blank" href="https://survivetheark.com/index.php?/articles.html/community-crunch-326-evo-event-community-corner-and-more-r1970/">featured us in their weekly community newsletter</a> the following week. </p>
<h2 id="heading-bossopedia">Bossopedia</h2>
<p>The exposure to the eyes of the at times very enthusiastic community brought us only helpful feedback for the tools we would create after. The next tool we created was the <a target="_blank" href="https://arkutils.netlify.app/boss">Bossopedia</a> - an overview over ALL bosses in the game—what they unlock and which requirements need to be fulfilled to beat them. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662142749507/25BD9T7re.png" alt="image.png" /></p>
<p>We combined data in one tool that was previously only available at different spots on the internet, and you had to gather all the bits and pieces. Bringing it together to one page was really helpful and saved me personally already a lot of time. Players also loved it. </p>
<p>I again did the full design of the UI and created all data sets that would fill the boss pages. I also later had to create some graphics for bosses that did not have an official graphic. I did some testing in the game myself to verify the data we provided. </p>
<h2 id="heading-are-my-stats-even-good">Are my stats even good?</h2>
<p>The last tool added is a <a target="_blank" href="https://arkutils.netlify.app/tools/wildstats/">stat evaluation tool</a>. Animals in the game spawn with a combination of different stat points. When players tame those creatures these points are just numbers and players have no indication if their stats are good or not so much. In our work for the ARK Smart Breeder we were often asked to give feedback about how good of a catch an animal really is. <a class="user-mention" href="https://hashnode.com/@coldino">Coldino</a> then experimented a little with dynamic graphs in Svelte—especially on mobile view and this is how the finished tool looks. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662143156928/eSuuQWVZj.png" alt="ARK Stat Evaluator" /></p>
<h2 id="heading-why-knowledge-of-the-needs-of-your-target-group-and-experience-plus-data-are-a-match-made-in-heaven">Why knowledge of the needs of your target group and experience plus data are a match made in heaven</h2>
<p>We still have a few tools on our list we want to provide for players. We also want to improve the existing tools with more data to make them even more useful. </p>
<p>This article should show you something that <a target="_blank" href="https://blog.tiia.rocks/open-source-maintainers-are-actual-superstars">I already mentioned in a previous article</a>: </p>
<blockquote>
<p>I often felt bad because I could not contribute a lot to the code yet, it took me some time to realize that having good ideas and unconventional solutions for problems can be just as much of a help as actual coding work.</p>
</blockquote>
<p>I brought the ideas that would be the foundation for most of these tools. The data was there for years and through my 12k hours game experience and my several years of work as a content creator for this game I knew the issues players have in the game and what kind of tool would make their life easier. Combining my experience with the expertise of a hard-working and talented programmer like <a class="user-mention" href="https://hashnode.com/@coldino">coldino</a> combined with the data collection that already fed so many projects we were able to create this tool. And it is something I am extremely proud of. Nothing feels better than providing a solution to problems that were unsolved for years. </p>
]]></content:encoded></item><item><title><![CDATA[Open Source maintainers are actual Superstars]]></title><description><![CDATA[For the second week of the Writeathon I was thinking about the topics a lot and after reading the question “Which company or start-up inspires you the most and why?” I couldn't think about a specific start-up that really inspired me because in my tim...]]></description><link>https://blog.tiia.rocks/open-source-maintainers-are-actual-superstars</link><guid isPermaLink="true">https://blog.tiia.rocks/open-source-maintainers-are-actual-superstars</guid><category><![CDATA[#4weeks4articles]]></category><category><![CDATA[#week2]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Fri, 26 Aug 2022 14:42:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1661520626318/5m7peQ3Fu.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For the second week of the Writeathon I was thinking about the topics a lot and after reading the question <strong>“Which company or start-up inspires you the most and why?”</strong> I couldn't think about a specific start-up that really inspired me because in my time I have worked on the internet, many start-ups turned out to be only investment driven and got sold as soon as they had some value. I am not in for that kind of start-up culture, since I love to support ideas and projects meant to change peoples lives and not be hustled as soon as possible. </p>
<p><strong>But thinking about company-like structures that impress and inspire me then it is Open Source maintainers and contributors. Actually the whole Open Source culture. </strong></p>
<p>The tech industry is dominated by hustle-culture, 6-figures-in-one-year, become-a-millionaire-before-30. As someone who is not in here for the money but the education, knowledge and learning new skills, this never spoke to me. Quite the opposite—it made me feel unwelcomed. For me, it seemed like a soulless money making machine where everyone hated their job but liked their pay cheque too much to quit it. Then I got to know the <strong>Open Source</strong> scene. </p>
<h2 id="heading-cut-out-money-as-the-main-motivation">Cut out money as the main motivation</h2>
<p>I met people who contributed to projects without payment. Just because they wanted that project to exist and thrive. People that willingly taught me skills and knowledge that I couldn't have got otherwise or only with big efforts. I met people working in FAANG in their main job, but working on Open Source in their free time, sharing knowledge and wisdom to everyone no matter of their job and education status. </p>
<p>The one goal everyone has in common is the project. To make the project the best it can be. Everyone is bringing in their skills and knowledge they have. And everything happens <strong>without</strong> anyone rolling their eyes and saying “I am not getting paid enough to do it.” It is so refreshing. Cutting out money as the main motivation to participate creates such a healthy and inspiring work climate. </p>
<p>At the very beginning when I was still very insecure with my coding skills, I would participate with ideas, logic structures, graphical work, and copy writing. I would be the motivational person saying “Let's go, let's do this.” and drive progress forward. I often felt bad because I could not contribute a lot to the code yet, it took me some time to realize that having good ideas and unconventional solutions for problems can be just as much of a help as actual coding work. </p>
<p>Not only that, but I later started to design sites and build up their CSS. The amount of coding work I helped on became more and more, and I am building up more confidence doing things on my own as well. Helping to work on Open Source is probably the one main reason for me to keep going learning, so I can keep improving to help at projects. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661524460624/YCUl1Wkx9.jpg" alt="hashnodeimage.jpg" />
<em>Photo by ThisIsEngineering: https://www.pexels.com/photo/female-software-engineer-coding-on-computer-3861951/</em></p>
<h2 id="heading-open-source-is-the-foundation-of-many-established-services">Open Source is the foundation of many established services</h2>
<p>In the OSSRA report 2022 Synopsis looked into 2400 codebases within 17 industries and <strong>97% of them</strong> contained Open Source. Over the past years it has been steadily high with a peak 2019 of 99%. </p>
<p>The Internet and IT-landscape we know now wouldn't be possible without Open Source. </p>
<h2 id="heading-i-asked-people-on-twitter-why-they-love-open-source">I asked people on Twitter why they love Open Source</h2>
<p>I have asked people on Twitter, why they love Open Source and I got a ton of really great answers. I will share a few with you. </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/Mastacheata/status/1561983923172827136">https://twitter.com/Mastacheata/status/1561983923172827136</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/IgorskiCo/status/1561965382532988929">https://twitter.com/IgorskiCo/status/1561965382532988929</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/CodeWithCaen/status/1561999779865006081">https://twitter.com/CodeWithCaen/status/1561999779865006081</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/RuslanSys5/status/1562225955346649089">https://twitter.com/RuslanSys5/status/1562225955346649089</a></div>
<h2 id="heading-free-software-supports-education-and-offers-access-to-possibilities">Free software supports education and offers access to possibilities</h2>
<p>The fact that there is Open Source Software out there that can easily beat paid solutions in a direct comparison gives people the opportunity to work with them, who don't have access or could not afford the paid version. That makes it extremely accessible for people who want to learn and educate themselves and even make a living out of their skills. Some of the most famous developers started their career in the Open Source community.</p>
<h2 id="heading-be-part-of-the-movement">Be part of the movement</h2>
<p>Getting involved into Open Source is valuable no matter in which stage of learning someone is. Open source will always need more people to participate, and your efforts will be documented throughout your work thanks to the open and public way the work is done. </p>
<p>A first step to get involved is to check out the repositories (for example on <a target="_blank" href="https://github.com/">GitHub</a>) of the Open Source programs you already use and see if your help is needed. Even if it's just an opinion or helping users that have problems. This could be the single best decision for your future as a developer. </p>
]]></content:encoded></item><item><title><![CDATA[How I got my first freelancing gig as a developer and how it changed my career unplanned]]></title><description><![CDATA[My career as a freelancer did not start with my very first job. Some count that as the part of when their journey starts. My career started as a user of the products I worked with afterwards. In the peak of the new blogging hype in 2008, I had 3 diff...]]></description><link>https://blog.tiia.rocks/how-i-got-my-first-freelancing-gig-as-a-developer-and-how-it-changed-my-career</link><guid isPermaLink="true">https://blog.tiia.rocks/how-i-got-my-first-freelancing-gig-as-a-developer-and-how-it-changed-my-career</guid><category><![CDATA[4articles4weeks]]></category><category><![CDATA[week1]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Thu, 18 Aug 2022 04:29:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1660785988260/2cXQSZWKD.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My career <strong>as a freelancer</strong> did not start with my very first job. Some count that as the part of when their journey starts. My career started as a user of the products I worked with afterwards. In the peak of the new blogging hype in 2008, I had 3 different blogs that all were set up to generate passive income and made it possible for me to do this full-time while having a lot of free time on my hands. This free time I used for self-education. My brain never stops. If I am not good at something I will keep learning until I am good enough. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660792078474/lsksIfsaG.png" alt="image.png" />
<em>My blog 2010</em></p>
<p>I was unhappy with my blog because I had set up my blogs with standard themes, maybe a little edited—mainly the graphics. I was annoyed that so many other blogs used the same themes, that my blog had no real uniqueness to it. </p>
<p>So I took it to YouTube—A platform fairly fresh still. And I looked for tutorials on how to make my own blog themes to finally have something like a brand identity. I did find a 4 video long tutorial that when <strong>through 4 hours of explaining CSS from scratch</strong>. 
The same night I designed and built my first blog theme, and it would be the thing people would recognize straight away.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660793962768/XpxTH6P7Q.png" alt="image.png" />
<em>The actual tutorial I followed</em> </p>
<h2 id="heading-you-learn-for-life">You learn for life</h2>
<p>Little did I know that this afternoon of teaching myself basic CSS and HTML knowledge <strong>would change the years following</strong>. A few weeks later an acquaintance of mine emailed me about a thing he wanted to have changed in his blog. He asked if I could do it, and he would also pay for it. </p>
<p>I looked at the issue, and it was something I had to fix in my own blog as well, so the solution to his problem was still fresh enough in my memory to fix it within a few minutes. I didn't expect payment because it was just a few lines of new CSS and some changes to existing CSS, but he insisted of paying me and gave me €25 for 5 minutes of effective work. I was baffled. </p>
<h2 id="heading-the-big-website-make-over">The big website make-over</h2>
<p>This acquaintance—still impressed with my work—worked as a Social Media Coach for creators, companies, and artists, that did not have any online representation yet. Some still had some dusty and never updated websites from the 90s—an iframe-nightmare. </p>
<p>A few weeks later he messages me again and asked me if I want to take over work from him. He wanted to offer more services and wanted to outsource some work to me. 
My job from then on was to take those crusty 90s websites and turn them into websites based on WordPress.  My job was to update those designs, so they fit into the just started web2.0. I had to prepare the WordPress backend for the customer to be able to update contents themselves. I also filled the pages with the pre-existing content that was on their old website. Then I set up the SEO and wrote documentation for them to look everything up they need to know. </p>
<p>I had little companies as customer, one wonderful elderly lady who was far past her 80s and just wanted to be found online to show her paintings and artwork. <strong>She was euphoric to have a woman working on the website</strong>. Not once was a customer unhappy with my work—but they would often send recommendations to befriended companies and brands to hire me. </p>
<p>The developer work and the passive income from my blogs made it possible for me to have a decent income considering none of the paths I have chosen was something I had learned before.  A career change out of the mood to learn something new on one autumn afternoon was all it needed. Everything happens for a reason, considering I am now here almost 12 years later. </p>
<h2 id="heading-things-i-have-learned-when-i-started-freelancing">Things I have learned when I started freelancing</h2>
<ul>
<li>Know your worth! First I felt uncomfortable asking for money for my work. Since all I did was an online course in creating unique themes and had several years of personal experience with blogs—it felt like I ask for money for a favour. </li>
<li>If you undercharge, people will think your work is bad, and therefore you can't ask for more. Being cheaper than the others hurts your reputation. </li>
<li>Recommendations are EVERYTHING for a freelancer. That was far more successful than me advertising my work. Most of the time I was booked out because people referred me. </li>
<li>inform yourself about any legal requirements of your work. What taxes do you have to pay? Do you have to found a company? Which paperwork needs to be kept? That saves you from a lot of headache later. </li>
</ul>
<h2 id="heading-why-i-chose-to-freelance-over-employment">Why I chose to freelance over employment?</h2>
<p>I have worked in employment and I have worked in my self-employment and I absolutely prefer working on my own for myself. Especially in the smaller sector where you deal with private people or private companies, people prefer working with <strong>real people</strong> over agencies. I also had the possibility to change what I charge based on the company itself. I did not have a per hour price but per project. For non-profits, I would charge the bare minimum and as soon as a bigger good situated company would ask for my help, their payment would even it out. </p>
<p>Being able to take those customers like non-profits, that usually no one would take did not only help them, but it also looked good on a portfolio site and would bring a lot of eyes on my work. </p>
<p>Working for an agency—this would have been impossible because I wouldn't have seen these kinds of offers to begin with. </p>
<p>But for you the situation can be different. Freelancing requires a lot of <strong>willpower</strong> to go through your work without pressure from another instance. You need to motivate yourself <strong>every morning</strong> to wake up on time and get your planned work done. Sometimes that can be tricky. </p>
<p>You also need to be able to handle the alone<strong> responsibility</strong> over your livelihood. Your work decides over if you can pay your bills or not. If you don't work, you might not. But if you work responsible and constant, then you can make a very good living. </p>
<h2 id="heading-your-portfolio">Your Portfolio</h2>
<hr />
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660794674251/iPWZg9EjB.png" alt="image.png" />
<em>One of the first websites I got commissioned for 2010. The topic was water, night sky, cherry bloom and Japan. Dark Mode was important because the website was meant to look a little more upper class.  WordPress was under the hood, helping the cat breeder to maintain her content easily. </em></p>
<p><em>It probably looks a little dated for 2022, but 2010 it got her a lot of compliments and me a lot of follow-up gigs from the cat breeder community. Who all paid very well.</em></p>
<hr />
<p>These days a Portfolio is more essential than ever. Showing your work and your skills can turn a Google Search into a customer. I have some really basic advice for your portfolio, since I see many peoples portfolios are working against them instead of for them. </p>
<ul>
<li>Use every little piece of work as reference. Very often customers want to see your previous work. Make sure that your portfolio has a lot of different styles, so they don't chose you for the previous customers design choice but for your knowledge to translate customers wishes. </li>
<li>If your portfolio doesn't have a lot to offer, just create mock-ups. Have fun and show what you are capable of. </li>
<li>Have examples for every service you offer. Otherwise, it will get lost in the list of Skills. </li>
<li>Write a few words to each example—What is it for, what were the decisions you made selecting that design, which feature stands out. </li>
</ul>
<p>My biggest advice is one general point, <strong>don't let the imposter syndrome get to you</strong>. We regularly say “No” to opportunities because we feel that we don't fit in. We feel like we are not qualified enough and people will find out. But keep in mind—You grow with your tasks. Every new gig, every new job teaches you something new. And you can also expect everyone else around you feel the same. Be brave to say yes to opportunities because they could change your life.  </p>
]]></content:encoded></item><item><title><![CDATA[CHEAP Book Bundles: Cyber Security, Big Data, IoT, STEM!]]></title><description><![CDATA[It is book time again! If you are a self learner and you look for affordable book bundles to learn ALL THE THINGS then you should check out these offers since they are available for only a limited time. This time we have 3 bundle that might interest ...]]></description><link>https://blog.tiia.rocks/cheap-book-bundles-cyber-security-big-data-iot-stem</link><guid isPermaLink="true">https://blog.tiia.rocks/cheap-book-bundles-cyber-security-big-data-iot-stem</guid><category><![CDATA[big data]]></category><category><![CDATA[iot]]></category><category><![CDATA[AI]]></category><category><![CDATA[cybersecurity]]></category><category><![CDATA[stem]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Tue, 07 Jun 2022 05:28:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1654579611955/V4OEKcCPx.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It is book time again! If you are a self learner and you look for affordable book bundles to learn ALL THE THINGS then you should check out these offers since they are available for only a limited time. This time we have 3 bundle that might interest you: </p>
<ol>
<li>Cyber Security &amp; Cyber Warfare (published by Packt)</li>
<li>BIG DATA and IoT (published by River Publishers)</li>
<li>STEM Bootcamp (published by Mercury - Learning and Information) </li>
</ol>
<h2 id="heading-cyber-security-bundle">Cyber Security Bundle</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654578015692/lnUS5Lxvq.png" alt="image.png" /></p>
<p>The Cyber Security Bundle is about 17€ for all books. The bundle contains 24 books: </p>
<ul>
<li>Threat Hunting with Elastic Stack</li>
<li>Practical Hardware Pentesting</li>
<li>Antivirus Bypass Techniques</li>
<li>Privilege Escalation Techniques</li>
<li>Pentesting Industrial Control Systems</li>
<li>Cybersecurity - Attack and Defense Strategies</li>
<li>Mastering Kali Linux for Advanced Penetration Testing</li>
<li>Penetration Testing Azure for Ethical Hackers</li>
<li>Mastering Defensive Security</li>
<li>Adversarial Tradecraft in Cybersecurity</li>
<li>Mastering Microsoft Endpoint Manager</li>
<li>Industrial Cybersecurity</li>
<li>Practical Threat Intelligence and Data-Driven Threat Hunting</li>
<li>The Ultimate Kali Linux Book (2nd Edition) </li>
<li>Keycloak - Identity and Access Management for Modern Applications</li>
<li>CompTIA Security+: SY0-601 Certification Guide (2nd Edition)</li>
<li>Learn Wireshark - Fundamentals of Wireshark</li>
<li>Mastering Windows Security and Hardening</li>
<li>Microsoft 365 Security Administration: MS-500 Exam Guide</li>
<li>Mastering Palo Alto Networks</li>
<li>Microsoft Azure Security Technologies Certification and Beyond</li>
<li>Cyber Warfare - Truth, Tactics, and Strategies</li>
<li>Cybersecurity Career Master Plan</li>
<li>Malware Analysis Techniques</li>
</ul>
<p>Yes, all books are just a little over 17€! Interested in this book bundle? You will find it here: <a target="_blank" href="https://www.humblebundle.com/books/cybersecurity-cyber-warfare-packt-books?partner=tiiaaurora">Cyber Security Book Bundle</a> Available for only 6 days remaining from the time the article went live. </p>
<h2 id="heading-big-data-and-iot-book-bundle">BIG DATA and IoT book bundle</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654577996345/0L6mVDIa5.png" alt="image.png" /></p>
<p>This book bundle is also a little over 17€ and contains 20 books. If you are interested in these topics those are the titles you will get for the price: </p>
<ul>
<li>Big Data Management in Sensing: Applications in AI and IoT</li>
<li>Electronic Skin: Sensors and Systems</li>
<li>Human Factors in Intelligent Vehicles</li>
<li>Eye Tracking and Visual Analytics</li>
<li>Virtual Reality: Recent Advancements, Applications and Challenges</li>
<li>Big Data: Concepts, Warehousing, and Analytics</li>
<li>Engineering Agile Big-Data Systems</li>
<li>Applications of Machine Learning in Big-Data Analytics and Cloud Computing</li>
<li>Use of AI, Robotics, and Modern Tools to Fight Covid-19</li>
<li>Next Generation Internet of Things</li>
<li>Secure and Smart Internet of Things (IoT)</li>
<li>Getting Started for Internet of Things with Launch Pad and ESP8266</li>
<li>The Digital Shopfloor: Industrial Automation in the Industry 4.0 Era</li>
<li>Internet of Things - The Call of the Edge</li>
<li>Artificial Intelligence for Digitising Industry</li>
<li>Microcontroller and Smart Home Networks</li>
<li>Understanding Nanoelectromechanical Quantum Circuits and Systems (NEMX) for the Internet of Things (IoT) Era</li>
<li>Enabling Technologies for the Internet of Things: Wireless Circuits, Systems and Networks</li>
<li>Internet of Things Security: Fundamentals, Techniques and Applications</li>
<li>Internet of Things in Automotive Industries and Road Safety</li>
</ul>
<p>There are some really interesting titles in this book bundle that you might not want to miss out. If you are interested in this bundle then head over here: <a target="_blank" href="https://www.humblebundle.com/books/big-data-iot-river-publishers-books?partner=tiiaaurora">BIG DATA &amp; Internet of Things book bundle</a> This bundle is available for the next 20 days. </p>
<h2 id="heading-stem-bootcamp-by-mercury">STEM BOOTCAMP by Mercury</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654578338185/4kX1iZ2pX.png" alt="image.png" /></p>
<p>Last but not least a few books to extend your area of expertise. These books are not in particular all "programming" books but will help you to get skills that might be of use together with your programming knowledge. You will get 23 books for 17.01€ </p>
<ul>
<li>AutoCAD 2023 Beginning and Intermediate</li>
<li>Computer Graphics Programming in OpenGL With Java</li>
<li>Digital Signal Processing</li>
<li>Econometrics in Practice (Includes Supplementary Content)</li>
<li>Engineering Thermodynamics</li>
<li>Excel 2021 Functions and Formulas (Sixth Edition, Includes Supplementary Content)</li>
<li>Mechanical Engineering and Mechatronics Handbook</li>
<li>Numerical Methods in Engineering and Science</li>
<li>Optics</li>
<li>Programming Fundamentals Using Java (Second Edition, Includes Supplemental Content) </li>
<li>Practical Heat Transfer Using MATLAB and COMSOL (Includes Supplementary Content)</li>
<li>Python: Intro to Programming (Second Edition, Includes Supplementary Content)</li>
<li>Empirical Cloud Security</li>
<li>Software Testing</li>
<li>AutoDesk Revit 2021 Architecture (Includes Supplemental Content)</li>
<li>Computational Physics (Second Edition)</li>
<li>Discrete Mathematics with Cryptographic Applications</li>
<li>Dealing with Data Pocket Primer (Includes Supplemental Content)</li>
<li>Natural Language Processing Using R Pocket Primer (Includes Supplementary Content)</li>
<li>Newtonian Mechanics (Second Edition)</li>
<li>Mathematics for Mechanical Engineers Problems &amp; Solutions</li>
<li>Solid State Physics</li>
<li>SQL Pocket Primer (Includes Supplemental Content) </li>
</ul>
<p>If you are interested in this absolutely fully packed book bundle visit this link: <a target="_blank" href="https://www.humblebundle.com/books/stem-bootcamp-mercury-learning-books?partner=tiiaaurora">STEM BOOTCAMP book bundle</a>. This bundle will only be available the next 13 days! </p>
<hr />
<p>About Humble Bundle: Humble Bundle is a shop that offers books, games and software in bundles. These bundles are usually tied to a charity. You can chose how much of the money you pay will go towards the charity, humble bundle or the publisher. </p>
<hr />
<p>Those links are partner-links. I will get a small percentage of what you pay but you won't have to pay extra! I personally suggest those bundles wholeheartly since I also bought them myself :) </p>
]]></content:encoded></item><item><title><![CDATA[“How to Git” series – An introduction on what is Git and why to use it – #01 Setting Things Up]]></title><description><![CDATA[What is Git?
Git is an Open Source Version Control System, that was originally developed by Linus Torvalds in 2005. Since then, it became the worldwide solution for collaborative work.
Git creates a local version of the project (repository) on your m...]]></description><link>https://blog.tiia.rocks/how-to-git-series-an-introduction-on-what-is-git-and-why-to-use-it-01-setting-things-up</link><guid isPermaLink="true">https://blog.tiia.rocks/how-to-git-series-an-introduction-on-what-is-git-and-why-to-use-it-01-setting-things-up</guid><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[GitLab]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Thu, 12 May 2022 11:22:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1652267376632/WLEmdQs4Q.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-git">What is Git?</h2>
<p>Git is an <strong>Open Source Version Control System</strong>, that was originally developed by Linus Torvalds in 2005. Since then, it became the worldwide solution for collaborative work.</p>
<p>Git creates a <strong>local version</strong> of the project (repository) on your machine and then <strong>tracks changes</strong> to the files within that project. That way you have a history of the changes you (or your co-workers) have done to the project, and you can also revert at any time of the project should you run into problems. </p>
<p>Git can either be used via command line (in your terminal) or with a Graphical User Interface in a desktop app. Many IDEs and Code editors also come with Plugins to manage your repositories. Basic knowledge about the command line usage can be helpful, because not every job position works with your preferred tool. Also, there is a high chance that the GUI tool you use does not support all the functions the command line would.</p>
<p>Git can be used local, but also collaborative with server side solutions like GitLab or GitHub to work with co-workers a-synchronically. </p>
<p>Since it is a distributed and not a centralized system, you don't have to rely on permanent access to the server that holds the latest code but rather work locally and then submit once your changes are made- or even just exchange it with your co-workers.</p>
<p>Git has become successful because it is free, fast, and scalable. Learning Git can be tricky and that's why I would suggest anyone starting to learn programming, to put Git on top of the lists of things they need to know in order to navigate through the programming world. </p>
<h2 id="heading-installation">Installation</h2>
<p>To see if you have Git installed and which version, you start your terminal on your computer and type: </p>
<pre><code>git <span class="hljs-operator">-</span><span class="hljs-operator">-</span>version
</code></pre><p>If Git is not installed you will get a message like: </p>
<pre><code>git: command <span class="hljs-keyword">not</span> <span class="hljs-built_in">found</span>
</code></pre><p>or </p>
<pre><code><span class="hljs-string">'git'</span> <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> recognized <span class="hljs-keyword">as</span> an <span class="hljs-type">internal</span> <span class="hljs-keyword">or</span> <span class="hljs-keyword">external</span> command, operable program, <span class="hljs-keyword">or</span> batch file.
</code></pre><p>If it is installed, you will get a version information instead. </p>
<p>Go to <a target="_blank" href="https://git-scm.com/downloads">https://git-scm.com/downloads</a> and compare your version with the up-to-date version available. Update if needed. You can either download the external downloader or use the command line. The website above will give you the appropriate options depending on your OS. </p>
<h2 id="heading-configure-git">Configure Git</h2>
<p>Before you can start using git, you will have to do some configuration work. It will make your life easier especially when working together in a collaborative space. Settings in Git can be done in 3 layers— <strong>System</strong>: for the whole machine you're working on, <strong>Global</strong>: your repositories only or <strong>Local</strong>: for each repository individual. [System - Global - Local] can overwrite the settings of the previous one in the list, so usually setting up your credentials globally is enough. If you need to change them for a specific repository you can still overwrite your default later with a local setting. </p>
<p>With </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global user.<span class="hljs-built_in">name</span> <span class="hljs-string">"John Doe"</span>
</code></pre><p>you set up your name. Make sure to put it into quotation marks. </p>
<p>Next you need to put in your email address. You use this command for it: </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global user.email johndoe@example.com
</code></pre><p>You will not need quotation marks here since you are not using spaces. </p>
<p>Next you should setup your preferred Editor for git. I use VS-Code, so I use the command: </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global core.editor <span class="hljs-string">"code --wait"</span>
</code></pre><p>For Atom you would use:</p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global core.editor <span class="hljs-string">"atom --wait"</span>
</code></pre><p>If you want to use your own program like let's say Notepad++, you can also use the direct file path to the executable <a target="_blank" href="https://docs.github.com/en/get-started/getting-started-with-git/associating-text-editors-with-git">like here</a>: </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global core.editor <span class="hljs-string">"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"</span>
</code></pre><p>While there are a ton more settings that you can have a look at in the <a target="_blank" href="https://git-scm.com/docs/git-config">git documentation</a>, I want to point out one more that should be set. It is how git should handle line endings. Depending on what OS you use and what OS your co-workers use, you can run into issues with line endings because different OS handle line endings differently. </p>
<p>When you are on Windows and you are either not sure what your co-workers use or you want to leave the option open to work with different people, set up: </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global core.autocrlf <span class="hljs-literal">true</span>
</code></pre><p>When you are on Linux or macOS, you want to use: </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global core.autocrlf input
</code></pre><p>If you only work with windows and all your co-workers do, you can technically set it to </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global core.autocrlf <span class="hljs-literal">false</span>
</code></pre><p>in order to disable it, but the common practice is to rather use the "true". </p>
<p>If you want to see all the settings you have done, open your config file with </p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global <span class="hljs-operator">-</span>e
</code></pre><p>You can even make changes later on in this file directly. Setting it up first via the command line first ensures that you don't run into problems later due to falsely formatted input. </p>
<hr />
<p>Well done! You have set up your Git successfully, and you are ready to use it. </p>
]]></content:encoded></item><item><title><![CDATA[Web Apps: Why Offering A Low Contrast Mode Makes You More Accessible, Not Less]]></title><description><![CDATA[I had my first migraine episode when I was 14. I have never experienced such a pain before in my life. My first migraine aura happened with 24. I couldn't see anything clear for a day. Two years later I lost the ability to speak for the first time. I...]]></description><link>https://blog.tiia.rocks/web-apps-why-offering-a-low-contrast-mode-makes-you-more-accessible-not-less</link><guid isPermaLink="true">https://blog.tiia.rocks/web-apps-why-offering-a-low-contrast-mode-makes-you-more-accessible-not-less</guid><category><![CDATA[THW Web Apps]]></category><category><![CDATA[Accessibility]]></category><category><![CDATA[Web Accessibility]]></category><category><![CDATA[Web Design]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Wed, 11 May 2022 19:14:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1652295974654/SXtTbC8wW.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I had my first migraine episode when I was 14. I have never experienced such a pain before in my life. My first migraine aura happened with 24. I couldn't see anything clear for a day. Two years later I lost the ability to speak for the first time. I could not even develop a clear thought for hours. Words and sentences didn't make sense any more. It was scary. It happened twice since. Both times triggered by a combination of stress and light / screen work. </p>
<blockquote>
<p>43% of women and 18% of men will experience migraines at least once in their life. Some of them will suffer from migraines for the rest of their lives, trying to avoid triggers as much as possible.</p>
</blockquote>
<h2 id="heading-photosensitivity-photophobia">Photosensitivity / Photophobia</h2>
<p>As a woman suffering from migraines and photosensitivity I am stuck in a loop of avoiding light and flicker effects because they can trigger a migraine episode. But I am also not able to be close to light when experiencing an episode because it influences the severity of the pain and symptoms. Websites are probably the last connection that would be made to this condition, so how does web design come into the place here? I can give you an example: </p>
<p>When I joined Hashnode to publish my articles here, I had the problem that the dark mode editor had such a high contrast, that I could not write my articles in the editor itself. Looking onto the screen would make my vision blurry and my thoughts would feel like being wrapped in cotton wool. I would get nauseous and light-headed. </p>
<h3 id="heading-how-it-looks">How it <strong>looks</strong></h3>
<p>My brain processes the high contrast similar to how it would process me looking into the sun or looking into a lamp for a long period of time. Everyone who did this before knows that you will have blind spots in your vision for a while. The exact same thing happens to me looking at a high contrast page. As a reminder how the old dark mode on Hashnode looked: </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652284187197/jGSGWpVvw.png" alt="Hashnodes old Dark Mode" class="image--center mx-auto" /></p>
<p>A very bright font on a very dark background. The text would imprint into my vision and as soon as I continued to read further, the imprinted text and the actual text would shift into a wild mixture of letters. </p>
<p>Since it's hard to explain, I will show this picture that kind of resembles, how I see and read high contrast websites. It is energy draining to focus on the text, to see typos and to put thoughts into words. But it is also a trigger for migraine auras and migraine seizures for me. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652286483936/-yymZN4mA.png" alt="Visual effects when reading high contrast text" class="image--center mx-auto" /></p>
<p>When this trigger turns into a migraine aura, the picture will develop further and look like this. The patches on the right will be uncontrollably floating through the right side of my vision and will even persist when I close my eyes: </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652291605084/_PnRNrS8p.png" alt="Reading text with a migraine aura" /></p>
<p>At this point I will HAVE to leave the PC. Darken the room completely. Get a cold wet towel to put it on my forehead and face and I will be out for 2-3 hours. Once the aura disappears I will be left with a feeling like a hangover and terrible nausea. </p>
<h2 id="heading-talking-to-companies">Talking to companies</h2>
<p>Back then I tweeted to Hashnode the following message: </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/TiiaAurora/status/1438222780806356992">https://twitter.com/TiiaAurora/status/1438222780806356992</a></div>
<p>And I also added a little mock-up I made on how it would be easier to use the dark mode without the strain on the eyes while staring on the text for sometimes hours. </p>
<p>Hashnode <strong>listened</strong> and improved the dark-mode on the website and the editor, removed the very dark background and replaced it which I am very thankful for. </p>
<h2 id="heading-todays-gold-standard-of-high-contrast-designs">Today's gold standard of high contrast designs</h2>
<p>Today's standards regarding the contrast between text and background <a target="_blank" href="https://www.w3.org/WAI/GL/WCAG3/2021/how-tos/visual-contrast-of-text/">have been defined several times</a> and the common understanding is to provide a high enough contrast to cater towards users with visual impairments. </p>
<p>While there are calculations how high the contrast has to be – many designers go for the “the higher, the better” approach ultimately not realizing that their attempt to make their product MORE accessible made it less accessible. The accessibility standards push designers to include one group and exclude another no matter how they decide. But it does not have to be like that. </p>
<h2 id="heading-misconception-of-only-flickering-images-being-problematic">Misconception of only flickering images being problematic</h2>
<p>We do have media queries for <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion">less motion</a> [prefers-reduced-motion] on websites. These are around for years and also widely accepted. Because by now everyone knows strobe lights and flickering can cause seizures. Not many people know that the same goes for static visuals as well. Especially static patterns like stripes can cause this in sensitive people. And what is light text on dark background ultimately? Light stripes on dark. </p>
<p>This is the upper paragraph when reducing the sharpness. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652292236529/erJYj0rqI.png" alt="Blurry text resembling white stripes on dark background" /></p>
<p>The <a target="_blank" href="https://epilepsyresearch.org.uk/why-do-some-images-cause-seizures-while-others-do-not/#:~:text=A%20new%20study%20has%20investigated,visuals%20can%20be%20quite%20staggering.">Epilepsy Research UK</a> published the following findings about triggers in static imagery: </p>
<blockquote>
<p>The study, led by Dora Hermes, of the University Medical Center (UMC) Utrecht in the Netherlands, and published in the journal Current Biology, has looked into the role of gamma oscillations in the brain. Their review focused on gamma oscillations induced by the spatial features of some <strong>static images</strong>, such as those depicting <strong>black and white bars.</strong> The repetitive pattern of brain activity of gamma oscillations takes place when people are exposed to these images. In fact, the authors note that <strong>these images can cause headaches and migraines in photosensitive people</strong> as well as discomfort in perfectly healthy people.</p>
</blockquote>
<p>It is further mentioned how to take the severity out of these triggers: </p>
<blockquote>
<p>The likelihood that a [photosensitive seizure] is induced by viewing a grating can be reduced by decreasing the size of the grating [pattern], by <strong>reducing the contrast</strong>, by superimposing a second grating [pattern] to create a plaid or checkerboard, or by superimposing noise.</p>
</blockquote>
<p>Surprisingly, we have a solution for this, because we have a media query for <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-contrast">contrast</a> [prefers-contrast] which could be set to “more” and “less” contrast. Unfortunately not all browsers support this media query yet. And even if they do – we need designers and developers that understand the impact they can have on people like me when supporting these.  </p>
<p>Right now <a target="_blank" href="https://contrastrebellion.com/">designers and educators</a> lack the awareness for such a demand. Because even <a target="_blank" href="https://www.nngroup.com/articles/low-contrast/">big educational institutes</a> see low contrast web content as “amateurish” and “ignorant”. Basically every accessibility checker will disregard a lower contrast website as inaccessible because it only tests for one use case. </p>
<p>Here you can see how defensive and ignorant even a11y supporters react when pointing out that the measurements that are done today, are not enough. Education and awareness about the different expectations for accessible media needs to become better. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1665868024395/jEcXHBUr0.png" alt="image.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1665868059241/kzCOYIfLr.png" alt="image.png" /></p>
<h2 id="heading-easy-implementation-as-an-additional-option">Easy implementation as an additional option</h2>
<p>I build a little Svelte kit application this afternoon to show how an easy and quick toggle for high- and low-contrast implementation could be. Just simply build in as an additional option for users until all browsers support the contrast settings. Just as we have light-  and dark mode now. </p>
<p>Example page: <a target="_blank" href="https://low-contrast-example.netlify.app/">https://low-contrast-example.netlify.app/</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652293944793/1-uYh1Gy5.png" alt="High Contrast Mode" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652293934315/xU5h0jKkl.png" alt="Low Contrast Mode" /></p>
<p>All it requires is a JavaScript toggle to add one CSS-class that adds two filters to the website. The same class can also be used as the media query itself. A further explanation is on the test page. It will also show how this filter can mute colourful images. </p>
<h2 id="heading-final-words-accessibility-is-not-a-boolean">Final words – Accessibility is not a boolean</h2>
<p>Accessibility can never be 100% accessible for everyone because the demands can be contrary. Accessibility is not a boolean that decides if a project is or is not accessible. But we need to keep a few things in mind when talking about accessibility. </p>
<ol>
<li>Listen to affected people. They are your best source for information. Don't disregard your users needs because their needs were not mentioned in your education path. </li>
<li>If it is a small change that can have a big impact – Do it. </li>
<li>Understand the limitation of accessibility check tools and guidelines. </li>
<li>Educate people around you. Only if designers and developers know about issues they can work on them. </li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Machine Learning: Creating an animated avatar that reacts to your voice]]></title><description><![CDATA[When you hear Machine Learning, then things always seem a little abstract right? How can machine learning be used practical in your life? This week I created an animated avatar based on my photo that was turned into an digital avatar with an amazing ...]]></description><link>https://blog.tiia.rocks/machine-learning-creating-an-animated-avatar-that-reacts-to-your-voice</link><guid isPermaLink="true">https://blog.tiia.rocks/machine-learning-creating-an-animated-avatar-that-reacts-to-your-voice</guid><category><![CDATA[Machine Learning]]></category><category><![CDATA[AI]]></category><category><![CDATA[Artificial Intelligence]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Wed, 11 May 2022 08:41:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1652258435325/SFTYSaLId.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When you hear Machine Learning, then things always seem a little abstract right? How can machine learning be used practical in your life? This week I created an animated avatar based on my photo that was turned into an digital avatar with an amazing Python tool.  How can we use a Python Machine Learning Tool to create an animated PNG-Tuber avatar. </p>
<blockquote>
<p>A PNG-Tuber is a sub-form of a V-Tuber using an animated 2D image in opposite to a 3D model as their virtual counterfeit. The avatar is then used instead of a webcam. V-Tubing originated in Japan in 2010 but grew popularity in the western world in 2020. PNG-Tubing is a quick and easy entrance into V-Tubing. </p>
</blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652235644041/LwAGnkVCs.png" alt="image.png" class="image--center mx-auto" /></p>
<h2 id="heading-tools-i-used">Tools I used:</h2>
<ul>
<li>To turn my photo into an comic avatar, I used AnimeGANv2. You can check it out on <a target="_blank" href="https://huggingface.co/spaces/akhaliq/AnimeGANv2">Huggingface.co</a></li>
<li>The program used to animate your character and let's your voice control it, is <a target="_blank" href="https://ai-risun.itch.io/gazo-tuber">Gazo Tuber</a> </li>
<li>To create the different "Scenes" of the animation, I used <a target="_blank" href="https://krita.org/en/">Krita</a> and <a target="_blank" href="https://www.gimp.org/">GIMP</a> with my graphic tablet. </li>
</ul>
<h1 id="heading-how-to-get-started">How to get started!</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652234910599/x0kApxYSS.png" alt="Untitled (200 × 200px) (1).png" /> This is the picture I started with. It is a portrait of myself. I went to AnimeGANv2 and used the tool over there to create a comic version of this image. The reason why I didn't use my photo is, that it might make viewers and also me quite uneasy to look at an animated version of my own face. </p>
<h2 id="heading-this-is-the-result-i-got">This is the result I got</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652235055804/YVcMp8Heo.png" alt="image.png" />  Not terrible at all if you ask me Not only does it look like an actual comic face but it also fits the vibe i would like to go for with my animated avatar. </p>
<h2 id="heading-setting-up-gazo-tuber">Setting up Gazo Tuber</h2>
<p>Gazo Tuber requires you to have at least 2 images - one with an open and one with a closed mouth - to indicate if you are speaking or not. If you want your avatar to look a little bit more alive, you should also upload a version with closed eyes for both, so the program can let your avatar close its eyes for blinking. I used Krita and my Graphic Tablet for this work. Since I already worked on photo editing and did my fair share of digital painting, this was quite a quick task for me. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652236133342/g1DP8n3zK.png" alt="image.png" /></p>
<p>To get a more lively animation when you avatar is talking, you can add several different pngs with different shaped and opened mouth per drag and drop onto the importer </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652236273749/FGAVEx0YW.png" alt="image.png" /></p>
<p>I created eight images in total that build the animation. I used reference templates for the different mouth shapes so I could create them from scratch and also made sure the jaw would move for the right vowels. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652236307639/B9N9dYA4I.png" alt="image.png" /></p>
<p>Once you have set up Gazo Tuber correctly and also connected your microphone, you can implement the avatar in your screen recording or streaming software as a new scene. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652236524200/q7xwJfC6k.gif" alt="obs64_9zoXSvIALc.gif" /></p>
<p>What I love about tech is that different skills combined can lead to the most creative solutions out there. I also think that art tools powered by AI don't replace artists but they will support artists in the future. When I learned to create references for artwork by printing images and then cut them and glue them together as a collage, artists in the future will have a tool to which they describe what the reference will look like. </p>
<p>If you want to create your own animated speaking avatar, just follow the links on top of the description! </p>
]]></content:encoded></item><item><title><![CDATA[Introducing: LeapStone - A Lost Ark Quest Tracker made in Svelte Kit]]></title><description><![CDATA[Around 2 months ago I started playing the MMO Lost Ark in my free time. At first installed out of curiosity, I quickly fell in love with the character creation and story. One thing that usually comes with MMOs is an almost never end list of tasks the...]]></description><link>https://blog.tiia.rocks/introducing-leapstone-a-lost-ark-quest-tracker-made-in-svelte-kit</link><guid isPermaLink="true">https://blog.tiia.rocks/introducing-leapstone-a-lost-ark-quest-tracker-made-in-svelte-kit</guid><category><![CDATA[Svelte]]></category><category><![CDATA[Tailwind CSS]]></category><category><![CDATA[CSS Animation]]></category><category><![CDATA[CSS]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Fri, 08 Apr 2022 11:31:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1649405543559/KsZWfoIPK.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Around 2 months ago I started playing the MMO <a target="_blank" href="https://www.playlostark.com/en-gb">Lost Ark</a> in my free time. At first installed out of curiosity, I quickly fell in love with the character creation and story. One thing that usually comes with MMOs is an almost never end list of tasks the developers give you on a regular basis to make sure you keep logging into your account and keep playing. </p>
<p>I am already bad at keeping track of tasks in real life. Let alone in a game. So the idea was born to make a little something something in <em>notion</em> and call it a day. But wait, why doing something in notion when we simply can make a website in <a target="_blank" href="https://kit.svelte.dev/">Svelte Kit</a>? </p>
<p>About 3 weeks ago the planning with <a class="user-mention" href="https://hashnode.com/@coldino">coldino</a> on how to properly set a project like this up, started and since then we have been launching into Beta. I will tell you how we organized the project and which challenges we had to overcome to end with the project we have now. </p>
<p>LINK: https://leapstone.netlify.app/</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1649415852953/-cjEb8Ty5.png" alt="LeapStone" /></p>
<h2 id="heading-svelte-kit-huh">Svelte Kit, huh?</h2>
<p>Yea Svelte Kit has become our favourite framework to work with, because of how quick it is to set up and build with several people on it at the same time. So it was no question to use it again for this project. </p>
<h2 id="heading-tailwind-and-daisy-ui">Tailwind and Daisy UI</h2>
<p>This happened to be the first time I was working with Tailwind and also the first time working with <a target="_blank" href="https://daisyui.com/">Daisy UI</a>.  My opinions about Tailwind are still a bit split. I did learn Vanilla CSS and that's what's imprinted into my brain. Tailwind felt like using <em>inline style</em>, and it just felt wrong to me to the core. But after a while I could see why people like to use it, because it makes layouting pretty quick and changes to one element only change the element and not accidentally many other things in projects. </p>
<p>With <strong>Daisy UI</strong> we got the opportunity to use the predefined Themes as our Light and Dark Mode. Not only that, because Lost Ark being a Korean game, I insisted on adding a cute <em>Pink Mode</em> as well. It fits the overall mood of the game quite well. </p>
<p>We used the predefined Themes from Daisy UI but tweaked them to our liking. Not only that, but we also used the <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/hue-rotate">CSS filter</a> <code>"hue-rotate"</code> to change the colour in the graphic in our header to fit in with the changed colour. It can be seen here: 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1649416147544/JyP8FyRsF.gif" alt="Switch between different colours" /></p>
<h2 id="heading-issues-during-the-project">Issues during the project</h2>
<p>Since this project heavily relies on data out of the game – data we didn't have – we had to rely on friends and active players to give us their feedback and share their knowledge with you. We also constantly recategorized the tabs and tables to make a logical sense to us. </p>
<p>The worst thing would be that the whole page was so overwhelming that you don't know how to use it. So when you enter the page for the first time, you will not see a lot until you actually enter data. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1649416502213/yZyfoO_0I.png" alt="No data view in leapstone" /></p>
<p>As soon as you enter a character name you will see the relevant data. My idea of making interfaces like this is to hide every data that is not needed for the user and slowly introduce them piece by piece to the whole application. When its the time for it. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1649416628675/hAvAsdV2u.png" alt="character menu with subpage" /></p>
<p>The other problem we ran into is, that there is practically no API to the game we could use. That is somewhat heartbreaking because that way we could pull certain data directly into the application and reduce the manual work the user has to do. Many games offer these APIs but not all of them and in this case the game is still very new. As soon as we do get access to an API, we will try to implement it that way. </p>
<h2 id="heading-user-feedback">User feedback</h2>
<p>The user feedback was very constructive and supportive. We got many amazing suggestions towards future features and changes to existing features. Having a dedicated community of gamers and giving them the opportunity to help shape a tool that is dedicated to them is the kind of community empowerment that I always loved about small development projects. </p>
<h3 id="heading-plans">Plans</h3>
<p>We have a lot more plans and our To-Do list doesn't shrink the further we go, but this project has been a positive learning experience for me on how to work on a product that will be used by potentially a lot of people.  </p>
<hr />
<h3 id="heading-relevant-links">Relevant Links:</h3>
<ul>
<li><a target="_blank" href="https://leapstone.netlify.app/">LeapStone</a></li>
<li><a target="_blank" href="https://www.playlostark.com/en-gb">Lost Ark</a></li>
<li><a target="_blank" href="https://kit.svelte.dev/">Svelte Kit</a></li>
<li><a target="_blank" href="https://daisyui.com/">Daisy UI</a></li>
<li><a target="_blank" href="https://tailwindcss.com/">Tailwind</a> </li>
</ul>
]]></content:encoded></item><item><title><![CDATA[What I learned from building websites after a 10-year freelancing hiatus]]></title><description><![CDATA[Ten years ago I worked as a freelancer building websites with WordPress. I created custom Designs/Templates with Photoshop, HTML, PHP, and CSS. My main customers were people who wanted to switch from their static HTML page to a system where they coul...]]></description><link>https://blog.tiia.rocks/what-i-learned-from-building-websites-after-a-10-year-freelancing-hiatus</link><guid isPermaLink="true">https://blog.tiia.rocks/what-i-learned-from-building-websites-after-a-10-year-freelancing-hiatus</guid><category><![CDATA[Web Development]]></category><category><![CDATA[frontend]]></category><category><![CDATA[WordPress]]></category><category><![CDATA[cms]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Mon, 04 Apr 2022 02:35:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1649039614889/ka2suvE_h.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ten years ago I worked as a freelancer building websites with WordPress. I created custom Designs/Templates with Photoshop, HTML, PHP, and CSS. My main customers were people who wanted to switch from their static HTML page to a system where they could easily maintain the content themselves without breaking the website. WordPress was back then the easiest choice. It was super user-friendly and Content could be made without breaking the website layout. </p>
<h2 id="heading-1-css-got-so-much-easier-yet-so-much-complicated">1. CSS got so much easier yet so much complicated!</h2>
<p>When I started working in freelancing, the “box-system” was just about to replace websites that where build with tables. Working with float started to become popular and was also quite tricky back then. Mobile designs were not really a thing, and you would have to either make 2 different pages (the popular m.-subdomains) or you completely ignored mobile altogether. </p>
<p>When I came back, flex- and grid-systems made building complicated layouts so much easier, but on the other hand, setting up a flex or grid for me is still more complicated than a float. But with practice this will surely change. </p>
<p>Designs are responsive now, so forget about all your fixed sizes (back then we did pixel perfect designs) and accept the fact that your website will look different depending on which device you open it. The main thing is – it should look good but doesn't have to be identical. </p>
<p>CSS-Frameworks exist and help with the speed of designing a page. </p>
<p>Accessibility is a thing that's taken serious. Back then we could only dream about that. </p>
<h2 id="heading-2-cms-are-not-the-solution-for-everything">2. CMS are not the solution for everything.</h2>
<p>With frameworks like react, svelte or Django - not every website has to be a blog or be interactive. I often see interactive elements being outsourced to other platforms. Third party comment-systems for websites just started to become a thing and communication happens on social media instead of website owned forums or communities. </p>
<p>I also frequently see micropages or 1-page-website solutions. No subpages but everything on the frontpage. That was almost impossible to think about back then.</p>
<h2 id="heading-3-the-expectations-are-insanely-high">3. The expectations are insanely high!</h2>
<p>Back then the expectations towards a website were high but not to the standards as they are now. A little JavaScript was already the crème de la crème.  These days it's completely normal and almost expected. People are even surprised that you can be a web-developer with only HTML and CSS. </p>
<p>With the high expectations there are also more sources to learn from on how to create a high quality website. Back then the sources were super limited. YouTube was a thing but not as much as it's now. </p>
<h2 id="heading-4-the-payment-is-better">4. The payment is better!</h2>
<p>The value of having a professional website is higher these days. Back then it was a “nice to have” but “we don't want to pay a lot for it.” A lot of websites I had to fix were made by peoples' nephew's after school, edited several times by several people in dreamweaver or FrontPage and loaded with bloat those editors added over time. </p>
<p>The higher expectations now support professionals in doing professional work and getting professionally paid. </p>
<h2 id="heading-5-web-development-has-a-better-reputation">5. Web development has a better reputation.</h2>
<p>From “some nerds doing something with computers” to “an actual job”. Everything is professionalized and I love it. I would love to see this with more digital professions in the future. </p>
<h2 id="heading-two-things-that-have-not-changed">Two things that have not changed:</h2>
<ol>
<li><p>It is still worth learning web dev. It's a constant development that introduces new technologies and solutions over time. </p>
</li>
<li><p>It's really rewarding learning all those new technologies on top of your old knowledge and almost doing time travel to better and improved times. I enjoyed learning about the design philosophies and technical solutions. </p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Stop hyperfixating on "Soft Skills" and start working on expertise]]></title><description><![CDATA[Tech Twitter is at it again. Gatekeeping at its best. This tweet was forwarded into my timeline a few days ago. 

Doesn’t matter how good of an engineer you are.
If you can’t work well with people, you’ll only hurt the team.

I am not going to link y...]]></description><link>https://blog.tiia.rocks/stop-hyperfixating-on-soft-skills-and-start-working-on-expertise</link><guid isPermaLink="true">https://blog.tiia.rocks/stop-hyperfixating-on-soft-skills-and-start-working-on-expertise</guid><category><![CDATA[Soft Skills]]></category><category><![CDATA[hiring]]></category><category><![CDATA[job search]]></category><category><![CDATA[Diversity]]></category><category><![CDATA[Inclusion]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Thu, 31 Mar 2022 11:20:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1648725533930/aEJRYYnOz.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tech Twitter is at it again. Gatekeeping at its best. This tweet was forwarded into my timeline a few days ago. </p>
<blockquote>
<p>Doesn’t matter how good of an engineer you are.
If you can’t work well with people, you’ll only hurt the team.</p>
</blockquote>
<p>I am not going to link you to the person posting it because she has got enough backlash already, but I want to use this tweets content to discuss with you why this is a harmful stance. </p>
<h2 id="heading-what-are-soft-skills">What are “Soft Skills”?</h2>
<p>This is where the whole problem already starts. There is no universal definition what soft skills really are. The term came up the first time in the 1960s in the US-Army to describe anything that was not work on machinery that would lead soldiers and win wars. The Army is a strict top down hierarchy where the single person doesn't matter too much. Personal opinions, and thoughts are often unimportant and only the order from above matters. </p>
<p>Since then many people tried to redefine the term but never came to a conclusion what they actually mean with it. So Soft Skills could basically mean anything that is not your core professional knowledge you need for your job. </p>
<p>These days the definition will simply be copied from previously published lists. Very rarely companies define the needed soft skills themselves. So when an employer demands people to have soft skills, there is no real definition what they actually demand. It could be nothing. It could be everything. This can be problematic.  </p>
<h2 id="heading-how-have-soft-skills-been-defined-in-the-past">How have “Soft Skills” been defined in the past?</h2>
<p>Since there is a lack of a universal definition, the term has been used and abused by companies in the past. From harmless things like “Communication Skills” over to “Loyalty and dedication towards the company” the ability to “follow commands” and even to “looks”. Soft Skills have always been a term of controversy and also discrimination at the work place. </p>
<p>According to linguist Deborah Cameron diversity in communication skills does train people a better understanding of the communication itself and leads to harmony and mutual understanding. She also notes that the “often praised linguistic uniformity as an ideal” has been outdated with globalization itself. </p>
<h2 id="heading-soft-skills-as-an-oppression-of-cultural-differences">Soft Skills as an oppression of cultural differences</h2>
<p>A big factor of critique that is typically mentioned is that “Soft Skills” do not take cultural differences into consideration because they are frequently connected to character traits. That's why some companies define “adapting to the countries behaviour and culture”  a soft skill. In Canada, you will for example have to gather “Canadian Experience” as a Soft Skill in order to get a job as an immigrant. If you can't prove that you have the experience you are typically forced to enter low or no pay jobs even as a skilled worker. </p>
<p>The Ontario Human Rights Organization mentioned this in their paper: “<a target="_blank" href="https://www.ohrc.on.ca/en/common-questions-policy-removing-%E2%80%9Ccanadian-experience%E2%80%9D-barrier-fact-sheet">Common questions: Policy on removing the “Canadian experience” barrier (fact sheet)</a>” </p>
<blockquote>
<p>[...] An employer may not state openly that Canadian experience is needed, but could give more value to it than to non-Canadian experience. Employers may also <strong>devalue</strong> or <strong>discount</strong> foreign experience, or require knowledge they assume someone can only get in a Canadian workplace (for example, social or other “soft” skills).</p>
</blockquote>
<p>Further they also say: </p>
<blockquote>
<p>Avoid using the term “soft skills” because it is subjective and may be defined in many different ways. If a job applicant does not know what an employer means by “soft skills,” then it will be hard to show they have these skills.</p>
</blockquote>
<p>They then explain to name the <em>competencies</em> required for the position of the job the person is interviewing for. They also have to explicitly mention that these competencies can be acquired outside of Canada. </p>
<p>Does this sound like discrimination to you? </p>
<h2 id="heading-and-then-there-is-this-thing-about-inclusion">And then there is this thing about inclusion</h2>
<p>I already mentioned in my last article that “Soft Skills” are often used as an excuse to exclude disabled people from workplaces. Making vague and unreasonable requests towards the “Soft Skill” requirement can even count as 'Disability Discrimination* which is against the law in many countries. </p>
<h2 id="heading-so-why-is-this-tweet-a-problem">So why is this tweet a problem?</h2>
<blockquote>
<p>If you can’t work well with people, you’ll only hurt the team.</p>
</blockquote>
<p>Let's give her the benefit of the doubt that it might have been written out of personal experience, because someone in the team has been willingly and actively disturbing the workplace. We all know these self entitled, self obsessed people who need to rub into everyone's faces how good they are and get their fix from talking everyone down. 
If that was the case. Totally agree. </p>
<p>But this tweet was written SO vague that it hurt more people that it helped people. It doesn't specify “working well” but it says you actively <em>hurt</em> the team. Comparing the inability of figuring out social interactions with physical harm. That is bold and dangerous. Especially when you talk to people who are in training or jobseekers. You create a climate that defines this “we vs. them” without saying who “them” are, but making clear they are against what “we” stand. </p>
<p>On top of that. A team HAS to be diverse. A team HAS to bring different views, perspectives, and skill sets. You may have a person that lacks your demand of small talk abilities but doesn't hesitate to get up at 4am when your servers crash to get it running again without complaining. </p>
<p>Or you may hire an autistic person that your colleagues consider rude, because of their direct honesty. Disregarding that autism can also be connected to loyalty and the will to do the “right thing” even if it does not profit them but the big picture. </p>
<h2 id="heading-how-to-communicate-better">How to communicate better?</h2>
<p>A better solution would have been to say “If you can't work well with a team here are some resources how to work on yourself”. Or: These are the <em>competencies</em> we value and actively support in our team. Being specific and reasonable.</p>
<p>Creating a climate of openness, inclusivity. Reaching hands instead of closing doors for vague reasons. </p>
<h2 id="heading-what-to-do-when-looking-for-a-job">What to do when looking for a job?</h2>
<p>To my headline—Your core abilities for your job are the ones you should train for. They are <em>measurable</em> and can be tested in interviews. Social Skills can not be measured and if a company wants to get rid of you and wants to use Soft Skills as a reason, they will find one regardless. </p>
<p>If your interviewer or manager is unaware of their own lack of communication skills (and oh boy do I have stories about that) then there is nothing you can do. Even with your best communication skills.  </p>
<p>So influence what you can influence. Your knowledge. Don't put even more pressure on you than you actually have to. Don't let a buzzword discourage you from starting a career. Also train yourself to spot these red flags when applying for jobs and ask your interviewer directly how they define Social or Soft-Skills when it is brought up either in an interview or in the job advertisement. </p>
<p>Photo by <a href="https://unsplash.com/@adigold1?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Adi Goldstein</a> on <a href="https://unsplash.com/s/photos/learning-programming?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
]]></content:encoded></item><item><title><![CDATA[2 BIG Programming Book Bundles (Python, C#, Rust, Golang) You Don't Want To Miss Out On | Humble Bundle]]></title><description><![CDATA[Are you just dabbling into Programming and you wonder which books will be helpful for it or are you still wondering how to get your hands on books and do you also want to support a good cause? Nothing easier than that because Humble Bundle published ...]]></description><link>https://blog.tiia.rocks/2-big-programming-book-bundles-python-c-rust-golang-you-dont-want-to-miss-out-on-or-humble-bundle</link><guid isPermaLink="true">https://blog.tiia.rocks/2-big-programming-book-bundles-python-c-rust-golang-you-dont-want-to-miss-out-on-or-humble-bundle</guid><category><![CDATA[learning]]></category><category><![CDATA[Machine Learning]]></category><category><![CDATA[Python]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[books]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Tue, 15 Mar 2022 12:58:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1647347373417/Syo_XjKWt.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Are you just dabbling into Programming and you wonder which books will be helpful for it or are you still wondering how to get your hands on books and do you also want to support a good cause? Nothing easier than that because Humble Bundle published two books bundles that are available for a few more days that cover all those areas. </p>
<h2 id="heading-book-bundle-all-in-one-python-by-packt">BOOK BUNDLE ALL-IN-ONE-PYTHON by PACKT</h2>
<p>This bundle is for my Python friends out there. Thirteen days are left for you to get 24 books for less than €16. </p>
<p>The books they offer are: </p>
<ul>
<li>Expert Python Programming</li>
<li>Python Natural Language Processing Cookbook </li>
<li>Machine Learning Engineering with Python</li>
<li>Python Ethical Hacking from Scratch</li>
<li>Python Network Programming Techniques</li>
<li>Clean Code in Python</li>
<li>Data Science Projects with Python</li>
<li>Interpretable Machine Learning with Python</li>
<li>Web Development with Django</li>
<li>Learning OpenCV 4 Computer Vision with Python 3</li>
<li>Mastering Python Networking</li>
<li>Hands-On Data with Pandas</li>
<li>Quantum Computing in Practice with Quiskit and IBM Quantum Experience</li>
<li>40 Algorithms Every Programmer Should Know</li>
<li>Machine Learning for Algorithmic Trading</li>
<li>Practical Python Programming IoT </li>
<li>Python for Geeks</li>
<li>Hands-On Financial Trading with Python</li>
<li>Crafting Test-Driven Software with Python</li>
<li>Scientific Computing with Python</li>
<li>Python Object-Oriented Programming</li>
<li>Learn Python Programming</li>
<li>Python Data Analysis</li>
<li>Django 3 By Example</li>
</ul>
<p>This bundle basically covers all your needs for Python as a learner or even Intermediate or Professional. 
You will find this bundle with <a target="_blank" href="https://www.humblebundle.com/books/allinone-python-packt-books?partner=tiiaaurora">THIS LINK</a> *.</p>
<p>The organisation you support with this bundle is DirectRelief: </p>
<blockquote>
<p>Direct Relief is a nonprofit humanitarian organization that provides emergency medical assistance and disaster relief in the United States and internationally.</p>
</blockquote>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/DirectRelief/status/1503395408214593541">https://twitter.com/DirectRelief/status/1503395408214593541</a></div>
<h2 id="heading-the-joy-of-coding-book-bundle-by-no-starch-press">THE JOY OF CODING BOOK BUNDLE by NO STARCH PRESS</h2>
<p>The rewarding art of the algorithm </p>
<p>No starch press is probably my favorite publisher when it comes to programming books because their books are fun and extra. Not only the design but also the way they handle topics that might seem boring to begin with. For less than €27 you will get these 18 books:</p>
<ul>
<li>Rust for Rustaceans</li>
<li>Computer Graphics from Scratch</li>
<li>Learn to Code by Solving Problems</li>
<li>Introduction to Computer Organization</li>
<li>Effective C</li>
<li>Algorithmic Thinking</li>
<li>White Great Code, Vol. 1</li>
<li>White Great Code, Vol. 2</li>
<li>White Great Code, Vol. 3</li>
<li>Hardcore Programming for Mechanical Engineers</li>
<li>The Rust Programming Language</li>
<li>The Secrets Life of Programs</li>
<li>Racket Programming the Fun Way</li>
<li>Network Programming with Go</li>
<li>Land if Lisp</li>
<li>Learn You a Haskell for Great Good</li>
<li>If Hemingway Wrote JavaScript</li>
<li>Clojure for the Brave and True</li>
</ul>
<p>These books cover a wide spectrum of topics to chose from, no matter what your learning level is. The book bundle that has a value of over €600 is available under <a target="_blank" href="https://www.humblebundle.com/books/joy-coding-no-starch-press-books?partner=tiiaaurora">THIS LINK</a> *. </p>
<p>With this bundle you support the organizations: Let's Encrypt and the No Starch Press foundation: </p>
<p>Let's Encrypt: </p>
<blockquote>
<p>Let's Encrypt is a non-profit certificate authority run by Internet Security Research Group that provides X.509 certificates for Transport Layer Security encryption at no charge.</p>
</blockquote>
<p>No Starch Press Foundation: </p>
<blockquote>
<p>The No Starch Press Foundation is an IRS 501 (c) (3) tax-exempt PUBLIC nonprofit charity. Our Mission is to support and grow the collective knowledge and contributions of the worldwide hacker community.
We support hackers of all types, wherever you are in the world, regardless of experience, whether that’s the passionate beginner or the lifelong hacker wishing to make a broader contribution to the hacker community and the world.</p>
</blockquote>
<p>Don't wait too long because these book bundles won't be available forever. I already claimed both of them, and I am looking forward working with them to get better at programming. </p>
<p>-- </p>
<ul>
<li>Links are Affiliate Links</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[I was told, I don't belong into tech, but I did it anyway #WomenWhoTech]]></title><description><![CDATA[Whatever people say that you don't belong into a space—don't listen to them because if you want to be in a space, you belong into the space. 
“You don't belong here” – The first time
When I went to what is probably the German equivalent to High Schoo...]]></description><link>https://blog.tiia.rocks/from-how-i-was-told-that-i-dont-belong-into-tech-to-doing-it-anyway-womenwhotech</link><guid isPermaLink="true">https://blog.tiia.rocks/from-how-i-was-told-that-i-dont-belong-into-tech-to-doing-it-anyway-womenwhotech</guid><category><![CDATA[womenwhocode]]></category><category><![CDATA[WomenWhoTech]]></category><category><![CDATA[Python]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Mon, 14 Mar 2022 17:01:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1647277202851/okCLwdtvn.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whatever people say that you don't belong into a space—don't listen to them because if you want to be in a space, you belong into the space. </p>
<h2 id="heading-you-dont-belong-here-the-first-time">“You don't belong here” – The first time</h2>
<p>When I went to what is probably the German equivalent to High School (the school that starts at age 11 and goes till age 16 or 18 depends on which further education you want to have) I had to take classes after school for 2 grades to fulfil my requirement of after school activities for my grades. 
Since I went to a fairly small school, the amount of after school classes I could take was fairly limited. </p>
<p>We had this choice: “Art”, “Photography”, “Cooking and Cleaning”, “Soccer”, and “Programming”. </p>
<p>I applied for programming, since I was super interested in computers, and we didn't have any at home at that point and I got denied with the words that “For girls it is required to participate in Cooking and Cleaning for one year.” I was mad, because I was already doing most of the housework at home due to my mothers chronic illness and I had my doubts if that class would teach me anything. But I took back my application to the Programming class and went into the cooking course. </p>
<p>I was not wrong and all I learned was cooking potatoes, making Toast Hawaii and calculating nutritions for my “husband”. 😫</p>
<p>After the worst year of after school classes I applied again the year after, and I was told then, that they are already that far in the classes (since it was a continued course and not a 1-year course) that I couldn't join any more. And quite frankly I would anyway be too much if a distraction to the boys there. I went to the school principal, but he agreed with the teachers opinion and that was the first time I heard “You don't belong there. Maybe you just take the cooking course again?” I didn't but went to Photography instead.  I don't regret that class, because it was fun, but I was still mad at the teacher in the programming class. </p>
<h2 id="heading-you-dont-belong-herethe-second-time">“You don't belong here”—The second time</h2>
<p>After high-school I went into a specific school to get my job qualifications. I worked as a Monument Technology Assistant. I first worked in the field of preserving old buildings and educate house owners on how they can and cannot treat their old houses. Later I switched into archaeology (“Monuments” defined by German Law can be above and underground, so archaeology was still a fitting field). </p>
<p>During that job, I had to use CAD programs and Excel to do technical drawings not only of buildings but even later for the archaeology. It's a lot more maths than you might think it is. </p>
<p>My main teacher was kind of a macho and would constantly tell us girls to not break the computers, to use the mouse the right way around and to better go home to our husbands (??) and not do technical work. </p>
<p>One day one of the computers wouldn't boot up because someone of the computer classes before must have broken something. Unfortunately it was the computer I used. My teacher came to me, yelled at me and said if I can't even boot up a computer I should stay away from all technology and even put an application for unemployment money on my desk. (He would carry them around for when he wanted to terrorize students) </p>
<h2 id="heading-you-dont-belong-herethe-last-time">“You don't belong here”—The last time</h2>
<p>Five years back I got my diagnosis for ASS/ASD (Autism Spectrum Disorder) and unfortunately it is already called a disorder which makes people around you think that you're not capable of anything any more yourself. This was clearly communicated with me after my diagnosis.    </p>
<p>I was told that my condition wouldn't change and from now on we should stop trying to set a foot in anything career or future wise. I was heartbroken. Furthermore, I was told there is no space for me. </p>
<p>On top many people I connected with on social media especially Tech Twitter celebrated a very toxic and ableists way of gate keeping the tech space by pointing out all the things a neurodiverse person would have trouble with and say “these are more important than knowing how to program. If you can't do these, then you don't belong in tech.” </p>
<p>It was stuff like “Body language”, “Self organization”, and also things like “Working in a Team” but also ridiculous things like “Confidence”, “Empathy”, “Focus” .  </p>
<p>Here I am not saying these things are not important. But I am saying that you can get around many of those things if you want to be inclusive. You still can be a good programmer even if you lack these things due to disability. </p>
<p>I was even more disappointed hearing many of these things not only from men but also  from women who seemed to only repeat the things men have told them. It was disappointing but it stopped being discouraging. </p>
<h2 id="heading-do-what-you-want-to-do-and-dont-let-anyone-discourage-you">Do what you want to do and don't let anyone discourage you</h2>
<p>I didn't care about not “belonging into a space”. I still started my journey into learning how to program. Not only that, but I didn't listen to people who said I need a university degree. Likewise, I didn't listen to people telling me I need to be a social butterfly. I don't want to throw a dinner party—I want to find solutions for problems and want to use my highly analytical brain for it, thank you very much. </p>
<p>We don't have to be “one fits them all” but we can find our place in this gigantic field with never ending job opportunities and positions. And maybe also positions that yet have to be invented. </p>
<h3 id="heading-be-brave-and-be-loud">Be brave and be loud.</h3>
]]></content:encoded></item><item><title><![CDATA[We built a Wordle Solver in Svelte - Here is how we did it]]></title><description><![CDATA[Why this project?
While brainstorming for a pretty good project to explain how you can use your programming skills to solve problems, we had some interesting discussions on which topics would be interesting. We couldn’t really settle for one, so we l...]]></description><link>https://blog.tiia.rocks/we-build-a-wordle-solver-in-svelte-here-is-how-we-did-it</link><guid isPermaLink="true">https://blog.tiia.rocks/we-build-a-wordle-solver-in-svelte-here-is-how-we-did-it</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[Svelte]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Thu, 27 Jan 2022 12:56:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1643285665209/MmwpZ9dsP.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-why-this-project">Why this project?</h1>
<p>While brainstorming for a pretty good project to explain how you can use your programming skills to solve problems, we had some interesting discussions on which topics would be interesting. We couldn’t really settle for one, so we let our ideas settle a little bit to get the creativity growing. </p>
<p>A few days ago people on Twitter started to use and play Wordle. It was suddenly everywhere. Wordle the Word-Quiz. You get one chance per day to guess a 5 letter word in 6 tries. Every time you try, the game tells you if your letters are correct, correct but on the wrong spot or not even in the word. </p>
<p>Everyone was hooked and the Twitter timelines were filling with Wordle Result patterns of people playing the game. As a programmer, you may think “Hmm. A problem that has to be solved under certain conditions, that’s something a program could do.” And when I mentioned this idea we immediately knew - This should be our first project. </p>
<p><a target="_blank" href="https://codingchannel-wordle-solver.netlify.app/">Here you can find the solver if you want to play with it first</a>. </p>
<h1 id="heading-how-does-the-game-work">How does the game work?</h1>
<p>In order to understand how to make a solver, we had to understand how the game works. So we spend a few more or less successful days following the daily wordle quizzes available.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643284536719/BGVnDQlo2G.png" alt="image.png" /></p>
<p>You have six tries to find a 5-letter word unknown to you. When you enter a word the quiz will give you hints. It marks letters as gray that are not in the word, it marks them as yellow when they are in the word but on another spot and it will mark them in green when they are at the right spot. Following these clues, you need to find out which word the quiz is looking for. </p>
<p>The game rules are easy to understand but coming up with words while playing it, is the hard part. </p>
<p>After understanding the rules, we wrapped them up and went into theorycrafting the solution. </p>
<h1 id="heading-theorycrafting-in-jupyter-notebooks">Theorycrafting in Jupyter Notebooks</h1>
<p>The first prototype was then made in Python - more precisely in a Jupyter Notebook. Jupyter is a great way to experiment and theorycraft because instead of having to run the whole program or code over and over again when you make changes, you can decide to rerun only the cells that you change. The workflow when trying things out is so much nicer in Jupyter Notebooks that we took this extra step before even considering making a fully functional website for the Solver. </p>
<h2 id="heading-the-basic-functionality-on-how-the-solver-is-supposed-to-work">The basic functionality on how the Solver is supposed to work</h2>
<p>We have a list of possible 5-letter words which could all be the word Wordle is looking for. We then feed the program the first word we typed into Wordle and then tell the program what kind of feedback we got back. Is the letter wrong, right but on the wrong spot, or on the right spot? </p>
<p>The program saves the information about every letter and then uses these constraints to filter out words that can’t be the result anymore. It then gives out a list of words that are still in the race. </p>
<p>From there we enter the next word and again give the solver the constraints coming from Wordle. The list of possible words will shrink extremely fast and we usually got the right word within 2 or 3 rounds depending on how strong our starter word was. </p>
<h1 id="heading-setting-up-svelte-as-the-framework-of-choice-to-make-a-wordle-solver-website">Setting up Svelte as the Framework of choice to make a Wordle Solver Website</h1>
<p>Since this is not going to be a tutorial on how to set up Svelte as a project I will only give a brief explanation on how to do it. I will later give a longer and better tutorial for setting up your own Svelte and Svelte-Kit projects but since this should be mainly about the Wordle solver, we quickly summarize it. </p>
<pre><code>npx degit sveltejs<span class="hljs-operator">/</span>template wordle<span class="hljs-operator">-</span>solver<span class="hljs-operator">-</span>svelte
</code></pre><p>This command fetches the files from GitHub and installs them locally + creates a folder named “wordle-solver-svelte”.</p>
<pre><code>cd wordle<span class="hljs-operator">-</span>solver<span class="hljs-operator">-</span>svelte
</code></pre><p>This command then changes into the folder that you just created. </p>
<pre><code><span class="hljs-built_in">npm</span> install
</code></pre><p>This command then installs the dependencies</p>
<pre><code><span class="hljs-built_in">npm</span> run dev
</code></pre><p>And with this command, you start your local server that is then available under <a target="_blank" href="http://localhost:8080/">http://localhost:8080/</a>.</p>
<p>Changes you make to the code appear almost immediately on the page and that way you can always see what you changed. </p>
<h1 id="heading-creating-the-layout-first">Creating the layout first</h1>
<p>Since we pair programmed on the website together we split up to work on different files with VS-Code Live Share. While I took care of the CSS, fonts, and color schemes, Coldino worked out how we design the user interface used to enter the words from Wordle and how to decide about the different stages letters can have. </p>
<p>We had a few different ideas about that input which all had their pros and cons especially considering we wanted to make it usable for mobile and PC. We then decided to have a field under every letter that allows toggling between the different stages. So you basically tap or click until the letter has the color Wordle tells you. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643284298928/UAk67iSkK.png" alt="Word Input" /></p>
<p>The overall design was a little inspired by magazines, to give the site a little bit of the feel of solving a crossword puzzle. The idea was to keep it as compact as possible that you neither have to scroll a lot on PC nor on your phone to use all parts of the website. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643284328007/67okY2CTK.png" alt="Website layout" /></p>
<p>We also made sure to integrate a colorblind mode, because Wordle heavily relies on colors for solving the quiz and therefore offers a colorblind mode as well. To cater towards accessibility for the site, we integrated it in a similar way. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643284363583/R8ZohAetY.png" alt="Colorblind mode" /></p>
<h1 id="heading-how-the-solver-works">How the Solver works</h1>
<p>Once the Layout was decided, we needed to add the brain to the website - the actual solver. Because we already built a complete functional command-line version of the Wordle Solver, we just needed to translate the logic used there into JavaScript or rather the Svelte interpretation of JavaScript. Here’s how it works:</p>
<p>To solve a problem like Wordle, one easy way is to build up a set of “constraints”, or restrictions - information on what has been discovered so far. These constraints can be improved as more information is discovered and used to scan through the word list to find possible matches. In our case we decided to keep the following information for each possible letter:</p>
<pre><code class="lang-jsx"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LetterInfo</span> </span>{
    <span class="hljs-keyword">constructor</span>() {
        <span class="hljs-built_in">this</span>.min_count = <span class="hljs-number">0</span>;  <span class="hljs-comment">// Letter must appear at least this many times</span>
        <span class="hljs-built_in">this</span>.max_count = <span class="hljs-number">5</span>;  <span class="hljs-comment">// Letter must appear no more than this many times</span>
        <span class="hljs-built_in">this</span>.correct = [];   <span class="hljs-comment">// Positions that must contain this letter</span>
        <span class="hljs-built_in">this</span>.present = [];   <span class="hljs-comment">// Positions that cannot contain this letter</span>
    }
}
</code></pre>
<p>For each letter we work out how many times it can be present in a word, the positions it must be present in, and the positions it must not be present in. As the user enters more guesses we refine and improve these constraints and the list of matching words shrinks!</p>
<h2 id="heading-1-building-up-the-constraints">1. Building up the constraints</h2>
<p>There are three different potential states for each letter we input. “Absent”, which means that it’s a letter that can’t be found in the word we are looking for. The second state is called “Correct” which means the letter is in the word and also already on the correct spot within that word. And the last state is “Present” and it means the letter is present but just not on the spot we put it on. </p>
<p>When we first worked on these definitions, we ran into a problem we hadn’t considered before. If our example word had the same letter twice but the letter only existed once in the word we are looking for, it would mark one letter either as present or correct and the second one as absent. That caused the letter to be removed completely from our possible combinations. So we had to build in a little safety net that would not blow up our program in these cases. “Absent” letters are not treated as booleans anymore. Instead, we count the letters that appear. </p>
<p>First, we make a function that can analyse a single word. The input parameters are the <code>word</code> itself, the  <code>states</code> for each letter (absent/present/correct), and the dictionary we use to collect constraints, which we call <code>knowledge</code>.</p>
<p>Each letter-state pair is checked and used to generate new constraints for our knowledge base. As we go through each letter of the word we also keep track of how many times the letter is seen.</p>
<ul>
<li>If the state is “Absent” this is easy - we reached the maximum amount of times that this letter can appear in the word - this is our solution to the “double letter” problem above. This amount is recorded in the letter’s <code>max_count</code> field.</li>
<li>If the state is “Correct” we simply make a note of which position the letter occurs by adding the position to the letter’s <code>correct</code> array. Keep in mind - even correct letters can appear more than once in the word and so we increase the <code>min_count</code> and keep the possibility open to deal with the letter again later.</li>
<li>If the state is “Present” we just need to make a note that this letter cannot be in this position. To do this we store it in the <code>present</code> array. We also increase <code>min_count</code> to say how many of these letters must be present.</li>
</ul>
<p>By the end of this function, we’ve hopefully learned a little more about which letters can appear in the target word, where they can and can’t be used, and how many times they can appear.</p>
<pre><code class="lang-jsx"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">analyseWord</span>(<span class="hljs-params">knowledge, word, states</span>) </span>{
    word = word.toLowerCase();
    <span class="hljs-keyword">const</span> foundLetters = {};

    <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i=<span class="hljs-number">0</span>; i&lt;<span class="hljs-number">5</span>; i++) {
        <span class="hljs-keyword">const</span> char = word[i];
        <span class="hljs-keyword">const</span> state = states[i];

        <span class="hljs-comment">// Keep track of how many times letters appear in this word</span>
        foundLetters[char] = (foundLetters[char] || <span class="hljs-number">0</span>) + <span class="hljs-number">1</span>;

        <span class="hljs-comment">// Ensure we have an info object for this letter</span>
        <span class="hljs-keyword">if</span> (!(char <span class="hljs-keyword">in</span> knowledge)) {
            knowledge[char] = <span class="hljs-keyword">new</span> LetterInfo();
        }

        <span class="hljs-keyword">const</span> info = knowledge[char];

        <span class="hljs-keyword">if</span> (state === <span class="hljs-string">'absent'</span>) {
            <span class="hljs-comment">// Incorrect: limit the count of this letter</span>
            info.max_count = <span class="hljs-built_in">Math</span>.min(info.max_count, foundLetters[char]<span class="hljs-number">-1</span>);
        } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (state === <span class="hljs-string">'correct'</span>) {
            <span class="hljs-comment">// Correct: add this position to the 'correct' options</span>
            info.correct.push(i);
            info.min_count = <span class="hljs-built_in">Math</span>.max(info.min_count, foundLetters[char]);
        } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (state === <span class="hljs-string">'present'</span>) {
            <span class="hljs-comment">// Present: add this position to the 'present' options</span>
            info.present.push(i);
            info.min_count = <span class="hljs-built_in">Math</span>.max(info.min_count, foundLetters[char]);
        }
    }
}
</code></pre>
<h2 id="heading-2-testing-words">2. Testing Words</h2>
<p>So we’ve analysed a few words and put some constraints into our knowledge base. Now we can use this to narrow down the list of possible answers. There’s no real shortcut here - we simply have to check every word in Wordle’s dictionary against our entire set of constraints, knocking out any words that break one of the constraints.</p>
<p>The next function we implement will just check a single word against our set of constraints. So, we pass in the <code>word</code> and our <code>knowledge</code> and get back a boolean that tells us if the word is a possibility.</p>
<p>All we need to do here is step through each letter in the knowledgebase and perform tests on all of the information in there:</p>
<ul>
<li>Check that the number of times the letter appears is between <code>letter.min_count</code> and <code>letter.max_count</code>.</li>
<li>Check that none of the positions in <code>letter.present</code> contain this letter.</li>
<li>If <code>letter.present</code> is not empty, make sure the letter appears <em>somewhere</em> in the word.</li>
<li>Check that all positions in <code>letter.correct</code> contain this letter.</li>
</ul>
<p>If the word passes all these checks then it’s good to go.</p>
<pre><code class="lang-jsx"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isWordValid</span>(<span class="hljs-params">word, knowledge</span>) </span>{
    <span class="hljs-keyword">const</span> letterCounts = {};
    <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> char <span class="hljs-keyword">of</span> word) {
        letterCounts[char] = (letterCounts[char] || <span class="hljs-number">0</span>) + <span class="hljs-number">1</span>;
    }

    <span class="hljs-comment">// Step through all of our constraints looking for reasons to deny this match</span>
    <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> [char, info] <span class="hljs-keyword">of</span> <span class="hljs-built_in">Object</span>.entries(knowledge)) {
        <span class="hljs-comment">// Are there between min_count and max_count of this letter?</span>
        <span class="hljs-keyword">if</span> (letterCounts[char] &lt; info.min_count || letterCounts[char] &gt; info.max_count) {
            <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
        }

        <span class="hljs-comment">// Anything in a misplaced position is a failure</span>
        <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> pos <span class="hljs-keyword">of</span> info.present) {
            <span class="hljs-keyword">if</span> (word[pos] === char ) {
                <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
            }
        }
        <span class="hljs-comment">// ...but present letters must also be in the word</span>
        <span class="hljs-keyword">if</span> (info.present.length !== <span class="hljs-number">0</span> &amp;&amp; !word.includes(char)) {
            <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
        }

        <span class="hljs-comment">// Any positions in present must be this character</span>
        <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> pos <span class="hljs-keyword">of</span> info.correct) {
            <span class="hljs-keyword">if</span> (word[pos] !== char) {
                <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
            }
        }
    }

    <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
</code></pre>
<h2 id="heading-3-bring-it-all-together">3. Bring it all together</h2>
<p>With the functions we’re written so far we can gather information from individual guesses and we can test if individual words are valid. Let’s combine these into a single function that analyses all user input and outputs a list of words that are found to be possible matches.</p>
<p>We implement this with two loops...</p>
<p>The first loop goes over the input grid. It only accepts full words - ones that have all 5 letters entered, then it uses our <code>analyseWord</code> function to discover and add any new constraints to our <code>knowledge</code>.</p>
<p>The second loop is implemented using the standard <code>Array.filter</code> function, which lets you test each element in an array and makes a new array with just those elements which pass.</p>
<pre><code class="lang-jsx"><span class="hljs-keyword">export</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">doCalculate</span>(<span class="hljs-params">word_grid, state_grid, dictionary</span>) </span>{
    <span class="hljs-keyword">const</span> knowledge = {};

    <span class="hljs-comment">// Step through full words in the grid adding constraints for each letter</span>
    <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; word_grid.length; i++) {
        <span class="hljs-keyword">const</span> word = word_grid[i].join(<span class="hljs-string">''</span>);
        <span class="hljs-keyword">if</span> (!word || word.length !== <span class="hljs-number">5</span>) <span class="hljs-keyword">continue</span>;

        <span class="hljs-comment">// Analyse this word, improving our knowledge</span>
        analyseWord(knowledge, word, state_grid[i]);
    }

    <span class="hljs-comment">// Step through all possible words looking for ones that match our knowledge</span>
    <span class="hljs-keyword">const</span> foundWords = dictionary.filter(<span class="hljs-function"><span class="hljs-params">word</span> =&gt;</span> isWordValid(word, knowledge));

    <span class="hljs-keyword">return</span> foundWords;
}
</code></pre>
<p>By the end of this function, we’ve worked out which words are still possible and can show them to the user. Job done!</p>
<p>With all this code it may seem that it takes a while until we can figure out the right word but in reality and depending on how strong and lucky the starter word is, it only takes 2-3 words to narrow it down to only one word. </p>
<p>If you want to check out the code yourself and maybe also build your own Wordle-Solver website, visit our repository at <a target="_blank" href="https://github.com/thecodingchannel/wordle-solver-svelte">The Coding Channel GitHub</a>. </p>
<hr />
<p>This blog post and the Wordle Solver are a team project with <a class="user-mention" href="https://hashnode.com/@coldino">coldino</a> for <a target="_blank" href="https://www.youtube.com/channel/UCIzSzivWvtLIWrWoOVyvVKw">The Coding Channel</a>. </p>
]]></content:encoded></item><item><title><![CDATA[Setting up my StreamDeck to work with Hashnode]]></title><description><![CDATA[I don't know how that landed in my cart
Last week I had one of those "Don't think, just do it" decisions where I bought a StreamDeck. For anyone who is not familiar with what a StreamDeck is - It's a small device, you connect with your computer that ...]]></description><link>https://blog.tiia.rocks/setting-up-my-streamdeck-to-work-with-hashnode</link><guid isPermaLink="true">https://blog.tiia.rocks/setting-up-my-streamdeck-to-work-with-hashnode</guid><category><![CDATA[Hashnode]]></category><category><![CDATA[Blogging]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Mon, 24 Jan 2022 10:23:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1643019419447/Roa6Yl4av.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-i-dont-know-how-that-landed-in-my-cart">I don't know how that landed in my cart</h1>
<p>Last week I had one of those "Don't think, just do it" decisions where I bought a StreamDeck. For anyone who is not familiar with what a StreamDeck is - It's a small device, you connect with your computer that has buttons with an LCD screen behind it. You can then program these buttons to do all kinds of fun things. </p>
<h2 id="heading-isnt-that-a-gamer-thing">Isn't that a Gamer thing?</h2>
<p>Well, the StreamDeck was indeed developed for the Gaming- or more precisely for the Streaming-Niche. If you look at the Plugins that already exist that allow you to connect to software - most of them are Streaming related. But that doesn't mean you have to use it just for that case. </p>
<p>But in the end, it's just a thing with buttons that can do whatever you want them to do. It just needs the integrations. </p>
<h2 id="heading-what-else-did-i-set-up">What else did I set up?</h2>
<p>Because I am using it for Gaming and my Gaming-Stream - most things I have set up are also Gaming-related. I did also put in my Spotify playlists and the music control for my most listened-to lists. </p>
<p>I also have the standard Hardware Monitor, a clock, and network testing on some buttons to save the time opening the command window to do a ping test when my  Internet acts german again (for anyone not from Germany - our internet infrastructure is a mess). </p>
<h2 id="heading-why-set-up-something-for-hashnode-its-just-markdown">Why set up something for hashnode? It's just markdown</h2>
<p>It's an experiment if I am completely honest. I want to see how it affects the speed I can write my articles and how it might affect my overall productivity. Overall it's good to mix up your work routines once in a while for them not to become boring or stale. If this is something I can archive it with - even better. This is how I have set up my StreamDeck for using hashnode. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643018396059/lFFOFWlHN.png" alt="Using StreamDeck for Blogging" />
<em>Using StreamDeck for Blogging</em></p>
<p>The Blog button simply opens my hashnode-blog at <a target="_blank" href="http://blog.tiia.rocks">Tiia Rocks</a>
The new post opens a browser tab for the article editor. In fact, I did press the button to write just this article. The Dashboard button redirects to Hashnode directly, because once logged in, the website turns into your personal dashboard. 
The h1, h2, h3 buttons are basically self-explanatory, they simply post the amount of number signs needed to style the Heading. </p>
<p>The Embed button posts 
<code>%[Paste link to embed]</code>
into my article so I can easily embed tweets or other supported services. I do also have added a Link button after setting everything up which will post 
<code>[Text](Link)</code>
into my article just like a click on the button in the toolbar would do. </p>
<p>The last two buttons will include the markdown for inserting code into articles. I used the 1 line code button to style the embed and link commands in this article. </p>
<p>While the setup might be a little overkill for the Headings, I feel like especially with the code snippet implementation and the embed, it will save me time because I always had to look those up in the hashnode Guide. </p>
<h2 id="heading-is-it-worth-it-tho">Is it worth it tho?</h2>
<p>I tested it on this article and I really liked the workflow it created while typing. While it's probably not worth it to buy a StreamDeck for only blogging, I think it is worth it to set up little shortcuts when you already have a StreamDeck or maybe another Macro-Keyboard. </p>
<p>By the way: My goal for 2022 is to write at least 50 blogposts here on hashnode. I wanted to keep the number realistic to my workload. As a way to hold myself accountable - this is 2/50! We're getting there :) </p>
<hr />
<blockquote>
<p>Feel free to follow me on <a target="_blank" href="http://twitter.com/TiiaAurora">Twitter</a> and start a conversation there. I am always happy to meet new people! </p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[This is why your Twitter isn't growing - Twitter explained]]></title><description><![CDATA[To have a successful Social Media presence is to some more important than to others. While there are people who want to stay private and do not want to share their thoughts with strangers there are also people who enjoy using Social Media platforms d...]]></description><link>https://blog.tiia.rocks/this-is-why-your-twitter-isnt-growing-twitter-explained</link><guid isPermaLink="true">https://blog.tiia.rocks/this-is-why-your-twitter-isnt-growing-twitter-explained</guid><category><![CDATA[social media]]></category><category><![CDATA[Twitter]]></category><category><![CDATA[content]]></category><category><![CDATA[algorithms]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Sun, 09 Jan 2022 12:39:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1641701759193/gl2XgRtNi.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>To have a successful Social Media presence is to some more important than to others. While there are people who want to stay private and do not want to share their thoughts with strangers there are also people who enjoy using Social Media platforms daily as their source of opinion exchange and socialization. </p>
<h2 id="heading-social-medias-reputation-is-worse-than-it-deserves">Social Media's reputation is worse than it deserves</h2>
<p>People who care about their Social Media are often portraited as self-centered. Which is an interesting take because opinions like that are often brought up towards women who managed to gather a respectable community size around them. There is often also the talk about who "deserves" an audience. And while Social Media offers everyone an audience - the idea about people deserving an audience is pretty out of the last century. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641711018655/GfgzgQ34q.jpeg" alt="Social Media User" />
Photo by <a href="https://unsplash.com/@brucemars?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">bruce mars</a> on <a href="https://unsplash.com/s/photos/social-media?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<h2 id="heading-giving-a-voice-to-those-who-used-to-be-silenced">Giving a voice to those who used to be silenced</h2>
<p>Social Media has become a tool to give a voice to minorities who used to be silenced either by politics or by society. Giving a minority a voice and a potential world wide audience helps to raise awareness to problems that would have otherwise be ignored. It also helps to connect minorities with each other. Giving oppressed groups a piece of autonomy back then I am all here for it. Social Media is only as bad as the people using it. It is a tool. Nothing else. </p>
<h2 id="heading-understanding-social-media-getting-you-set-up">Understanding Social Media - Getting you set up</h2>
<p>While Web3 is hyped up everywhere, I feel like a lot of people have issues even understanding Web2. Web2 - Social Media is about the exchange of users with each other. In my time as a Social Media Manager and during mentorship, I have met a lot of people who were desperate on how to grow their numbers and my first look on their Social Media showed me they did not put the slightest amount of effort into it. This article is meant to be a little guide on how to tackle building a social media existence and how to care for it so it can grow and flourish. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641711103943/mUD80eW9O.jpeg" alt="Social Media Frustration" />
Photo by <a href="https://unsplash.com/@magnetme?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Magnet.me</a> on <a href="https://unsplash.com/s/photos/sad-computer?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<h3 id="heading-stand-out-with-your-profile-people-need-to-remember-you">Stand out with your profile - People need to remember you</h3>
<p>I do connect with a lot of people and talk to a lot of people every day. It is impossible to remember everyone you ever talked to. This is the case for a lot of people. Your goal should be to stand out in a positive way. </p>
<p>Have a profile picture. Social Media puts the focus on the person and not on a brand or a company name. People want to talk to other people. Even if your other content channels are not branded to you personally - on social media the personal approach is way more effective than the brand approach. But don't go with the standard picture. Don't just set it up and then do nothing. Use photos and graphics to represent you. Stay minimalistic and don't overload your profile with text and arrows in banners. </p>
<h3 id="heading-choose-a-fitting-name-and-a-fitting-display-name">Choose a fitting name and a fitting display name</h3>
<p>Twitter allows you to set two different kinds of names. One is your account name and one is your display name. Make sure both are easy to remember - as short as possible and avoid any combination with random numbers. You want to be your own personality and not version  89324 of the same name. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641710861604/_1GcRSQCX.png" alt="Twitter profile with no personality" />
<em>Don't do it like this user </em></p>
<p>One important thing about your display name is - Avoid fancy font types by using mathematical or foreign characters. Also, avoid the usage of too many emojis in your name. The reason here is accessibility. You want screenreaders to be able to read your content to its user. </p>
<p>You now should have a profile picture, a banner image, and a fitting name, and an accessible display name? Then continue - Your about text. </p>
<h3 id="heading-about-you">About you</h3>
<p>The content of your "about me" text is dependent on what you want to represent. Either set a mood or vibe with it - or be informative. Remember this is what people who open your profile see first so it is your chance to convince people that it's worth following you. Feel also free to insert your pronouns to make it easier for people to know how to address you. </p>
<h3 id="heading-choosing-a-topic">Choosing a topic</h3>
<p>Unfortunately, Twitter prefers monothematic accounts over accounts that talk about everything. That is in my eyes a clear design flaw because especially Twitter grew more or less because of its openness and rawness of content. But since the algorithm now prefers accounts that care about one specific topic - this is the way to go when your goal is to grow your channel. </p>
<h3 id="heading-your-first-tweet-pin-it">Your first tweet - Pin it</h3>
<p>Your first tweet can and should also be your first pinned tweet. A pinned tweet will always be shown at the very top of your personal timeline - the list of your tweets. In this tweet, you can link to other social media channels or even write a tweet about why you think people should consider following you. What you write highly depends on the type of content you want to make. </p>
<h2 id="heading-what-kind-of-content-does-twitter-prefer">What kind of content does Twitter prefer?</h2>
<p>Twitter has a hierarchy of different content types they prefer to push out into the world. It is sorted in a list of priorities. The content type decides about how often Twitter will show your tweet to people NOT following you.  </p>
<h3 id="heading-hierarchy-of-content-types">Hierarchy of content types</h3>
<ol>
<li><p><strong>Live Content </strong>
-&gt; Spaces, Live streams ON the platform </p>
</li>
<li><p><strong>Video Content</strong>
-&gt; Tweets containing videos that were uploaded to Twitter</p>
</li>
<li><p><strong>Image Content</strong> 
-&gt; Tweets containing images that were uploaded to Twitter</p>
</li>
<li><p><strong>Text Tweets</strong>
-&gt; Your normal Tweet - only text </p>
</li>
<li><p><strong>Tweets with links</strong>
-&gt; When you're linking to content - there is a higher chance that your tweet will be shown to fewer or no extra people</p>
</li>
</ol>
<p>Here it is very interesting to see how little priority text-only tweets have. And those are most likely the majority of tweets sent on the platform. You can also see that Tweets containing links will be actively suppressed by the algorithm to be pushed to potential followers. Twitters' interest is for you to stay and interact on their platform for as long as possible. When you send links, you actively try to move people away from Twitter. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641731514938/RknUFsl09.jpeg" alt="Woman sitting on the floor with a laptop" />
Photo by <a href="https://unsplash.com/@thoughtcatalog?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Thought Catalog</a> on <a href="https://unsplash.com/s/photos/person-computer?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<h3 id="heading-how-twitter-decides-if-your-tweet-has-priority-to-be-shown-over-other-peoples-tweets">How Twitter decides if your Tweet has priority to be shown over other peoples Tweets</h3>
<p>Twitter has a little Checklist list with which they decide if your content is worth to be shown to other people. Let's go through this list and see what we need to improve in order to get reach: </p>
<h3 id="heading-when-will-my-content-be-shown-to-other-people">When will my content be shown to other people?</h3>
<ol>
<li><strong>Tweet Type</strong> -&gt; The first thing is the content type that we talked about a little further up</li>
<li><strong>Recency</strong> -&gt; How old is your Tweet? If your Tweet is older than a day, it's basically out of the loop and won't be shown anymore. </li>
<li><strong>Follower</strong> -&gt; People who engaged with your content before will see your Tweet more likely even if they don't follow you. While this is not completely in our hands - also who you engaged with is important. </li>
<li><strong>Engagement on the tweet </strong>-&gt; The priority here is Comments, Retweets, Tweet Impressions, Clicks, and Favorites. You can clearly see that the engagement that requires the highest effort is valued the most. </li>
<li><strong>Activity</strong> -&gt; How active are you? Twitter does not want to recommend you and then you abandon your account. If you're active, you will be shown to people more often. </li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641711334594/Ouk6W3zBL.jpeg" alt="Planning Tweet" />
Photo by <a href="https://unsplash.com/@parkerabyrd?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Parker Byrd</a> on <a href="https://unsplash.com/s/photos/typing-phone?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<h2 id="heading-plan-your-tweets">Plan your tweets</h2>
<p>Activity and consistency are super important for your growth. If you do know you are going to have a hard time being consistent - batch plan your tweets. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641710371710/xITxnDB8n.png" alt="Plan your tweets" /></p>
<p>You can see the little calendar with a clock icon at the bottom of the Tweet popup. It will then give you the chance to plan your tweet and let it be published automatically at the planned time. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641710479244/jNqzJ5iRz.png" alt="Tweet Scheduling" /></p>
<p>To keep up with your planning, I suggest starting a Content Calendar. You can do this either with Notion, Google Calendar or even on paper. Whatever works with your planning. In the Calendar, you put a note that you want to tweet something and also the tweet itself. That way you have a nice overview of your scheduled content. </p>
<h2 id="heading-how-to-present-yourself-on-twitter">How to present yourself on Twitter</h2>
<p>This is a very tough question because it again depends on what kind of content you want to do. One thing is very important. Be authentic and be yourself. Don't play a role to think it might be more popular. At some point, you will be tired of yourself and Social Media and then just abandon it. Honesty and authenticity will bring you further than an act. Be a human, make mistakes, be vulnerable from time to time. 
Humans want to connect with humans they can relate to. Not a perfect and artificial version of you. Many people might fall into this trap trying to be absolutely flawless on Social Media but this makes you appear pretty shallow. So be yourself, be honest and you will gain the audience that vibes best with you. </p>
<h2 id="heading-accessibility-on-twitter">Accessibility on Twitter</h2>
<p>Accessibility is a big topic on the Internet and not only on Twitter but there are specific rules that apply to the content you provide. As mentioned in the name choice - try to avoid making your name unreadable for screenreaders. But the same goes for content. Many emojis, ASCII art - all of these can mess with accessibility devices. Making a screenshot of these things and then combining them with an alt text would fix the problem for now. </p>
<h1 id="heading-summary">Summary</h1>
<p>I can not give you the perfect content plan for your Social Media because you have to find that yourself. But I hope with these points explaining how Twitter works under the hood, it will be easier for you to plan your content. </p>
]]></content:encoded></item><item><title><![CDATA[How I reached 1.5 Million views on YouTube in 18 months]]></title><description><![CDATA[Starting from (almost) nothing
It's April 2020. The world slowed down and closed down within a few weeks only. Everyone was scared and unsure about the future. Me too. I just upgraded my internet connection to a Gigabit contract and was planning on u...]]></description><link>https://blog.tiia.rocks/how-i-reached-15-million-views-on-youtube-in-18-months</link><guid isPermaLink="true">https://blog.tiia.rocks/how-i-reached-15-million-views-on-youtube-in-18-months</guid><category><![CDATA[content]]></category><category><![CDATA[video]]></category><category><![CDATA[education]]></category><category><![CDATA[Games]]></category><dc:creator><![CDATA[Tiia]]></dc:creator><pubDate>Thu, 30 Dec 2021 05:06:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1640833299703/SI6QrEfFR.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-starting-from-almost-nothing">Starting from (almost) nothing</h1>
<p>It's April 2020. The world slowed down and closed down within a few weeks only. Everyone was scared and unsure about the future. Me too. I just upgraded my internet connection to a Gigabit contract and was planning on using it again for creating content. I used to make videos, I used to stream daily on Twitch. I had amazing growth back then. But I fell ill and lost access to the internet connection I used to use and was stuck with a terrible 4G/LTE connection I had to pay per data volume. (When living in Germany, always check the internet availability before you move!)</p>
<p>But here I was now. I had fast internet and while the world was standing still, I felt the energy to conquer the world. I was starving to make content and I finally could and it felt like I had all the time in the world. My channel had been sitting inactive for three years and was about to lose the partnership privileges for not reaching the required numbers of 4.000 hours of watch time in the past year. </p>
<p>On top, I had switched my target group to an English audience and kind of abandoned my German community or rather invited them to carry over to the English community. A choice I do not regret, but also a choice that made the way that was before me rocky and difficult. </p>
<h2 id="heading-planning-no-reason-to-fail-now">Planning - No reason to fail now</h2>
<p>I didn't know how to start exactly, because I had a channel that had collected 1300 subscribers in the past but it was a mix of all the games I have had played since 2013. Nothing that would represent me anymore in 2020. On top - it was in German. My community wasn't mainly German anymore. </p>
<p>I made a completely new channel in English with the main focus on the game I played since 2015. I had collected a lot of knowledge and wanted to share it with players of the game and also educate new players about game mechanics. </p>
<p>I uploaded a few videos and the doubt started to become bigger. Why should I restart? Why not use a channel that already had 1300 subscribers and was still (even when barely) partnered. I published a few videos on English on the channel and failed completely. Of course, I did. My audience was German and if there is one thing true about Germans - they highly dislike another German making content that is not in German. The hate I got was real and I was almost demotivated to continue. Almost. </p>
<p>If you need to know something about me, then it is that I am very stubborn. Too stubborn to give up when I see obstacles. So putting my big girl pants on, I made a decision that would be the future strategy of my content creation. I would have two channels that publish the same content. One in my mother tongue German, one in English. Technically twice the work, yes. But I often just needed to redo the voiceover and that would give me two videos. </p>
<h2 id="heading-april-december-2020-if-you-want-to-be-successful-treat-it-like-a-job">April-December 2020 - If you want to be successful, treat it like a job</h2>
<p>From April to December I used every free minute to learn about YouTube. Since my last real attempt to do content was in 2016, I had to keep up with the changes on the platform. YouTube changes almost yearly and making content like 2016 wouldn't bring me far in 2020. I learned that the production quality on YouTube is insanely high. While roughly cut Let's Play Videos worked pretty well back then, YouTubers had to become semi-professional editors, animators, graphic designers, and entertainers or educators.</p>
<p>Another point where I could have given up because that was a lot I had to learn. I didn't. Instead, I did research. I spend a lot of time on YouTube itself.  I followed educational channels about content creation. I also entered communities about education for content creators. I treated it like a class for school or training for a job. </p>
<p>In about Fall 2020 I finished my first self-made video animations, I did several graphic design courses. I finished a course in "Professional Voiceover" and "Public Speaking". I also later finished a course in "Story Telling" and refreshed my "Professional Writing" skills. I did not want to fail because I was not prepared. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640835413176/ydSwm7_Or.png" alt="Entering YouTube Partner Program" /></p>
<p>In December I could see the first big results. I had secured the YouTube partnership on my German channel and only in about six months actively filling my English channel, I already reached partnership requirements there as well and got approved in the first week of 2021. The English channel finished with a little over 1000 subscribers. The German channel had reached 2500. A number I would never have thought was possible for a channel that had been sitting at 1000-1300 subscribers since 2013. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640835656697/LzJeKbFCm.png" alt="YouTube Partner Program" /></p>
<h1 id="heading-entering-2021-i-had-no-idea-where-to-go-from-here">Entering 2021 - I had no idea where to go from here</h1>
<p>Entering 2021 felt weird. I had an extremely successful year behind me. I had reached more than I would have expected to reach. I didn't know what would wait for me. I enjoyed every minute I could work on videos or research for videos. </p>
<p>The world was still in a state of uncertainty and I decided to continue just the way I stopped in December. Treating it like a job, as a profession, and not as a cute hobby. 
One thing I did not take seriously enough in 2020 was self-organization. I made videos when I felt like it. Sometimes I would take breaks over several weeks, cause I had no ideas. Sometimes I would publish videos twice a day. I was lacking consistency and I was lacking a direction. </p>
<p>I started using Notion as my content creation calendar. I collected video ideas in there, sorted them by priority, and made a plan on how to publish videos, especially in which frequency. </p>
<p>Whatever people tell you, planning has been the key in 2021. Planning was the thing that kept me running. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640839311278/_OcC_ecXf.png" alt="ARK Shadowmane" /></p>
<h2 id="heading-spring-2021-i-defeated-myself">Spring 2021 - I defeated myself</h2>
<p>Spring felt weird. I always saw my German channel as the "big" channel and my English channel as the "small" channel but in spring my English channel got picked up by the YouTube algorithm for the first time. I gained 1200 subscribers in only eight weeks. Something that took me 8 months before. </p>
<p>I suddenly felt like I defeated myself. I felt like my German channel wasn't doing well enough because it got ignored by the algorithm despite having the same content. How could that be? Looking back that was the wrong thinking but I just didn't understand what was happening. </p>
<p>That could have been another point of being demotivated and giving up. But yet again - I didn't. I tried to learn more about the algorithm. How it works, how it treats content and channels. Why do sudden boosts happen? Turned out. My English channel was lucky. </p>
<h2 id="heading-summer-2021-i-defeated-myself-yet-again-but-got-out-as-a-winner-this-time">Summer 2021 - I defeated myself yet again but got out as a winner this time</h2>
<p>In Summer the thing happened that I wouldn't have thought would be possible. My German channel also got boosted by the algorithm. While the English one did get a little boost a few weeks earlier - the German channel got the full-blown community attention. During the summer, the German channel grew from 3300 to 8900 subscribers. </p>
<p>This time I knew what was happening and I was finally able to celebrate it. At the end of 2020, I had set some shy goals for the next year. I wanted my German channel to grow to at least 5000 subscribers and my English one to 2000. That would have been linear to the growth I had before. Back then I felt anxious even making these goals. What if I wouldn't reach them? In Fall I knew I didn't have to worry at all. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640839250984/OXhUu5WXP.png" alt="ARK Abberation" /></p>
<h2 id="heading-winter-2021-where-do-we-go-from-here">Winter 2021 - Where do we go from here?</h2>
<p>And here we are. Winter 2021. To be precise it's the end of December. The year is almost over and I can look back on another full year of content creation. I am yet again at the point where I don't really know where I will be next year at this time. I set myself some new shy goals but not as shy that I would reach them in the middle of the year. </p>
<p>I will not go as unprepared into the next year as I did last year. I have a new project waiting that will take a little time away from my channels but that I am really looking forward to and if I am completely honest - I still learn the whole self-organization thing, better time planning, and making better use of my time altogether. So it might not even take time away but just fill the void, I used to fill with useless procrastination. </p>
<p>I am sitting here now with 1.5 Million views I gathered on both channels combined since coming back to create content and it's a number I can't even grasp. But it feels good knowing "I did that". </p>
<h1 id="heading-some-general-words-of-advice-if-you-want-to-enter-content-creation">Some general words of advice if you want to enter content creation</h1>
<h2 id="heading-if-you-want-to-be-successful-in-something-treat-it-like-a-job-and-not-like-an-accidental-lucky-hit">If you want to be successful in something, treat it like a job and not like an accidental lucky hit</h2>
<p>I can't repeat this often enough. Yes, there will always be lucky creators that suddenly show up and take over the world. What you don't see is, that most of them worked hard to make it look lucky. Most of them were not lucky but had a good plan in their head how to reach what they reached.  </p>
<p>Don't wait for some outside influence to take over your fate. You will wait forever. Take things into your own hands and build your own future. On my way, I have seen a lot of content creators that did not do anything that would have helped them and that would blame other people for their failure. </p>
<p>"I don't get viewers because there are girls on the platform too and everyone just watches them and not me. It's easy when you are a girl"</p>
<p>Leave stuff like that in the past year. No one needs to hear this 2022. If you want to be successful work for it and don't blame others because you didn't do anything yourself. </p>
<h2 id="heading-numbers-are-your-friend-and-not-your-enemy">Numbers are your friend and not your enemy</h2>
<p>Numbers and statistics are SO important on your way. I always get anxious when content creators tell new people entering the field to ignore numbers. It is SO crucial to know and understand your performance when you want to grow. </p>
<p>What you should keep in mind is - numbers do not represent your value as a human. Never see numbers like that. Not when they are low and also not when they are high. They just represent the demand and position of your content. Good content can have low numbers because it hasn't been discovered yet. Bad content can have high numbers because it was very clickbaity. </p>
<p>See every dip in numbers as a learning experience. Try to find out why it happened, how you can improve it for the next time. Treat spikes the same. Why did they happen and how can you reproduce them. Numbers are the best and most neutral feedback you can get. Understand them!</p>
<h2 id="heading-have-a-plan-and-stick-to-it-if-it-doesnt-work-adjust-it">Have a plan and stick to it. If it doesn't work, adjust it</h2>
<p>Have a concept planned. Don't make videos that are all over the place. Have an idea of what you want to create and what to represent. But if that doesn't work and the feedback to your content is much different and more negative than what you would have expected, don't be afraid to make adjustments. </p>
<p>Make a content plan, make a calendar. Preplan as much as you can but be able to react to changes. If one video goes through the roof, try to be able to react to it and replan content. </p>
<h2 id="heading-you-cant-make-everyone-happy-and-you-will-lose-people-on-the-way">You can't make everyone happy and you will lose people on the way</h2>
<p>No matter how good you prepare your content and how well thought through it is - you can't make everyone happy because some people actively decide against happiness as soon as they start their computer. Since I am in the education field in gaming, I will connect with a lot of people who will go with the wrong expectations in my tutorials and will be unhappy realizing how complicated some things are. 
Sometimes they also spend the whole day in other tutorials and just try to find the one that tells them, everything is easy and they don't have to put any effort into it. </p>
<p>One thing that I also had to realize is that people who used to connect to you will stop doing that once you gather a little success. You can't avoid that people will start seeing you differently and maybe don't want to hang out anymore. 
On the other hand, some people just realize you exist because you gather a little bit of attention. Prepare for both. Look out for those who just show up, when things are going really well for you. </p>
<h2 id="heading-progress-is-more-important-than-the-number-goals">Progress is more important than the number goals</h2>
<p>While I do set myself number goals, they are not important. It is important to go forward and as long as it goes forward, you're doing the right thing. Sure you can min-max from here, but don't make my mistake being unhappy with slow growth when slow growth is growth. Don't make yourself feel miserable about success. While you have control over a lot - YouTube is still a factor you cannot predict. Neither in a positive nor a negative way. </p>
<h2 id="heading-try-it-if-you-want-it-get-out-of-the-soon-trap">Try it if you want it - Get out of the "soon" trap</h2>
<p>If you want to start content creation - do it. Do it now. There is no point in waiting until "you are ready" or "the time is right". Waiting does not give you the experience needed. Waiting is wasting time you could use for learning. Make mistakes, learn from them, adjust. That's how everyone did it. </p>
<h1 id="heading-some-words-at-the-end">Some words at the end</h1>
<p>While this blog article is talking about a Gaming channel, I kept it as neutral as possible, because no matter what content you do - my advice can be applied to other content as well. It doesn't matter what your niche is. There will be an audience for you - sometimes bigger sometimes smaller but there will be an audience for sure. </p>
<p>You can tell that I had a lot of points in my journey where I could have given up but didn't. Going on and being too stubborn to fail will get you further than those who get demotivated easily. Take this as your strength. </p>
<p>I wish you the best for your content creator journey in 2022. I believe in you! </p>
]]></content:encoded></item></channel></rss>