About Blocks: Basics 101

This blog post is a first and short of a series where we will explore block-closures. This post will cover basic elements while the other will start to go over more semantical aspects using simple examples. This blog post is extracted from “Deep Into Pharo” and a new book under writing that will revisit chosenContinue reading “About Blocks: Basics 101”

On the edge of class rules

Pharo has one simple basic rule: everything is an object. But the objects themselves are not entities living in an abstract universe and do not drink the dew of lilies of the valley for breakfast. They exist in the object memory served by the virtual machine. The virtual machine defines an interface that strictly specifiesContinue reading “On the edge of class rules”

Implementing Indexes – Who uses all my memory

This is the second entry of the series about implementing full-text search indexes in Pharo. The first entry is Implementing Indexes – A Simple Index. You can start reading from this post, but there are things that we have presented in the previous one. For example, how to install the Trie implementation. In the first entry,Continue reading “Implementing Indexes – Who uses all my memory”

A Floating GCC Optimization

A couple of months ago, while debugging the build of the VM, I found a problem with the optimization of GCC 8.3 (I am not sure what other versions may show it). Basically, this GCC version does not compile one of our virtual machines functions well, because it unexpectedly removes what looks like valid code.Continue reading “A Floating GCC Optimization”

Implementing an object-centric breakpoint with Reflectivity

In this post, we describe how we implement a breakpoint that affects only one specific object, and how we implement it using the Reflectivity framework. What is an object-centric breakpoint? Let’s take a simple example: imagine two Point instances p1 and p2. Each of these points has two instance variables, x and y, that weContinue reading “Implementing an object-centric breakpoint with Reflectivity”

[Pharo features] The fusion of a developed program and IDE

In this series of blog-posts, we are explaining in more detail the Pharo features described in https://pharo.org/features. Pharo follows several design principles, and one of them says that the interaction between the human and computer should be modeless. The interface needs to be as direct and intuitive as possible. If you try to think forContinue reading “[Pharo features] The fusion of a developed program and IDE”

Getting a handle on names

There are only two hard things in Computer Science: cache invalidation and naming things. Phil Karlton Two hard things, but they are not the same kind of hard. Naming things we do it every day. And we read and re-read the things we name all day long. This is a post about names. And ambiguity.Continue reading “Getting a handle on names”

Implementing Indexes – A Simple Index

In Pharo, we have an excellent tool to query, navigate and discover classes and methods in the system. The tool is Spotter, this tool allows us to search the image for different elements: Classes Methods Menu entries Help topics and many more… To access to it is as easy as doing Shift + Enter, SpotterContinue reading “Implementing Indexes – A Simple Index”