Cæsar og Charlie – Just a car trip in Norway

It is tradition for me to make a video out of all the places that I have traveled to. 

This year trip was between the Norwegian mountains, to cross around 500 kilometers of road. 
My departure point was Bergen, and arrival was around the Oslo area. 

This is the route that we rode with our car.
It includes a 40 minutes ride in a ferry close to Odda (Between Bergen on the left, and the center of the route).  

Something that I am glad of is that while traveling you can often easily find accessible public bathrooms, (almost always in highly clean conditions)
These are well equipped, well isolated from the outside and offer good comfort for anyone.

I saw plenty of small towns here and there completely surrounded by huge mountains and water. They gave me a warm and welcoming feeling. 
The biggest challenge for me was to stop recording (I ended up with 60GB of recorded video footage). All locations that I have seen were worth recording.
Here is a little sneak peek of the places that I have visited. 
I apologize for the low camera quality. 

I wanted to “upgrade” my equipment since recording Ujig’s video, but due to several reasons I never had the opportunity to do so. 
One month ago my Xiaomi Mi Mix 2s completely died out, so I opted for an used Samsung Note 10 (350€ circa). 
The phone features three lenses:

  • 12-megapixel dual-aperture lens
  • 16-megapixel wide-angle lens
  • 12-megapixel telephoto lens

I am going to be honest. 
The phone does not capture as much detail as I expected it would, both in photos and videos.
We are talking about a top-range smartphone with a 949$ launch price. 
Only the dual-aperture lens is capable of recording at 4K 60FPS too.
My previous Xiaomi Mi Mix 2S was better in capturing detail, and was released one year before the Note 10. 

Phones are not professional cameras, but I needed a phone foremost so it was a good deal overall for me.
One problem of my Ujig video (talking about first one, I am planning on working on a second one) is that almost all footage was shaky. Especially the one recorded in the car.
I tried the trial version of Mocha Boris Pro (btw, it has insane stabilizing accuracy) but it took a lot of time to get good results and there is only so much you can do with “dirty” footage. 

I wanted to get an electric stabilizer for phones, but I was not so sure about making the jump due to the prices. 
The DJI Osmo Mobile 3 seemed interesting because it costed only 100€, but it was sold out everywhere in local stores. 
The Osmo Mobile 4 costed (as of time of writing) 200€, which is double the amount of money. 
It does have a huge advantage compared to the previous model though, which is the possibility of detaching the magnetic phone mount.
This means that, incase the phone mount broke, I can simply buy a replacement part.

So yeah, I went to Elkjop Sandefjord, I saw the box of the model 4, I spent a few minutes thinking and then decided to buy it. 
I gotta say, it was absolutely worth it. 
The quality of the stabilizer is insane and has plenty of useful tracking feautres.
Their Android software is lackluster though.
I am planning on writing a dedicated review to it.

I often saw timelapses made by vloggers such as the ones in Andrea Galeazzi’s videos
(IMO one of the best reviewers/entertainers in Italy), and I wanted to try on my own during the car rides I had.
As a first attempt, I am pretty satisfied of the results. 
Shooting with the telephoto lens would have been impossible otherwise. 

Some of the best shots I was able to get were in this small town between two mountains.
I used all three lenses to record and uploaded screenshots from the video so that you can take a look.
Also note the water level almost overflowing and reaching the road we were driving on, due to intensive rain. 

I am glad I had the chance of spending some time with Cæsar and Charlie. 
They both are beautiful animals that I am already missing since I came back. 
This is the YT thumbnail that I created for the video. 
I was told that it looks great, so I am going to put it on RedBubble as a tshirt. 

This is how it would look.
Note: I need to buy a license for commercial font usage, so these “renderings” are just for concept purposes. 
No copyrighted material is being sold, or has been produced.

After receiving some feedback, I was suggested to make a second variant of the logo taking a smaller portion of the clothing, more specifically on the right side.
I think that this works very well.

I took the opportunity to also try DaVinci Resolve, a professional program that offers a free version.
All the other editing programs that I have tried do not have good touchpad multi-gestures support (something that Windows heavily lacks compared to macOS), but DaVinci seems to have good enough support.

The UI looks fresh and clean, and the video editor includes some powerful editing tools.
The premium version includes hardware accelerated encoding/decoding and the rendering speed is just insane. 
The performance is good enough to edit HEVC 4K 30mbps files on a Lenovo Legion Y540 with the following specs: 

  • i5 9300H Quad-Core 2.4GHz
  • 8x2GB RAM DDR4
  • GTX 1650 4GB VRAM
  • 1080P IPS display
Edit mode.

DaVinci Resolve is split in several sections, which you can see in the bar below the program. 
In order of appearance: 

  1.  Media: You get an overview of all the clips that are imported into the project
  2. Cut: After choosing all of your imported media, you can then ‘mark’ the parts that you need. This is useful so that you will not waste your time manually cutting the clip on the timeline over and over. And also because the marked parts will be saved. 
  3. Edit: You move to the timeline the cut footage and adjust it as you please. 
  4. Fusion: For adding effects to the media on the timeline. 
  5. Color: Advanced color tools to change how the media looks.
  6. Fairlight: Made for sound designers to adjust the sound of the clips. 
  7. Deliver: To render your work. 

There are a few things that I found annoying while using the program: 

  • Playback will not stop when you click to change the pointer position over the timeline
  • Doing a mouse hover over the project clips will switch the preview to these, hiding the timeline preview
  • You can’t change the framerate of a Timeline after creating it

Other than these few issues, I have had a smooth experience and might switch to Resolve as my main editing program.

Something I do not go crazy for in Adobe Premiere Pro is how masks are handled. They are not as advanced as on Photoshop and to even manually resize a single point of the mask you need to know keyboard shortcuts. 
On DaVinci Resolve this is intuitive and easy. Same thing for other features such as tracking a point. 

The premium version costs around 400$ (Please correct me if I am wrong) and is a one time payment only.
It might sound like a lot, but compared to other companies forcing monthly subscriptions, it actually is a reasonable price. 

I now have to come back to Bergen. 
I will miss you Cæsar and Charlie. 
See you next time. 

Blog Misc

Jr. Software Developer – My first Work Internship

“Be careful, because the code you write might set your pc on fire.”

This is the warning that my tutor gave to me at work.
When I had first heard that, I laughed at the sole possibility of something like that happening, even though deep down I knew she was right. 
Well, it is either that or my head exploding first.  

After a pretty intensive job search, I was able to get myself a three months internship in a company located in Bergen, as a Junior Software Developer.
I am glad I got this opportunity for a few reasons.

  • The first one is that I finally could enter the so-much called “Norwegian Bubble”(read The Social Guidebook to Norway to understand what I am talking about).
  • The second reason is that learning programming and software development directly on the field is allowing me to learn at a fast rate. 

Before the start of my arbeidstrening I felt pretty nervous, but I was then given a warm welcome by everyone part of the ValveWatch development unit.
Taken from the official website:

ValveWatch® is an automated, online valve monitoring system for critical valves and actuators brought to you exclusively by MRC Global. Users can remotely monitor a valve or actuator’s performance and correct degradation before it effects safe and reliable operation.

The same day I was then shown around and given documentation regarding safety at work.
I was surprised by how big the company building in Bergen was. Hopefully I will have the time to see all of our equipment in action.
The work day is a flexible 7.5hrs per day.
I am glad of the flexibility, because my work commute is long and has multiple intermediate stops. 
There also is a 30 mins lunch break and a cafeteria where you can take food. 
The company also includes a small gym.

Finally, I received a top of the line PC station (Threadripper 2950X and a triple monitor setup) and office furniture.

If you think this hardware to be overkill (especially considering that the software being developed does not have any complex graphical effect) then you haven’t experienced the great pain of building time.
I am not kidding: it takes me around a minute for the software to finish building.

During my development journey at MRC I learnt appreciating Stack Overflow as a documentation resource.
Stack Overflow is a programming-focused forum where developers can discussion development issues. 
You can find material that varies from beginners to expert levels of complexity.

It can happen to have a roadblock while programming.
I usually look up online for people that might have been in the same situation as me. 
It is a fantastic feeling when you see on Stack Overflow someone posting the same question that you have had in your mind. 

It is a little bit less nice when the same person is able to fix it on its own without explaining how:

These are the tools that I have been getting accostumed to:

QT is an IDE. 
In more simple words: It makes your life easier by including everything you need to develop under one and united roof. 
One of the benefits that probably all IDEs include, is error checks.
If for example you do not correctly write down a line of code, the IDE will inform you of that (and might give a possible solution too).

Practical example. 
I wrote the following line of code: 

int variableName = "Sentence here";

Since it logically is wrong, the IDE will inform me of the error, on the same line where I wrote the faulty code. 

Mistaken variable declaration.
I declared a variable that is supposed to store numeric data, and assigned the characters “Sentence here”, which are letters. Therefore, I get an error informing me of that.

GIT is a piece of software that tons of individual or groups of developers use to keep track of all the changes performed to the code base of their software. 

It is text interface based, but some of its functions are packed inside QT’s UI. 
I could for example “commit” my most code recent changes, and if I regret it afterwards, I can undo it by downgrading to a previous commit of my choice.
It works kind off like Apple’s Time Machine. 

Another useful feature of GIT is that you can see what’s between each “change” you have published and what code has been removed or added.
This is good in case you need to compare the code between each version. 

There also is a “branches” feature. 
It allows a developer to “clone” the current project, and then add a list of features to that specific branch. 
By doing so, each developers can work on their own branch with their own features and then merge everything together. GIT automatically handles all of that.

GitLab is a web platform based on Git and made for team development. 
You can see in detail all changes made to the code, and approve merging requests with the rest of the code base.

Atlassian Suite contains several web products aimed at developers. 
We use Jira and Confluence.

  • Jira is a task manager with lots, and I do mean lots of advanced settings. 
    It is helpful for self-managed tasks and to see how other members of the team are doing at the same time. You can put advanced descriptions for all tasks, and keep tracking of how much time you are spending behind one. There is optional integration between Jira and Git. 
  • Confluence is, in short, a Team Wiki for share documentation. 
    The web editor is highly advanced and you can create nice looking pages. Of course snippets of code are supported too. 
    The dev team guide on how to setup the development environment is in fact written on a Confluence page. 
    Since I encountered a few problems due to software updates, I could report snippets of it or just fix them myself.

Something that I found interesting was how we were going to communicate with each other.
Each developer has a huge office desk, a side table and their electronic equipment.
Since we all are facing against each other, it is not always easy to show the code we are working on. 

So, when we are working on code related issues, we use a real time chat application to share code snippets. 
We also sometimes share our PC screen so that other people can see what is going on over QT. 

I believe this to be an effective way of helping each other because it does not disturb other people that are focused on their own tasks. 
Less details will be lost during the conversation too. 
The office is great too.
It has everything you’d expect from a good workplace: a lot of space to move, a coffee machine, whiteboards to write on, a ‘break’ area, 

I want to focus for a moment on the workplace culture in Norway.
People are most passionate about their work here, but they also like to socialize while taking a few breaks here and there.
As long as you do your work and do not slack off, it is okay to take some time to breath. 
It avoids mental exhaustion by letting people relax for a few minutes and It helps coworkers to get to know each other.
The other ‘big’ moment to socialize is our half-hour lunch break.
We got a cafeteria with a selection of food that changes every day.
Unlike countries such as Italy, the lunch is NOT the heaviest meal of the day.
You can either take a few slices of bread and put something on top (Norwegian salmon is
HEAVEN), or a small packed meal. You also can pick up some fruit and a small dessert. 
All the food that is not taken will be recycled (at a farm I suppose?), or can be brought home. 

There also is a balcony where you can sit down and enjoy the weather. 
It makes you feel one with nature. 


This Covid pandemic hit hard on many people’s lives.
Mine included.
It limited my mobility to come back home in Italy and profoundly affected my mental health.

It also hit a lot of industries worldwide, and 200 thousand Norwegians lost their job as a consequence
Right now, Norway’s population is 5.328 millions. 
Almost 4% of the Norwegian populations became unemployed. Luckily NAV (Norwegian Labour and Welfare Administration) gave financial support to many people that needed help. 
While receiving unemployment benefits, my salary was slightly boosted due to the current Covid situation. 

So yeah, thanks for the help NAV! 💖💖

It felt great to finally be back in society, and in such a productive environment too. 
No matter where I look, I always have something new to learn.
And no matter how many times I ask, there are tons of people willing to explain to me and help me understand new things.
My tutor has been extremely dedicated into teaching all that I have learned so far here. 
Even though this is a software development internship, the department also has engineers that work on hardware solutions too. 

I am going to summarize everything that I have learnt here so far, week-by-week.

First thing I did was to set up the development environment on the machine provided my the company. 
As development environment I mean the OS and all the programs that a developer uses to work. 
In this case, my dev environment features an SSH Key, LLVM, Oracle Instant Client (allows application to communicate with a database), Git, QT, CMake, Java, some C++ APIs

I did have some roadblocks during the set-up phase caused by some libraries lacking on my development machine. I fixed them and updated our internal set-up documentation before proceeding.

I opened for the first time the ValveWatch codebase in QT Creator. 
I made a fast UI sketch of the CSV parser window I would have worked on as part of my project, and I afterwards had to create a new entry in a contextual right click menu. 

Example of Brave’s right click contextual menu.

QT allows you to connect code and UI elements both through its GUI and/or code. 
Something that I quickly learnt during my internship is to always prefer using the terminal rather than its graphical counterparts. 
The same concept applies for stuff like that.
Especially when unexperienced. 

I remember that while learning Python I was looking over how to create a basic interface for my BMI calculator (which BTW I am recreating in C++, you can see it on GitHub!) and felt discouraged regarding how to proceed. 
QT handles all of that stuff (at least for basic projects) on its own.

I created a button to select a file, and interfaced it with Windows Explorer’s file select GUI, and storing afterwards the full directory of a selected file in a string. 
By then, I could interface the string holding the file directory to the CSV parser.

My first taste of parameters-argument was when some data was being passed from the Client to my pop up window. 
A parameter is a variable sent, while an argument is a received variable. This is especially useful when calling functions through other functions. 

Finally, I learnt how to manipulate arrays and vectors to import the CSV data inside the computer memory. 

During my arbeidstrening, I took a 2 weeks break for a car trip I had planned before (I needed my head to rest for a while), and shot the video “Cæsar og Charlie“.

Coming back to work, I mostly did refactoring of my already existing code and we implemented a new CSV Parser API, since the previous one was deprecated.

Something that gave me some trouble during July was when I suggested to switch the CSV Parser API we were using because our previous one was deprecated.

The API’s purpose is to parse a CSV file containing recorded data.
Initially the challenge was to get the CSV parser to count how many “sensors” were inside the CSV file. Well…
Hold and behold. With the new CSV Parser the only necessary part of code is this:

csv::CSVReader csvReader(file_dir.toStdString(), csvFormat);
csv::CSVFileInfo fileInfo = csv::get_file_info(file_dir.toStdString());


This still shows a huge lack of knowledge by me regarding how to read API documentations.

Finally, the last part of month two was featured by the introduction of Debug mode. 
Debug mode allows you to see when and where things are going wrong while your program is being executed. 

This is how it works: 
On the code edit mode, you can set breakpoints on the line counter on the left of the program.

I have spent most time of the month by refactoring (optimizing) my code, slowly adding UI functionalities to my program and discovering QT classes.

As of right now, I felt confident enough to just drop for a little bit of time my coding sessions.
I first put my hands on making a full inventory of all the laptops and docking stations that we have in the office.(btw docking stations are way more useful than I thought, especially if you have to take your laptop with you for a meeting)

To do a full inventory I have turned on each laptop, performed an hardware diagnosis and made a system info export that was afterwards uploaded on a Confluence page. 
The document featured a list with each laptop serial number, product number, basic hardware and charger info. 

Then, I focused on learning how to use the 3D printer we have in the office, a Creality CR-10S Pro v1. 

A 3D printer is used in such a way that you download a 3D model (for example from Thingiverse), and you use a dedicated software afterwards to converts it to a set of instructions that your 3D printer can interpret: the GCODE file format.
The 3D printer is not really away of how the end result is going to look like. 
It just knows how to move on its three-axis, the printing speed, temperature and other important settings that will vary depending on the level of quality of the final print and what kind of setup you have.
I expected 3D printing to be easier, but it actually requires you to sit down for a few days and learn how to properly calibrate it. 

Or weeks.

Well, me and another new guy wanted to perform some 3D printing tests, but the end results had plenty of inconsistencies. 
I am talking about stuff like this:

Image of 3D Printing Troubleshooting: Common 3D Printing Problems and Solutions: Gaps Between Infill and Outer Wall (Source)

On the right side of the print, you can see some parts not filled. We either got this problem or sections overlapping. 
While looking at the 3D printer on-screen menu, I mistakenly pressed the ‘Levelling’ setting’.

You’d assume to then access a menu with calibration settings, right?
You couldn’t be more wrong. 
This 3D printer is instead going to perform an automatic levelling test (distance between the muzzle head and the 3D printer bed).
Due to its previous non-standard configuration, the nozzle head ended up crashing against the printer bed, and caused the sensor to move.

Since I could not find any info in our internal matrix regarding such a situation, I decided to try things on my own by creating additional, new documentation explaining how to calibrate all the parts of our 3D printer.  
As of time of writing, it is split in these sections: 

  1. Gantry Frame Levelling
  2. Sensor Levelling – Part 1
  3. Sensor Levelling/Muzzle head adjustment – Part 2
  4. Bed levelling – Manual
  5. Bed Levelling – Automatic
  6. Muzzle temperature Calibration – Manual
  7. Speed calibration – Manual

Each of these components require specific and unique steps, which have been complemented with extremely high quality graphics made by me (© ®™) such as this: 

I am the Gordon Ramsay of art, but better.

In the end, the 3D printer calibration was successful. 
To better push my luck, I have tried printing multiple items in a single session. 
This is not a good idea because the 3D printer is taking care of one “entire” layer at a time, and 3D printing relies on material temperature manipulation. 
By printing the layer of one object, and then moving to a second object you are interrupting the current build. 
In the long run this will cause the final print to not be perfect, or even worse to completely screw everything up.

Apparently this is what happened during my last 3D print: some filament must have gotten stuck to the 3D printer head while becoming stuck, and crashed against the items that were being printed. 

I came back to the office the next day, I was welcomed with the 3D printer glass bed on the floor and a printing result that looked like it came straight out of “The Thing”.  

Going back into development, my tutor held a general OracleSQL course explaining how a database works and how you can interact with it (for example how to fetch data inside the database).

Knowing how to ‘communicate’ with the database was fundamental for my project and EventImport functionality, and it is overall good programming knowledge. 
Unlike C++, OracleSQL uses a different writing syntax. Something I find confusing is that they both use the same characters (for example –> ‘ )

Once again, I was surprised to see that QT has some sort of SQL integration through qSQL classes.
You can put SQL commands inside QStrings, and QT is going to handle the communication with the database.

It was interesting to participate in code reviews of my colleagues (mostly featuring my tutor’s code). 
Needless to say, even then I felt very overwhelmed by all of the code lines on the screen. It is also hard for me to read another person’s code (especially if without comments explaining the content) and understand what it does.

Close to the end of the month, only three things were left to do: 

  • Implement Event Import‘s communication with the OracleSQL database
  • Do as much refactoring as possible and split the program functionalities in three UI buttons
  • Create a Confluence introduction page of Event Import featuring the most common user-case of importing a .CSV RAW file. 

The tasks were completed on time, but not by much of the deadline margin. During the Event Import introduction I held in our department, the team responded well and expressed their interest in seeing it in action.

Final thoughts.

I am grateful for the level of teaching quality that has been provided by the company (and my tutor) during these three months of internship (arbeidstrening).

I am proud of everything I have been able to learn, but I am not satisfied with the end result that I have produced. 
It took me too much time to catch up with the topics I was studying, and my fear of ‘disappointing’ my tutor greatly altered my final performance.
It did happen a few times that I arrived late at work as a consequence of my fear stressing me out at home while I was supposed to be sleeping for the next work day.  
I have learnt how to manage this fear, and that it is okay to say “I need to slow down, I can’t follow up”. 
Or that I did not understand anything of a certain topic. 

Nether less, it is a great feeling to know that I can now make a GUI desktop application using QT, while interfacing it with SQL and with other third party libraries (such as the CSV parser I have used).
It gave a great boost on my CV and my professional confidence.  

I have been fed, taught and well-treated by my tutor during my three months permanence and I have now started an extra 6 weeks internship for a second project in the same company. 
Unlike the previous back-end project, this one shifted to pre-R&D. My objective is to record data proving how the lifespan of an in-house electronic device can be greatly extended. 

I am planning on writing a summary post for the second internship project and next time I will be more prepared through more detailed writing and notes.

Thank you R. and A. for being my teachers and aspiration on how to be a good developer. 
Having great teachers makes all the difference in the world when learning a new discipline.

Blog Technology

New light mode theme!

Several people told me to change the website design to light mode.

I gotta say, that was good feedback.
I also fixed my CV design a little bit and it looks better too.

For people that still want dark mode, there should be a “switch” icon on the bottom right of my website.
It might be moved inside the NAVBAR, I’m not sure yet. 

Blog Technology

Xiaomi Mi Watch (China version) & A brief history of recent smartwatches

Xiaomi is a Chinese company best known in the western world due to their fantastic smartphones and low prices. 
(They also sell a lot of different stuff in China)
Up to 2015, almost all low-end smartphones were plan awful. 

I am talking about the performance, the materials quality and overall user experience.

During 2016 an old friend of mine showed me his newly bought 250€ Redmi Note 3 Pro.  I couldn’t believe my eyes when I saw it. 

Photo from

This is a short spec-sheet of the Redmi Note 3 Pro. You can see the full one over at

  • An aluminum body
  • 1080P 5.5 inches IPS LCD display
  • Snapdragon 650
  • Dual sim, MicroSD slot
  • 16MP rear camera, 5MP front camera
  • 16GB 2GB/32GB 3GB RAM
  • 4050 mAh battery
  • Fingerprint scanner on the back

Rather than the solid spec sheet, what really surprised me the most was the battery length, the system optimization and the tons of updates that this phone received.
On the contrary, my LG G Flex received just one major update and that was it.
Yes, I was very pissed.
The LG G Flex was a premium phone with a launch price of circa 700€ (Since it was the  last one in stock I paid it 250€ in a local store), and as usual LG did not disappoint: it was abandoned shortly after.
I remember that in high school everyone had their eyes on it due to its unusual form factor, which looked like a banana.
Also, no one had any idea how to unlock it, since the button and volume keys were placed on the back cover and not on the sides.
The notification light was integrated into the power button, and could display several colors.
What is even more funny is that I previously bought the LG Optimus 3D Max, which shared exactly the same fate!
Luckily some divine-figure was kind enough to port Cyanogenmod to the 3D Max.
I was so impressed at how better it ran, and even the performance in games was night and day.
The stock rom (Android 2.3.6) ran titles such as Modern Combat 4 and Asphalt 7 at 30FPS, while CyanogenMod 10 (Android 4.1.2) ran both titles at a smooth 60FPS.
It brought justice to the phone’s hardware, and I was happy of that.
I sadly did loose the ability of recording 3D camera footage (I still have one 3D video uploaded over my channel), but it was not that much of a loss. 

Going back to my friend… the price of his newly bought phone dropped a hundred euros down in just 6 months.
Sorry, bud.
After discovering Xiaomi, it was just a matter of time before the rest of the avalanche finally hit: OnePlus, Huawei, Honor, Oppo, Meizu, ZTE, Vivo to name a few.
These companies released interesting phones and, I guess it is safe to say, stole a market percentage from the Big Ones (Apple and Samsung first).

Android’s strong point is being open source.
Because of that reason, a lot of interesting devices have been produced.
Here are a few ones:

On June 25 2014, the first Android Wear smartwatch was now available on the market:
The LG G Watch.


During Christmas 2016 I have bought one for me and another one as a gift to the same loser-owner of the Redmi Note 3 Pro .
5 years later I still believe that the LG G Watch is one of the best smart watches ever created.
The design is simple, elegant and proportionally pleasant to look at.

The watch is water-resistant, includes GPS and a microphone.
I remember using it all the time (Thanks Ma for gifting it to me!), mostly to reply to text messages and enabling timers.
And then I wore it all the time because of how stylish it was. 

Sadly Google/LG decided to kill it. The companion phone app does NOT push any app to the smartwatch anymore, notifications included.
Just… why? Why kill a product that always worked perfectly and that was reliable?
The answer is pretty simple: planned obsolescence… and the lack of a physical button.

Android Wear 2.0 (Then rebranded Wear OS) required a physical button or wheel to interact with the UI.
I understand that they want to add more features to the OS, but killing off prematurely the LG G Watch was a very bad idea.
It does not give a sense of confidence to new customers, especially in a market that was just born. 
Finally, the release price of the LG G Watch was around 200€, which is a fine amount.

If you are going to abandon something, at least make your code fully open source.
The companion app is closed source and only Google has control over it.
They purposely killed the LG G Watch and never looked back. 

Many other smartwatches were then released, but due to them using only half a GB of RAM the performance was not that great while using Android Wear. 

More customers were lost. And potential new ones just felt discouraged, so they never gave it a chance.

The only things keeping Wear OS alive are: 

  • Third party app support (APKs can be manually installed too through sideloading)
  • Google Assistant
  • Multi-Language Voice transcription working on the go, a feature I wished that BlackBerry smartphones had.

That’s it.
Apple is dominating the smartwatch market with the Apple Watch, a fully optimized smartwatch that perfectly (supposedly) integrates with the rest of the Apple ecosystem.
Since the Apple Watch only works with iPhone, many people are jumping off ship because there is no compatibility with Android or any other system.
To be honest, I have considered doing so too. 

The third biggest smartwatch operating system is Tizen OS, primarily developed and used by Samsung for their lineup of smartwatches.

Little personal fun-trivia: After further research, I discovered that Tizen OS is one of the successors of another operating system named MeeGo.
MeeGo was a Linux OS focused on low-computing hardware, and apparently it was used on a few laptops and phones. It did not go that far though, being discontinued only one year later its release.
The Samsung NP-100 was sold with this OS and I think that was a good idea: it was extremely stripped down and had a simple UI to accommodate for the low resolution displays.

Around 2015 I bought a Samsung NP-N150 from a friend of mine because it was small, light and featured one of the best keyboards that I have ever used. 

Sadly though, the hardware was extremely low-performance. 
You can’t really complain, as this laptop was sold Q4 2010 for a price of circa 400€.
These are the specs (Taken by
Intel Atom N450 1.7GHz single-core
10’ 1024×600 display
250GB 5400RPM HDD
Wi-Fi 4, Bluetooth 2.1, UMTS Modem
0.3MP webcam, 48 Wh Lithium-Ion battery, 1KG weight

What you could do with it was extremely limited due to the low-range hardware. 
Booting up the system could take one minute, opening apps was a painful process and running more than one app than once could clog the limited 1GB of RAM available in the system.

Desperately, I tried putting an SSD inside running Puppy Linux, but the performance just was not good enough.
I could even have dealt with the sluggish speed of this laptop, but what killed the experience was the 1024×600 display. 
It just hurt my eyes. 
The working area of the screen was extremely small and it simply was impossible to work even over document writing.

The laptop does have several positive points though:
Extremely small and easy to carry around, a little bit over 1KG of weight
Elegant design and ergonomic keyboard
Almost inaudible CPU FAN, at only 30.7 dB(A) during heavy usage
Battery lasting 4 hours of web browsing with WLAN active

Somebody put an SSD inside and added an additional GB of RAM, with Windows 10 installed. The results are more surprising than I expected:

The Samsung N150 is a NETBOOK. Not a Notebook. NETBOOKs were laptops that focused over energy-efficiency and portability. Besides, around that era even normal notebooks had slightly better performance.
In 2010 you could have gotten a Sony Vaio with a 10’ screen and 1.9GHz single core Intel Atom N470 for 400€.
So right now Tizen OS is used by Samsung on its smartwatches, TVs, cameras and… a fridge?
Anyways I do not have any experience with Tizen smartwatches, so I will report what I have been reading around. The app support is terrible, but it has a better battery length compared to Wear OS. Bixby does not seem to be at the same quality level as Google Assistant.

Out of this Apple/Google/Samsung trio there actually are other smartwatches that use closed operating systems. 
They are good with the features that they are packed with, but that’s where it ends. They do not have any kind of store or third party support. Depending on your needs, this could be a deal breaker. 
I wish that Wear OS smartwatches looked as beautiful as the Huawei GT2 Pro. Instead almost all of them look clunky. The best (IMO) looking wearOS Smartwatches are the Skagen Falster 3 and the Fossil Gen 5.

Proprietary OS watches have the big advantage of battery length: they can last usually around two weeks of usage.
Almost all Wear OS devices last up to 1-2 days.
Recharging the watch so often is not worth the trade in the long run.

Also, there is no wearOS smartwatch that uses a full TFT panel for their display.
A TFT panel will allow an easy readability under direct sunlight without any form of backlight. 

I owned an Amazfit Bip for one year and I loved it.
Sure, it did not have any smart function at all, but it lasted 2/3 weeks, it counted my steps and most importantly told me the time at all times.

That is an ugly color. That's for sure.

Unfortunately after taking a shower the screen unglued and water went inside the shell, killing it. So… don’t do the same mistake I did!

After my Amazfit Bip’s death and the great experience I once had with my LG G Watch, I wanted to get a real smartwatch once again.

I fired up (Norwegian marketplace) and looked for used Apple Watches.
Most of them were around 200€, which was fine to me.
The problem is that Apple Watches only work with iOS.
And, unsurprisingly, there was no way to make it work with Android or my Hackintosh. 

Resigned, I remember that Xiaomi released an interesting Wear OS clone of the Apple Watch only for the Chinese Market in 2019.
Due to my love for square watches, it was love at first sight.
Curved bezels, AMOLED display and a functioning command wheel were looking great.
In the Youtube videos that I have seen the OS seemed responsive and smooth too.
Besides, this is a Xiaomi device.
Xiaomi to me is a seal of quality.
I own a Xiaomi Mi Mix 2S from two years and the UX is still going strong, I bought for my mother a 177€ Redmi Note 5 (and a Mi Band too), an electric razor for myself, bluetooth headphones, even the M365 Electric scooter.

So yeah, I do have some experience with this brand and I had no negative experience so far. 

I did a little bit of research and I found out that there is a European online store selling the watch for 125€: For such a ridiculous price, I had nothing to lose.
I ordered it and waited two weeks of excitement and anxiety. 


Needless to say: not only I was not disappointed, but I was positively surprised.
The box was elegant with a nice “overlay” printing of the watch, and on the back side there was a sheet with all the main functions.

Xiaomi is clearly not messing around.
The box content was pretty bare bone: Watch, Charger, USB charging cable (it is magnetic) and a small manual showing how to install the companion app on the phone.

I grab it up, but I notice that the battery was completely empty.
Time to wait for the longest 30 minutes of my life.
As soon as the Watch showed a sign of life, I instantly put it on my wrist and turned it on.
My first two reactions were “Wow” and “It is bulkier than I expected”.

Nonetheless, I was stunned by the building quality and high quality AMOLED screen.
The build quality is on-par with 300€ smartwatches, but at half the price! 

These are the hardware features of the watch (Taken from, click on link for additional details):

  • 1.78 inches AMOLED display with 368  x448 pixels resolution, 336ppi pixel density.
    Gorilla Glass 3 for the Watch Standard Edition, Sapphire Glass for Premium Edition
  • 1GB RAM, Snapdragon 3100, 8GB memory
  • Aluminum alloy Standard Edition, Stainless steel Premium Edition
  • NFC, WiFi, Bluetooth, eSIM (VoLTE supported), GPS
  • Running on MIUI for Watch (Reskin of WearOS)
  • Heart rate sensor with O2 Max support
  • Speaker and microphone
  • Rotating knob and a button

    (Insert video recording of rotating knub!)

Considering that this device was released on the Chinese market at the beginning of 2019, this spec sheet was (and still is) a very good one.
The smartwatch gives you a small haptic feedback upon rotating.
It feels pretty close to the JoyCon HD Rumble, or the HTC Vive vibration system.
I spent at least 30 minutes of my life enjoying the vibration feedback of my new smartwatch, it felt very satisfying. 

The touch response is good and the screen is visible in most situations.
The battery length lasts around 1 day with always display on, bluetooth connected, sleep tracking and mild chat usage.
The Telegram WearOS app works without any problem and I am able to send voice messages through the mic and even listen to them thanks to the built-in speaker.
Sadly I am unable to try out the eSIM support because my mobile ISP does not support them yet, but from what I heard from other users it kind of is a mixed bag.

Yet, it is perfect for people who might want to go jogging outside and not bring their phone with them.
In China it also is possible to use the watch NFC to pay for public transport tickets and I Suppose similar things.
Sadly NFC pay is not available anywhere else.

The already-applied screen protector was unexpected, but I did appreciate it in the long run: 

A perfect mix between a spider web and a painting from Picasso.
Should have gone to my uncle’s art school.

The watch does look slightly clumsy.

It might not feel like that much of a difference, but the design of a wearable device is fundamental. It has to look good.

The Mi Watch build quality is great.
It does not feel cheap. It once fell to the floor and there is no sign of damage or a single scratch whatsoever. I am still baffled about it.
It also is SUPPOSEDLY 5ATM Water Resistant.
I’ve read of people using it while swimming. I only used it while showering without any problem.

The included wristband is gummy and sturdy.
The grey color is a nice addition to the shell of the smartwatch.
Be careful while unmounting though, since the GPS antenna is located on the wristband attachment part over the shell.


The Xiaomi Mi Watch runs on a MIUI-Skinned Wear OS.
Since the watch is officially released in China only, the mounted Wear OS lacks functioning Google Services such as the Play Store, Google Assistant and Google Pay.
China uses the Great Firewall to regulate internet access inside the country, and has created in-house alternatives to the most popular Western apps, so it is nothing surprising.
There is an included App Store that is not localized in English, so are almost all downloadable apps.
The app count is no more than 50.
Almost all the apps that I have tried do not have the English language.
While browsing I even found a remote control app for Microsoft Power Point!

Almost all the stock apps are in English, and are the usual: calculator, timer, alarm etc.
The only problem though is that the default keyboard and Voice-To-Text are in only one language… did you guess which one? Yeah.
Luckily you can side load apps from PC, or from Android using Bugjaeger.
I find this name particularly hard to remember,
But it does the job well and is simple enough, so I’m not complaining that much.
I also would like to add that WearOS for some reason has problem recognizing multiple languages for Voice-To-Text.
I’ve seen this reported over the WearOS subreddit on other devices too.
Being a multilingual, this is a serious and frustrating issue for me.  

The included selection of Watch Faces look great and there are a few using the AMOLED energy saving mode.
Basically, each pixel of the display panel can be individually turned off.
So if for example there is a predominantly black background, most pixels will be off, thus saving some battery.
Other display technologies such as LCD are unable to individually turn off pixels, but on the contrary their lifespan is longer.

Some of the watch faces can be customized with different “quick buttons”. 

In order of appearance:
Step counter, heart rate and Telegram.

Telegram has a native app for WearOS and it works without a single hiccup.
You can listen to voice messages thanks to the built-in speaker, you can send voice messages, reply in chats and groups and send stickers.
Perfect for situations where you have your hands busy doing something else.

There are websites where you can download WearOS APKs and push them to the smartwatch afterwards.
One of the most popular ones is

A guy named Alberto created “Wear Store”, it is an installable WearOS app that includes a repository of downloadable WearOS apps and a few utility scripts, such as Xiaoai Remover (Xiaoai is the Chinese personal assistant included over the Mi Watch)
Wear Store can be useful for people that want the most simple solution to install applications over their Mi Watch, but the app catalog is too small.

The Mi Watch features an heart rate sensor that can also be used to track your sleep.
You can then see the data directly over the smartwatch or on the companion phone app Xiaomi Wear. 

There is a good variety of training presets that you can use to check/record your workout stats and I found the heart watch decently accurate. 

(Check difference from treadmill with sensors and smartwatch measurement)

Another two useful features are: 

  • Breathing exercises with visual and haptic feedback.
  • Get your ass up reminder – I invented the title but the concept is the same.
    It is important to take breaks while sitting in front of a computer for a long time and to keep your body active. 

WearOS will automatically somewhat recognize if you are doing any kind of exercise, by combining the gyroscope and heartbeat sensor.
It’s a cool feature to check how many calories you burn during the day.

The watch includes a secondary store that contains watch faces specifically designed for the Mi Watch.
There are some good ones, but unfortunately they feature Chinese text, which is not the ideal for non-Chinese speakers.

The Watch will use Bluetooth connection for data transfer by default, so installing apps/watch faces might be kinda slow.
To Switch to Wi-Fi, you can disable Bluetooth either on the phone or the watch itself.
Be warned: it will consume more battery.
In the workout app, the GPS is able to get locked in 1-2 minutes, and can last up to 2-3 hours of continuous use.


The battery lasts a minimum of 20 hours with Always-On Display, Bluetooth, Wi-Fi and sleep tracking active.
By disabling the Always-On Display, I’ve been able to get an additional 24 hours of usage (So a total of two days of use).
Once the battery is almost fully depleted, the smartwatch automatically goes in an energy saving mode, showing only the current time.
It also is possible to manually enable it from the quick-menu, and exit by pressing the power button on the watch.
It is in the norm of WearOS smartwatches, if not slightly better.


The charger can be connected to any USB outlet. It is magnetic and holds the watch in place once put in place.
Since the Mi Watch is a cheap smartwatch, I will let two defects slip by: 

  • The cable of the charging stand cannot be removed.
    This means that unless you have soldering skills, you will be forced to throw the charging stand away once the cable is broken
  • No rubbers on the bottom side. It is at a good risk of slipping and falling off the table.


Not gonna lie, the quality of both devices surprised me.


This smartwatch could be so much more, but is instead limited by a company that wants to keep it leashed.
I understand Xiaomi not shipping the watch with the Google Services since it is a Chinese-market smart watch, but why not unlocking the boot loader?
I believe that when you buy a device you should have complete freedom over it.
Usually Xiaomi lets you unlock its phones, so that comes even more as a surprise.

Is this smartwatch worth the price?
Yes, but not if you want the complete Wear OS experience.
No Google Assistant, no integration with the Play Store, and many Wear OS apps that will not work when side loaded.

If your needs are just checking the time, sleep/exercise tracking and a few other things then I believe this to be the best smartwatch you could get for under 150€.

Blog VR

Grapple Tournament VR: a top-tier FPS game that deserves more players

It seems like the VR market is now at a stall in 2021.
We have seen the release of a good amount of VR games in these years, and it also proved that you indeed can profit by making VR games.

There are a few examples coming to my mind: Beat Saber, Pavlov and Half Life: Alyx.
(Yes, I know, you wanted a PC title instead… you said that at least 50 times). 

  • Beat Saber sold 4M copies, for an estimated $180M at the beginning of 2021. (Source)
  • Half Life: Alyx instead sold about 1 million copies, and helped selling 180,000 units of Valve’s VR headset ‘Index’ in just two months. (Source)
  • While I do not have economical info regarding Pavlov, it has an all time peak of 17,629 concurrent players at the time of writing this article (Source).
    Considering that Pavlov is an indie title I think that it is a pretty good result. They also recently released a WW2 themed update, featuring drivable tanks. I tried it and it’s an incredible experience.
    Wish I had friends to try it with though!
gif source:

There are many more titles though that deserves more attention. 

One of them is Grapple Tournament VR.

This game is a mashup of Unreal Tournament and Quake but adapted for VR usage.
The title runs over Unreal Engine 4, and was released in PCVR early access (Basically beta) the 3rd of September 2020.
It also is supposed to be released the 11th of February 2021. 
Apparently Facebook is challenging Nintendo at being the slowest to approve titles over their platform.

The aesthetics are simple and pleasant. This means that the visibility and sight of other players during gameplay is never a problem.
The sound design is great. I do mean it, you clearly are able to understand what is happening around you thanks to the high quality of sound effects. Plus the main menu song is a banger. 
The music is so good that I already have a storyboard ready to be transformed into a short video, but sadly my PC is not powerful enough to record high quality in-game footage.

Besides, there is not that much to understand while playing such a game.
If it moves, shoot at it until it dies. ™

The game features a voice chat that is not dependent on in-game proximity and the coolest thing of them all: while you are waiting to respawn you are a ghost that can flip other people off.
It adds to the game atmosphere because it is exactly what you’d do in real life while playing CoD with your friends on the sofa.
And there is nothing wrong with that.
You get what you’d expect from any FPS Arena: A big arsenal of guns at your disposal.
You can only hold two at all times though, so you must be careful with that. Luckily there are several permanent weapon pickups in each map, and infinite ammo.
The main movement mechanic is the Grapple that you can use to fly all around the map. You can shoot it toward any surface and you will be pulled towards it.
Many people will probably not be happy about this, but you have to reload your gun when empty.
To reload, you simply move the empty gun towards the opposite side of your hip. Or you press the trigger button for an automatic process, but it will be slower and might happen at the wrong moment.

Ammo reload is part of the gameplay for a good reason: this is a VR game.
Not a PC one.
You cannot expect of doing the same crazy rocket jumps and flicks you’d do with KB/M (BTW greetings to my Warsow besties).
Not yet at least. VR Technology is not ready yet for that. 

The game maps are less than 10, but that is fine because:

  • The game is in early access.
  • The level design is in perfect symbiosis with the gameplay mechanics.
  • The art style is varied and each map looks different.
  • The maps are made for several game modes (Currently FFA, TDM and Capture Zones). 

For being an indie team, the developers are handling the game very well.

The game did contain minor bugs (Last time I played it was in December 2020, such as the voice chat occasionally not working properly.
Again, this is all to be expected since the game is a work in progress.
But the devs are active on the official Grapple Tournament Discord server, listen to feedback and always had a friendly and informal tone.

For the price of circa 13€ in Europe this game is a steal.
It is fun enough to play if you are solo queued, so I can’t imagine it with a group of friends. 

Because well… I have none!
Plus you will be supporting a small indie dev team building their dream game.

The game does have frame drops with a low-end PC (i7 7th gen, GTX1060 6GB, 16GB DDR4 RAM).
Sadly, that is the problem of using engines that focus on multi-platform compatibility rather than performance. 

There also is a problem though, that will hopefully be solved thanks to the Oculus version launch: No players are playing the game online.
Grapple Tournament had this problem since its launch.
This is not the fault of the developers though.
In my opinion they need to invest over marketing and promotional media material.
The promotional media’s quality is fine, but unless you pay money for a marketing campaign, your chances of gaining popularity are low.

Especially in a niche market such as VR Entertainment. 

As much as I disagree with Facebook’s policies regarding customer data, Oculus devices are affordable and cheaper than the competition.
They also offer a simpler solution for customers that would rather get an AIO system rather than a PC dependent one.
This is helping to break the niche-to-mainstream barrier. 

Images source:

This is the perfect device for casual VR users.
It has its downsides too, though. The biggest one is that you will not be able to upgrade the hardware inside it.
Once an AIO VR headset becomes obsolete you will be forced to buy the next model.

With computers you simply can swap out a component and get a better one. (Obviously this does not work forever).
Not only that, but the graphical fidelity gap between an AIO VR and PCVR is impossible to close, due to the PC’s always evolving nature.
You do can play PCVR games on Oculus thanks to a data cable connecting the headset to a PC, but there will be latency added because it is a compressed video signal that has to be processed two times. Once from the pc, sent to the cable and then by the headset. 
Plus you risk of getting compression artifacts if there is not enough bandwith over the data cable.
This could be fixed by using the Thunderbolt 3 standard or USB 4.

For the love of God, please do not keep using confusing names for the USB standard.

Finally, I would also doubt the precision of built-in sensors compared to dedicated tracking hardware like the Vive or Index.

This is techie talk, and I do not want to stop people from having fun.
Grapple Tournament is a game that can both be enjoyed over PC and Oculus.
If you want to try it out, you can check the game official website here!


Don’t Know Why (Tozzo&Tazzo Cover)

Second video I have recorded in Norway, outside of Bergen.
The song is a cover of “Don’t Know Why” by my cousin Tommaso Pedroni and Andrea Bardi.

I believe this video is not as good as the Ujig’s one, but since my recording equipment is not professional (Just my phone), I feel like I am starting to get a quality block.

You guys have no idea how beautiful the sky is during the night, It’s dark and light blue and the water is reflecting that everywhere.
Hopefully in the future I will be able to buy a professional camera with an electronic stabilizer.

Gallery of photos I shot during my roadtrips.

graphics Video

DooM Mod – Zombie Horde: Extinction

“Can it run DOOM?” I’m sure you’ve heard this before. You see, the DOOM community is famous worldwide for porting (converting) the original DOOM to almost every single existing device. It is running on a Thermostat: Hell, even on a printer! I’ve been for a long time in contact with the DooM community and often played the most famous mods. One of them is called “Zombie Horde”. It is a multiplayer mod where one player is becoming a zombie and has to infect with its claws the remaining human players (they can defend themselves with weapons). The game ends when either the timer goes to zero or all zombies/humans are killed. The original mod has been running for over 10 years and the original developer left. I then got contacted to work on a new logo, a background image and a trailer. LOGO I redefined the original logo adding a metallic scratched texture and a red shade. Let’s say it represents the militaristic side of the Humans against the evil horde of Zombies. WALLPAPER Damn, this was really hard. I decided to look at the Zombie Horde existing maps to choose a good background. Sadly I found nothing of interest, until I talked with my class-mate and friend Mina about a map he was working on. It featured a foggy atmosphere, a bridge in a middle of nowhere and many tall spikes coming from the bottom of the endless pit. This was the perfect map. I wanted to focus the image on the human survivors desperately trying to survive an endless horde of zombies (which is in the background and attacking in the front). I put the marines on a platform that resembles the nuclear sign, a reference to the original Zombie Horde wallpaper image. The humans and zombies were in place and the background was perfect, what else now? I needed to add some juicy effects to oppose the prevailing grey color. I opted for some particles, flames and muzzle flashes coming from the marines’ guns. VIDEO TEASER As a request from the new developer/mapper “Fused”, I created a teaser video to post on the Zandronum (the successor of Skulltag) forums. The point of the teaser was to show to the community that Zombie Horde still was alive and in active development. I showed some new and updated maps. VIDEO TRAILER This was the most emotive and time-consuming work I created. I was one of the first people with my friend Mina to try the new versions of the mod and many maps were more detailed and had more gameplay-changing content. There were new buildings and aesthetically the old maps got updated with a very great restyle. The trailer was divided in 3 different categories: – Human running away from Zombie (introducing the danger of the game) – Group of marines assembling together due to the Zombies danger – A single zombie assaulting the group and the final fight for survival, showing the core gameplay of the mod. – Final part showing the Wallpaper art, introducing the newest version of the game I had some difficulties directing the cameras since the footage was recorded in-game and was impossible to pre-configure the cameras. Due to game engine limitations a few scenes were too dark and I had to manually correct them. All the humans and zombies you see in the video were players helping me out and let’s say it wasn’t the easiest thing ever. Due to online call delays it was hard to keep everyone in order. Even if Zombie Horde: Extinction will probably be on hold forever due to engine limitations, it will always hold a special place in my heart. Thank you Fused. Thank you XSnake.

Ujig – Recorded in Norway

This has been my biggest project so far.
While going on a 7hrs roadtrip from Bergen to Sandefjord I decided to record a lot of footage.

I honestly did not expect the places I’ve visited to be THAT gorgeous.
I had to fight with the cold temperature (Yes cold, I am Italian ok?), rain and me being exhausted from the long car trip.

But it was completely worth it.
By being so much chaotic, the music gave me quiet a lot of difficulties. Adapting my footage correctly was really hard.
You always need to think what emotions the music is expressing in every single moment.
That is, personally, the most important thing you should take care of while editing a video.
Many parts of the video were manually stabilized frame-by-frame and that really helped me learning a new program I’ve used for footage stabilization.
I apologize for a few parts with some weird stabilization and the beginning low-brightness scenes. My only camera is my smartphone and I did everything I could.

I had the balls to edit it on a Dell E6230 (Which is a business ultrabook) with an i5-3320m, 8GB ram on a 1367×768 13′ inches screen.
The files are H265 4K 60FPS.


Special thanks again to Marco Leo and Max Cassan for allowing me to use their track “Ujig”.
I love the 2 albums they have made so far and I’m looking forward to the third one.
This is some of their links.


eMpTy Family – Team LOGO

As I said before I am a big fan of videogames and I really enjoy playing Counter Strike.

Some years ago I joined the team eMpTy Family and as a tribute I created a logo to use in-game.

The idea randomly popped up in my mind of two hands holding each other, resembling one person that fell and is getting help to get up again.

Counter Strike is a team-game and every member has a different color assigned. This is really helpful while playing with strangers.

Imagine one of your team mates is called YababaZubabaVilala. Would you rather say the entire name or just say “Red”, since that is his assigned color for the entire game?

The triangle represents the individual player, so I also made different colored versions of the logo.

My in-game color usually is purple, so the circle and triangle are of the same color.

I uploaded the logo to Redbubble and Spreadshirt.

This is how it looks on a t-shirt

Hoodie version.
Phone cover.

It looks equally cool on both the hoodie and the phone cover!



N O O D L E S – Hardbass Video

I like eating Noodles and I like hardbass.