Sort by Regex

Posted on Posted in Coding

Rax string reduction, /cat(), on the IMPALA backend was not trivial to implement. The IMPALA documentation states: GROUP_CONCAT … does not support the OVER clause, … Effectively this means no ORDER BY on GROUP_CONCAT in IMPALA. This must be implemented eventually, because the whole GROUP_CONCAT has limited use without it. Meantime, regexes can be used […]

Welcome Snowflake

Posted on Posted in Big-Data Blab, Coding, Rax

Snowflake Computing has recently emerged from stealth with a bold claim of having reinvented the data warehouse. Ease of use is their main motto and I dare to say they live up to this promise. Since one of Snowflake’s co-founders, Marcin Żukowski, is a good friend of mine, I’ve got a chance to play with […]

A Different Kind of Easy

Posted on Posted in Coding, Cool Bugs

Putting into words when something will happen is easier than calculating it. This is nothing new. Since 325 CE, Christian Easter falls on “the Sunday after the ecclesiastical full moon.” Easy words for hard numbers. Even “next business day shipping ” can be hard to crunch. To a human it is easy; “Tomorrow is New […]

Whorfianism

Posted on Posted in Coding, The Company

The Sapir-Whorf hypothesis (or principle of linguistic relativity) holds that language affects its speakers cognitive process and world view (neo-Whorfianism). Some hold this true even for programming languages, assuming coding in some language implies thinking in that language. K.E. Iverson, inventor of APL, argued that more powerful notations aided alogorithmic thinking (ACM Turing Award Lecture). […]

Rax/MySQL vs. Rax/Azure vs. Rax/Redshift

Posted on Posted in Coding, Rax, SQL Rants

Our SQL-backend family is contantly growing. Rax could already connect to SQLite, MySQL and PostgreSQL databases. Now we have also ported Rax to two major cloud databases: Microsoft Azure and AWS Redshift. The port to Azure gave us some headache due to problems with their ODBC driver for Linux. The port to Redshift was straightforward, […]

Write Once, Run Everywhere – Rax SQL Backends

Posted on Posted in Big-Data Blab, Coding, Rax, SQL Rants

Rax is running atop an SQL-based relational database backend, translating data-heavy operations into SQL queries. Actually, there are several SQL backends that Rax can use. Rax syntax and functionality are not dependent on the backend used. In other words, Rax/Redshift can execute exactly the same Rax code as Rax/MySQL and Rax/Azure. The subtle differences between […]

Understanding Time

Posted on Posted in Coding, Designing A Language

With behavioral data, time plays a very important role. Yet, time-related data is especially hard to analyze. The main culprit is the fact that time concepts are confusing. While humans can handle time intuitively, passing these intuitions to a computer program is hard. For example, implementing a growth rate using a relative duration of “twelve […]

Void

Posted on Leave a commentPosted in Coding

Void, the most powerful of the five elements in Japanese philosophy, is an important concept in Japanese martial arts but also in coding. Void enhances the ability to create by preventing unnecessary formalisms. A coder properly attuned to the void can sense their way, act without thinking, and without using their physical senses, practicing a […]

Perfection or Stuck?

Posted on Leave a commentPosted in Coding, Rax

Rax has a Pascal-like “with” construct. If a tuple T of a number, a string, and a real, is defined as [#:a, $:a, &:a] the following code should be valid: // Do T := [42, “aap”, 3.1415] with with: T.{ a := 42; // Change the first a. a#1 := 42; // Ditto. a#2 := “aap”; // […]

Optimizing Through Bijections

Posted on 2 CommentsPosted in Coding, Rax

You know how in compiler trees it pays to keep track of constants. Whole subtrees can be found out to be constant. In a triple join it can save a lot of time. The technique is straight forward: keep track of base constants and of operators with constant results and presto. In Rax’db a simple […]