a tumblelog
week 16, 2020

Building Finite State Machines with Python Coroutines

Finite State Machine is a mathematical model of computation that models a sequential logic. FSM consists of a finite number of states, transition functions, input alphabets, a start state and end state(s). In the field of computer science, the FSMs are used in designing Compilers, Linguistics Processing, Step workflows, Game Design, Protocols Procedures (like TCP/IP), Event-driven programming, Conversational AI and many more.

Source: Building Finite State Machines with Python Coroutines, an article by Arpit Bhayani.

Elfeed with Tiny Tiny RSS

If you have multiple computers and you subscribe to RSS feeds - which you probably do, it would be great if you could read the feeds from all your computers and have the feeds’ read state synchronized.

Tiny Tiny RSS runs on a server, aggregates your feeds, shows them with a web interface and exposes API for clients - such as elfeed - to consume.

Source: Elfeed with Tiny Tiny RSS.

Masked Prey

The daughter of a U.S. Senator is monitoring her social media presence when she finds a picture of herself on a strange blog. And there are other pictures . . . of the children of other influential Washington politicians, walking or standing outside their schools, each identified by name. Surrounding the photos are texts of vicious political rants from a motley variety of radical groups.

It's obviously alarming--is there an unstable extremist tracking the loved ones of powerful politicians with deadly intent? But when the FBI is called in, there isn't much the feds can do. The anonymous photographer can't be pinned down to one location or IP address, and more importantly, at least to the paper-processing bureaucrats, no crime has actually been committed. With nowhere else to turn, influential Senators decide to call in someone who can operate outside the FBI's constraints: Lucas Davenport.

In the afternoon I started in Masked Prey, the 30th Prey novel by John Sandford. As I have enjoyed the other books in the series a lot I expect another great.

Raku vs. Perl – save 70%

Having hit rock bottom with an ‘I can’t understand my own code sufficiently enough to extend/maintain it’, I have been on a journey to review the perl5 Physics::Unit design and to use this to cut through my self made mess of raku Physics::Unit version 0.0.2.

Source: Raku vs. Perl – save 70%.

Real sysadmins don't sudo

A few months ago, I read a very interesting article that contained some good information about a Linux feature that I wanted to learn more about. I won’t tell you the name of the article, what it was about, or even the web site on which I read it, but the article just made me shudder.

The reason I found this article so cringe-worthy is that it prefaced every command with the sudo command. The issue I have with this is that the article is allegedly for sysadmins, and real sysadmins don’t use sudo in front of every command they issue. To do so is a gross misuse of the sudo command. I have written about this type of misuse in my book, “The Linux Philosophy for SysAdmins.” The following is an excerpt from Chapter 19 of that book.

Source: Real sysadmins don't sudo, an article by David Both.

The Noise Within

In the afternoon I finally finished The Noise within by Ian Whates. I started reading this SF back in February, so it took me quite a while. Why? I don't know. The book is not that bad, but I doubt I will read the sequel even though the book ends in a cliffhanger.

dotfiles - Document and automate your Macbook setup

Then I learned that users share their configuration and setup commands in a Git repository which is called “dotfiles”. At first glance, a dotfile is a hidden file on a Linux/Unix system, containing tool specific settings. Common tools are Git, vim, bash storing their configuration in a dotfile in the user’s home directory. These dotfiles were enriched with scripts to install additional software via package managers, and to apply certain runtime configuration after the work environment was setup the first time

Source: dotfiles - Document and automate your Macbook setup, an article by Michael Friedrich.

Is Haskell a Bad Choice?

To save you some time I will give some reasons to immediately close this tab in your browser.

  • This post is about making a management decision to use Haskell
  • This post is not about any technical accomplishments with Haskell
  • This post does not actually conclude that Haskell is a bad choice

Otherwise, I hope what I have laid out below serves as a good view into a non-software company up in Alaska using Haskell to develop applications with.

Source: Is Haskell a Bad Choice?, an article by Brian Jones.

Psalmopoeus irminia feeding

Just after 5PM I handed a fresh mealworm pupa, Tenebrio molitor, to the Psalmopoeus irminia I keep since the 7th of April. Instead of grabbing the pupa and disappearing in a flash as on a previous occasion it stuck around long enough to take some photos.

Psalmopoeus irminia with mealworm pupa
Psalmopoeus irminia with mealworm pupa; Tenebrio molitor.

It currently has turned the end of a cork tube, which I closed with some dry moss, into its hiding place. While this makes for easy feeding it also makes for an easy escape, as its near the top of the terrarium. And in my experience, this specimen can move very fast; so I have to be careful.

Psalmopoeus irminia terrarium
Psalmopoeus irminia terrarium.

In the above photo you can see the end of the cork tube on the left. The plants are fake, but the dry moss is real. I like this set up a lot.

Solving an age-old problem using Bayesian Average

Coming up with an aggregated score is not an easy thing - we need to crunch a millions of ratings and then see that the score is, in fact, the true measure of quality. If it isn't then it would directly affect the business. Today we discuss how we should define this score in a rating based system; spoiler alert! the measure is called Bayesian Average.

Source: Solving an age-old problem using Bayesian Average, an article by Arpit Bhayani.

On the Link Between Polynomials and Optimization

There's a fascinating link between minimization of quadratic functions and polynomials. A link that goes deep and allows to phrase optimization problems in the language of polynomials and vice versa. Using this connection, we can tap into centuries of research in the theory of polynomials and shed new light on old problems.

Source: On the Link Between Polynomials and Optimization, an article by Fabian Pedregosa.

Hashing and Equality in Python

Don’t override __hash__ and __eq__ to force objects to hashable. Use immutable objects instead.

Source: Hashing and Equality in Python, an article by Roy Williams.

Pandas Pivot — The Ultimate Guide

Pandas pivot is an essential tool of every Data Scientist. Some use it daily and others avoid it because it seems complex. I was in the latter group for quite a while. After I took the time and did some research, I felt like I wasted a lot of time writing unnecessary code. To my surprise, I already knew the main building blocks of pandas. It is all simpler than it may seem.

Source: Pandas Pivot — The Ultimate Guide, an article by Roman Orac.

CSS Findings From The New Facebook Design

The new Facebook design started rolling out for users lately, and I got it almost two weeks ago. At first, every UI element was a bit bigger for me but it was a matter of days until I got used to it. In this article, I will talk about all the interesting things I saw.

Let’s dive in!

Source: CSS Findings From The New Facebook Design, an article by Ahmad Shadeed.

When to Mock

The use of mocks in unit testing is a controversial topic (maybe less so now than several years ago). I remember how, throughout my programming career, I went from mocking almost every dependency, to the "no-mocks" policy, and then to "only mock external dependencies".

None of this practices are good enough. In this article, I’ll show you which dependencies to mock, and which to use as is in your tests.

Source: When to Mock, an article by Vladimir Khorikov.

DIY Single Sign-On for SSH

In this post we're going to set up Google single sign-on for SSH. Behind the scenes, we'll use OpenID Connect (OIDC), short-lived SSH certificates, a couple of clever SSH configuration tweaks, and Smallstep's open-source step-ca and step packages. We will set up an SSH Certificate Authority, and use it to bootstrap a new host and a new user in our system. While this approach requires more up-front work than a typical SSH public/private key setup, it comes with a lot of benefits beyond single sign-on. It eliminates the need for gathering and shipping and managing authorized_keys files.

Source: DIY Single Sign-On for SSH, an article by Carl Tashian.

Debugging with Delve

I admit that I’d only used a debugger for Go a couple of times; up until now all my debugging involved writing a new test, or multiple fmt.Printf statements. This past weekend I decided to finally learn how to use Delve.

Source: Debugging with Delve, an article by Paschalis Tsilias.

Resample and Interpolate time series data

Resampling is a method of frequency conversion of time series data. You can use resample function to convert your data into the desired frequency.

Generally, the data is not always as good as we expect. For example: The data coming from a sensor is captured in irregular intervals because of latency or any other external factors

In order to work with a time series data the basic pre-requisite is that the data should be in a specific interval size like hourly, daily, monthly etc.

In this post we are going to explore the resample method and different ways to interpolate the missing values created by Downsampling or Upsampling of the data

Source: Resample and Interpolate time series data.

Writing a Book with Pandoc, Make, and Vim

As you might know, I’m writing a book called Compiling to Assembly from Scratch. Recently I tweeted about my book-writing setup, and there was a lot of interest in the details of my setup. I’m only halfway through with writing the book (or, so I think), so my setup will likely to change as I go. But here it is, anyway.

Source: Writing a Book with Pandoc, Make, and Vim , an article by Vladimir Keleshev.

Things software engineers trip up on when learning Haskell

Let’s say you asked me whether I thought that learning Haskell was difficult, coming from this background. My answer would be, “probably not,” as long as you approach things calmly and prepare yourself to not have skills or concepts transfer over, and to start over from a blank slate.

Source: Things software engineers trip up on when learning Haskell, an article by William Yao.

Pocket Guide to Writing SVG

Inline SVG refers to the embedded code written within HTML to generate these graphics in a browser, which will be the focus of this book.

There are many advantages to using SVG this way, including having access to all the graphic's individual parts for interactivity purposes, generating searchable text, DOM access for direct edits, and promoting user accessibility.

Source: Pocket Guide to Writing SVG by Joni Trythall.