Everybody can make DeepFakes without writing a single line of code.

Photo by Christian Gertenbach on Unsplash

Do you dance? Do you have a favourite dancer or performer that you want to see yourself copying their moves? Well, now you can!

Imagine having a full-body picture of yourself. Just a still image. Then all you need is a solo video of your favourite dancer performing some moves. Not that hard now that TikTok is taking over the world…

Image animation uses a video sequence to drive the motion of an object in a picture. In this story, we see how image animation technology is now ridiculously easy to use, and how you can animate almost anything you…


Literate programming is now a reality through nbdev and the new visual debugger for Jupyter.

Photo by Max Duzij on Unsplash

Notebooks have always been a tool for incremental development of software ideas. Data scientists use Jupyter to journal their work, explore and experiment with novel algorithms, quickly sketch new approaches and immediately observe the outcomes.

However, when the time is ripe, software developers turn to classical IDEs (Integrated Development Environment), such as Visual Studio Code and Pycharm, to convert the ideas into libraries and frameworks. But is there a way to transform Jupyter into a full-fledged IDE, where raw concepts are translated into robust and reusable modules?

To this end, developers from several institutions, including QuantStack, Two Sigma, Bloomberg and…


Turn your Windows machine into a developer workstation with WSL 2.

Image by OpenClipart-Vectors from Pixabay

I used to have an Apple laptop as my daily driver. I could do almost everything there; development, proposal writing, music composition etc. But the fear of vendor lock-in, the concern that I am depended on Apple’s whims and vices — which are arguably very expensive — led me to seek a new solution.

See Part II here:

I started building a machine learning workstation; a great CPU, lots of RAM and a competent GPU, among others. My OS of choice for almost anything was Ubuntu, except I needed Microsoft Office for proposal writing. Office online is just not there…


What are the alternatives to one of the most well-designed CLI tools out there?

Photo by Yancy Min on Unsplash

I know that some of you reading these lines already hate me. Some of you could and actually spend every working hour in front of a terminal window; you love it. There is nothing wrong with it, and some Command Line Interface (CLI) tools are so well designed that even if you had a graphical user interface, you would most probably never use it.

I hear you! I actually love working inside a terminal window. I love the ViM editor, my workstation is an Ubuntu server virtual machine and I SSH into it every day, and until recently, I was…


Machine Learning engineers have their own design patterns as well!

Photo by Alice Dietrich on Unsplash

Keras is a Machine Learning (ML) library built on top of TensorFlow, making it extremely easy to create and fit Deep Learning model architectures. As they like to say, “Keras API is designed for human beings, not machines.”

And that’s true! If you want to quickly sketch up an idea, Keras is the tool for the job. However, Keras can be very flexible and powerful; you can gradually peel the layers of complexity and dive deeper to customize almost every little detail.

Moreover, Keras can take advantage of multi-GPU configurations or TPU training because of its TensorFlow-backed backend.

In this…


Tips and Tricks

When could gRPC be an alternative message passing solution to REST?

Photo by Mathyas Kurmann on Unsplash

For a long time now, we’ve had REST (REpresentational State Transfer). REST APIs are cozy, warm, friendly, and very flexible. And if I’m permitted to be a bit abrupt here, thank God I don’t have to use SOAP anymore!

So why on earth do we want to change everything again? Why do we keep inventing new, shiny stuff to replace tools that work so well? What is this gRPC thing now?

Well, the simple answer is, “there is no one size that fits all.” If you were to deliver a letter reliably and as fast as possible, how would you…


How to automatically build your Docker images; a case study.

Photo by Emilie Farris on Unsplash

Jenkins is a self-contained, open-source automation server with packages for Windows, Mac OS X, and other Unix-like operating systems.

If you visit the project’s landing page, it informs you that Jenkins is the leading open-source automation server, with hundreds of plugins to support building, deploying, and automating any project.

This statement may be true, but that does not mean that Jenkins provides an easy and straightforward way to achieve all that. …


JupyterLab 3.0, a visual debugger, nbdev, Kale, IDOM. This was a great year for Project Jupyter.

Photo by Nubelson Fernandes on Unsplash

Jupyter Notebooks are a great tool for the incremental development of software ideas. Data scientists use Jupyter to document their work, explore and experiment with novel algorithms, create quick sketches of new approaches and immediately observe the outcomes.

However, software developers turn to code editors and IDEs, such as Visual Studio Code and Pycharm, to convert the ideas into libraries and frameworks when the time is ripe.

JupyterLab was developed to address some of Jupyter Notebooks’ shortcomings. …


Turn any machine into a developer workstation with one command.

Image by Gergely from Pixabay

Two years ago, I had one issue: On one hand, the company I was working for was a heavy Microsoft product user. Microsoft Office was essential for my work. At the same time, I prefer to do my programming work on a Linux machine. A Windows VM inside my Linux environment was running too slow.

So, the solution I came up with was a simple one; I decided to dual boot Ubuntu and Windows 10. Dual boot was the answer for a long time. However, one million context switches later, Windows Subsystem for Linux, or WSL for short, was released…


Monoliths Vs. Microservices: There is no one size fits all approach

Image by Walkerssk from Pixabay

When it comes to software design, microservices and monolithic applications are two radically different approaches to designing, building, and deploying software. So, what is the difference between microservices and monolithic applications?

For starters, microservices are small pieces of business logic designed to be developed, deployed, and scaled independently of one another. In contrast, monolithic applications are designed to be developed, deployed, and scaled as a whole.

However, different organizations have different resources, and there is no one size fits all approach to building a successful product. It’s common for developers to spend a lot of time and effort designing, building…

Dimitris Poulopoulos

Machine Learning Engineer @ Arrikto | PhD(c) @ University of Piraeus, Greece

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store