Gabriele N. Tornetta

Pushing forward against boundaries since 1987.

  • Deterministic and Statistical Python Profiling

     2019 May 5    a 23 minute read  

    If you want to be sure that your applications are working optimally, then sooner or later you will end up turning to profiling techniques to identify and correct potential issues with your code. In this post, I discuss some of the current profiling tools and techniques for Python. The official documentation has a whole section on the subject, but we shall go beyond that and have a look at some alternative solutions, especially in the area of sampling profilers.

  • What Actually Are Containers?

     2018 Aug 4    a 33 minute read  

    Containers are the big thing of the moment. It is quite common to find blog posts and articles that explain what containers are not: “containers are not virtual machines”. Just what are they then? In this post we embark on a journey across some of the features of the Linux kernel to unveil the mystery.

  • Extending Python with Assembly

     2018 Mar 23    a 24 minute read  

    What’s a better way to fill an empty evening if not by reading about how to extend Python with Assembly? I bet you don’t even know where to start to answer this question :P. But if you’re curious to know how you can use another language to extend Python, and if you happen to like Assembly programming, you might end up actually enjoying this post (I hope!).

  • IoT with WebSockets and Python's AsyncIO.

     2018 Mar 3    a 32 minute read  

    After a gentle introduction to the concept of IoT and what it entails, we take a dive into WebSockets and Asynchronous I/O in Python to explore other ways of controlling devices over a network. This post uses a simple two LED circuit to introduce WebSockets, and how to use them in Python together with the asyncio module.

    IoTWebSocketsAsynchronous I/O
  • Android Development from the Command Line

     2017 Oct 14    a 34 minute read  

    Do you like your development tools to be as simple as a text editor to write the code and a bunch of CLI application to build your projects? Do you feel like you are in a cage when you use an IDE? Or perhaps your PC or laptop is a bit dated and all the cores spin like crazy when you fire up Android Studio? Then read on to learn how you can develop Android application with just the text editor of your choice and the standard Android SDK CLI tools.

  • A Gentle Introduction to IoT

     2017 Jul 31    a 24 minute read  

    The IoT revolution has started. But what is it exactly? Is it hard to take part to it? In this post I present you with all the details of a very simple and almost inexpensive Internet of Things project. Read through as we go from assembling the required hardware, to coding the software that will drive it, exploring some of the most modern free technologies that are on offer today. At the end we will be able to take control of some LEDs over the internet, from wherever we are. Consider this as a launch pad to more complex and exciting IoT projects.

    Raspberry PiIoT
    ElectronicsProgrammingWeb ApplicationsWeb ServersApacheRaspberry PiWSGI
  • Prime Numbers, Algorithms and Computer Architectures

     2017 Mar 6    a 14 minute read  

    What does the principle of locality of reference have to do with prime numbers? This is what we will discover in this post. We will use the segmented version of the Sieve of Eratosthenes to see how hardware specifications can (read should) be used to fix design parameters for our routines.

    Number TheoryAlgorithmsArchitecture
    ProgrammingC++Prime NumbersAlgorithms
  • Getting Started with x86-64 Assembly on Linux

     2016 Aug 10    a 26 minute read  

    You have experience of x86 assembly and you wonder what the fundamental architectural differences with the 64 bit Intel architecture are? Then this post might be what you are looking for. Here we’ll see how to use the Netwide Assembler (NASM) to write a simple Hello World application in x86_64 assembly. Along the way, we will also have the chance to see how to use some standard tools to optimise the final executable by stripping out unnecessary debug symbols.