MoreRSS

site iconPedro LopesModify

Software engineer by trade. Curious about technology, designs, media, people, the world.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Pedro Lopes

Using AI to Revive Old Projects [Part 1]

2026-06-07 08:00:00

AI powered backlog burner

Ideas come cheap. That’s why my backlog of project ideas keeps growing - there is only so much time and energy.

The recent agentic AI advancements are changing that equation. All of a sudden, projects I long relegated to an uncertain future can now be brought to fruition with a single human pair of hands (read, mine).

A good example of this is vivotime.net. There is no way I could have made it a reality on my own in such a short amount of time, in the midst of my routines and demanding job. AI changed all that. A success story in my book.

New life to old projects

My backlog does not only consist of new projects, but also improvements to older ones that ended up getting outdated, or had missing features I long wanted to add.

So in a single weekend I grabbed three of my older longstanding projects, and gave them an overhaul.

Personal Local LLM Extended With WhatsApp + Obsidian Data

I grabbed this now 2 year old project, and gave it a new life with:

  • New model: instead of Llama3 8B, use the newer and more powerful Qwen 2.5 model.
  • Agentic behaviour for research: instead of performing a single query to the vector database to retrieve contextual information, the agent can do as many queries to the contextual data as it needs (up to a limit of course). The main point here is that once the agent is satisfied with the amount of context, it can stop information gathering altogether, which reduces context noise.
  • Embeddings model: updated to the more capable Qwen3 embeddings model
  • Streaming: instead of waiting for the model to generate the entire response, the response is now written as soon as the first token arrives. A much more fluid experience.
  • Presentation: added several nice progress bars and indicators that give the user better feedback on what is happening behind the scenes.
  • Performance: the entire system is now much more performant, leveraging threading whenever possible, specially when creating embeddings, which is a fairly time consuming process
  • Correct system prompt structure: the system prompt had several gaps in its structure and how the conversation should be provided to the LLM. This is now fixed.


You might be thinking: “That’s cool and all, but I already have LM Studio + Anything LLM, Ollama and OpenClaw”. Those are incredible, but this project offers two unique things:

  • It has 595 total lines, over 8 significant Python files. Small and understandable. Ideal to learn how these agents / harnesses work.
  • Try importing all of your whatsapp conversations and obsidian notes to Anything LLM so that it can RAG them. If you have more than 400 files, good luck. With this project, you can.

Hacker news daily

This one was relatively simple. The pipeline was broken for this almost 6 year old project, and the site stopped updating. It is now back online, hardened against rogue errors, like image previews not loading and crashing the build.

Presentation is improved on larger screens as well, with a simple simple change to constrain the max width of the site’s contents.

It is better than ever: https://lopespm.com/hackernews-daily/


This blog

There is a nifty user optimization where certain images are presented via their WebP proxy, delivering much smaller file sizes (25-35% lighter than PNG).

The problem is that image editors tend to work best when exporting and working with PNGs and JPEGs, so before, I would need to go through each image, one by one, and export them to WebP via the terminal. This was infrequent enough to make me postpone its automation, but also frequent enough to be annoying.

That is now a relic of the past. Presenting, a completely ordinary script that batch converts PNGs and JPEGs to WebP. Simple utility, high utility value.

What’s next?

I want to eventually revamp Survival Ball, but there is a problem: AI alone won’t cut it, since proper game design iterations, testing and porting it to Mac and Windows are some of the most time consuming tasks.

If I don’t find the time and energy to tackle it, there are other projects itching to come to life, which don’t suffer as much from the above problems. I’ll keep you posted!

Lateral thinking using existing technologies

2026-05-01 08:00:00

Precedent: How Nintendo did it

I’ve consumed several Acquired episodes, and one I found particularly interesting was about Nintendo, where they describe how lateral thinking shapes how to company thinks about their products: instead of always going after the new shiny thing that still has several unknowns and will need time to iterate on, know and perfect, use instead cheaper, already established technologies / materials and come up with new ways to use them1

  • NES: Nintendo’s CEO provided guidance that each unit should be cheap to the consumer, but also be one year ahead of competition, which steered developers away from very expensive CPUs (competition was using just a single CPU), and instead using a cheaper slower CPU with a dedicated PPU (picture processing unit), maybe the first GPU (graphicals processing unit) on console, that leapfrogged the entire competition 5 years ahead.
  • Game Boy: at the time, color displays were all the rage and the new attractive technology. Leadership guidance was that Game Boy should be low price, therefore requiring low cost of bills, so instead of using a color display it used a monochromatic display that was well visible under the sun, and consumed much less battery.
    • Released in 1989, it became a massive success due to its long battery life, low price, and the inclusion of Tetris. Its initial 300k-unit shipment sold out within two weeks, and about 118 million over its lifetime.
    • On the other hand, Sega’s Game Gear used a color display, consuming six AA batteries in roughly 3-5 hours, whereas the Game Boy could run for over 15 hours in just four. It sold about 10 million over its lifetime. 10x less than Game Boy.
  • Game and Watch used calculator technology, which was inspired by an observation made by Nintendo’s R&D department lead, that during one of his train rides a business man was just fiddling with his calculator to kill time. If they were receptive to the point that even a calculator would entertain them, surely they would also be a target audience for Game and Watch and later Game Boy. Interestingly enough, adults were a big target demographic for Game Boys.
  • Wii sported a slower processor when compared to its powerful peer consoles, but it combined existing technologies in novel ways, which unlocked new player experiences that would be more accessible for casual players. Even the UI was shaped in a way that seemed by one was choosing TV channels, and the remote had the familiar resemblance to a TV remote.

Combine solid technologies, solve real problems

Today LLMs, vibe / agentic coding, and other new technologies are all at rage. This means that a lot of humanity’s headspace is directed towards these new technologies, but there is still an immense unexplored space for the already established tools and technologies that were not fully exploited and combined. For example:

  • Pieter Levels, with only HTML, jquery, and SQLite created incredibly profitable businesses, when everyone at the time was completely focused on the new tech, libraries, new JS packages, react, vue, etc. Pieter now also uses several new machine learning technologies available though.
  • Existing simple linear regressions, established programming languages (e.g. python, C++ and Java), time tested frameworks (e.g. Laravel, with which vivotime.net was built on), tools (e.g. Blender2), hardware kits (e.g. Arduino still pack a punch, and are right in front of all of us waiting to be combined in novel ways.

The most important thing at the end of the day is: are these solutions solving a real problem? Are they generating value? Their end user likely doesn’t really care how something was implemented behind the scenes, they just need something to solve their problems.


  1. “Lateral Thinking with Withered Technology” is a defining product design philosophy popularized by Nintendo engineer Gunpei Yokoi. The philosophy posits that mature, well-understood, and inexpensive technology—”withered technology”—can be used in creative new ways (“lateral thinking”) to create innovative, successful products, rather than relying on expensive, cutting-edge hardware.

  2. In the spirit of the article, the associated social media thumbnail was created using my favorite open source tool of all time: Blender. It still puzzles me how such a high quality tool is free and open source. I’m grateful for it. Without it, Survival Ball might not have even come to fruition.

Streaks

2026-03-22 08:00:00

There is something interesting about our psyche, or at least mine. Simple and concise rules, when applied for a long time, are much harder to break1 than rules which make room for exceptions, or rules that are broad or ambiguous.

No desserts at the office canteen, ever

Let me give you an example: I never have desserts at my work office’s canteen. No exceptions. This makes my decision process straightforward: “Should I have a dessert? No. Move on. Nothing to see here”. I’ve been able to maintain this habit for 5 years. If I want a dessert, it will need to be elsewhere, like during a dinner night out.

If I would allow myself for a dessert only now and then, I am pretty confident it would derail my sugar consumption, since “every now and then” would be dictated by how much will power would be available on any given day, and there are days where I just have too much going on and will power is at short supply.

A single dessert at the canteen would break the streak, allowing for optionality to creep in, and deliver me to my limited will’s mercy.

No exceptions, less decisions, more output

I’ve been consistently accumulating several of these simple rules / habits throughout the past years, which allowed me to build strong foundations, move closer to the type of person I want to be, achieve what I want to achieve, and sustain a high output for a significant amount of time. Here is a list of the most impactful ones:

  • At least one hike or long walk every week. 8+ year streak.
  • No alcohol consumption, other than at New Year’s Eve. 8+ year streak.
  • No desserts at my office’s canteen. 5 year streak
  • On work days, starting at about 9AM until I finish the work day, I disable internet access on my personal phone, but still have it available for incoming calls or SMS. It allows me to focus, and enter “the zone”. 5+ year streak.
  • Every work day, write down on a personal .txt log the relevant work events that happened throughout the day. 5+ year streak
  • Deeply ingrained habit to write relevant events in my personal journal. 12+ year streak.
  • On the first days of each month (normally the first weekend), go through every financial asset I own and write down their balance, invest or move stale funds. 8+ year streak.
  • Intermittent fasting: only start eating at 12AM, this is, no breakfast. Even on hiking days. 3 to 4 year streak.
    • Makes me feel good, focused, and end up spending less time on yet another meal during the day.
    • When I first started skipping breakfast, I still ate something before a hike, and every time that happened I would end up breaking the streak, and have breakfast again most of the days. Once I realized that it was completely ok to hike without having breakfast, the routine finally stuck for good. Can’t tell if this will work forever, but until now it has been great.

Simple rules, consistent habits

These simple rules were a boon for me to implement consistent habits, and the reasons why I think they kept working so well are:

  • they are simple and easy to remember
  • they don’t make room for exceptions, thus less dependent on my will power (a limited resource)
    • as a result, I am able to redirect that will power to more productive endeavours.
  • they become almost like a personality trait which some people know me for. This external expectation of consistency also starts to help.

They are all so ingrained in my life that if any of them slip, something starts to feel off and uncomfortable, just like any other deep habit or routine that gets halted.

Give them a try. There are rules and obsessions worth having.


  1. Streaks are powerful, so it comes as no surprise that they are a textbook gamification strategy. Take Duolingo, which has a streak feature. Let’s say you use Duoling for seven days in a row, then you have a streak of length seven and if you don’t use it on the eighth day it goes down to zero, so it’s just a counter of how many days you’ve done it in a row. As of April 2025, there were 8 million people who were daily active users with a streak longer than 365 so we have 8 million daily active users that haven’t missed a day over the previous year.

Don't be a Process Zealot

2026-02-21 08:00:00

You don’t do Scrum?

I once struck up a conversation with someone during one of my trips where I told them that there wasn’t a prescriptive way of organising work at the company I was working on at the time. We were not dogmatic in using kanban, scrum, lean or waterfall, we used whatever worked best for the problem at hand, many times resulting in a mix of these approaches, and even changing them mid-project.

Leads and people in the ground were trusted to take ownership and organize accordingly.

My interlocutor, with a disdained grin said “You do that? You don’t do Scrum?”. One could almost hear the “pff, ridiculous” undertone.

Process should not be a dogma

I still stand by it. You should not be dogmatic about it in scenarios where the problems keep changing and there is a constant need to adapt. At some point, all companies need to adapt to overcome competition, changing consumer behaviours, regulations, etc. The only thing that really changes between companies is how much time it takes for that change cycle to happen.

It is sensible to have a stable and institutionalised process across a company, when these cycles are long and harmony between people and departments is valued highly, but that same approach in a fast changing environment will the company’s death kneel, crumbling under its own comfortable rigidness.

Overall, the world is moving faster and faster, specially with the ongoing revolution of AI that is slowly creeping through many branches of our society, and the increasing amount of people entering the labor market.

An example

On one of the latest projects I was involved in, where requirements would change very rapidly, and product market fit was crucial to first understand, having bulky processes would have done more harm than good. What actually worked was:

  • Having a simple tracker
  • Small team
  • (Almost) every day in the morning having a talk async or sync (via call or in the office), where each one of the team members mentioned what they were going to focus during the day, and de-dup where required
  • Once product market fit was established and the product matured, iterations started being mostly incremental, and we started adding processes wherever controlled chaos was not being productive, this is, wherever things started to break and harm the project’s objectives. No process was added for the sake of adding it and make it sound professional

Silver bullets

To this day I cringe when thinking about that conversation.

There is not a silver bullet. Processes are like tools. You should use the right one for the right job, combining them when necessary. You wouldn’t use a jackhammer to drive a simple nail.

Don’t be a process zealot. Use it as a means to an objective.

3,170× more energy to create GPT‑4 than an 18‑year‑old

2026-02-20 08:00:00

The average human body consumes energy at a rate of approximately 100 watts

  • 1 day consumption = 100W * 24h = 2.4k Wh
  • 365 days * 2.4k Wh * 18 years = 15,768k Wh = 0.015768 GWh

GPT-4 took about 50 GWh of electricity to train.

It takes 3,170 times more energy to train a model than to raise a human to 18 years old.

GPT-4 is really good at specific tasks, but is nowhere near as generically inteligent or able to function efficiently and adaptively within the real world. GPT-4 can’t even drive a car.

This suggests that just scaling existing models will not be enough to reach real AGI. New fundamental breakthroughs are still required to get there.

Vivo Time

2026-01-19 08:00:00

Launched vivotime.net, a website focused to help you make the most of your limited life, with ideas aligned with your goals.


Origin Story

During the past years I’ve been wrestling with the idea of building a website that could be:

  • Useful
  • Aligned with my views
  • Lean: debloated both in terms of experience, but also behind the scenes
  • Low Maintenance: minimally dependent on outside sources of information

Turns out that ticking all boxes proved to be incredibly hard, but somewhere around 2025 I noticed how hard it was to come up with good ideas of how to use my free time to the fullest. Turns out that even though there were tons of exciting things to do in the world, not all were aligned with my ideals.

On the other hand, time here on Earth is very limited, and in between busy lives and distractions, opportunities, time and energy pass in an instant. We’ve been given a beautiful gift, and we should honour it.

Hence the idea to build vivotime.net. It shows you, without any sugar coating, how much life time you are predicted to have left, and then according to your goals, it suggests a series of meaningful ideas that you can allocate and manage for the time you have left. That’s it.

Tech

Vivotime.net was implemented using Laravel, Livewire, picoCSS and a sqlite database. Stripe is used for processing payments. I’ve tried to make it as lean as possible. No need for an overpowered MySQL database, or using tailwind, react, vue, or any other (default) technology du jour that would not serve the site’s purposes.

Docker is used to containerize the website, including the nginx web server. Deploying the website is as easy as running a bash script, and setting up the dev environment is likewise a script execution away. Pure bliss.

There is something beautiful about keeping things contained to their essence, with nothing more, nothing less than what is required.

As a result of having only a few moving parts, maintaining the website has been a breeze.

A Note about AI

I’ve liberally used Copilot, most of the time with Opus 4.5. There is no way I could have finished this website in such a short (hourly) time span, considering that I’ve worked on it sporadically during some free hours on weekends or after a busy work day.

There is something to be said about coding on these limited time slots, something that I would have found much more challenging before LLMs, given that I would have needed continuous large time blocks just to get all context, system designs and best practices loaded into my head. AI makes the warm up process much easier, and of course, it is a powerful code machine that can produce high quality code, if directed correctly.

How it works

Vivo Time was built to be simple and to do a limited set of things, but do them right.

Step 1: Find how much time you have left

First, you need to introduce your year of birth, and optionally your sex, health status, relationship status, if you have children or not, and your occupation. These are used to provide an increasingly accurate estimation of how much time you might have left, and to provide you with relevant objective suggestions (for example, if you already have children, the “Start a Family” objective will not be presented).


Moreover, if you do not want the above information to be saved and associated to your account, you can enable this privacy setting in your account settings:


Step 2: Allocate objectives

Then you are presented with a list of objective suggestions, which you can allocate or hide from the list. Each allocated objective decreases the amount of useful time left.


Step 3: Manage objectives

Afterwards you can manage your objectives by changing their allocation or visibility status, and you can also search for more specific objectives you have in mind.


That’s it! Let me know your thoughts about it!