Databend on AWS/EKS

Over the Christmas silent period, I got my hands on Databend, a data warehousing solution intended to provide an easily scalable, cloud-first, SQL-based data engine. The keywords bingo speaks for itself: it’s written in Rust, friendly with containers/Kubernetes (k8s), elastically scalable, and uses Raft as a consensus algorithm instead of Paxos. In short, it fits all the last five years’ fashion trends in data warehousing. What specifically appealed to me was the ability to use cloud object storage as a storage backend and the isolation between compute and storage.
Read more →

Flipper Zero for testing old dusty electronic components

Servo from an old Arduino set + Flipper Zero GPIO = ♡
Read more →

ClojureD 2020

Last saturday I visited my second ClojureD conference in Berlin. It’s an amazing experience meeting people who indirectly influenced my choice of programming language for the past several years (kudos to Alexander and Nikita). It’s also very pleasant to see how many new things popped up recently in Clojure community. Here are few highlights I wanted to share: Babashka by @borkdude (github) Really appreciate how much effort Michael puts into the modern tooling for Clojure!
Read more →

Querying the databases from REPL

For already quite some time I prefer using Clojure REPL instead of any other tools for querying the databases. At work we have variety of the storage solutions available (Postgres, Aurora, Presto, Hive), and having a single consistent SQL read-only API to them is crucial for productivity. Additional benefit compared to the graphical tools available in the market is the ability of programmatic post-processing of the data using higher-level language. Being very data-oriented, Clojure comes really handy.
Read more →

Mastering the Tooling around Clojure Data Analysis

My December present to myself was a series of books. One of them was called “Mastering Clojure Data Analysis” by Eric Rochester. It contains a comprehensive set of examples on analysing and visualising data using Clojure. I found it quite interesting mainly because a couple of use-cases covered in the book correllated very well with daily work, so I thought “why not?”. Once I got the book, I realised what’d be the biggest challenge.
Read more →

Complicated data-driven applications

Any design is not perfect. There needs to be a way to evolve away from any decision. Components have different lifecycles. Components have different levels of criticality. Those components should have a very clean interface between each other and an outstanding level of isolation. Replaceable > Extendable, because the latter is more opinionated. The lifetime of the components should be challenged at all times. Proven technologies should be maintained in a conservative way.
Read more →

Simple data-driven applications in Clojure

Sometimes the information from the data lake/warehouse/pond/whatever simply needs to be exposed via the REST-api. Just getting the tooling right sometimes may be troublesome. Here’s an example on how things can work out in clojure. Let’s say we have an SQL-based engine like Presto (or Presto) as the main interface to the datalake. Let’s check how we can leverage the power of Clojure to build a simple application for fetching the data from Presto.
Read more →

3 libraries to work with swagger in Clojure

OpenAPI specification drills it’s ways into becoming a standard in many software companies. Let’s say your organization wants to follow the API-first approach. It means that before implementing any cross-team (or 3d party integration) functionality, the parties first agree on the contract, and review it. I had this approach in mind since I’ve started working in a small payment provider company. Contracts there meant everything, and negotiating the API/authentication process was basically 80% of the job.
Read more →