Genar
I build things
Latest posts from Genar
-
How to stay sharp while coding
Jan 20 ⎯ A few months ago, I had an interesting conversation with a friend. We were discussing how beneficial or detrimental using AI agents for coding might be to our individual intelligence. He stated that using AI for coding might make one lazy and could diminish one's learning abilities; he cited recent studies suggesting we are getting dumber. I understand where this observation comes from, but my experience has been quite different. In my opinion, two things underlie this topic. How hard or easy it is to acquire new knowledge. How we keep our brains in good shape to actually think. My grandpa was an extraordinarily wise person. He was a doctor, an educated mind, able to remember many things (from poems to songs to science, history, or medical facts). He always needed to consult a book when he did not know something exactly. For example, whenever I visited a place or traveled, he immediately took one of his good old paper encyclopedias and searched for every town I visited or every fact he did not know so he could acquire that knowledge. He took every opportunity to gain new knowledge. I was happy to always be there, listening to whatever he wanted to explain to me. Not only this, he was always actively keeping his brain in shape. I used to see him performing math on a napkin, and when I asked him what he was doing, he always answered me: “Keeping my brain in shape.” One day, he told me that the brain is like another muscle, but instead of needing physical exercise, it needed to solve problems and be used to stay in good shape. When working in such an intellectually and creatively intense job as a software engineer, I tried to mimic what my grandpa used to do. Whenever I find a concept I do not know, I often search for it on the internet so I can quickly learn something new. Perhaps that is why I always felt very drawn to hacker ethics regarding knowledge. When it comes to keeping my brain in shape, instead of solving math problems on a napkin, I try to find plenty of "excuses" to solve software problems. These are not math problems, but rather software ideas I try to solve to push myself out of my comfort zone. In other words, I’ve started focusing more on the big picture and zooming-out. I am quite different from my grandpa; he was very intellectual, and his approach to learning centered mainly on books. In this regard, I differ: I need to experiment first, then read. I need to get my hands dirty to understand concepts; only then is my brain ready to absorb deeper knowledge related to what I have tried. And, friend, these are the best times for that. Nowadays, you can simply use an LLM in plan mode and a brainstorming skill to explore any crazy idea you have, then execute, then learn something new. Maybe the idea was not so good? Maybe the execution was not the best? Perhaps you gain something interesting? In any case, this enables anyone to prove ideas right or wrong much faster and gain knowledge that otherwise would take weeks, if not months, to acquire. This last year I started many projects: a slide presentations editor, a reference collector management tool, a professional photographer’s platform, and finally a game! Each of these projects taught me a huge part of product creation that I had not been exposed to before. Now with agentic AI programming, you do not really need to know the implementation details that much. It is true that not knowing them makes reviewing and fixing something an AI agent messed up harder, but often, the agent itself can debug, figure out a better solution, and implement it (if you know how to guide it in the right direction, of course). Programming this way doesn't mean you lose something in the transaction. Have you considered that you can learn many things while you create? Nothing stops you from opening another AI agent CLI and asking questions about what the running one is doing. After all, you have plenty of time while you wait for build mode to finish. If you have not tried yet, next time your agent does something you do not fully understand, open a parallel agent and ask what this is about; try to feed as much context as possible, ask for tradeoffs, etc. Additionally, I use "plan mode" as much as possible! That is where the questions and redesigns become interesting, and I can learn from the process too. Most importantly, I can choose the best solution for the problem I am trying to solve. And finally, I never forget traditional ways to keep my brain active! In my case, I try to read as many books as possible, the ones that force you to think outside the box, :) They are vital to always have some food for thought. I love you grandpa, I owe you so much <3
-
Zoom-out, zoom-in
Nov 27 ⎯ When I was a kid, I had many dreams, programming was just one of them. Another relevant one was drawing. It was the activity I did the most to fight boredom in high-school. I was not specially good at it, but neither that bad. At certain point, when I wanted to create a full illustration, I curated my own technique to properly place all elements in the sheet. Some of you maybe faced the same problem before. You start drawing an object for one of its parts then continue, continue, and finally realize that the scale you choose to start the drawing just does not fit in the sheet. So you need to start again. After many trial and error drawings, I started approaching the whole project differently. First, I tried to imagine the full picture so I can predict which elements must fill in the limited canvas. Then superfast, using a pencil, starting to outlining and shape all those elements in a very skeleton approach. In this phase, I was never focusing on the details. Just putting all the elements in the sheet as subtle lines, so I can validate the composition looks ok in the sheet pretty fast. Once I got happy with it, it was the time to start zooming in and create a few details here and there. Then zoom-out, does such details look ok in the full picture? Great! Zoom-in again into the next detail, repeat until I got the illustration I was looking for. This approach also used to help to have a good balance between all parts of the creation. I'm sure you're all familiar with the half done horse meme. Zoom-out, zoom-in approach helped me to prevent these kinds of situations. Hopefully I didn't end up being a professional illustrator, but I'm a software engineer instead. But I see myself practicing the same approach as with drawing when I code. When I take a new project or task, I usually start by challenging the idea and trying to figure out all elements that eventually want to place in the canvas. Once I know how the final picture should look like, I start shaping very simple modules and how they are connected. Once I have most of the important core ones in place, I start zooming-in and implement more important details. At this stage, I prioritize having full user journeys so I can validate the app, as soon as possible. Then once I have something working I often zoom out and check how those details fit in the bigger picture, then decide if I need to adjust things, so I can have harmony in the whole application. Oftentimes, this process involves refactoring and cleaning, you know, remove all the cruft and reorganizing modules. This approach is obviously not a silver bullet. It works better in the exploratory process of having an idea and figuring out its architecture by doing it. Obviously this not replace proper analysis and design phases, but it’s a powerful shortcut for exploratory work such as vine-coded side projects. For me, this approach is just another tool that can help in the hard process of designing software. It’s not my default way of working, but for certain unexplored projects is great.
-
Wearing all the hats
Nov 25 ⎯ February 2024, the first Local First conf (no pun intended) is happening in Berlin. As a local-first (previously offline-first) enthusiast, I’m thrilled to attend this conference with some friends. The talk that left a mark on me was the one given by Maggie Appleton, Home-Cooked Software and Barefoot developers. The plan So, after quitting my job in mid-March, I decided to try to be an Indie Developer and apply the “Barefoot developers” idea as much as possible. Spoiler, it ends up being harder than expected because “distribution is key”. That said, I just wanted to have fun by doing what I liked the most. Create software that can help someone (or just me, that’s also fine :P). The challenge definition was quite simple (and vague). Take a year to create (at least) 6 apps. The way to get productive would be to use AI as much as possible for the execution and plan. That would be the perfect excuse to “learn” to use these trendy tools to super-power me. Initially when I decided to start this journey, 6 different apps, with unscooped size, seemed a reasonable amount to achieve in a year. That should give like 2 months per app. Understanding that some of them would take more, and some others less. In my plans, I was considering using hackathons to boost push me even more, so I participated in 3! Local first I've also wanted to experiment a bit more with local first technologies. So I experimented with as many frameworks as possible in my old deplayer.app project. In some of the initial projects were super productive using tinybase + Cloudflare Workers and Durable Objects for the realtime. But soon I have found the limitations of choosing it for some projects so I had to find my next tool-of-choice. So, I finally put all the eggs in convex.dev (despite not being local-first) because it gave me much more complete and efficient framework to create rich apps with little infra and effort. The results I've created many apps such as the following ones and a couple more that I keep in private. Each one would deserve an specific article of what I’ve learnt. slidetime.app - A talk slideshow generator sunflare.app - A all-in-one photographer business platform cookery-1jy.pages.dev - A tool to get menu recommendations with what’s in your fridge inspire.sunflare.app - A design references library to collect UI patterns and later on be inspired and use them mythgrow.pages.dev - A (super-alpha) prototype game using LLMs to generate creatures and worlds to play at. By building so many different apps my learning pace has been accelerated a lot! Specially around AI, tools, patterns, prompt engineering, Local LLM Models, AI agentic programming, and sometimes vibe-coded a lot! which enabled me to explore many paths that I couldn’t even imagine before. Trying crazy mixes of frameworks, architectures, languages and whatnot as if I were a mad scientist brewing a magical potion. The reality is that I'm far to make money with any of them, for a very simple reason. I'm not optimizing for it. I'm learning and creating software that I enjoy creating, following the passion and inspiration. Rather than optimizing for money. That said, now I started to go deeper into marketing and how to, at least, be able to get some users that put pressure. What I want to hightlight in this article is that doing this Indie Developer path forced me out of the safe bubble. I had to think as a Product Owner, a Growth Hacker, a CFO, a Designed, etc.. Owning the E2E of the product requires having to cover many zones that you’re not used to. Distribution is key So I’m learning SEO and Marketing as I’m writing this, so I can try to get some traffic to some of my apps. I’m learning to wear the Growth Hacker hat. Despite not being very passionate about the topic itself. My Achilles heel? I have many! But there are two very evident. The first one you probably figured out by reading the apps names. I’m terrible finding good names and narratives behind the apps I create. Second one? Logos, I have not much idea on how to get a good logo. I’ve tried many AI tools, and tried to create one myself without getting one that convinces me a lot in almost all apps. In this regard, I created inspire.sunflare.app, so I can collect all UI design or general design references to get inspiration from or generate a prompt to quickly validate ideas.
-
Why's everybody talking about vibe coding?
Nov 25 ⎯ The vibe-coding meme “Vibe-coding” is the word of 2025, according to Collins Dictionary Vibe-coding is everywhere, you can now find it in every tech-related online community, Telegram, Discord, Slack, X, Reddit, etc. Usually with a negative connotation, to denote that an application is low-quality or improvised without clear vision. Some of us even started using vibe- prefixed words in order to suggest that something is also low-quality, mediocre or improvised. (vibe-marketing, vibe-written, vibe-posting, vibe-leadership are just few examples that I’ve found looking my Telegram history) In the last year in software development industry, we faced the faster and probably more important shift in our jobs (and many others). Vibe-coding, is just the most memetic part of what is really happening. A bigger anti-memetic picture of such revolution is worth to be spread too. In this post, I will list some of the most interesting trends, that are fueled by vibe-coding, that I've been able to observe in the last 9 months. The <Prompt/> component spread It’s 2025 and what your app needs is a prompt to interact with your stuff. Starting from all major LLM model providers that have their own version of prompts. Followed by all traditional IDEs, or newly created ones with this specific purpose. One-by-one, all online products are adding a prompt to enhance (sometimes amazingly, many other times a little bit meh) your experience with the app. I’m sure others to pretend that is an AI company, or it did its homework to not be moved to the “legacy“. I gave https://slidetime.app a prompt — it worked, but the UX was… vibe-coding. As users, we’re gradually getting more used to interact with <textarea /> to get a piece of information or ask for a task to be done. And, as developers, it will be extremely hard to look back after this, and it is transforming how we work and the kind of applications we do. New ways of working Frankly, I haven’t seen this pace before in any other bubble. It’s really overwhelming. It didn’t happen one day by another though, each new toy related to usage of LLMs integrated in programming field started its own smaller revolution, on each iteration of each tool you can notice how the good ideas are copied between them. You can check how recent are their increase on interest (they are super new apps, after all), the interest on using these tools isn’t stopped growing over time. New open-source models and tools, proliferated at a huge pace. We’re optimizing our tools to work in a Factorio-mode, just because we figured out that the best Developer eXperience, happens to be also the best AI Agent eXperience. Good documentation about the why’s, lessons learned, documenting changes, etc. is also useful for the AI Agents, so they can laser focus on how a project is maintained and replicate known patterns. Horizontally scaling applications is superfast now, you just need to create an architecture to allow fast adoption of features and ask new replicable features at will. Refactoring is more needed than ever, you need to do checkpoints, stop adding features and accommodate code to be more scalable in the more frictionful parts. Running several code agents in parallel All agentic coder tools have their own version of parallel execution models. Just today, I updated Cursor to last version to see that they improved their support for agent execution in a project. But before that, all cloud agent services also provided an “ephemeral” coding agent execution. Some notable open-source projects exploring this approach are: - https://openhands.dev - https://opencode.ai - https://github.com/BloopAI/vibe-kanban - https://github.com/Ido-Levi/Hephaestus Proliferation of repository file-based task managers One of the major issues when you use LLMs to help you to code is how to properly manage the context, so the LLM has access to all the relevant information to perform the asked tasks without being overwhelmed. In order to solve this issue, many new applications appeared to manage tasks to be executed by Code Agents. These tasks, usually contain all the context gathered in “planning“ mode so when you just ask for execution, you can start with the context empty and the agent won’t need to read half of your project to perform a good job. Here you can find some examples that help to accomplish this job. https://www.task-master.dev https://github.com/BloopAI/vibe-kanban https://backlog.md Usually when you work with tasks like this you can ask for “I want to do X, because of y, look these files for examples on how to do it and create a task”, then you can just ask “implement task #23“ and see how the agent does the planned job. Proliferation of new standards Given that many Agent Coding tools are solving the same problems, it is normal that many new standards arise so you can share your project characteristics across tools. This is the case of AGENTS.md which allows you to give initial context to the LLMs to be more efficient working in your project. Or the quite recent Claude skills that are being translated to other CLIs and agentic coding tools with project like openskills. The main goal of such standards, is removing vendor locking and being able to use available tools in an interchangeable way. Proliferation of local and open sources models This is just an adjacent trend that I think is pretty relevant, almost each month new open source (or better said open weights) models are released. So you can run them in your personal computer, smartphone or in a rented cloud instance. Unfortunately, if you want to use such models for agentic coding, you’ll need super expensive hardware or cloud instances at the moment. Some examples of such open models are: Mistral, qwen3, glm and gpt-oss. New prompt techniques to improve the coding experience Many people tried to mimic a full engineering team, and others mapped all imaginable brainstorming methodologies and other skills as mere AI commands. https://blog.fsck.com/2025/10/09/superpowers/ https://github.com/obra/superpowers https://github.com/bmad-code-org/BMAD-METHOD I even myself learnt a lot of “vibe“ skills on what things work well, what others don’t and some are meh. And this learning could only happen by practice. https://blog.alexmaccaw.com/how-to-vibe-code-as-a-senior-engineer/ Trade-offs: Almost everything is experimental and gets outdated fast. So take this into account before betting in a vendor-lock-in solution or mass adoption. Don’t put all the eggs in the same basked. AI-related job titles getting really popular A new lore, related to AI programming, emerged and suddenly started to be popularized over social networks. Prompt Engineering, AI Engineers. Such jobs are incredibly well paid. I believe we're yet to see many few jobs related to AI appearing. Vive-coding is just a symptom Sure! Making jokes about how bad vibe coding is, some blatant low quality apps that are appearing, and so many examples on how this proliferation and trend is happening is fun. But don't miss the amount of rapid new toys that aren't stopping to improve and be more effective. These superpowers developers to be much more efficient developers each day. If you learn how to use these tools, you can go quite fast as compared to traditional old methods. Be open-minded, have fun trying different things. I’ve never got so fun by creating software than now. Links https://omny.fm/shows/better-offline/vibe-coding-is-bs-w-charlie-meyer#description https://knowyourmeme.com/memes/cultures/ai-artificial-intelligence https://newsletter.pragmaticengineer.com/p/vibe-coding-as-a-software-engineer https://nayafia.substack.com/p/introducing-antimemetics-my-new-book