Today I ended up checking the original Gmail page from 2004/2005 (through the Wayback machine): Google was such a positively innovative company.

Such a pity it became an evil conglomerate of the worst stinking kind...

Stupidity is the real plague these days.

Activist fund Elliott Management is trying to dethrone Dorsey from his CEO position in Twitter...

...what could go wrong if they succeed?

New CEO (kind of), new lay-off. Shouldn’t be a surprise: every time there’s a new boss in town layoffs and shakeups aren’t to be excluded, particularly in Mozilla.

Back in the Valley.
Gosh, I already feel exhausted and depressed by the mere thought of getting into the work shitshow again.

“Quando perdiamo il diritto di essere differenti, perdiamo il privilegio di essere liberi”

Which roughly translates to: “when we lose the right to be different, we also lose the privilege of freedom”

This powerful sentence was used by the President of Republic of Italy Sergio Mattarella on December 31st 2019 when he addressed the whole nation.

Not sure about you but I find it utterly beautiful and inspiring.

Today I spent most of the day jumping around to reach Naples downtown: the sheer decay of the whole region here is beyond upsetting.

Unfortunately it’s also because of me and people like me: we decided to leave altogether; by doing so we gave free reign to whoever stayed behind... the braindeads and the douchebags.

So you know: my time off here in Italy has been spent with noise canceling headphones on and white noise.

The thing that’s killing my patience the most here at home in Naples is the sheer amount of noise. Not even at home one can have quiet: the motherfucker upstairs has an escape room. Unbelievable.

Now we can add that to our pool; it's as easy as pie...:

def main():
list_of_slow_callables = []

'''Add an egregous number of slow functions to our list.'''
for i in range(100):

"""The cool part: kickoff the executor using the default number
of worker threads (at most 32).
with concurrent.futures.ThreadPoolExecutor() as tp:
for func in list_of_slow_callables:

Show thread

Let's start with our ol' fashioned function...

def legacy_long_function():
'''This is a dummy long function, replace it with your stuff.'''
logging.debug('Really, not doing anything particular for several seconds...')

for i in range(10):
logging.debug(f'Tick {i}')

logging.debug('Ok, I\'m done')

Show thread

Need a quick (and not that dirty) way to parallelize some Python call?

Here's how to do it: just submit (add) your function to the ThreadPoolExecutor.

Every callable (functions, ndr) submitted to the pool returns a Future. But you don't really need to care about that for now.

Talking is cheap, though, let me show you the code.

(This is gonna be a short thread)

In the past few years the Python release schedule changed quite a bit and it might become a bit complicated to understand what version to pick.

In general:

* there's a major version per year
* a major version is supported for up to 5 years

To get a graphical idea of this concept, bookmark this page:

The current major version (the one you should all target for new stuff) is Python 3.8.

Opening mastodon while I’m at home in Italy and finding very little activity is just another proof that my followanza is mostly American.

Only a quick update for all the Python folks in the land:


I've been thinkering with the Alexa SDK: ffs, it's such a boring technology...

This is certainly gonna be the year of Linux on the desktops.

Show more

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!