A post where I reflect on my professional life in 2021 as a look ahead for what to expect in 2022.
As usual, let me tell you that I write this kind of posts for myself and I don’t expect other people to be able to read this and be engaged. So, if you really feel like you want to venture forward and have a peek on my 2021, well, I am flattered… but make sure to grab a coffee, because this might get a little (just a little…) boring!
Yes, this GIF is probably the least boring element of the whole article! 😍
Joining fourTheorem
The biggest highlight of my 2021 is that in February I joined fourTheorem as a Senior Architect.
If you never heard about fourTheorem, here’s what you need to know. It’s a great service company founded by Peter Elger, Fiona McKenna and Eoin Shanaghy.
The company, while still relatively new and small, has a large amount of expertise in serverless, platform modernisation and AI as a service. Most importantly, fourTheorem has a huge amount of experience with AWS. We are AWS Consulting Partners and we have been helping small and big customers to transition to the cloud and get the best out of it!
I have to admit I was initially skeptical about being able to work with a company that is not focused on delivering one single product but that is mainly helping many other companies to do that. In the past I rarely had a great experience when being on the other side and dealing with other service companies.
But I was immediately reassured by the fact that Eoin and Peter are not just two amazingly good technical founders, but they also have an impressive track record working with companies of all sizes: from small startups to big corporations. Together with Fiona, the founding trio has a very inspiring vision for what they want the company to become.
I immediately had the feeling that they wanted to build something very different from the other service companies out there. This feeling became apparent pretty quickly just after the first week, when I saw how they managed to embed their team into the customer’s team and work together in all the phases of the product. FourTheorem can literally be an extension of a team, bringing not just people and technology skills, but also a very practical and agile approach to software delivery.
And after almost a year, I cannot hide the fact that I have never been happier in a technical position. I can work in an environment with fantastic colleagues, an amazing culture, in a very supportive environment where I am learning a ton. Most importantly, I feel like there is a lot of potential and that I can have an impact.
Finally I get a significant amount of “work time” to invest in content creation, open source and to study (new tech, certifications, etc.). This is something that I consider integral part of my professional career path and it’s great to see that it is valued and supported!
Mandatory disclaimer: we are always hiring, so if you are interested feel free to reach out to me on Twitter or LinkedIn.
Also… if you are looking for help for your cloud migration or to improve your AWS deployments, don’t be shy, let’s have a coffee-chat! 😉
Be not afraid of discomfort. If you can’t put yourself in a situation where you are uncomfortable, then you will never grow. You will never change. You’ll never learn.
— Jason Reynolds
Becoming an MVP
In 2021 I was awarded the title of Most Valuable Professional (MVP) for Developer Technologies by Microsoft:
The MVP program awards exceptional community leadership across the world of tech.
Apparently, to become an MVP, you need to do the following 4 things:
- Demonstrate community leadership and influence
- Be a technical expert
- Be a great advocate for the community
- Contribute to the success of our products
If nothing else, this makes me think that the community is getting some value from the work I am doing and this can only push me to do more!
I am really glad that the amazing Francesco Sciuti (who nominated me) thinks that I have done such a good job to deserve the award and thanks Microsoft for agreeing with him! ❤️
One funny thing is that, during the due diligence phase, Microsoft makes you fill a big form to list all the things you think had the most impact on the community. Having written posts like this in the last few years helped me a lot to come up with a consistent list. Maybe it wasn’t such a bad idea to write these posts after all…
If you are curious, you can also check out my profile on the MVP network.
It’s not like after winning an award, your job is done and you can relax. You still have to work hard.
— Diljit Dosanjh
Public speaking
In 2021 I had the pleasure (and the immense luck) to be able to do quite a lot of publick speaking.
It’s hard to pick a favourite but, being such a fan of Node.js, there’s one that I am particularly proud about: NodeConf Remote!
Here’s the full list of talks, workshops and interviews that I delievered in 2021:
- An opinionated intro to Node.js - Devrupt Hospitality Hackaton (Slides)
- From Node.js to Design Patterns - Codemotion DevCast (Slides)
- Let’s play with Node.js streams (workshop) - CityJS (Slides)
- Let’s play with Node.js streams (workshop) - Codemotion (Slides)
- A podcast about Node.js with Vishwas Narayan (Slides)
- My first Rust crate: jwtinfo (lightning talk) - Rust Dublin Meetup (Slides, Video)
- Chats and career advice with Superheroes Valley
- Live stream with Fabio Biondi - Node.js Streams (Video)
- Finding a lost song with Node.js & async iterators - Node.js Dublin meetup (Slides)
- Interview with Gitbar podcast (Podcast Episode)
- Javascript: repetita iuvant - Codemotion DevCast (Slides)
- Teach Kelvin Your Thing: JavaScript Async iterators (Video)
- An intro to the JAMStack & Eleventy - Codemotion (Slides, Video)
- Reiterating JavaScript and Node.js iterators - RomaJS (Slides, Video)
- A chat with Luca Brunello (Video)
- AWS Observability without the pain (Slides)
- Finding a lost song with Node.js & async iterators - Sailsconf (Slides, Video)
- How to send gzipped requests with boto3 (Slides)
- Quality questions with the NoobDev podcast (Podcast Episode)
- Finding a lost song with Node.js & async iterators - EnterJS (Slides)
- How to Train a Computer Vision Model - Sparkd.ai on Twitch (Slides, Video)
- Finding a lost song with Node.js & async iterators - NodeConf Remote (Slides, Video)
- Semplificare l’observability per progetti Serverless su AWS - Cloud Day conference (Slides)
- AWS Observability made simple - AWS Community Day Ireland (Slides)
- Authors and Architects (Panel) - AWS Community Day Ireland
- Serverless, Devops & Developer Tools (Panel) - AWS Community Day Ireland
- Node.js, Rust & Cloud Architectures (interview) - Inference Podcast (Video)
- A look inside the European Covid Green Pass - Codemotion (Slides, Video)
- Node.js scalability tips - Azure Developer Community Meetup (Slides)
I am stopping counting them (more on this later), but just looking at the length of the list this year feels like a personal record from this the public speaking angle.
If you are curious to see all my talks, I keep collecting them in the speaking section of this blog.
After 2 years of remote speaking I have to admit that, even if I like to be able to speak to people all around the world with just a click, I do miss meeting people face to face. It feels like I haven’t been able to form the same level of relationship I had the fortune to form in the previous years where I was able to meet attendees, organisers and other speakers in person.
Hopefully this year it will be safe to do a few events in person again. 🤞
Sharing is good, and with digital technology, sharing is easy.
— Richard Stallman
AWS Bites
A new activity I started this year is AWS Bites podcast. AWS Bites was born from an idea of Eoin Shanaghy. It’s essentially a podcast series where, in every episode, we try to answer an interesting questions about AWS.
If you want to have a feeling for it, this one is probably one of my favourite episodes so far:
Some other episodes I am really proud about:
- 19. Is the serverless DX still immature?
- 16. What are the pros and cons of CDK?
- 10. Lambda or Fargate for containers?
- 01. When should I use serverless?
The goal for this podcast is to be able to share our AWS expertise in a simple and easy to digest format.
Even if we have recorded more than 20 episode it still feels like we are at the beginning of the journey and we are often trying to revisit and refine the format and the delivery. So, if you have any suggestion please let us know!
Also, if you like the format don’t forget to subscribe AWS Bites YouTube channel. 🙏
If you prefer the audio-only version, you can check out AWS Bites podcast on Anchor.fm, which also makes it available on Spotify, Apple Podcasts, Google Podcasts and others!
The art and science of asking questions is the source of all knowledge.
— Thomas Berger
Advent of Code in Rust (Twitch live streams)
On my personal quest to learn Rust, I decided to start a Twitch channel where I could live-stream my efforts. And the best thing ever is that I haven’t been alone in this effort because I have been joined by my good friends Roberto and Eugen!
Together we have been live-streaming our attempts at cracking Advent of Code using Rust. It has been a great challenge and a very good way to consistently have something to hack in Rust.
We are posting all the recordings on YouTube, so if you are really curious to see us stumbling against the Rust borrow checker or scratching our head with some interesting algorithm you can do that (even at 2x speed).
Last year we managed to complete all the exercises from year 2020 of Advent of Code. This year we are continuing our efforts at cracking the 2021 edition. We have already solved most of them, so we might decide soon to start streaming other types of Rust adventures… Maybe some serverless AWS with Rust or building a game with Bevy… who knows!
We live-stream every Monday at 6PM Dublin time.
Make sure to subscribe the YouTube channel or Twitch if you want to learn Rust with us!
Try to learn something about everything and everything about something.
— Thomas Huxley
Node.js Design Patterns
The main thing to report about Node.js Design Patterns is that the book kept getting some good amount of organic love.
I have been seeing many mentions online and even jokes!
Thanks Kevin for this brilliant mockup (Kevin has even created a PHP version)!
⚠️ For the records, this is a joke, we are not writing a book about Rust or PHP! 😅
What’s amazing is that Node.js Design Patterns has recently surpassed 100 reviews on Amazon and it’s still rocking positively at an average of 4.6 stars! This fills me with joy! ❤️
If you haven’t left a review for Node.js Design Patterns yet, please consider doing so. This is one of the most effective actions you could do to help us promoting the book and tell us what we can do to make it better! 🙏
A final note is that, throughout last year, we published 3 new blog articles on the blog section of the book website:
- Node.js race conditions
- Node.js development with Docker and Docker Compose (huge thanks to Giuseppe Morelli for authoring this one!)
- JavaScript async iterators
Go check them out if you find them interesting!
You cannot open a book without learning something.
— Confucius
FullStack Bulletin
FullStack bulletin is a free weekly newsletter about full stack web development. I have been running this project with my dear friend Andrea Mangano for the last 4 years counting 258 issues today!
The project is totally open source and uses tons of automation to minimise the amount of manual work.
Although we had some plans for a redesign, we didn’t manage to find the time to ship any significant change In 2021, but the newsletter kept growing organically nonetheless.
One cool thing worth mentioning is that we started to get some interest in sponsorship campaign and we managed to get 5 amazing companies to sponsor several editions of FullStack Bulletin:
Sponsorships help us cover the costs associated with running the newsletter (Mailchimp, domains, hosting, etc.).
If you would like to support FullStack Bulletin and you have a product or an idea that you would like to expose to an audience of ~2.000 amazing full stack developers, consider sponsoring one of the next issues.
Finally, there are certainly many ways we can improve FullStack Bulletin, so if you have any suggestion, please do let us know!
More than kisses, letters mingle souls.
— John Donne
Middy
Middy is a Node.js middleware framework for AWS Lambda. I have been working on this project since the early days of Lambda (even though the first public commit was made the 3rd of August 2017).
With that being said, I can’t really claim anything for the success of the framework during the last couple of years. Insted all the credit goes to Will Farrell, who has been relentlessy maintaining the framework, and to the amazing community behind Middy!
The reason why I wanted to mention Middy here is because last year Middy started to get a lot more traction.
First of all Middy reached 2700 GitHub stars (not a crazy impressive number, but still something I can feel proud about):
Yeah, if you haven’t given your star to the project, what are you waiting for? 😛
But let’s be fair, stars are just a bit of a vanity metric! What is cooler is that Middy is currently trending at about 160.000 downloads/day:
If we look at the total number of downloads per year things seems even more impressive:
In this chart you can see that @middy/core
+ middy
(legacy 0.x package) reached together about 6 million downloads in 2021!
And, just to put the cherry on top of the cake, what made me really happy is that Middy started to get some interesting coverage:
- Lambda PowerTools for TypeScript by AWS works seamlessy with Middy and it the integration has even been showcased live by some AWS engineers
- Middy is helping with delivering Tacos 🌮🌮. No kidding, there’s a re:Invent 2021 talk by Taco Bells mentioning Middy
- Serverless Stack (framework) has an entire documentation page showing how to use Middy validator with Serverless Stack
- Redwoodjs is considering integrating with Middy
- Middy is also helping with testing formula-one style electric cars… Those must definitely be faster than a scooter!
While all this success fills me with happyness, I expect even greater results for this year as version 3 is shaping up really nicely and should come out soon!
PS: Last year, Will and I were interviewed about Middy by the folks at Cooper Press: A Chat with Will Farrell & Luciano Mammino of Middy.
I bought an electric scooter in sixth grade. Bankrupted me.
— Zac Efron
Pro-bono mentorship
In 2021, I invested some of my spare time to help engineers landing their first job. Together with my good friend Padraig O’Brien, we helped 3 engineers to fine-tune their CV, understand how to present themselves and get ready for some coding interview.
I mostly helped around preparing for the coding interview. Altough it was a lot of fun to meet eager engineer and do some pair programming with them, the most rewarding part was to actually see that they were actually able to land their first job and that this is having a very positive impact in their lives.
Out of the 3 engineers I had the pleasure to mentor, 2 of them got a permanent role and 1 is working off a few interesting contract roles. Let me know if you are thinking about hiring full-time an amazing React/JavaScript developer and I’ll put you in touch with them!
I’d love to keep investing 1 or 2 hours of my free time every month to continue this effort. It feels great to give something back to the community. I have learned from so many people during this year and it’s good to finally being able to carry the torch for a bit!
If you are looking to land your first job in tech and you feel like you can use some help for the coding interview, give me a shout!
If you are keen to getting your CV reviewed and understand how you can better present yourself, make sure to reach out to Podge.
PS: you can also check out this article I wrote last year: 10 tips to smash the code interview.
Don’t judge each day by the harvest you reap but by the seeds that you plant.
— Robert Louis Stevenson
SLIC Watch - Easy AWS o11y
Last year I had the fortune and the pleasure to use some of my fourTheorem time to contribute to a very cool open source project: SLIC Watch.
SLIC Watch is a Serverless Framework plugin that generates for you CloudWatch dashboards and alarms for:
- AWS Lambda
- API Gateway
- DynamoDB
- Kinesis Data Streams
- SQS Queues
- Step Functions
The idea behind this project is that very often we don’t invest in providing all these observability tools just because it’s hard and time consuming to get them right.
SLIC Watch tries to solve this problem by looking at all the resources in your stack and it automatically adds relevant dashboards and alarms based on common industry best practices.
This way you can get a good degree of “observability coverage” with very minimal effort (and time).
Of course, SLIC Watch cannot replace bespoke and fine tuned dashboards and alarms, but it’s still good in the sense that it can give you a good base that should cover 80% of your needs. This way you can focus on the 20% that matters more and that is very bespoke for your business.
Just to give you a more practical example, if you defined a Lambda function in your application stack, SLIC Watch will automatically provision the following alarms for you:
- Errors
- Throttles, as a percentage of the number of invocations
- Duration, as a percentage of the function’s configured timeout
- Invocations, disabled by default
- IteratorAge, for function’s triggered by an Event Source Mapping
SLIC Watch also generates relevant dashboards for you:
If you find this interesting, make sure to check out the official repository (and while you are at it, give it a star 😛).
You can also check out these slides where we present the context for SLIC Watch in a more detailed way:
To acquire knowledge, one must study; but to acquire wisdom, one must observe.
— Marilyn vos Savant
Digital Green Certificate, Covid Library (Rust)
In June last year I got curious about the QRCodes used as part of the Digital Green Certificate program (a.k.a. DGC or DCC).
The specification allows to encapsulate certified proof of Covid vaccination, Covid test or Covid recovery within a QRCode.
I have been thinkering with the idea of using QRCodes with a digital signature in the retail world (tickets, certified coupon codes, etc.) so I was extremely curious to learn more about this project and see how they implemented the certification.
As part of this research I ended up creating a decoder library in Rust.
This library allows you to be able to read all the information encoded within the QRCode and to verify the autenticity of the certificate by checking its digital signature.
It was an extremely interesting project where I got to learn a bunch of new things:
…and I also reinforced a bit my understanding of cryptography and compression.
The best part is that this project somehow got the attention of the (very active) Rust Italia group, which helped me a lot to refine the library and to build new features.
This was amazing because it has been a great opportunity to learn from more experienced Rust developers and learn how to make a “production-ready” library. Thank you Rust Italia! ❤️
I had condensed my learning in a Codemotion talk: A look inside the European Covid Green Certificate:
If this topic is something that interests you, I will be delivering the same talk again at Rust Dublin Meetup, this month!
When solving problems, dig at the roots instead of just hacking at the leaves.
— Anthony J. D’Angelo
Articles
In addition to the articles already mentioned for the Node.js Design Patterns blog, I managed to write a few more articles during 2021.
Here’s the full (boring) list of the ones published in this blog:
- Where to go to learn Rust in 2021
- Rust shenanigans: return type polymorphism
- How to to_string in Rust
- How to send gzipped requests with boto3
- Provision an Ubuntu-based EC2 instance with CDK
- Create resources conditionally with CDK
In retrospective, it’s interesting to see a good mix of Rust and AWS articles. I think this reflects well where my learnings have been focused throughout the year.
I also ended up publishing a few articles outside this blog:
- AWS Lambda CI with Buddy
- Configure ESlint and StandardJS
- Easy Serverless observability on AWS with SLIC Watch
- 10 tips to smash the code interview
- Your Lambdas are failing and you don’t even know!
Let’s have a quick look at some stats for this blog:
It’s interesting to see a mix of new and old articles, But other than that the figures in terms of total number of page views are not to far off from last year (about 70k pageviews).
If we look at acquisition channels, the figure does not change too much from last year:
The majority (more than half) of the readers came from organic search. This is probably because I have a large chunk of articles in the long time still driving a lot of traffic and hopefully because of some SEO.
But, if I have to be honest, I am not particularly interested in doing an in-depth analysis and trying to figure out how to squeeze more traffic from search engines.
I should probably focus more on figuring out what topics are the most interesting for my audience and make sure I have a steady line of content to target those.
Whether you’re keeping a journal or writing as a meditation, it’s the same thing. What’s important is you’re having a relationship with your mind.
— Natalie Goldberg
Open Source
Every year I reported here a list with every single repo I contributed to. It’s honestly a waste of time (I am finally admitting that), so let me just summarise the ones that I think are more meaningful:
scrobbles
is a Node.js library that allows you to fetch your “scrobbles” (songs you have been listening to) from Last.fm.- I have created a Node.js Streams workshop that you can avail for free:
lmammino/streams-workshop
. - I created the repo
lmammino/async-iteration-http-requests
, where i thinker with the idea of using async iterators to handle incoming requests in a Node.js web server. This is something that Deno suggests as standard way build web servers. This experiment sparked a bunch of interesting conversations and I ultimately think this might be a dangerous practice. - I created a repo with all my examples from the talk “Finding a lost song with Node.js and async iterators”:
lmammino/node-async-iterators-talk-examples
- I created the repo
lmammino/javascript-iteration-protocols
to show many different ways that you can use to do iteration in JavaScript and Node.js. - As part of my research for DGC, I ended playing with several Rust libraries for handling CBOR and eventually I contribured to my favourite one:
enarx/ciborium
. In this case I added a bunch of helper functions to simplify deserialization. - I contributed to
udondan/cdk-ec2-key-pair
, a CDK construct that allows you to generate key pairs for AWS EC2 instances. Small contribution to the docs, mostly redacting some examples that were a bit out of date. - I started
gmaps-static
, a Rust crate that allows you to build URLs for Google Maps static pictures. I even recorded a live video while coding this together with Tommaso Allevi. It is still not fully complete but it was a great experiment to learn a bunch of new interesting Rust concepts. Thank you, Tommaso! 🙌 - I consider playing the best way to learn something. If you can make it fun, you won’t even notice you are learning. For this reason I started
lmammino/awesome-learn-by-playing
, a repository where I tried to collect all the resources that can teach you about coding and electronics by playing games. This project gathered a bunch of contributors and many stars (thanks everyone), so it seems many people like to learn by playing. 😊 allwords
is another Rust crate that allows you to sequentially generate all the possible combinations of words over a set of characters. Could be useful for brute force attacks or fuzzy testing.rollz
is a very simple Rust crate that allows you to… roll dice! Nothing special except it was a great way to experiment with return type polymorphism and generics in Rust.- I have been a pedantic nerd by sending a PR to CircleCI where I renamed all their references to “NodeJS” to “Node.js”! 😅
Microfeat
is a super-simple and incomplete feature flag server written in Rust. I wrote this during an hackaton with Roberto Gambuzzi and it was a lot of fun to learn how to deal with http servers and websockets in Rust.- I contributed to
node-formidable/formidable
a nice Node.js library that allows you to easily process multipart form data in streaming mode. Quite good to handle file uploads on a web server.
GitHub is something that is integral part of my daily routine. If I have an idea, 9 times out of 10, I start a repo on GitHub! If I use a library and I see something that I think can be improved I submit a PR.
So I think it will come natural for me to just keep doing more open source throughout the year!
If a person has a contribution to make, they must make it in public. If learning is not made public, it is a waste.
— Chaim Potok
Moar stuff
Let’s finish this post with some random stuff I did that didn’t deserve it’s own section.
- I started using Polywork, a new interesting professional social media platform focused on achievements and content creation. If you want to connect, make sure to check out my PolyWork profile.
- I started using Obsidian to take notes and organise my thoughts and learnings. I expect it might help me a lot for content creation, but I guess we’ll revisit this guess next year!
- I have been attempting to learn how to type better using the touch type technique. This came from a realization that I am not comfortable with the Vim shortcuts because of the way I put my hands on the keyboard… I have been practing for a while with some online softwares, but I eventually gave up… I might try this again at some point this year!
- Speaking of keyboards, I got a Keychron K3 and i am loving it. One moar reason to get better at typing!
- I haven’t restarted practicing BJJ (damn Covid!), but I have been keeping a decent running routine! Last year I run a total of 415 km. Thanks to my friend Luca Marchesotti for holding me accountable and for often being a running partner!
- While running, I have been listening to audio books. I listened to a bit of everthing between educational (tech/finance) and novels. Probably my favoutire e-book of 2021 has been To Sleep in a Sea of Stars by Christopher Paolini. Thanks to Rafael Del Nero for suggesting me to start listening to audio books while running. 🏃♂️💨
Expectations for 2022
In this section I generally used to list goals and compare with the previous years goals to see what I had achieved and what I failed at.
From this year I want to try something different. Rather than thinking in terms of goals I want to establish systems that allow me to have routine where I can do things that will eventually lead me to results.
I have already some routines with the Rust streams and AWS Bites podcast that help me to get better at some of the things I care about: learning Rust and getting better at AWS and cloud architectures.
One single goal that I want to achieve this year is to get a new AWS certification. I am proactively studying for that, so stay tuned because I will be sharing my notes!
Wrapping up
In conclusion, 2021 was a crazy busy year! I did not even realise how much stuff did happen until writing this post!
I feel really lucky and I can’t wait to see what I will be able to write at the end of this year… 😊
Whait, WHAT? Are you still with me?
That’s crazy, at this point even my mom would have closed the tab!
(Mom, if you are reading this, don’t worry, I love you anyway!)
What can I say? Thanks for reading all this stuff! You are my hero, so leave me a comment and let’s connect! 🥰
I would love to know what were your achievements last year and what are you planning to do this year!
Chat soon! 👋