Nowhere Is Not Enough Fractured Identity and the Proemial Relation as Channel Abstract This paper argues that identity between two logical subjects — two contextures in Gotthard Günther’s sense — is not a binary fact but a dimensional structure, and that the dimensions of identity accessible between any two contextures are determined not by the contextures themselves but by the channel through…
There is a well-known photograph - or rather, a well-known kind of image - in which Stan Laurel and Oliver Hardy point at each other simultaneously. Each one points at the other. Neither points at himself. The image is funny, and also a little vertiginous, because it is not immediately clear who is accusing whom, or whether the gesture means anything at all when it is perfectly mutual. It is worth…
Given my old Macbook Pro with an Intel i7 is ageing (and quite well, I might say) I was contemplating buying a new Macbook Pro with an M2 or M3 processor. Generally speaking my needs are: software development (e.g. Docker), video recording (e.g. OBS Studio) and light video editing, playing around with LLMs running locally mainly to learn and have fun, for more serious work I’d then switch to e.g.…
The use of Generative AI allows a completely new programming paradigm. I call this paradigm Generative AI-Augmented Program Execution (GAPE) . In very brief, GAPE is a programming approach that mixes regular software code with output from GenAI models. The idea is best illustrated with an example. Imagine you have a list of animals: [“horse”, “cat”, “whale”, “goldfish”, “bacteria”, “dove”]. You do…
In the past I was focusing mentally a lot on how large language models (LLMs) allow new ways how to interact with text data. Recently, while talking to a colleague, it suddenly dawned on me that large language models actually also enable new ways how to “query” or “process” your structured tabular data. In this article I will compare four different approaches: Querying structured data via APIs.…
I have been fascinated with dream interpretation for a long time. So, over the weekend I decided to create a database of >13k recorded dreams I scraped from the web. The database allows me to perform semantic searches rather than just plain-text searches, and beyond that it even allows GPT-enabled question answering. For example, I can ask the Q&A bot questions like: “Please search all dreams…
While GPT models have been around for a few years, it was only after the arrival of OpenAI’s ChatGPT that they caught the wider attention of the public. Frantically, managers and IT specialists alike are searching for ways how they can make best use of this new technology. As usual, the first ideas will turn out to be not necessarily the most mature, and it will take some time until the full…
Previously, I wrote why using Karma as a test runner to unit test your Firestore security rules for your Angular app is a bad idea . Let’s see then how you can use Jest in combination with Firebase Firestore emulators . I’ll be using Angular v14 , Firebase web v9 , the node package @firebase/rules-unit-testing v2.0.5 and Jest v29.3 . The setup Jest will be used as our unit testing framework and as…
I’m writing an Angular 14 app with Google Firebase Firestore as a database. I assumed that developing the Firestore Security Rules with Firebase web v9 by writing Karma/Jasmine unit tests should be not too hard. After all, Karma is Angular 14’s default test runner, no? Turns out that using Karma to develop or test Firestore Security Rules is a bad idea. You should use Jest (or maybe Mocha)…
A few days ago I found a Bitcoin wallet.dat on a Macbook from 2011. Here is how I managed to cash in on it. A Bitcoin wallet from 2011… In 2011 my employer sent me and a co-worker to the Netherlands for two weeks to work on a research project. There, for the first time, someone told me about Bitcoin. While I found the ideas fascinating I could not make a lot of sense of it. And certainly there was…
Understanding vector algebra is a prerequisite to selecting meaningful distance metrics for text embeddings. For the fun of it, let’s recall some of the basics. Basics of vector algebra Let p and q be each a n-dimensional vector in a n-dimensional Euclidean space. Addition and subtraction of vectors Addition and subtraction of vectors of equal length is quite straight forward. Both operations…
I have written three blog posts about how to use Lucene 7 and OpenNLP to index part-of-speech tags and then use phrase queries to search on these tags. What I haven’t shown so far is what’s so cool about having such a capability. Imagine that you are building a search engine containing various articles. You are interested to know what nouns a particular indexed term is typically paired up with.…
Now that we can do searching on indexed part-of-speech tags what’s still missing is a way to introduce an order of search terms. Remember: All POS tags in our query are simply OR ed together. So, how an we achieve this? Fortunately, this time the answer comes easily. We can use PhraseQuery . According to the official docs a PhraseQuery is… A Query that matches documents containing a particular…
In my previous post I promised I’d describe how to perform searches on indexed part-of-speech data with Lucene 7 and OpenNLP. Let’s have a look. (Thanks to Koji on this one!) We have already seen how to create an index and then add some data. Directory index = new RAMDirectory (); OpenNLPAnalyzer analyzer = new OpenNLPAnalyzer (); IndexWriterConfig indexWriterConfig = new IndexWriterConfig (…
I’ve carried the idea to use OpenNLP to do part-of-speech tagging and index the POS tags with Lucene around with me for quite some time. Turns out Lucene 7 comes shipped with support for OpenNLP. Of course I had to try it out. Before starting, I highly recommend carefully reading through this official documentation of the Lucene analysis package:…
There is a natural similarity between a rhizome’s relation and how modern transistors work. As it turns out, we could actually build a rhizome (with limitations) using transistors. Have a look at the following example. Every transistor consists of a collector, an emitter and a base. r2 <= (r3, r4): We will call relatum r3 the collector , and relatum r4 the emitter . Another relation’s emitter, r2,…
Being a software engineer is not an excuse to complain about your data science colleagues. You don’t have to become an expert in machine-learning or statistical analysis, but it’s actually a lot of fun to dive a little deeper into some of these topics and learn more about, let’s say, categorisation algorithms. And it even looks sexy in your CV. Just because Java is your first language does not…
Being a data scientist is no excuse for writing sloppy code. Yeah, I know that Java is not your first coding language, but you should really not write spaghetti code. Being a data scientist does not mean you don’t have to check in your code to Git. Oh, and this definitely also includes your iPython notebooks. Yes, that’s considered code too. There is no need to demonstrate your superior Python…
There are various text mining libraries, packages and tools available, many of them as freeware. Yet, when it comes to putting it all together in an enterprise environment, there is actually not too much information available on the web. This article is about how I would design a general-purpose text mining engine that is fit for today’s standard Java-stack enterprise environment and the typical…
I had assumed that reading from and writing to files in Apache Camel v2.16.1 should be a straight-forward thing to accomplish. Turns out I was wrong. It took me quite a while to figure out the correct syntax of the from and to commands. Reading a single text file Before we can use Apache Camel, we need to import it in our pom.xml Maven file: <dependency> <groupId> org.apache.camel </groupId>…
Skill cartridges built with Luxid 7 usually contain a mix of customized and standard software artefacts. These artefacts can be data artefacts such as tailored vocabularies or taxonomies, syntactic or similar rules to extract certain types of entities, or they can be a set of configuration files that parameterize the skill cartridge at hand. For this reason, skill cartridges must be treated as…
I wanted to know whether/how it is possible to embed R in a website. Looking around the internet I found a few interesting initiatives, each one dedicated to a slightly different purpose: RStudio, Shiny, Jupyter Notebook, RApache, OpenCPU and RAppArmor. RStudio is probably very well known among R programmers. According to its website, RStudio is an integrated development environment. One of the…
As I was not able to find any tutorials on the web on how to use Temis Luxid 7.0.1 Webstudio, I simply decided to write my own. Luxid Webstudio is a tool that is intended for different use cases. One thing it does very well is to assist a taxonomy expert to build a new taxonomy or enrich an existing one with new terms. Furthermore, once a taxonomy is created it can be “plugged in” to the STF skill…
In my last post on the implementation of rhizomes I still suggested using hash maps to store pairings, that is relations. It was just recently that I recognized that there is of course an even simpler and more concise way of storing relations: as a single, long bit string, where a bit is set to 1 if a relation is established. Let us assume for the moment that we use the Cantor pairing function…
I wanted to know a little more on Principal Component Analysis (PCA) in R. For this purpose, I first created my own artificial dataset. I wanted to reuse the same dataset later on for performing also cluster analysis, so I put a little bit of thought in how to create it. This is the R code I used. Classes <- sample ( 1 : 3 , 100 , replace = TRUE ) createData <- function ( class , means1 , sd1 ,…
During the last few months, I had several job interviews with different prospective employers. A few weeks ago a working colleague pointed me to four questions that I could ask my prospective employer that would tell me a lot about the working culture I’d join. As my experience with asking these questions was very positive, I thought I publish them here in my blog. To the best of my knowledge, the…
Recently, I created a simple database management system including user rights management relying on GitHub, Jekyll, Prose, Heroku and a few other open source products. The basic idea is to store all data inside a _data directory in a GitHub repository. A user can access this data through a website (Prose) and manipulate it through a HTML form (JSONForm), but she needs to be authorized to do so…
In one of my last posts I was not sure how R’s different ADF test functions worked in detail. So, based on this discussion thread I set up a simple test. I created four time series: flat0 : stationary with mean 0, flat20 : stationary with mean 20, trend0 : trend stationary with “trend mean” crossing through (0, 0) - i.e. without intercept, trend20 : trend stationary with “trend mean” crossing…
I just stumbled over a very nice article authored by Paul Teetor on the use of total least-squares-regression in contrast to ordinary-least-squares regression for cointegration tests . This blog post also explains the same topic. Let’s quickly recall what we do when trying to find a working pairs trading strategy. First, we use one stock price time series to estimate another stock price time…
In an earlier post I explained how to install Jekyll-Auth . In GitHub, every team (and organization and user) receives a six to seven digits integer number as an ID like 1234567 . There are cases where you might need access to this information, for instance during the installation of Jekyll-Auth . Unfortunately, there is no easy way to find out a team’s ID. I could not find it anywhere published…
Part 6 One of the most poorly understood and yet at the same time most important concepts of genetic programming (GP) is parsimony pressure . It has long ago been demonstrated that for every type of statistical time series a function can be invented that arbitrarily well matches the observed values in the given time frame if that function is just complex enough. Yet, such a function is effectively…
Und erneut schreiben sie wieder - die Verschwörungstheoretiker. Diesmal im Falle Charlie Hebdos . Gar nicht tot, sei er, der erschossene Polizist. Als “Beweis” wird irgendein obskurer Videomitschnitt gezeigt. Es gibt viele Gründe, sich das nicht näher anzuschauen. Eine Reaktion - aus Empörung, man darf es sagen - hier trotzdem. Der Verschwörungstheoretiker ist eigentlich ein Anti-Aufklärer. An die…
I wanted to turn on code syntax highlighting using rouge for my blog by adding the following line to my _config.yml file. highlighter : rouge Whereas this worked perfectly on my local Windows machine, I ran into problems with Jekyll on GitHub. After searching for some time, I found this article from August 2014 where it stated: __Update: As of August 1, commiting a__ config.yml __that uses__ rouge…
Yesterday I wanted to find out whether a pair of stocks would be suitable for pair trading. There is a tutorial by Paul Teetor how to test a pair of securities for cointegration . Basically, we use an OLS linear regression model to estimate the absolute prices of one security with the other’s prices. If the residuals, i.e. the spreads, are stationary then we can conclude that both time series are…
Part 5 At the core of every genetic programming (GP) strategy is the fitness function . The fitness function specifies what the whole evolutionary process is looking for. Every individual is assigned a fitness value , which is computed by the fitness function. Individuals with a high fitness value stand a higher chance to be selected for reproduction and thus to create offspring. Finding a “good”…
Yesterday I had to fill out a questionnaire on my programming skills as part of a job application procedure. I was asked to name some GoF and JEE patterns I am familiar with, so I pondered on what I had learned for a little while. One thing that somehow struck me as odd was the silent underlying assumption that a “good programmer” nowadays is actually supposed to be familiar with these patterns.…
There is a good series of “cowboy-style” youtube videos on factor analysis. Factor Analysis - An Introduction (Part 1): Factor Analysis - Assumptions (Part 2): Factor Analysis - Research Questions (Part 3): Factor Analysis - Using SPSS (Part 4): Factor Analysis - Interpreting the Readout (Part 5): Factor Analysis - Examining Factor Loadings (Part 6): As I am a fan of the R software (or R Studio ,…
When working with time series data, one often needs to calculate sums of consecutive numbers for a predetermined time frame. Imagine for example calculating a moving average with a fixed size. Let’s look at a very simply time series. [0 |1 |2 |3 |4 |5 |6 |7 ] Assuming a moving average of length 4 results in the following array: [x |x |x |1.5|2.5|3.5|4.5|5.5] The formula for a moving average of…
Yesterday, my first article was accepted for publication on SeekingAlpha.com , which - I must admit - made me quite proud. Not only that, but the article even received an Editor’s Pick , which means that the editor(s) specially liked it. The article is about Enova International Inc. which just spun off from its parent Cash America Internatioal Inc. , and which I consider to be a great buy…
These are (hopefully) complete installation instructions for Jekyll-Auth. To understand how Jekyll-Auth works, you need a conceptual understanding on how Rack-Jekyll and Rack work. The next figure shows the conceptual workflow of Jekyll-Auth in combination with a repository on GitHub.com. This is how Jekyll-Auth works. On GitHub.com, there exists an organization foo-organization containing a team…
Cointegration is an important concept when dealing with time series data. Here’s the corresponding definition on Wikipedia : Cointegration is a statistical property of time series variables. Two or more time series are cointegrated if they share a common stochastic drift. In other (rather non-scientific) words, if both time series are non-stationary and they share a trend together (which can be…
Part 4 Genetic Programming at its core uses a set of operators (selection, mutation, crossover, elitism etc.) and parameters (number of generations, population size etc.). As there is a vast literature on this subject, I will skip the basics and assume that the reader is already familiar with the topic. The first thing to understand about GP parameters and operators is that they essentially make…
Yesterday, I wanted to calculate the significance of Pearson correlation coefficients between two series of data. I knew that I could use a Student’s t-test for this purpose, but I did not know how to do this in Excel 2013. And, to be honest, I did not really understand the documentation of Excel’s T.TEST formula. So, here is what I did. Pearson correlation coefficient First, I had to calculate…
Recently, I had created a user form with JSONForm . However, the form was embedded in another site with its own save button. JSONForm usually adds its own submit button to the site, but you easily can remove it . One of the problems left was how to trigger validation for the form manually once the site’s save button was clicked. Be aware that this implies triggering validation from outside the…
Part 3 Genetic programming (GP) heavily relies on existing time series data. In this post I am going to look into different requirements and problems related to data. First, we need to get the data from somewhere. There are different commercial or free data providers. Here is a list of free data providers. Yahoo Finance : Provides historical daily open/high/low/close/volume (OHLCV) quotes for many…
This is a wordcloud of G. Deleuze’s and F. Guattari’s A Thousand Plateaus: Capitalism and Schizophrenia created with this nice tool . I removed all words with less than a hundred occurrences, some abbreviations and otherwise not very expressive words such as also , thus , and etc. This is where I borrowed the term rhizome from. Enjoy! By the way, I am definitely not sure if I would recommend the…
I am always subtly amused when opening a book and one of the first pages encountered states that this page is intentionally left blank . Because, of course, it isn’t. There’s a statement printed on it. The situation reminds me of a first-time meditator deliberately trying to empty his or her mind of all thoughts - because, that’s how meditation is supposed to work, isn’t it. At least according to…
At a first glance, rhizomes may have a lot in common with existing technologies. Yet, when taking a closer look, there are important differences, and it is not possible to simply reduce a rhizome to one or another existing technology. In this post I will quickly compare rhizomes to a variety of different mathematical and computational concepts and data structures. Binary Decision Diagrams Here is…
This post demonstrates how it is possible to use rhizomes to store simple HTML. Consider the following HTML. <html> <head></head> <body></body> </html> How could we store this in a rhizome? First of all, it would make sense to treat every HTML tag as an atomic symbol. There are three such symbols in the sample: html , head and body . Let us assume that, unless qualified otherwise, the direction of…