“The unpredictability in life is what makes it interesting”
I’m Mahesh Bansod. A software engineer. I love building stuff for the sake of building it.
Building software has never been so simple - type a prompt and boom you got a working interactive system!
I really love this era. I have been programming since years now, and I still love to. I find the most joy in building software when I’m programming it as opposed to when I’m prompting it, but it’s wonderful to see applications come to life as I type in English what I want!
There’s one thing I struggled with though while working with an LLM and that is deterministic output.
If you do the same prompt a second time, it is sure to give you a totally different output.. and maybe the second time it may not even work when the first time it did!
This “non-deterministic”ness of it all has been making me draw parallels to life.
I started coding when I was a teenager, or even younger. It helped me make sense of things. There’s a single output* to the code you write. You write some code and run it and you’ll get the output based on the code you wrote, and if it’s something unexpected, you know that you messed up in the code somewhere i.e. you know there is something you can change, something you can do to make the software behave EXACTLY the way you want, and if something doesn’t work you KNOW that you have the power to change it. Thus, programming has had a profound influence on me.
Programming gives us control, it gives us “agency” and hope, that everything is going to be okay let’s just go through the code and figure it out, there’s nothing stopping you.
Life on the other hand is… uncontrollable. I can’t do anything. I can’t change anything. It is what it is. In life, the things you do don’t always benefit you or even produce any meaningful output. Of course, we could go and reach out to our memory or any logs to understand what all we did and try to debug anything unexpected, but there’s hardly all the information we need. and what if that pesky Evil Demon is messing with me like all the time?
I have lived a trepidatious life to be honest. i don’t really like it since it has cultivated habits in me that are part of what i dislike about myself. While I work hard in changing that, I realised that the unpredictability of it all is what makes vibecoding challenging to me as does life, and yet I do find myself doing alright in vibecoding. The main factor for it is that the models are good of course, but other than that, for the cases that it fails, we put more attention to it and fix it, and I don’t mean for the current use case but rather for all the next usecases. For example, we might add a cursor rule if we think that the agent didn’t take some context in consideration for a specific query when we think that it should have. Or if you’re building something that relies on LLMs, and it gives you an unexpected result, then you would update its prompt, give it more information, or less information, or decide to move things out the prompt and use a programmatic approach. The point being that, in vibecoding/working with LLMs, we still retain the control we have, we still retain the ability to go back, and change and update things and make our system better. And yet, we do know that it might still fail due to the unpredictability of the output of the LLM. So the best way to deal with it is to set up guardrails around it. To expect the unexpected and set up alerts, retries or anything so that the impact of it is waned and the system reminds us to handle that case.
The role of luck feels unfair at times but it is an interesting phenomenon. Luck plays a huge role in everything. I’m incredibly grateful for all the things I have since a lot of it could be attributed to chance besides my own hard work because as I said earlier, there’s nothing in our control and life has it’s own plans where you hardly matter. Thinking of life and luck from the perspective of taming an LLM, this is how I see it. From here on out, the following are just things I have been working on in my own life, kinda like tips on dealing with unpredictability. I’m writing this to ground myself when I’m unsure of things.
Avoiding unwanted outputs
Everything can be taken from a man but one thing: the last of the human freedoms—to choose one’s attitude in any given set of circumstances, to choose one’s own way
In the prompt, you might ask an LLM to avoid something or not do something, while this works these days, earlier versions often had trouble not doing things. The best way to work around that was to omit as much information as we could about the thing we don’t want it to do and have it focus more on what we want it to do often providing examples too. Removing yourself from the environment which affect you or situations whose outputs you don’t want is a simple solution to reducing the negativities in your life. I wrote more about unlearning habits a few years ago.
It’s important to also reduce the “tech debt” in your life i.e. things that you keep delaying that might bite you in the ass in the long run or just some things that could improve your life but you delay it cuz you’re busy with the routine lemon slop life gives you. This can be as simple as just trimming your nails, getting a haircut, or it can be a bigger change like moving your furniture and converting your home office into something you’d be super comfortable and in the right mindset to work in.
The unwanted outputs in life are inevitable but there’s usually always ways to go around these problems if not fix them. While this has been something I have followed, I think it’s important to look at the often neglected (by me) other side of it.
Increasing the chance of wanted outputs
you can just do things
To get what you want you need to increase it’s chances. You add “STRICTLY” in the system prompt, or “IMPORTANT” or “CRUCIAL” or random threats to make it work right.. and while that sometimes works out, I have found that to be an inefficient approach. Instead, we increase the chance that the LLM will produce the expected output by giving it the needed information only and steering it towards the direction we want. We don’t know what’s gonna happen but we can try. We can do our best to increase the success outputs. To go from 0 to 1 and eventually from 1 to 100. This is where we work hard and do our best. We use our ingenuity and creativity to solve the problems we have as exhaustively as we can.
The role of agency
It’s important to have agency so that you materialize the “doing” part of “you can just do things”. It could be staying true to your beliefs when the world is against you or it could be choosing something you have strongly been against for a while but realise now that you have been wrong. Going simpler, even getting out of bed requires a certain amount of agency and will. Any change you make to your life requires agency and effort. If your life is a project, how can you make it the best? Think of all the ways you can do it. Then just get some willpower and go through with it, it’ll be simpler than you think.
Oh, and agency can require a lot of energy depending on the kind of work you’re doing, the kind of person you are, and how much the problem you’re trying to solve interests you. You need to be willing to break out of your shell, be uncomfortable, be visible and vulnerable. You need to not just be willing to do what it takes, but also be able to think of what it takes and get there.
Handling unexpected outputs
Building something close to perfection i.e. close to how you want it is a gradual process. You don’t know what will go wrong, but when it does, you fix it in a way that things don’t go wrong the same way again. Not just that, but you expect all the things that can go wrong, and have a plan on what to do when it does. Derisk your solutions without compromising on their quality.
So, now, instead of hoping for things to be better in my life and just putting in random effort, I decide to put directed effort. Focussing on the parts I want and avoiding the parts I don’t. It’s really that simple.
Due to a number of factors, I would usually avoid putting myself out there, but looking back this deprived me of opportunities that otherwise I would have been great for. To get hit by a truck, you first need to put yourself on the road. That’s the only way to get lucky. Don’t go out buying lottery tickets ig but if you don’t buy one, there’s no way to win the lottery. Putting yourself in situations where there’s a possibility of you getting lucky is a part of increasing the odds of getting the right outputs in your life. I think this is a big part of “luck” that people often neglect. You can’t get lucky if you don’t put yourself out there.
Everything as probabilities instead of certainties makes much more sense than the model I had previously. Things are never going to be the way you want. Might as well embrace it.
Observability
To know what went wrong, you need to know what’s happening. Log everything. I have started doing this more and more in my life. I write different things I learn. I log the amount I exercise everyday. I write down about the food I eat - whether it’s ordered then from where it’s ordered, it’s cost, how did it taste, how was it cooked i.e. the recipe (if i cooked it), it’s calories, protein, etc. While this can be a little extreme, I think it’s quite useful or at least it’s fun. Soon, I will be reducing the logs and focussing on only the parts that I find useful.
Observability doesn’t just mean logging the things you do but it can also mean logging the things that are happening around you or around the problem that you are trying to solve. Logging helps in retrospection to analyze what went wrong when something (inevitably) goes wrong, or it helps you to analyze what you did well when you do eventually succeed. You can recreate your successes and avoid your failures once you become good at logging. Adding observability is one of the chores that don’t bring immediate value to your life but eventually when you have enough data you see it shine.
Brain as a tool instead of a me
You are not your mind.
One might think they have a tendency to self-sabotage when it’s just your mind acting out after getting repressed for a long time. I believe that to get the best output from yourself, you need to love yourself and understand your limits. To keep your brain active, you need to let it have it’s fun. So, don’t feel guilty reading seventy pages of your favourite novel thinking you could have finished some work in that time, instead allow yourself to immerse in it and be happy by allocating a special time for you to read. This makes it possible to live guilt-free and focus when it’s time to focus and enjoy when it’s time for that.
While it’s easy to get in the comfort zone again while you let your mind hold the reins again and relax, I think that your brain works for you too and you will certainly find it easier to get back to the work you want to do once you give the relaxation your brain needs. You’ll find that often you will be better than if you hadn’t chilled out or spent the time you needed with your loved one.
Also, loving yourself doesn’t mean to always protect yourself from the pain, in fact, it means relying on your brain to expect and manage the pain that may be necessary for your growth. I’m using the word pain here quite liberally including fear and anxiety in it. Don’t crawl back in your cave just because something will be difficult. Prepare yourself instead and go through with it. To me, as a general rule, I would avoid pain where I can. Except when I know I’m going to grow and get better because of it.
Conclusion
So, this is what I have for you. Or rather for me. I think that giving myself the space to think and write down my thoughts helps me structure the patterns in my life and this is also the part where I’m logging the things in my life. I suppose this is like my yearly musings about my life relating it to something and thoughts to improve it. While I write something like this every year, not all of those get published.
I hope to improve myself and get to a place where I’m happy.
My main long term goals are:
- to learn a lot
- to spend time with loved ones
- to have the ability to solve any “problems” that me or anyone relying on me would have
In the vein of improving my life, I will continue logging my progress on these goals and ensure whatever things I do fall in line with them.