Please use fixed versions for your application dependencies.
I can’t say I was upset to hear about Alex Jones recent removal from social media and podcast platforms. The man is a steaming pile of garbage and I have zero sympathy for him. However, after a discussion with friends and some conversations on twitter I started thinking about my own position on censorship and what I believe is acceptable speech.
For a personal project I am working on I wanted to create Python bindings to a Rust library I am creating. The first port of call was Milksnake and I wrote a Python wrapper to make it nicer to consume. However, a few weeks later I wanted wrappers for a few more languages and rather than create each one individually I decided to see if I could use a tried and trusted tool like Swig. What follows is a short tutorial on how to use Swig to create bindings for a Rust library.
Keycloak is an open source identity and access management (IAM) and single sign on (SSO) solution from Redhat. If you have multiple web applications or services that require authentication, keycloak saves you from having to write the same authentication code over and over again, and allows your users to authenticate against multiple applications without having to log in multiple times. In this post I will show how to set up Keycloak running locally, and how to use it as the authentication provider for a Django application. This post uses Python 3.x.
The Amiga 500+ wasn’t my first computer when I was a child (the ZX Spectrum has that honor), but it was the one I received at the age when I wanted to do more than just play games and for that reason it stands out in my memory as being something a bit special. With the demise of Commodore and the onset of my teenage years, I drifted away from computers for a while only occasionally playing a Playstation at a friends houses. It wasn’‘t until I started University that I got interested and excited by computers again. That period of my life was Linux, the free software movement and learning to code. When I began working, and had some cash I moved to Macs and I stopped spending my evenings compiling kernels. It is only in the past year or so I have started to take a look back at the 8-bit and 16-bit systems of my youth and appreciate them anew.
When using Python I rely heavily on Jupyter (nee iPython) and now that they are pushing multi-language support I am excited to see what other language communities do with it. In this post I will look at setting it up with an Elixir kernel.
If you recall, our CEP processor currently forces us to write elixir code to work on our windows of data, and our current implementation stores and operates on our data in the same function.
ZeroMQ is an excellent, language agnostic messaging and concurrency library. It can be used to provide non-BEAM based languages with some (but not all!) of the features that we take for granted when writing code in Elixir on the erlang vm. For this post, we will focus on its capabilities as a messaging library. This post gives a brief overview of ZeroMQ but you really should read the excellent ZeroMQ guide to gain a more complete understanding.
Over the next few posts I plan to look at ways of making the CEP processor created in the last post distributed. But, before that, I want to take a short diversion and jot down some notes on how to set up Elixir in a docker container and have nodes, running in seperatate containers, communicate with each other.
CEP is the term used to describe systems that process streams of events. In this post, we will use the the data structures created in a previous post and a GenEvent server to create a simple CEP processor in Elixir.
As part of some research I have been doing I wanted a sliding window data structure and thought it would be interesting to see how to implement custom data structures in Elixir.
I recently came across an interesting project called PostgREST, an application that claimed to read the database schema of you’‘r PostgreSQL database and automatically create a “a cleaner, more standards-compliant, faster API than you are likely to write from scratch.”
In this post we will port the TCP RPC server from Erlang and OTP in Action to Elixir. Elixir is an exciting new language targeting the Erlang VM (BEAM). The TCP RPC server will use the OTP libraries, these are a set of battle tested libraries that allow Erlang programmers to easily create reliable production ready applications. A big part of OTP is supervision trees, we will not use them in this example but will investigate them in a future post. More indept OTP information can be found on the Erlang site or in the excellent Learn you some erlang for great good book.
I am researching the available Clojure options for web and front end development at the moment and plan to create a series of posts that document what I learn as I go. This post will be an introduction to using the Google Closure libraries with Clojurescript. It assumes some basic familiarity with Clojurescript.
I have been tracking the progress of clojure-py on and off for the past two years or so but unfortunately it has officially been dropped by its current maintainer. I know node.js and Clojurescript are Clojures “de-facto” scripting solution but I am more familiar with the Python ecosystem so I was looking forward to being able to use the libraries I know with Clojure. However, on the clojure-py mailing list Hy was mentioned as a possible alternative so I decided to take a look at Hy and see how close we can get to a Clojure “like” environment on cPython. Note: I am not suggesting anyone use this setup for serious systems, its just a fun exercise.
When I want to do a quick calculation or perform a few one off commands that are beyond my bash knowledge I normally reach for Python. My work flow is
I have recently been investigating how to display MQTT messages in a web browser in real time. The MQTT server I use is Mosquitto as it is light weight and can be run on low power (ARM) devices, ideal if you want to use a Raspberry Pi as a gateway for sensors around your house.
I wanted a list of video links to some interesting conferences so I will add them here as a reference for others.