Monthly Archives: May 2022

Sorting an Array of Tuples in Python

In this video I show a nice way to work with Data in Python, by using Tuples.

I also show how to easily and conveniently sort the Data based on your preferred criteria by using lambdas.

What happens if we have accents, ç, Ç etc…

You can download the code from:

https://gitlab.com/carles.mateo/python_combat_guide/-/blob/master/src/arrays_with_tuples.py

Fixing the problems installing napalm-base in Ubuntu 20.04 LTS

One of my friends wanted to use SaltStack and https://github.com/napalm-automation/napalm-salt

But he had problems installing napalm-base package.

Note that the package is no longer maintained.

He tried with the last one, and with the previous one (0.25.0), but he always got the error: ModuleNotFoundError: No module named ‘pip.req’

pip3 install napalm-base==0.25.0

Defaulting to user installation because normal site-packages is not writeable
Collecting napalm-base==0.25.0
  Using cached napalm-base-0.25.0.tar.gz (35 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-gzd07xzq/napalm-base_aace1b03ac0e4045bbc85e27c788ebc1/setup.py", line 5, in <module>
          from pip.req import parse_requirements
      ModuleNotFoundError: No module named 'pip.req'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

TL;TR: The problem is that pip version 10, changed the structure for req.

There are several solutions that can be done to make it work, but the easiest way is to downgrade pip, and install the package. After pip can be upgraded again.

python -m pip install pip==9.0.3
pip3 install napalm-base

RAB El nou món digital 2022-06-08 [CA]

Aquest és el guió per al proper programa El nou món digital a Ràdio Amèrica Barcelona, a emetre Dimecres 8 de Juny de 2022. 2022-06-08 14:30 Irish Time / 15:30 Zona horària Catalunya / 06:30 Pacific Time.

This is the excerpt of my radio program at Radio America Barcelona on Wednesday 2022-06-08 14:30 Irish Time / 15:30 Catalonia Time / 06:30 Pacific Time.

En ser festiu el Dilluns 6 de Maig, el programa s’emetí el Dimecres 8 de Maig.

Notícies

Entreteniment

  • S’estranarà aviat una nova pel·lícula de Bola de Drac Z, Dragon Ball Z per a la Mariel ;)
    Es diu: Dragon Ball Super: Super Hero
    Hi ha una campanya per a que es dobli al Català.
https://www.youtube.com/watch?v=aupREwEgclQ

Podeu segui:

@DoblatgeCatala

@RacoManga

  • S’ha estrenat la tercera temporada de The Orville a Disney+
    És una paròdia prou ben trobada i divertida d’Star Trek.
  • Netflix Geeked Week

https://www.theverge.com/2022/5/26/23141205/netflix-geeked-week-preview-sandman-cyberpunk-one-piece

Videojocs

  • M’ha agradat la història de la primera programadora que va fer un videojoc on l’heroïna era una dona

https://gamehistory.org/wabbit/?utm_source=pocket-newtab-global-en-GB

  • Al Juliol apareixerà per a Playstation i PC Stray, un joc on ets un gat en un món post-apocalíptic ple de robots.

Trucs

Seguretat en general:

Enllaç al programa següent: RAB El nou món digital 2022-06-13 [CA]

Enllaç al programa anterior: RAB el nou món digital 2022-05-30 [CA]

RAB el nou món digital 2022-05-30 [CA]

Aquest és el guió per al proper programa El nou món digital a Ràdio Amèrica Barcelona, a emetre Dilluns 30 de Maig de 2022. 2022-05-30 14:30 Irish Time / 15:30 Zona horària Catalunya / 06:30 Pacific Time.

This is the excerpt of my radio program at Radio America Barcelona on Monday 2022-05-30 14:30 Irish Time / 15:30 Catalonia time / 06:30 Pacific Time.

Notícies

Entreteniment / Sèries / Pel·lícules

  • S’ha estrenat Obi Wan a Disney+
  • Sobre Intel·ligència Artificial, m’ha agradat Archive, a Netflix

Trucs

  • Timotinders.
    • Els “timotinder” estafadors de les pàgines de cerca de parella. Les mentides i estratègies que empren per a enganyar, enamorar amb mentides i robar diners a les víctimes.
  • Modus operandi. Red flags!!.
    • Diuen ser d’una altra ciutat/país, així no els pots dir de fer un cafè, o si apareixen a la mateixa ciutat t’expliquen un rotllo com que treballen a un vaixell i no els deixen sortir
    • Enamoren durant un mes
    • Després et diuen que et vénen a veure
    • Probablement t’envien un bitllet fals
    • Et diuen que les maletes s’han quedat a algun país estrany i et demanen si pots pagar les taxes que te les envien a casa teva o que els han robat i no tenen diners per a pagar el vol
    • Molts comptes whatsapp diu que són comptes d’empresa/business account. En realitat són vàries persones diferents rotant-se les víctimes.
    • Et diuen que no els pots contactar soving o trucar per video conferència perque al vaixell on trbeallen tenen molt poca senyal
    • Les fotos són falses
      • Durant el covid vaig veure estafadors que enviaven fotos a l’avió sense mascareta. Òbviament no eren actuals, i segurament la foto l’havien robat d’Internet
  • Consells:
    • Usar un número de telèfon i un telèfon només per a conèixer gent. No utilitzar el telèfon del dia a dia
    • Contactar amb gent local, que no viu a 3,000 Km, i que no tingui excusa per a quedar si us voleu conèixer
    • Cercar a google el nom de la persona
      • Avui en dia tothom te un Facebook, un LinkedIn, si algú diu que no en te, molt probablement menteix i amaga coses que no vol que sàpigues.
    • Quedar a llocs públics amb càmeres
      • Millor primer a fer un cafè, perque si no us sentiu còmodes marxeu ràpid.
      • Quedar per sopar sense conèixer la persona és més compromès
    • No donar dades personals
      • Ni on vivim, ni on treballem, ni on treballen els germans o els fills en cas de tenir-los
    • No enviar fotos
      • Poden emprar les fotos per a fer-se passar per vosaltres

Enllaç al programa anterior: https://blog.carlesmateo.com/2022/05/22/rab-el-nou-mon-digital-2022-05-23-ca/

News from the Blog 2022-05-22

Media, Press, Radio

I was contributing already but since the 2th of May I started my radio space, also streamed in Twitch, google Podcast, Apple, Spotify… in Radio America Barcelona.

My space is named The New Digital World (“el nou món digital”) and I talk about tech news, technology, videogames and handy tricks.

This content is in Catalan language only, so I added to the blog as ending in [CA]

New Projects: Erasure Code

For my university thesis I’ve been creating an Erasure Coding solution that allows to encode and distribute the files seamlessly across an universe of Servers in different cloud providers, balancing the disk space used, super easy to use, and resilient to disaster and recovery.

I created my project, named Erasure Code www.erasurecode.com as Open Source, so all size of companies will be able to benefit from this technology, only available to multinationals until now.

Here you can watch a presentation and a demo:

Erasure Code project

I hope this will help tons of companies and startup, hopefully scientific startups, to save costs and focus more in their business and to make a better world.

My final presentation was the 20th of May.

Books

Python Combat Guide

I’ve updated my book Python Combat Guide with few additions.

Currently is 405 pages DIN-A4 size plus gitlab downloadable code.

It can be downloaded as PDF DRM-free.

Updates to this version 1.08 2022-05-11:

  • Added an example of .copy() for Arrays and mention to deepcopy()
  • Example on how to sort a dictionary of key/counter
  • Improvements to MT Notation updated
  • Added packages recommended: colorama, pynput, bisect
  • Added Personal WebServer examples.
  • Added examples of Python misbehaving with Floats.
  • Explanations about redefining reserved keywords like print or exit as a variable.
  • Style modification to add lines over the line number and over the Footnote.

My health

My health is improving.

Thanks to my self discipline, following a good diet, taking the medicines… I’ve seen an spectacular improvement since I was sent urgently to he hospital with risk for my life.

I’ve very grateful that amazing doctors care of me.

I had some ups and downs and downs while pushing to finish my final project for the HDip in Computer Science Cloud Computing, but I managed to complete everything on time.

I had to travel to visit amazing specialists, and had to pay the expensive treatments, however everything worked and my health has improved drastically. I am very happy to count with additional source of income, like the teaching programming and my technical books, which helped me to be able to deal with all these sorts of unexpected expenses. I appreciate every single sale of my books, as it made me feel useful and appreciated when I was a bit low, and the nice details some of the readers had. Thanks.

Firewall

I’ve keep blocking in the Firewall any IP and that network coming to the blog from Russia and Belarus. I’ve blocked millions of IP Addresses so far.

I’ve also blocked the traffic coming from CSP when I detect an attack and the IP belongs to them. Most of the attacks were coming from Digital Ocean, after your-server.de and hetzer.de and finally Amazon. Curiously some attacks came from IPs from Microsoft.

I’ve blocked all these ranges of IPs, hundreds of thousands.

Despite blocking all these IPs from CSPs, the number of visitors keeps growing.

At the end my blog is for Engineers and for people, I don’t have interest in bots, and I don’t get any revenue from ads (I never added ads) so I’m perfectly happy with having less visitors, but being humans that find help in the blog.

Humor

RAB el nou món digital 2022-05-23 [CA]

This content is available in Catalan language only.

Aquest és el guió per al proper programa El nou món digital a Ràdio Amèrica Barcelona, a emetre Dilluns 23 de Maig de 2022. 2022-05-23 14:30 Irish Time / 15:30 Zona horària Catalunya / 06:30 Pacific Time.

This is the excerpt of my radio program at Radio America Barcelona on Monday 2022-05-23 14:30 Irish Time / 15:30 Catalonia time / 06:30 Pacific Time.

Notícies

Video jocs i entreteniment

  • Amazon ha estrenat Night Sky, i el primer capítol l’han transmès a l’espai.
    Es pot veure des de 384,000 Km, és a dir, des de la lluna.
  • La tercera temporada de love, death and robots a Netflix ja ha arribat.
    Són capítols curts de ciència ficció o tecnologia i una mica macabres.
  • El 27 de Maig a Netflix s’entrena la quarta temporada d’Stranger Things. Els capítols seran molt llargs. Si algú no pot esperar es pot veure els primers 8 minuts del primer capítol aquí:
    https://www.netflix.com/tudum/articles/stranger-things-season-4-episode-length
  • També el 27 a Disney+ s’estrena l’esperada Obi Wan, de la saga Star Wars.
  • El video joc Fall guys arribarà les consoles Xbox i Nintendo Switch el 21 de Juny.
    Aquest joc, que fa temps és disponible per a Pc, és molt divertit. I permet jugar partides ràpides.
    https://www.engadget.com/fall-guys-nintendo-switch-xbox-172125114.html

Trucs

Evitar fraus / Scam / estafadors

La paraula clau és atenció al Red flags. Les senyals d’estar alerta.

  • Emails que et diuen que són de correus, que tenen un paquet per a tu, i t’adjunten un arxiu adjunt d’aparença com un PDF per a que el baixis
  • Trucades o SMS que et diuen que són del teu banc i que la teva tarja està bloquejada, i que vagis a una adreça web estranya per a que no et desactivin la tarja o el compte, el que volen és obtenir les teves dades personals.
    • El banc mai et trucarà demanant-te dades personals ni contrassenyes.
    • Dos companys més van rebre el mateix SMS.
    • Graciosament jo no sóc d’aquell banc.
    • Al cap de dos dies vaig rebre un altre SMS clavat, fent-se passar per un altre banc.
  • Sistemes de trucades automàtiques que diuen que truquen de la teva companyia de telèfon i que s’ha detectat una activitat il·legal a la teva connexió Internet, i que et tallaran la linia si no truques a un número
    • Truquen des d’altres països
    • Normalment no tenen cap dada teva, i el que volen és aconseguir-ne
  • Emails que et diuen que necessiten algú per a cobrar una fortuna, i que després et fan pagar.
  • Emails que et diuen que t’han hackejat i que han enregistrat la teva vida privada i que si no pagues ho faran públic.
    • Comentar com vaig ajudar a un conegut, quan li van enviar un email d’aquests.
    • Sempre recomano tapar la càmera del portàtil.
  • Darrerament, al germà d’un company, a Estats Units, el van trucar a la feina i li van dir que havia missed l’assistència com a jurat a un judici, i que havia de pagar 1,000 dolars de multa o aniria a presó.
    • Li van dir que no acceptaven targes de crèdit o dèbit, només prepagament.
  • La setmana entrant parlarem de les estafes a les aplicacions de conèixer gent.
  • A través de Paypal
    • Et fan una venta puntual, i et subscriuen a pagaments recurrents sense preguntar o d’una manera molt shady i llavors et roben cada mes. Moltes webs de conèixer gent fan això. I Paypal no se’n responsabilitza. Jo he reportat diversos casos i només en dos han tornat diners.

Podeu trobar els punt del següent programa: RAB el nou món digital 2022-05-30 [CA]

RAB El nou món digital 2022-05-16 [CA]

This content is available in Catalan language only.

Aquest és el guió per al proper programa El nou món digital a Ràdio Amèrica Barcelona, a emetre Dilluns 16 de Maig de 2022. 2022-05-16 14:30 Irish Time / 15:30 Zona horària Catalunya / 06:30 Pacific Time.

This is the excerpt of my radio program at Radio America Barcelona on Monday 2022-05-16 14:30 Irish Time / 15:30 Catalonia time / 06:30 Pacific Time.

Aquest programa es pot veure a Twitch, apareixo a partir del minut 33:

https://www.twitch.tv/videos/1485460296

Notícies i novetats de vídeo

Videojocs / Video games

  • EA Games acaba el partnership amb FIFA, i ja no editarà més el joc de futbol FIFA

Ara faran el EA sports FC.

La veritat és que usar el nom FIFA i les seves condicions els inpedien de fer el tipus de jocs, més dinàmics que volien. També els costava molts diners simplement per a poder usar quatre lletres a la caratula. L’any passat FIFA va demanar de doblar el USD $150 Milions anuals que cobraven simplement pels drets d’usar el nom FIFA. I tal com va dir el president d’EA, la majoria de gent no compra els jocs a la botiga si no que els compra i descarrega digitalment. Així que les quatre lletres de FIFA tenen poc valor per a EA.

Fins a 2021 la saga FIFA ha venut 320 Milions de còpies. Cal sumar-li les de 2022.

https://en.wikipedia.org/wiki/FIFA_(video_game_series)

FIFA ha dit que faran un joc millor, però crec que en aquest cas la gent seguirà a EA, perque són els que realment saben com fer un producte de qualitat i tenen les plataformes. Crear un videojoc d’èxit i la infrastructura per a que funcioni amb milions d’usuaris no s’aprèn en quatre dies.

https://arstechnica.com/gaming/2022/05/ea-friendship-ended-with-fifa-now-ea-sports-fc-is-my-best-friend/

Destacar que diaris com the Irish Independent ho esmenten.

https://www.independent.co.uk/tech/ea-sports-fifa-premier-league-la-liga-mls-b2076337.html

  • Elden Ring

Disclaimer: Treballo per a Activision Blizzard. Comparteixo les meves opinions personals com a persona que juga a videojocs. I work for Activision Blizzard. I share my personal opinions as human being that loves video games.

Parlem d’Elden Ring, un joc open world de la mà de FromSoftware, creadors de la mítica saga Dark Sould o Sekiro Shadows die twice que ha estat nomenat millor joc de l’any.

Des del 25 de Febrer segueix sent el joc més ben valorat tant per a playstation 5 com per a xbox series x.

https://www.metacritic.com/game/xbox-series-x

https://www.metacritic.com/game/playstation-5

Per a la gent que li agraden els videojocs llargs, jo hi he jugat 144 hores i sóc nivell 104, amb 122 hores era nivell 84, i dec haver vist un 25% del joc o menys.

Normalment m’agraden els jocs que duren entre 60 i 90 hores. S’ha de reconèixer que és bonic, divertit i grotesc, i és el seu propi univers. Fa interactuar als jugadors.

És un món, ple de secrets, i es pot jugar tranquilament 500 hores.

I en la línia dels seus predecessors, Darks Souls, tothom mor o te finals més aviat terribles i tristos.

El joc ha venut més de 13.4 milions de còpies a tot el món, des del seu llançament el 25 de Febrer.

Com parlàvem la setmana passada és un joc totalment social, on pots invocar altres jugadors per a que t’ajudin, on altres jugadors t’invaeixen en mig de la partida, i on pots veure el que han fet altres jugadors i on han mort.

Defineix una nova manera de jugar perquè sense guies Internet és impossible descrobrir gran part del seu contingut.

Per als novells vaig escriure alguns trucs: Some tips for beginners at Elden Ring

  • Els jocs més venuts de tots els temps
    • Minecraft: 238 milions de còpies (des de 2011)
    • Grand Theft Auto V: 160M (des de 2013)
    • Tetris (EA): 100M (des de 2006)
    • Nintendo Wii Sports: 82.9M (des de 2006)
    • PUBG: Battlegrounds 75M (2017)
    • Super Mario Bros 58M (1985)
    • Mario Kart 8 / Deluxe 53.79M (2014) per a Wii i Switch
    • Pokémon 47.52M (1996) Game Boy
    • Terraria 44M (2011)
    • Wii Fit 43.8M (2007)
    • https://en.wikipedia.org/wiki/List_of_best-selling_video_games

Trucs

Alternatives a l’office

  • Google docs. I pots compartir documents amb altres persones, i actualitzar-los diverses persones alhora.

Una curiositat sobre Google Docs, com posant en un document And. And. And. And. And. el feia petar. :) https://www.engadget.com/google-docs-and-and-and-and-and-bug-213609808.html

Jo amb el meu doctor, comparteixo les biomètriques en un Spreadsheet de Google.

  • Instal·lar LibreOffice enlloc de l’Office. I en anglès.

El currency, el locale, separador decimal, de dates, pot variar d’un país a l’altre. Utilitzo en tots l’anglès americà i així usi l’ordinador que usi no tinc problemes a cap. (la hora faig servir 24 hours i la data YYYY-MM-DD)

  • Els problemes del Software pirata, i els bots, keyloggers, lladres de comptes…
  • Jo m’instal·lo tot el Software en anglès americà, perque tinc les actualitzacions de seguretat abans, i les hotkeys, les dreceres de teclat no canvien.
  • També podeu utilitzar la suite de google docs des del mòbil i la tauleta, accedint als vostres continguts als núvol.
  • Esmentar que es poden compartir arxius amb Google Drive.

RAB El nou món digital 2022-05-09 [CA]

This content is available in Catalan language only.

Aquest és el guió per al proper programa El nou món digital a Ràdio Amèrica Barcelona, a emetre Dilluns 9 de Maig de 2022. 2022-05-09 14:30 Irish Time / 15:30 Zona horària Catalunya / 06:30 Pacific Time.

This is the excerpt of my radio program at Radio America Barcelona on Monday 2022-05-09 14:30 Irish Time / 15:30 Catalonia time / 06:30 Pacific Time.

Podeu veure el programa a partir del minut 35 a Twitch:

https://www.twitch.tv/videos/1479235573

Previ

Vam comentar sobre com els governs escocès i irlandès subvencionen estudis a estudiants estrangers, i a treballadors que volen estudiar carreres d’IT.

Notícies

  • Volkswagen i BP faran partnership i instal·laran milers de punts de càrrega ràpida per a cotxes elèctrics a Alemanya i a Regne Unit.

https://www.engadget.com/vw-bp-fast-ev-chargers-gas-stations-192019692.html

VW and BP know they’ll both have to embrace electric vehicles, and they’re ready to work together to ease some of the transitional pain. Autoweek reports the two companies are teaming up to install thousands of VW’s Flexpole 150kW fast EV chargers at gas stations in Germany and the UK. Within two years, there will be as many as 2,000 charging units (4,000 charge points) in place at BP stations in the UK and Aral locations in Germany.

The expansion should help BP expand its charging network to 8,000 connections by the end of 2024.

  • Rel·lacionat amb això, cal felicitar al govern irlandès, que el 4 de Febrer ha reeditat una iniciativa molt reixida on subvencionen els taxistes que comprin un cotxe completament elèctric amb 10.000 € més 2.500 € addicionals si el converteix en accessible per a cadira de rodes.

Si s’entrega un cotxe antic, més contaminant o amb molts kilòmetres, els imports subvencionats són el doble: 20.000 € i 5.000 € respectivament.

https://www.gov.ie/en/press-release/f1623-up-to-25000-for-taxi-drivers-to-buy-electric-vehicles/

  • Xbox està enllestint la seva plataforma d’streaming de videojocs

Amb l’streamming no cal que tinguis una consola o un ordinador potent.

Ells t’envien la imatge i el so a l’ordinador i tu envies els moviments del comandament o el teclat. Això permet de retransmetre videojocs visualment impactants sense haver de gastar-se els diners en una consola o un ordinador molt potents.

Hi ha altres plataformes que fan això com: Google Stadia, Playstation Now (amb jocs de PS4), NVIDIA’s GeForce Now.

Això lliga una mica amb l’escassetat de processadors que fa que s’hagi d’esperar mesos per a aconseguir una consola d’última generació.

Amazon te una plataforma de subscripció per a Pc i Windows, que no és d’streamming, i que et permet de jugar a jocs gratis i tenir certes avantatges anomenat Amazon Prime Gaming.

Realment les empreses adoren els serveis de subscripció perque els permeten de predir quins ingressos tindran i no s’han de preocupar de la logística de fabricar i d’enviar coses.

https://www.engadget.com/xbox-game-streaming-device-tv-app-samsung-report-201006642.html

  • El CEO d’Intel va esmentar que el shortage de microxips s’allargarà durant el 2023 fins el 2024.

Degut al covid s’ha aturat molt la producció de microxips. Això s’ha vist reflexat en llargs temps d’espera per a comprar consoles com la Playstation 5, Ordinadors Mac, cotxes, o mòbils.

Nogenysmenys Intel està construint dues plantes gegantines a diferents indrets d’Estats Units.

https://www.engadget.com/intel-ceo-chip-shortage-continue-2024-141154415.html

Trucs

  • Starlink

Si viviu en zones rurals on no us arriba fibra, o teniu Internet de 6 Mbits, us pot interessar Starlink.

Starlink proporciona Internet molt ràpida, per satèl·lit, amb baixa latència.

És un servei create per Space X, és a dir, d’Elon Musk, el mateix propietari de Tesla, i ara de Twitter des de fa tres dies.

Operen a molts països. 32. Són a Amèrica, i a Europa. Amb problemes a la Índia pel govern no atorgant la llicència. Tot just han començat a Puerto Rico. Alguns amics meus a Irlanda l’utilitzen i estan súper contents. I molts terminals van ser distribuïts a Ukraïna per a que no es quedessin sense Internet quan Rússia els va envaïr.

https://en.wikipedia.org/wiki/Starlink

Les velocitats que podem esperar per a Starlink depenen de la tarifa, però sol estar entre el 100Mbps i els 500Mbps per a baixada i de pujada des de 12 a més de 25 Mbps amb un preu bàsic de $99 USD mensuals.

Acaben d’aprovar-lo a Perú https://trome.com/tecnologia/starlink-gobierno-autoriza-a-la-empresa-de-internet-satelital-de-dar-servicios-en-peru-elon-musk-mtc-tecnologia-noticia/?ref=tr

Starlink també permet endur-se la connexió Internet, si viatgem pel mateix continent, si anem de camping, etc..

https://www.engadget.com/starlink-portability-internet-spacex-141228324.html

https://www.ookla.com/articles/starlink-hughesnet-viasat-performance-q4-2021

I Hawaian airlines vol oferir Internet amb Starlink als seus vols:

https://www.engadget.com/hawaiian-airlines-spacex-starlink-free-internet-131056087.html

L’únic que s’ha de vigilar és amb les possibles baixades de velocitat causades per… :)

https://www.starlink.com/

Humor

Un oient va comentar que cada cop que diem “tinc que” enlloc d’haig de, mor un gatet.

Així doncs vaig fer aquest Meme. :)

Why I think in Python is not a good idea to raise exceptions inside your methods

Last update: 2022-05-18 10:48 Irish Time

Recently a colleague was asking me for advice on their design of error handling in a Python application.

They were catching an error and raising an Exception, inside the except part of a method, to be catch outside the method.

And at some point a simple logic got really messy and unnecessarily complicated. Also troubleshooting and debugging an error was painful because they were only getting a Custom Exception and not context.

I explained to my colleague that I believed that the person that created that Exception chain of catch came from Java background and why I think they choose that path, and why I think in Python it’s a bad idea.

In Java, functions and methods can only return one object.

I programmed a lot in Java in my career, and it was a pain having to create value objects, and having to create all kind of objects for the return. Is it a good thing that types are strongly verified by the language? Yes. It worked? Yes. It made me invest much more time than necessary? Also yes.

Having the possibility to return only one object makes it mandatory having a way to return when there was an error. Otherwise you would need to encapsulate an error code and error description fields in each object, which is contrary to the nature of the object.

For example, a class Persona. Doesn’t make any sense having an attribute inside the class Persona to register if an operation related to this object went wrong.

For example, if we are in a class Spaceship that has a method GetPersonaInCommand() and there is a problem in that method, doesn’t make any sense to return an empty Persona object with attributes idError, errorDescription. Probably the Constructor or Persona will require at least a name or Id to build the object…. so in this case, makes sense that the method raises an Exception so the calling code catches it and knows that something went wrong or when there is no data to return.

This will force to write Custom Exceptions, but it’s a solution.

Another solution is creating a generic response object which could be an Object with these attributes:

  • idError
  • errorDescription
  • an Object which is the response, in our example Persona or null

I created this kind of approach for my Cassandra libraries to easily work with Cassandra from Java and from PHP, and for Cassandra Universal Driver (a http/s gateway created in year 2014).

Why this in not necessary in Python

Python allows you to return multiple values, so I encourage you tor return a boolean for indicating the success of the operation, and the object/value you’re interested.

You can see it easily if you take a look to FileUtils class from my OpenSource libraries carleslibs.

The method get_file_size_in_bytes(self, s_file) for example:

    def get_file_size_in_bytes(self, s_file):

        b_success = False
        i_file_size = 0

        try:
            # This will help with Unit Testing by raisin IOError Exception
            self.test_helper()

            i_file_size = os.path.getsize(s_file)
            b_success = True
        except IOError:
            b_success = False

        return b_success, i_file_size

It will always return a boolean value to indicate success or failure of the operation and an integer for the size of the file.

The calling code will do something like this:

o_fileutils = FileUtils()
b_success, i_bytes = o_fileutils.get_file_size_in_bytes("profile.png")
if b_succes is False:
    print("Error! The file does not exist or cannot be accessed!")
    exit(1)

if i_bytes < 1024:
    print("The profile picture should be at least 1KB")
    exit(1)

print("Profile picture exists and is", i_bytes, " bytes in length!")

The fact that Python can return multiple variables makes super easy dealing with error handling without having to take the road of Custom Exceptions.

And it is Ok if you want to follow this path, but in my opinion, for most of the developers up to Senior levels, it only over complicates the logic of your code and the amount of try/excepts you have to have everywhere.

If you use PHP you can mix different types in an Array, so you can always return an Array with a boolean, or an i_id_error, and your object or data of whatever type it’s.

Getting back to my carleslibs Open Source package, it is super easy to Unit Test these methods.

In my opinion, this level of simplicity, brings only advantages. Including Software Development speed, which is good for the business.

I’m not advocating for not using Custom Exceptions or to not develop a Exceptions Raising strategy if you need it and you know what you’re doing. I’m just suggesting why I think most of the developments in Python do not really need this and only over complicates the development. There are situations where raising exceptions will be a perfectly useful or even the best approach, there are many scenarios, but I think that in most of cases, using raise inside except will only multiply the time of the development and slow down the speed of bringing new features to the business, over complicating Unit Test as well, and be a real pain for the Junior and Intermediate developers.

The Constructor

Obviously, as the Constructor doesn’t return any value, it is perfectly fine to raise an exception in there, or just to use try/except in the code that is instancing the objects.