There is a particular cognitive dissonance that hits you when you first study blockchain concepts and Solana’s execution model in particular. It isn’t confusion exactly — it’s something closer to the feeling of a familiar room with the furniture rearranged. Everything is still there. But it’s been deliberately separated. Just checking our cognitive compass: in Software…
In the age of ChatGPT‑style assistants, a paragraph that “sounds right” can appear in seconds. Yet the very thing that makes AI so attractive, its ability to produce plausible text on demand, is also its Achilles heel and a force that pushes you to own its mistakes. If your product’s promise rests on those “plausible” outputs, you’re trading certainty for a statistical gamble.…
A new aircraft does not get cleared to fly because its blueprint is internally consistent. It gets cleared because someone strapped it to a rig, ran it through scripted abuse, instrumented every joint, and — after hours and hours of tests — produced evidence that the design survives a controlled approximation of the real world. That ritual has a name in aerospace and motorsport — shakedown — and…
We’ve all heard the warning: “Every extra function call adds overhead. Inline it!” In Rust async code, that worry is almost always false. Look at the size of that arm: async fn handle_event ( & self , event : Event ) -> Result < () > { match event . kind { EventKind :: Suspend => { // … > 20 lines of app behavior … } // … other arms … } } The author had hot context in his head…
You know the moment: someone writes the problem on the board. Someone else refines a word. A third adds a constraint. Then — silence and nods. The problem is defined.You can build from here. It feels solid. Protecting that feeling and keeping it unchallenged is the trap. We mistake agreement for stability. A shared problem statement feels like progress because it gives the room something to hold.…
You could subscribe to this blog via a newsletter. I could run it on Substack, Beehiiv, or ConvertKit — capture emails, track opens, grow a list. That’s the default today: pick a platform, collect subscribers, ship to their inbox. The platform then owns the relationship. Your readers are their users. Deliverability, design, and discovery depend on their rules and their algorithms. You’re building…
Most companies have a mission. Almost none have a manifesto. Branding is not enough. A mission tells people what you do. It’s operational — “We build X,” “We help Y achieve Z.” Useful. 99% relevant to contributors and team leaders, and 1% relevant to the curious. But what about the public? For them a mission is easy to forget because your mission is not their mission…
Fortran. Lisp. C. Smalltalk. Ruby. Rust. Seventy years of increasingly powerful languages, each one turning the previous generation’s hard problems into routine. Then, somewhere around 2025, the list took a turn nobody on it anticipated. English. Well, natural language. Not a syntax. Not a virtual machine. Not a paradigm. Not even a formal language. Just what you’d say to a colleague.…
The default today is simple: AI is good. Prompt it. Ship the result. It’s seductive. The model returns something usable — sometimes remarkable. You didn’t have to think hard about the problem. You didn’t have to break it down. You just asked and received. So you keep doing it. Prompt, accept, ship. That’s not “using AI well.” That’s outsourcing control. Here’s the uncomfortable part: the system…
You pushed the code. The tests are green. The feature is live. And three days later, the audience finds out by accident. This happens more often than anyone admits. Not because people don’t care — but because creation and delivery run on fundamentally different fuels. And the tank is empty by the time delivery starts to matter. The builder’s trance Development is a deep act of…
Every abstraction you introduce is a set of rules in disguise. A class, a module, a function, a service boundary — each one silently declares: here’s what you can do, here’s what you can’t, and here’s why. The sign of a mature design is that you can explain those rules in a sentence or two. Not because the problem is simple — but because the solution has been distilled to…
Creatives, product developers, and most entrepreneurs believe that if their product is good enough, people will simply buy it. They work themselves to the bone adding features, lowering prices, or polishing the interface, only to watch their business die in the desert of indifference. The reality is harsher: you can have the best product in the world and still lose to nothing. You aren’t…
We’ve been sold the idea that everything is relative. That your reality and mine are parallel bubbles, and that every symbol is an infinite well of interpretations. It sounds inclusive. It sounds intellectual. But it’s a trap. This trap creates an illusion of progress. Inside, you are sprinting through an infinite loop of meaning; outside, you are frozen. You are busy, but you aren’t moving.…
I was about to make a mistake that would have cost me months of refactoring — and a friend’s question saved me. It was early in the 2000’s but I vividly remember a project I worked on where everything changed for me. I was deep into implementing the system, and I had a design doubt that, although I expressed it in a rudimentary way like “how do I do this?”, I knew it would…
In the vast landscape of business, one truth remains immutable: you can’t negotiate genuine desire. It’s a lesson that traditional industries have tried to bend to their will, and even in the dynamic world of startups and tech products, it’s a concept that refuses to yield. Consider, for a moment, the conventional approach to business. Picture a car dealership with a pushy…
In the realm of software development, crafting code that remains maintainable, flexible, and scalable stands as an utmost priority. And when delving into the concept of scalability, I’m considering not only the system’s load capacity but also your ability to maintain it, essentially wielding it as a tool to conquer complexity. To achieve this, developers often embrace design principles…
In my previous article How to Create a Pharo Smalltalk Plugin , I outlined how to create a Pharo Smalltalk plugin. However, since then, I’ve discovered a more convenient way to produce these plugins using the PharoPluginBuilder and StarterPlugin . In this post, I wanted to inform and describe the idea of this simplified process of creating a Pharo Smalltalk plugin. I’ve run it several…
As businesses increasingly rely on software to deliver their products and services, ensuring that their production applications are running smoothly and efficiently becomes a must for maintaining what makes your app to be dependable on: application reliability, performance, and availability. One critical aspect of monitoring production apps is measuring resource usage, including CPU, memory, and…
I’m excited to announce that the Pharo Consortium has been approved as an organizer for Google Summer of Code 2023 ! As a mentor for the Pharo TensorFlow plugin project, I’m thrilled to be a part of this program and to help developers to work on a project for the Pharo community. Google Summer of Code is an annual program that brings together student developers from around the world to…
Monitoring is an essential part of any modern infrastructure. It helps you keep an eye on system performance, detect anomalies, and identify potential issues before they become critical. With the right tools, monitoring can be a straightforward process that provides valuable insights into your system’s health. However, if you’re like me, you can feel that setting up an effective…
Pharo is a powerful open-source Smalltalk-based programming language and environment that has been widely used for research and development in various fields. Specially Pharo at Inria , France’s National Institute for Research in Digital Science and Technology. However, the lack of a native plugin for TensorFlow , a popular open-source machine learning framework, has been a major limitation…
Introduction When working with Smalltalk, you sometimes wish to access functionality that exists only in a specific library or technology that you cannot or simply don’t want to reinvent. When you are in this scenario, two options come to mind: FFI, or Foreign Function Interface, which is a mechanism to enable a program written in one programming language to interact with code written in…
Today, I’m excited to announce a new release of PharoDawnTheme , this dark warm color theme for the Pharo Smalltalk IDE. This theme is available for Pharo 9 and 10 and can be found in the following URL: https://github.com/sebastianconcept/pharodawntheme . To install it either in Pharo 9 or 10 you can evaluate this in a playground: Metacello new baseline: 'PharoDawnTheme' ; repository:…
Just a quick update to mention that I’ve merged in develop a pull request that will add the capability to work with Mapless using UnQLite in memory . The use case is mostly for single-image caching. When you want to cache data but keep the image lean, that’s when you can use this setup. Have in mind that when you save a mapless in one image, you will not find it from any other one,…
After quite some time not having updates on Mapless , I’ve invested in getting it working for latests Pharo versions and incorporating and maturing its API and main features. Today’s best Mapless version is v0.5.0-alpha and the remarks are: MongoDB backend can now connect to Replica Sets in a fault tolerant way On MongoDB Mapless can be read from secondaries and setting default and…
When I was using Smalltalk in a daily basis I had the chance to understand quite well the things that would make productivity go high. Here are some sketches I’ve done. I didn’t do the debugger and the package manager system, and both of them have great impact on this but hopefully you can imagine how productive this could be. All collapsed by default. A bottom bar opens with focus on the input…
I was doing a bit of housekeeping in my MacBook Pro so I can use some additional diskspace. The starting point was to do a scan with OmniDiskSweeper . OmniDiskSweeper’s User Interface allows you to easily navigate the directories that are occupying space the most so you can investigate what in those big directories is actually useful and what can be archived. Beside the directories that was…
This is a really common need that AngularJS is not providing out of the box. I needed it myself for some projects and you might too? Ok, even if many will tell you that you should not program in a way that needs to use this feature, I beleive that there is plenty of people that knows exactly what they are doing. There is plenty of cases that have real and justified reasons to use this feature and…
Sometimes you need to control how a worker image starts and stops right from the operative system. You may do it from the terminal but the really important use for this comes with automation and orchestration. In airflowing, the Pharo worker images start and stop automatically and on command from the OS and in other to shutdown, the images use the technique I’m describing here. To do this…
There are many things we can do to have an Amber Smalltalk IDE that makes the difference in terms of developing experience and productivity. The best ones take a lot of effort that is currently unfunded. Maybe we should start a Kickstart campaign and change that. But in the meantime why not do smaller steps in the right direction? We could do small incremental improvements with what we already…
Using an Announcer can give you a lot of flexibility for making your Amber components interact loosely coupled. And while developing, it is normal to rename a class. Today I was working with a product and I had this announcement class with a typo OrdedProductEditRejected which I’ve renamed to OrderedProductEditRejected . None of the current Amber IDE’s have a refactoring tool to help…
Keeping the engines running, understandably, demands attention and energy into maintaining the statu quo. A defence of the current state. Things that go under the hood, the engines that keeps things moving reliably and performing well, they usually demand tighter error margins in all its parts. The people that takes care of the engine need to be selective and rigorous to keep the system producing…
In November 5, 6 and 7th I was at Smalltalks2014 where I presented a talk about Startups and Smalltalk that mentions flow. I want to say a thanks to the organizers for having me there to bring this topic that gave me the opportunity to share this information among many Smalltalk enthusiasts, but also because I met new friends and found some old ones. One common theme I’ve found: I had many…
Here is a tip on how to keep nice titles in your AngularJS-based SPA - Single Page Application. The strategy is this: Remember current title (whatever it might be) Set the title to whatever new value you want Observe when the controller gets destroyed and React restoring that previous value in the title controllers . controller ( 'AmazingDetailController' , [ '$scope' , '$window' , function (…
Here is a tip on how to keep nice titles in your AngularJS -based SPA - Single Page Application . The strategy is this: Remember current title (whatever it might be) Set the title to whatever new value you want Observe when the controller gets destroyed and React restoring that previous value in the title controllers . controller ( 'AmazingDetailController' , [ '$scope' , '$window' , function (…
When I’ve started flow, one of the features I wanted for it was scaffolding from the front-end and be able to do things like: Flow scaffold model: #User or: Flow scaffold crudFor: #Task and have created the Model and Controller classes and accessors in environment so you can continue developing the app pulling things from there. There are several reasons to have scaffolding features, the…
I’m starting this blog here to make a coder-friendly open conversation with contributors and enthusiasts about flow’s design. This blog will be doing two things in one move: A source of fresh input, so feedback, so inspiration. An output about progress on this line of work, so relevance of the mission. But lets back up a bit, what is flow after all? I like to say that flow is a mission with a…
When I was doing engineering, I had a very good algebra teacher.* Those were the days full of vectors and subspaces and subspaces of polynomials and matrices and subspaces of matrices of polynomials. All from 7 a.m to 12 p.m. In the middle of that math trench he said once something that my head really saved. The teacher was explaining yet another concept while the sky was still dark in the morning…
When you trust your content is when you can forget it. At that point you’ll get that Context is King. …to make a Leonardo you need more than his innate ability. You also need Florence in 1450. Paul Graham. Yes I know… we are not da Vinci, we don’t have Florence in 1450 nor we have a Medici patron for our talent. Florence in 1450 is context. The problem is that without an appropriate context talent…
This blog uses a neutral protocol called RSS . You can follow new posts in a reader app or service instead of checking the site or relying on a social feed. How to use it Pick a reader and add the feed URL below. New posts will show up there; you read in the app, not in the browser. Recommended tools: NetNewsWire — Free, open-source reader for Mac and iOS. Simple and fast. Feedly — Web and mobile.…