Category: Blog

  • Onboarding AI vs Onboarding Humans

    Onboarding AI vs Onboarding Humans

    There’s one thing I realized when Cursor and other AI-integrated code development systems came out. Some of them allow you to set rules to better help the AI navigate your codebase. For example, you can tell the AI how to use the codebase, where to find the code related to a specific feature, how to structure that code, what the intention behind it was, and if there is any unusual behavior in the code.

    By behavior, I mean cases where the code might be structured in a certain way but still have edge cases that don’t quite make sense or differ from what you would expect just by looking at the folder structure.

    I’ve started to see some tweets about how this is great and I agree. It’s great.

    What I realized is that this is exactly the kind of information you share when onboarding a new team member.

    Usually, you either have some documentation in place or, after some time working together, you end up having specific onboarding sessions. During these sessions, you explain things like, “This is why we have this ‘views’ folder in two different paths — because XYZ.” There’s a reason for that structure even if, at first look, it doesn’t make sense.

    The unwritten rules like: “If you want to work in the first ‘views’ folder, that’s because you want to create a component for a view. On the other hand, if you want to create something in the other ‘views’ folder, that’s likely because you want to define the actual view.

    Besides the argument that my example could be or not be confusing to people, this is exactly the kind of information we also try to include in tools like Cursor rules when developing. It’s curious — we’re trying so hard now to make things clear for an AI, whereas we weren’t trying this hard before for humans.
    It’s funny in some ways, but it’s also what I think we should have been doing from the start.

    We should maintain the code and accompanying documentation so that someone can work on the code as quickly as possible.
    It’s interesting, at least in this moment in time, how the needs of AI are similar to the needs of a human in terms of understanding the code and knowing all the quirks and strange logic that might have been implemented.

    The challenge is still the same: how do we keep the mental model or internal structure of a project up to date so that it makes AI faster and keeps the codebase readable by humans?
    This would help both humans and AI move faster.

    The challenge, at least in the short term, is how to make maintaining this documentation and structure easier.
    For me, looking back at all the coding I’ve done in my life, maintenance has always been the most difficult. You’re tempted to just ship and move the project forward because that’s easy. But you also want to keep the documentation up to date and accurate, that’s a fine balance where you tend to do tradeoffs.

    My personal take is that we should integrate updating the structure or documentation into the change flow. So, whenever you do a big or small refactoring, AI should update the internal documentation of the features you changed. That way, it remains clear, current, and useful.

    Different tools will handle this differently, and I expect this article to be outdated in less than a year, given how fast AI is moving.

    While writing this article I discovered how Devin.ai includes some kind of internal scratchpad that it uses to know how your code works, plus it adds (thinking about human, again), their deepwiki.com to ensure humans can still navigate the complexities of a codebase.
    If you’re using Cursor/Windsurf, .cursorrules are your friend. And you can add prompts in them to ensure they keep either a scratchpad (like Devin) updated, or keep the docs (which, in this case, should live in the same codebase) updated at every PR.

    It’s interesting to see how this will play out in the future. I would suggest everyone keep this in mind because maintaining accurate documentation and structure benefits everyone working with your products.

  • Let’s talk about Burnout, the enemy we cannot ignore

    Let’s talk about Burnout, the enemy we cannot ignore

    This article is a translation of the Italian version I published in 2021 and aims to give some ideas on how to handle burnout both from a personal and an company-wide perspective.

    If you’re currently struggling with burnout, consider seeking help from a professional.
    There are many options available (one of them is Wysa) that can help you work through it.

    Onto the article…

    LinkedIn is a beautiful place where we can list our successes, but no day passes where I don’t see one key element missing in the conversation: Let’s talk about the dark side of work, the burnout.

    What is burnout, and why knowing its existence is not enough?

    Let’s understand first that burnout kicks in after stress.
    When stress, which is usually temporary, persists over a long period of time and is not followed by relaxation.

    When physical stress (fatigue), mental stress (work) or social stress (requirements) do not diminish/resolve.

    Burnout can be many things, fatigue, surrender, etc.
    But more than any of these, it’s loneliness.

    Even more so in a society of overachievers, of heroes, of exceptional people, burnout is something we fear to show, to tell.
    Or, even worse, to see in others.

    We quibble, “it’s just a moment”, “it’ll pass”.
    That’s the voice inside us speaking when we think about our problems or when we discover the struggles someone is going through, when we see them too much exhausted.

    Truth is: Burnout doesn’t heal the way we expect.
    It marks us, a scar is left if we get over it, or we sink if we never heal from it.

    (more…)
  • Why did I start Working Part-Time instead of Full-Time and the Benefits of a 4 Days Workweek

    Why did I start Working Part-Time instead of Full-Time and the Benefits of a 4 Days Workweek

    Around august 2015 I decided that I wanted to step back from my 9-5 job and work part-time for the same company and it was one of the best decisions of my life.
    In this post I want to highlight the story, the tradeoff, the benefits and the downsides of this choice to help everyone that is uncertain about it have a better understanding of what might happen.

    But let me rewind for a second. (more…)

  • Is DuckDuckGo a Worth Alternative to Google? My 6 Months Test

    Is DuckDuckGo a Worth Alternative to Google? My 6 Months Test

    If you’re here I suppose you already know the DuckDuckGo search engine, it’s a free search engine that doesn’t track you and cares even more about your privacy.

    Here there are my thoughts about its pros and cons. (more…)

  • How to Automatically Backup your OpenShift Applications with the Openshift Backup Server

    How to Automatically Backup your OpenShift Applications with the Openshift Backup Server

    Did you know there’s a way to automate the backup of your openshift apps?
    I didn’t until I found it on the main OpenShift blogs.
    Turns out there’s a whole webapp that does it beautifully and it takes 3 simple steps to setup a scheduled backup for your application. (more…)

  • Powerful and Cheap WordPress Blog Setup with PHP 7.0, NGNIX, Memcached and MariaDB 10.1 on DigitalOcean 512MB Droplet

    Powerful and Cheap WordPress Blog Setup with PHP 7.0, NGNIX, Memcached and MariaDB 10.1 on DigitalOcean 512MB Droplet

    I have a few wordpress blogs now, some of them had some spikes in visits, some are quite unpopular, but still I always wanted an easy and secure system to host them all without sacrificing speed and money.

    After many trials and errors, I am quite happy with my actual setup which is

    • PHP7
    • Ubuntu 14.04
    • Nginx+Memcached
    • WordPress

    All hosted on a 512MB droplet on DigitalOcean (ref.link) but you can easily use any VPS provider. I just like the overall DigitalOcean service and support. (more…)

  • How to migrate a Node.js App from Heroku to OpenShift

    How to migrate a Node.js App from Heroku to OpenShift

    Given the recent price/tier changes of Heroku I wanted to understand what alternatives do we have, as developers, to host a Node.js application free of charge.

    Let me be clear upfront… there are not so many alternatives right now, and I can’t praise Heroku enough for putting out a free plan like the one in the past.
    The new Heroku freeplan will limit the overall hours your app can stay on, therefore making it not very feasible for apps that need to be always on (although not very task-consuming).

    So I decided to settle on OpenShift, and see how it would go.
    To do the test I tried porting Haptime.in in OpenShift.

    Let me show you what I discovered. (more…)

  • Recovering a Corrupted embedded Apache Derby Database after an error XJ040 (or if you got an error XSDG2)

    Recovering a Corrupted embedded Apache Derby Database after an error XJ040 (or if you got an error XSDG2)

    Apache Derby is a usually a strong database but sometimes it might get corrupted.

    This is what worked for me after many embedded  derby databases became corrupted because we finished the free space on the partition (yes, shame on us).

    To make things worse, we didn’t always have a recent backup of the db, which just grew the complexity of our problem. (more…)

  • Why big companies like Dell sometimes can’t apologize

    Why big companies like Dell sometimes can’t apologize

    Some days ago I opened up my work-email and instantly saw this

    A newsletter from Dell, strange title isn't it?
    A newsletter from Dell, strange title isn’t it?

     

    It was clear to me that this title was an error, but guess what?
    No one cared, and here’s why.

    (more…)

  • What Seth Godin gets right

    What Seth Godin gets right

    I’ve read some books of Seth Godin and read many of the posts on his blog.
    In all of them, there’s something interesting you might not have noticed, all of them are the results of an avid observation of reality, of how things (and people) work.

    For some people Seth Godin might just be a marketer and write books that try to sell you the american dream, but there’s much more than that.

    Let’s take the last blog post, “If you want“, in that post Seth describes many of the interactions between people in various fields.
    The opening is clear

    “If you want employees to go job hunting in order to leverage you into giving them a raise to keep them, then by all means, only give them a raise when they go job hunting.”

    It’s simple, but yet it reveals a part of how our society thinks and acts.
    We are not just talking about the american dream here, we are talking about people, about me and you, about the choice you do in life.

    Chances are you have also been on the wrong side of the fence, the one where you were trying to get more than what you gave.

    In the “If you want” post you can see and read a part of the reality that surrounds us, a reality where we live in every day.
    We are part of that reality, in fact we shape it sometimes.

    Sometimes we are the bad ones, sometimes the victims, etc.
    This attention to how things works, to how people react is what make Seth Godin so great, it’s  because he can reveal the “obvious you didn’t notice”.
    This is what Seth gets right almost every time.

    Want to read more from him? 
    Here’s a list of posts I shared because I loved them

    The best advice I learned from reading one of Seth Godin books (The Icarus Deception) was “keep a private blog you write every day”.

    Sound silly right?
    But thanks to that semi-hidden blog, now I write more, and this blog exists also because of that.