3D-printed portal gun replica
Just finished my first large 3D-printing project. For sure I couldn’t pass by when I saw this amazing portal gun replica from @KirbyDowney_65 on Printables. Here I’d simply like to share some highlights and happy moments I had while doing it.
I started by printing claws and assembling them, as they seemed the most fragile and tricky to assemble, but not so time-consuming when printing.
A few more printing sessions and the remaining black parts were also done:
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.
Flipper Zero for testing old dusty electronic components
Servo from an old Arduino set + Flipper Zero GPIO = ♡
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!
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.
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.
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.
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.
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.