About Me - The long story

About MetalBlueberry

I’m a programmer since I discovered that things could be automated.

Attention

You are about to read my life since I remember it, focused on how I became a professional developer.

The beginning

I started with Win-logo in the school by drawing some figures with simple functions. I still remember what could be one of the firsts method I’ve ever written. tits(size) The objective is clear, draw two tangent circles of the desired size. It was much easier to use my new fancy function than typing two times the circle command and for some reason that I did not understand, there was a weird pleasure in doing it. More or less at the same time, I discovered the same feeling of satisfaction when building cranes and cars with K’NEX, but I’ve never been a handyman. Yet another thing that was drawing my attention was marbles circuits, the bigger and complex, the better. Just drop a marble on the top and wait to see come out at the end.

quote

At that moment it wasn't clear, but with time I've realized that satisfaction comes from automation.

I started building small automation circuits based on relays that simulated simple things like traffic lights and a sliding door. Thanks to my teacher at that time, I decided to go in the “Technology” direction. Things became interesting when my grades at high school were between 7-10 in Math, Technology and Informatics, but around 0-3 for all the others. You know that being young is hard and as Rick said The teenage mind is its own worst enemy. -Rick Sanchez. After finding myself, losing the academic year and understanding that failing to pass high school was not an option, I started extra classes at the beginning of the next year to ensure that I didn’t fail again. After the first 3 months, everything was working just fine and I realized that most of the time in the extra classes was wasted by talking with companions so I decided to quit. The conversation with the teacher was something like this.

  • Are you going to leave School?
  • Don’t worry, I’m just going to take it seriously and I will let you know when I pass everything.

And I did it. It was harder than I expected due to the blackout of the previous year, but I did it.

Choosing the path

When entering the university I had 3 undergraduate degrees in my head.

  • Game design
  • Computer Science
  • Industrial Electronics and Automation

I discarded Game design because I had to leave my city and between Computer Science and Electronics I choose the undergraduate degree called “Industrial Electronics and Automation”. because of the Automation word. I’m not going to say that it was a mistake, just not what I expected. I spend the first two years learning basic stuff (Calculus, Algebra, Economics, Electronic circuits…) But there was very little content related to “Automation” in those subjects. I saw an icon on the desktop from my Electronics teacher that looked like the infinity sign and said “Arduino”. I Google it. I BOUGHT IT! best choice ever made. My grades got worst after this point in time and this is the principal reason why I didn’t finish in 4 years. But it was worth it. I learned so much on my own that when I started “Microcontroller programming” in 3rd year, it was a piece of cake.

warning

Me playing with Arduino with the university notes bellow.

I joined the association called “ABI2” in which most of the people were from the Computer Science branch and I participated in a series of events showing my abilities programming Arduino with every gadget I could find. I still have few boxes with every single Arduino sensor I could afford. After exhausting my financial possibilities and getting tired of waiting for eBay deliveries I started to participate in a few Game Programming contests with people from ABI2 and I found that in games I could do the same I could do with an Arduino, but faster!. Ok, not the same, but I could simulate things and move faster.

I tried to create a team of developers to create a game but It was really hard to find people that wanted to invest more than one weekend or with the same tastes for the kind of game. I wanted a tower defence, for automation, you know. So I learned a little bit of the last skill that I needed for indie game development with Unity. 3D design with Blender! and I enjoyed it a LOT. but not the way I expected. Creating skeletons and animating them was funny but creating hyper-realistic renders was really fun. So I invested a considerable amount of time mastering Blender just for fun. I have a few renders uploaded to my Steam profile. I didn’t forget about the game design. here is the prof

During all this time, I discovered that the best way to motivate myself to learn something new is to teach other people after learning it. I did a lot of training courses with Arduino, Unity and Blender. I feel a little bit awkward about the promotional video for one of the blender training. But it is good to see that I’m improving over time.

MyScape

The intern

I started to work for a small company that was looking for someone who knew Arduino and C#. Well, I had the Arduino experience with some Unity background. The company developed Scape Rooms with a lot of automation, so my task was to program the Arduino boards that will be controlling the game and software in C# that will control the game itself. It took me half a year to get it to work with all the requirements and another few months to stabilize it so it won’t stop working randomly. I did everything from the PCB design to the UI myself and I used a different technology for each part of the system.

  • Altium - For PCB design
  • C - For Arduino programming
  • Qt C/C++ - For network communication
  • Qt QML - For player interactive UI
  • C# WPF - For Game Master control system
  • Lua + C# integration - For game logic customization without recompiling C#

The project was really fun and being the only one in the team gave me a lot of freedom. The biggest problem with the job was that after a year, I felt stuck because I couldn’t learn anything from anyone. I received an offer to work for ERNI in Barcelona and I accepted.

HP

Big Data Ecosystem

I consider the job at ERNI my first real job. I was hired because I knew C# and C/C++ with the promise that I will be developing firmware for HP Large Format Printers. The first project was defined as program a sensor board with an accelerometer, gyroscope, magnetometer, temperature and light sensor to track the delivery of the printers but it turned to be just the configuration of the board. It was already programmed with a “Cool and simple” interface that didn’t work no matter how you configure it. It was not that hard, it was just impossible to make it work without modifying the firmware and that was not my task. The next project was to extend the functionality to this program in C# to get the configuration from a remote server and so I did. All this was for a bigger data analytics project and the next tasks can be grouped in the following groups.

  • Understand how to structure logs.
  • Troubleshooting with some data.
  • Define functional requirements.
  • Provide support to teams that consume data.

This variety of tasks helped me to grow in previously unknown fields. English skill was a must because the requirements were sent to Shanghai for development. Understanding and define things involved a lot of communication with different teams of different profiles from Marketing to Firmware Developers.

Automating things was still in my point of view and I learned to use Python to use it in my everyday work. Mainly for data analysis and data reporting. I developed a simple pipeline to process logs automatically and a sample Dashboard application but it never reached the production environment. At least not a decent one. We had a lot of problems with system performance and this leads me to investigate how to improve our current solution. If you investigate how to store data efficiently for data analytics you will find parquet format as a really good option for easily partitioned data. I suggested moving our system to this format to reduce the cost to query a database and improve performance but it was never accepted. I also proposed a better structure for file storage based on my learnings of what the users needed but it got rejected again. I was frustrated and feeling like I was in a ship that was sinking and anyone was doing anything to prevent it.

Titanic Orquesta

Cloud developer

Eventually I a colleague gave me the chance to move to a project inside HP that offered me the opportunity to be a developer in a cloud environment and I accepted.

For me, this was the first time working side to side with other developers in the same codebase and the experience was amazing. I already had programming skills, but I lack teamwork skills. Clean code and testing were always present in the team conversions and code reviews. Also. This time the project was to handle really big amounts of traffic for an important HP Cloud infrastructure, which felt more exciting than the previous one.

I have to say that my personal growth rate in this team was amazing. I learned a lot from my workmates and it’s a pity that I only could work there for a few months.

I cannot list the things that I’ve learned from each coworker, but sometimes, small sentences that you say can have a great impact on others. In my case, I especially the following one sounds in my head each time I want to implement a new cool feature.

It is not a problem of capacity, what we lack is time.
Sergio Barquero

Tecnalia

Just before the COVID19 pandemic, I moved back to Bilbao to work at Tecnalia.

Tecnalia is an R&D company. I joined the Industry and Transport division under the Smart Systems area. I worked together with the Computer Vision division to support them with the deployment and data acquisition for their models.

A new Tech Lead has born

Read the story here

Workshops

I’ve said before that I love to share knowledge. COVID didn’t help me with this hobby. I still manage to prepare a few online workshops to teach my team things like Git, Coding best practices and testing. It is not the same as face-to-face workshops, but I still manage to bring together about 6-10 people and guide them through the workshop successfully.

Remote work

COVID forced everyone to work from home, but for me, it was an advantage! Even if I went to the office:

  • Most of my team member was located in different buildings so I couldn’t meet them face-to-face.
  • I had a Linux laptop that for some reason wasn’t connecting well with the company network and I had frequent networking issues.
  • I couldn’t speak aloud without bothering people around me, or the other way around.
  • My desk was positioned near the corridor, so people walked by very often.
  • There was a window behind my desk that created screen reflections. It was annoying to work in the afternoon due to this.
  • I had to find my own good chair. The one that was given to me, was a little bit old.

I could avoid all these drawbacks by staying at home.

  • Save commute time, near 1h30m every day!
  • I could speak in a meeting without bothering anyone.
  • 600Mb wired internet connection.
  • Comfortable table and chair regulated to my height.
  • I can prepare my own food.
  • I have my own bathroom.
  • I can walk my dog to rest.

I quickly realised that it was hard to find time to get to know my teammates. You usually only talk with them when pairing or to address some issue. To solve this problem, I started to program weekly meetings just to talk. You can call it virtual coffees but coffee is not a requirement. The problem is that you cannot simply bring 6 people together into a meeting with no objective and expect them to talk. It feels awkward. So I started to build this habit by meeting people individually first. We talked for a while and proposed they join the virtual coffee. I did this with one new person every 1-2 weeks until we reached 6 people invited. Inviting more than 6 people is useless. even with 6, not everyone is involved in the conversation. This doesn’t mean that you cannot have bigger groups, it just means that if you have 7 people, it is better to split it in 4-3 than all together. Keep in mind that the idea of these meetings is to know each other. so it is important to participate.

Form3

I passed the selection process for the following job offer, so I guess I’m joining Form3!

🌶️ Senior Software Engineer (Go) @ Form3 Full-Remote - €60-90K link

Leaving Form3

Sadly my relationship with Form3 has come to an end. We will see where we go from here.