YeenDeer softness blog (programming and electronics)

Ellie the Yeen is a soft YeenDeer that mweeoops and does programming

View on GitHub About Bots Projects Tags

The YeenDeer softness blog

Hi this is the blog of a YeenDeer mostly about programming and similar topics
  • Argparse in chat bots

    The argparse built in library of Python is a rather interesting one. It has a large amount of features and is quite extensible. It is meant for usage in the commend line but you can override some methods in order for it to be used in other contexts such as chat bots.

  • Command line poster for Twitter, Mastodon and Bsky

    Decided to make a command line poster for Twitter, Mastodon and Bsky. It does not support posting images at least yet but it does support CWs. I hastily created it from converting my Discord bot so the code might be a bit messy but it works great. It has some unusual error handling that I implemented in case of smaller faults regarding previews. The code is below and feel free to use it for what you want.

  • Simple Mastodon Bot (Oriented Objects)

    A while ago I decided to make a very silly Mastodon bot that generates fake object oriented class names as I had done something similar many years ago as a Facebook bot when I still was there. It takes several things that sounds like it is part of a class and puts together and sometimes makes some funny nonsense. I have it running here if you want to check it out https://botsin.space/@oo.

  • Moving targets problem and solution

    One day when I was playing Skyrim I noticed that a sorcerer would hit me with their fireballs regardless if I was moving or not and as long as I did not change my speed, trajectory or something blocked the fireball. I tried thinking what the logic and math would be in order to achieve such targeting. To know where the target will be when the projectile arrives requires knowledge of how long time it takes for the projectile to reach the target and to know where the projectile will be in at this point and to know where the target till be at this point requires knowledge of how much the target moves which sounds just like the missile knows where it isn’t but I asked my dad about it and he said it was a differential equation.

  • Syntax highlighted code pictures from the command line

    There are times when you want to post pictures of code as the place to post them might not have a way to post code with syntax highlighting internally. What you typically will do in this case is screenshot code and then post that but the downside of that is that it is hard to fully automate. What we can do in this case is using a tool such as pygments which supports outputting syntax highlighted code as images, HTML and even IRC color codes.

  • Hello World In Many Languages

    Hello world is the most basic program that you tend to try out in a programming language. Here we are going to look at several languages and how to do hello world in them.

  • React update DOM

    Recently I decided to look into the React framework and how it actually works. It is quite interesting that it has ways to update the DOM without reloading the page. This makes switching pages incredibly fast once you have loaded up the app.

  • Wrapping Programs

    Sometimes it is important to make programs that wrap other programs for example in order to get the exit status, standard output and standard error. Examples of is game server wrappers, various error handlers and loggers. If you start tasks using systemd they will be wrapped automatically and you will be able to get the status and output and such and even install an error handler which we talked about here. You might also want to make your own wrapper if you want to do something more complex like having game server chat bridges and such.

  • 5 Useful Command Line Utilities

    There are many programs and utilities that makes using the command line much easier and adds many convenient features. Here we are going to list 5 of them which are very useful. Most of these are for Linux but you can run all of them under Cygwin on Windows.

  • A reposter for your favorite social media posts

    Have you ever had bad reach with certain posts on social media? You ever been unsure of when to repost certain posts to get the best reach. Or maybe you have had trouble remember to share those posts again? Here is the solution. What if we automated the whole process. We take one time where we tend to get the most reach (or several) and we post those posts again or more exactly we share or bump them depending on what we can do.

  • Throwing away jekyll-seo-tag

    So recently there was a problem on Bing webmasters where it complained that the site has too long description meta tags. The reason for this is that Jekyll takes the description from the site.excerpt variable which is something that can be very long and sometimes almost a thousand characters in some circumstances. There were 2 alternatives to solve this. One is to rewrite every single post to have a specific description that does not exceed the specifications or we can create our own meta tags and the latter is what we are going to do.

  • Making tables in Liquid from Jekyll front matter YAML

    Did you know that you can generate tables from data in Liquid so you do not have to deal with the format that markdown uses for tables? Here is how you can do that.

  • Mastodon RSS latest posts website feed

    Do you remember when almost every website had an embedded Twitter feed so you could see the Tweets of the owner of the website? What if I told you that you could achieve the same using the RSS feed from a Mastodon server as it has Access-Control-Allow-Origin: * set. What this means is that clients in the browser are able to make requests towards a website without being blocked by the cross origin policy.

  • Sleep tracker with smart home lamp control

    So I recently decided to fix up my command line sleep tracker since it is a thing I have wanted to fix for a while. The specific issue is that I specifically have to find the enter key to press when I wake up to turn on the lights. The whole tracker works that you run it and all the lamps turn off then it waits for a key press and when a key is pressed it turns the lamps on again and tell how long time you slept for.

  • Making a tags page without using jekyll-archives

    There is an extension for Jekyll called jekyll-archive which allows you do make extra pages without creating the files for them such as category pages, tag pages and ones for specific dates and such. This is really good however there is one downside, it does not work on GitHub pages.

  • What is a file manager?

    Do you know what a file manager is? it is very likely that you do not as it is a thing that is very taken for granted due to them coming preinstalled on almost every system. Nothing (usually) stops you from installing another one if there is one you like better. The main point is what a file manager actually does. It is a program that allows you to browse, copy, move, delete, create and see information about files using some form of interface. It also is used to launch files or launch editors in order to edit files and often also allows you to preview them or at least launch a program that previews them.

  • RSS feed using Liquid

    Even if jekyll-feed is something you do have if you have a GitHub pages site there are many cases where you do want to be able to make your own RSS feeds. Such cases can be that you have very different categories that would not make sense to have the same feed for or you are using another templating engine such as Jinja which has an almost identical syntax or maybe even PHP and want to know the gist of how you would make a feed there. We are only however focusing on Liquid specifically in this article.

  • Generating share buttons using Liquid

    Liquid is a powerful templating language even if it is a non evaluating one. In the past we made some Share buttons using all the data we had gathered from various websites about how they use URLs for their share dialogs. What we can do with this data is generate share buttons in a fancy and easy way using Liquid.

  • Dynamic favicons

    Did you know that favicons on websites can be dynamic? You probably do since they are everywhere to display notifications on social media sites. We are going to look at how that is done and then implement it ourselves. At first we are going to look at a practical example of how it can look like.

  • Browser extensions and userscripts

    It is very easy to make browser addons for Chrome and Firefox. It has a simple and concise JavaScript API that is almost identical between them. You can always look at the API reference for Chrome and Firefox if you have no idea what to do.