Master on Libre Software Planet

November 25, 2019

Andrés Maneiro

Give a good idea to a mediocre team, and they will screw it up. Give a mediocre idea to a great team, and they will either fix it or come up with something better. If you get the team right, chances are that they’ll get the ideas right.

Creativity, Ed Catmull.

by nosolosw at November 25, 2019 07:09 AM

November 11, 2019

Andrés Maneiro

Programs must be written for people to read, and only incidentally for machines to execute.

— SICP, preface to the 1st edition.

by nosolosw at November 11, 2019 10:11 AM

November 04, 2019

Andrés Maneiro

Dvorak, 3rd year

The past 1st of November marked the anniversary of my switching to DVORAK. I took some time for myself, visited TypeRacer to have some fun and compare results from previous years (see 2017, 2018). Already having surpassed both my previous speed and accuracy I didn’t have any expectations this year, just checking how I was doing.

In terms of accuracy, it looks like I didn’t make great progress. I’m a bit below than the past year mean wise (98.7% vs 98.2%) and also falled short in the number of times I reach 99% accuracy or above. However, I’ve improved my bottom accuracy in half a point (96.4% vs 97.1%).

Speed, thought, is a different matter. It continues to improve rapidly in every metric: the lower bottom, the number of times above 70, and the mean have increased (71 vs 74).

by nosolosw at November 04, 2019 02:16 PM

October 28, 2019

Andrés Maneiro

To became a member of the community of architects requires an ability to learn to view the world as an architect and to use architect’s tools in a professional way. This can happen only by observing and interacting with experienced architects within the context of a studio.

Internet, innovation and OpenSource: Actors in the network, Ilkka Tuomi.

by nosolosw at October 28, 2019 11:05 AM

October 15, 2019

Andrés Maneiro

Meetup WordPress Lugo

Hai uns meses atrás, Carlos liouse a manta á cabeza e propúxose retomar a programación do meetup de WordPress en Lugo, logo dun tempo parada. Lhosca e máis eu decidimos botar unha man e en Xullo presentamos a nova etapa, coa colaboración da maravillosa xente que organiza o meetup (e WordCamp!) WordPress Pontevedra.

Logo dunha pausa polo verán, comezamos o outono coas pilas cargadas. O próximo venres 25 de Outubro, imos a falar de Gutenberg, replicaremos webs co editor de bloques, e veremos cómo estendelo. Temos prazas limitadas, xa podes reservar a túa na web da meetup.

by nosolosw at October 15, 2019 12:22 PM

October 14, 2019

Andrés Maneiro

The world is often unkind to new talent, new creations. The new needs friends.

Ratatouille, Anton Ego.

by nosolosw at October 14, 2019 09:16 AM

October 07, 2019

Andrés Maneiro

Get a good chair, because you can’t always be motivated, and sometimes you have to sit on it until you’re done.

— The grandfather of a friend, who had a work ethic that I share.

by nosolosw at October 07, 2019 06:09 AM

October 03, 2019

Andrés Maneiro

How I learned the NATO Phonetic Alphabet

Did it ever happen to you that during a phone call you had to spell something? An airline code, an email, an invoice number, etc. At those situations, I always regretted not having learned the NATO phonetic alphabet.

NATO Phonetic Alphabet

Flash forward to September 2019: I found myself in a talk about learning and memory techniques during the Automattic Grand Meetup. It picked my interest so I decided to investigate a bit and signed up for the Learning how to Learn MOOC.

In this post I’m sharing how I’ve applied my new gained knowledge to learn something useful that I had put off for a long time. I also hope to interest you in the topic of learning how to learn.

1 – Deal with procrastination

The main reason I had postponed learning the NATO Phonetic Alphabet is that I thought I had a bad memory and it’ll be a lot of work — I procrastinated. Procrastination is a mechanism our brain uses to cope with challenging feelings induced by certain tasks: perhaps we believe we can’t do something, maybe it’s boring, makes us feel anxious, etc. Essentially, procrastination is not about time-management, but about emotion-management.

To deal with procrastination means to deal with and rewire our emotions about the task. Doesn’t sound easy, right? The good thing is that there are a few practical things we can do:

  • Time-box short periods of focus, break and reward. Time 20 minutes during which you’ll exclusively focus on the task at hand and do whatever you can: no pressure in the output, just focus on doing anything. Then, give yourself a break and a reward — exercise a little, eat some chocolate, surf the web, whatever works for you. Do not forget about the reward! It’s a crucial part of rewiring your feelings about the task. Finally, repeat the process a couple of times more.
  • Focus on the process, not the product. Planning and have small wins/rewards is an important part of dealing with procrastination. Things like writing down the next tasks you’ll work on at the end of your day or cross-off the ones you’ve done help you focus on the steps. By focusing on the process, not the final goal, it’s easy to control our feelings of discomfort.

For me, the first focused session was about familiarizing myself with the NATO Phonetic Alphabet: essentially, I surfed the web and read about it. Then, I stopped and gave myself a reward. My second session was about how would one go about memorizing all the 26 symbols (see next tip). Break and reward. I spent the third session developing the system I had researched. Again, break and reward. By the fourth session, I was ready to start memorizing.

2 – Tap the visual and spatial memory

Through many thousands of years, our brain has evolved to be amazingly good at remembering places, visual things, as well as anything that involves the senses. When dealing with abstract concepts it’s useful to encode them into memory leveraging those abilities. For someone who hadn’t consciously done this before and feels that has an average memory, this is easier said than done.

If we look around us, though, there are multiple real-life examples we can draw inspiration from:

I hadn’t done it before, so I spent my second focused session thinking about how would I put in practice the things I had learned. I also reviewed what others did for inspiration: the NATO publishes a guide that links images to the words, some people create a song, etc. Of all the things that I found, the approach suggested by Nelson Dellis -4th time winner of the USA memory championship- was the most appealing to me: he creates an image by merging the letter and the word associated with it.

For example, for the pair A-Alpha he pictures sprouts of Alfalfa coming out of the A letter; for the pair P-papa he pictures a cartoon of his dad with the shape of the P; for the pair U-uniform he pictures the U being a basket where you’d store uniforms; and so on. I highly recommend the video if you’re interested in the mechanics of this.

After I knew the system I wanted to use, I decided it was time for a break (and a reward!). After a while I came back energized to create my own — actually, my unconscious brain already had already suggested some ideas (see next tip). Being my first time ever doing this kind of thing, it took around an hour to come up with my own memorable images for each one of the 26 letter-word pairs.

3 – Focus, rest, and recall

Now that I had a system in place, the next step was memorizing. I went through the phonetic list stopping a few seconds in each of the images I had created. After a few rounds, I stoped and did other things. Then I tried recalling them from memory: I didn’t get all of them but I did get many. I repeated the pattern (focus, rest, and recall) a couple of times during the day. The days after I mostly did recall using the Anki app where I had stored the pairs previously.

It turns out this strategy works a lot better than just going through the list over and over until you are exhausted. There are a number of things at play here:

  • Switching between focus and rest states helps your brain digest the information, so to speak. In the focus mode, you’re able to direct your thoughts to a problem. Although you can’t command your diffuse unconscious brain to work on the things you want, you can prime it to do it — aka make suggestions. How? For example, by taking a break after a focused session (go for a little walk, take a one-second nap like Dali or Einstein, do the home chores, etc.).
  • Space the repetition. Once you reach the point of almost no errors, repeating has diminishing returns — it’s just not effective and creates illusions of competence. To store something in long-term memory, you have to modify the forgetting curve instead. How? Spaced repetition. Instead of cramming a 2h session repeating the same material over and over, do smaller sessions spaced through several days. Useful ways to be deliberate about practicing is scheduling your review and study sessions in a calendar, use flashcards to keep track of progress, etc.
  • Recall from memory. Long-term memory is a storage mechanism that prioritizes which memories are consolidated and which ones aren’t that important. By recalling the information, we’re strenghthening the path to retrieve it later. In many ways the mechanism is very similar to paving a cowpath: a memory is strong when it was used a lot during different intervals. Recalling and testing yourself are the most effective techniques you can use to reinforce what you want to learn. Also teaching it to someone else, which is a good technique to uncover the holes in your understanding.

Coda

Although the tips I suggested here are universal, how do you apply them to a specific situation varies from problem to problem.

Take memorization techniques, for example: PAO, Major System, Mnemonics, Memory Palace, etc. Some are useful to convert concepts into images, others to link or inter-connect different ideas. It takes time to know which technique is more adequate to a specific problem. That intuition is only built with practice.

Other essential functions of learning that I didn’t use in this process were understanding and chunking. I had a list of 26 symbols that matched a letter in the alphabet and they didn’t have any other meaning; I also didn’t have any pre-requisite knowledge, so to speak. If I was trying to understand a mathematical formula or how a web-browser works, chunking would have been essential. The process is similar to putting together a puzzle and involves compressing the information, learning to deconstruct the concept you’re trying to understand, reason by analogy, transform the concept to a different mode/language (from a formula to a graph, from graph to simple words), etc. It’s a messy process.

The topic of Learning How to Learn is fascinating. There is so many practical things you can do to improve and some of them are so counterintuitive. It’s also a fun way to challenge the pre-conceptions about yourself and indulging a bit of goofyness while you work hard to grok something.

If this post picked your interest, I recommend checking the Learning How to Learn MOOC and/or the book is based from, A mind for numbers. They are comprehensive and contain extensive documentation and research, while keeping things actionable.

by nosolosw at October 03, 2019 05:44 PM

September 30, 2019

Andrés Maneiro

When you go too far up, abstraction-wise, you run out of oxygen.

— Joel Spolsky, Don’t let architecture astronauts scare you.

by nosolosw at September 30, 2019 06:09 AM

September 25, 2019

Andrés Maneiro

To learn to make something well can take your whole life. And it’s worth it.

Ursula K. Le Guin.

by nosolosw at September 25, 2019 06:09 AM

September 16, 2019

Andrés Maneiro

If you dislike change, you’re going to dislike irrelevance even more.

Eric Shinseki. Hat tip: Ann Dunwoody, Automattic Grand Meetup 2018.

by nosolosw at September 16, 2019 08:01 AM

September 07, 2019

Andrés Maneiro

August 30, 2019

Andrés Maneiro

It seems to be much easier to make two small jumps than the one big jump in any kind of mental thinking.

Creative Thinking at Bell Labs (1952), Claude Shannon.

by nosolosw at August 30, 2019 10:39 PM

August 08, 2019

Andrés Maneiro

Objectives are like a vaccine for fuzzy thinking.

Why the secret to success is setting the right goals, John Doerr.

by nosolosw at August 08, 2019 07:48 AM

February 06, 2019

Andrés Maneiro

The magician’s assistant

This book was the Reading Club assignment for January 2019.

The magician’s assistant, by Ann Patchett, is a family story under odd circumstances. Set around the same time it was published (1997), it touches topics that were part of the life of many, although not part of the mainstream news at the time: violence in the family, how life differs in small and big places, homosexuality, and AIDS.

It’s told from the perspective of Sabine, the best friend, assistant, and wife of Parsifal, a homosexual man that lives with Phan, his partner. Sabine and Parsifal marry when Phan and Parsifal are diagnosed AIDS so Sabine can inherit their state. She is in love with Parsifal.

Upon Parsifal death, Sabine is shocked to learn that his family is alive, despite what he had told her. They are from Alliance, a small place in Nebraska, and want to visit Los Angeles, where Parsifal lived, to get a sense of how life was for him. Sabine agrees and tours them for a few days, in the hope of discovering why he hadn’t told her the truth. Through this tour, you are acquainted with the main characters. It’s like a warm-up before the real match.

Parsifal’s family turns out to be fine people, and the tragic event that made Parsifal break with them is revealed to Sabine. Fast-forward: she’s invited to a wedding in Nebraska, which she agrees to attend as an opportunity to connect with Parsifal’s childhood and find some rest. So we now have Sabine embedded in an environment so different to hers: a small town with little to do and few opportunities to reinvent yourself, a conservative society, and a family that had struggled (and still is) with domestic violence. This is the real match. We have now a vessel (Sabine) to cross the river of understanding: in one shore, a liberal society where you can be whatever you want; in the other, a conservative community that pressures you to be like the others.

The story ends with the liberal Sabine realizing that the only way that conservative family can break the vicious loop they find themselves in is by providing them an escape hatch. Perhaps this is also the message Ann Pratchett wants to convey: let’s be less judgmental and more empathetic.

This book is beautifully written. The rhythm is slow but steady, with enough details to fill your imagination but not too many to get in the way of the story. The use of magic as a second thread and the dreams to feed us information was great. It is a straight story, doesn’t have many layers to it. To a modern reader, it may feel perhaps a bit dated and certainly stereotypical in some ways (Nebraska, anyone?), but if you consider the time it was published (1997) I think it was actually a very brave book to publish.

by nosolosw at February 06, 2019 02:15 PM

January 15, 2019

Andrés Maneiro

Forest Dark

This book was the Reading Club assignment for December 2018.

This is a character-driven story. Jules and Nicole are successful by most standards: they are wealthy, well-known, and have family and friends. They are also suffering an inner transformation. Jules’s parents have recently passed away and that event is the catalyst that pushes him to reconsider his life, put an end to his marriage, and give away his possessions. Nicole is a writer that’s suffering a block that has lasted for too long and has triggered an irreversible inner change. They’re both non-practicing Jews living in NYC and visit Israel as part of his longing for something else in their lives.

Chapters alternate Jules and Nicole. Jules is written in the third-person while Nicole is in first. Nicole’s part feels like a stream of inner thoughts at times, like a diary: raw, unconnected, unpolished, and without a clear place in the story. Jules’ is a bit more focused, but still rambly.

The plot has some under-developed areas and dead ends. I think this is intentional. Based on how well some parts are written and some vivid and rich scenes, I don’t think the author lacks the ability to write a novel. To the contrary, it felt like a sort of a meta-layer to the story, a post-modernist experiment to subvert the implicit reader-writer contract. The reason I think this is because, in the story, Nicole is fond of Kafka, and the fact that Kafka’s work was published after his death (although he wanted it buried because he considered his work incomplete) has a big role in the story; to the point that she plays with the idea that someone else has heavily edited Kafka’s manuscripts and created Kafka’s mythology. It leads me to believe the own Forest Dark is a little unfinished on purpose.

I’d say this book isn’t for everyone, I’d recommend a little research before reading. Although I tried hard to engage, the ratio of words that contribute to the story VS words that sound smart but are empty was remarkably low for my taste. It ended up being a little more experimental than I like.

by nosolosw at January 15, 2019 05:07 AM

December 30, 2018

Andrés Maneiro

1983

What if, in 1983, the polish national resistance was slaughtered after a terrorist attack attributed to them? What if, as a consequence, in 2003, Poland would be governed by an authoritarian state, the Iron Cut would be still in place, and Al Gore the president of the United States? That’s the premise of 1983, the first Polish tv-show produced by Netflix.

The main characters are Kajetan Skowron, a law student whose parents were killed by the bombs; Anatol Janów, an investigator who wants to get back his old job after a rank demotion; and Ofelia Ibrom, the leader of a rebel movement whose life goal is to kill the members of the government.

Maybe freedom is overrated?

— Agnieszka Holland

It follows dystopic arcs that have been filling our TVs since the beginning of the decade, from Hunger Games to The Man In The High Castle. The aesthetics resemble those of cyberpunk such as Altered Carbon and Blade Runner – music, photography, and plot are dark. Also, like them, the focus is on a criminal investigation as a MacGuffin to discuss bigger topics. It has obvious connections to 1984. The plot reminded of Death of a Red Heroine by Qiu Xialong, only that 1983 is an alternate reality, not historical fiction – its goal is to comment on the present, not the past.

One of the things that dragged me to this film was that it was created by Polish for Poland. I thought that was very bold and gave it more load, so to speak, given the country’s past and present. The 1st season lived to its expectations and entered the top-three tv-shows I’ve seen in 2018.

by nosolosw at December 30, 2018 10:22 AM

December 16, 2018

Andrés Maneiro

Rams

To overcome mediocrity, you have to find the right people. People who could actually achieve something through collaboration, who think beyond what they are responsible for on a daily basis.

– Dieter Rams

In 2016, I was one of the 5.000 backers of Rams, the first feature documentary about Dieter Rams by Gary Huswitt, who has directed other design documentaries such as Helvetica, Objectified, and Urbanized.

I’ve received my copy a few days ago and just watched it now. The film gives a sense of Rams’ beliefs and values, connecting his work to the Ulm School of Design and the era he lived in. Through interviews with him and others, I discovered a quiet and private person, who is also opinionated and vocal about the way of design. I think it’s a great documentary, although I couldn’t help but wish it could expand a bit more on his role as Braun’s Design Director – the day to day of being the proxy between the design group and the rest of the company, the interactions among the members of the group, the design process itself, etc.

by nosolosw at December 16, 2018 05:36 PM

December 05, 2018

Andrés Maneiro

They came like swallows

This book was the Reading Club assignment for November 2018.

William Maxwell published this book in 1937, and I’ve read it +80 years later. One of the things I liked about They came like swallows is how the story builds on the use of simple words and ideas, how it doesn’t need complexity to give the scenes a sense of fear, warm, or excitement. It just describes what’s happening, it is honest and beautiful writing, it isn’t pretentious but real. Perhaps that’s why it aged well.

From the perspective of three males -husband and sons- we are told about the accounts of a middle-class family in the United States at the beginning of the twentieth century – specifically in the Autumn of 1918, in the middle of the Spanish flu.

We’re introduced to the story from the perspective of the little Bunny, an 8-year old which comments on the adult world from his perspective. Then goes Robert, Bunny’s big brother, which I was prepared to hate after reading the first part – what I’ve got instead was a nuanced teen with his own struggles. Finally, the circle is closed with James, the father. Through the perspectives of these men at different stages in life, we learn what the author has to say about life, which is well captured by the title: swallows come and go, so does life.

This book has many angles a reader can enjoy: domestic realism, a historic account of the effects of Spanish flu at the beginning of the century, etc. One that I haven’t seen talked about is feminism and matriarchy. I believe you could read this as an homage to spouses and mothers of all times, but also as a plea for stopping offloading work to them, as for Elizabeth is the one that does the emotional labor, plans the future, and takes care of the house. I don’t think that was the intention of the writer, but the fact that she doesn’t get to say anything but through the voices of the loving men around her is just the perfect metaphor to channel that kind of message.

by nosolosw at December 05, 2018 10:42 PM

November 03, 2018

Andrés Maneiro

Dvorak two years after

In November 2016, I switched from QWERTY to Dvorak. The past year, the change wasn’t noticeable yet, so I was hoping this year would.

This is the completely unscientific test I run: I visit TypeRacer and record races – I’m going to settle at 20 from now on. The texts aren’t the same from year to year, I just trust the random nature of TypeRacer to give me different kind of them: short, large, with tons of punctuation, with very few breaks, and so on.

It looks like I’ve already surpassed my previous baseline after two years using Dvorak – both in terms of speed and accuracy. I had been using QWERTY for about 15 years before switching, so that’s impressive. I guess I’m able to introduce bugs in my code faster!

In a more qualitative note, 2018 has been a year of consolidation. Unlike in 2017, I haven’t changed my input devices and my keyboard configuration has remained the same – that has probably helped my muscle memory to develop faster. I still don’t have a steady rhythm and there are some characters I struggle to type. The accuracy results are more meaningful to me than the speed, as that speaks about my finger health long-term, which was the main reason I was interested to give Dvorak a try.

by nosolosw at November 03, 2018 05:47 PM

September 25, 2018

Andrés Maneiro

The ones who walk away from Omelas

This short story was, in 1974, the recipient of the Hugo and nominated for the Locus. I was intrigued by the title by a long time, but it was only after watching the documentary about Ursula K. Le Guin’s life and work that I learned that The dispossessed was how Ursula reacted to this question: where do the people who walk away from Omelas go? I was bound to read it.

It took me half an hour to finish it. I haven’t read yet any of the Earthsea stories but there is no magic or dragons in Omelas, so I’d guess this is more of a Hainish taste. Being already familiar with the plot, it lacked a climactic moment and the story didn’t spark any more thoughts than I had already given to the topic when I first learned about it. It’s probably wise to avoid related material about short-stories you want to read if you don’t want them to be spoiled, but the advice is particularly true for this one. I wish I hadn’t read anything about it.

I still liked how it’s built on simple language and a raw metaphor anyone can relate to. Reading it helped me to consolidate this idea of Ursula being not a novelist but an anthropologist who happens to be interested in fictional societies. Writing stories about non-existing societies was her way of researching a topic, live with the locals, and explaining to us what it was like living in that world.

The anthology I bought includes an intro commentary by the author about how she came up with the Omelas word which was also fun and humanizes the way I picture writers work.

by nosolosw at September 25, 2018 05:32 AM

September 16, 2018

Andrés Maneiro

The Worlds of Ursula K. Le Guin

To learn to make something well can take your whole life. And it’s worth it.

— Ursula K. Le Guin

The documentary that explores the life and work of Ursula K. Le Guin is now being screened in several festivals and events. Check out the dates and join one if you can. As a backer of the project, I had early access to the film. It’s only a few months since UKL has left us, so it came to me with a feeling of farewell and closure.

by nosolosw at September 16, 2018 05:02 PM

August 09, 2018

Andrés Maneiro

Function keys in Thinkpads

I usually work with an external ThinkPad keyboard, which matches the configuration of my laptop’s. Lately, though, I’ve been using my laptop’s keyboard more and more. At some point, Lenovo decided to design the 6th keyboard row in a slimmer way and switched the standard F1-F12 keys to function keys (volume, brightness, etc). This is very inconvenient if your work involves typing a lot, as editors tend to offer handy shortcuts with the F1-F12 keys.

This is how you change the default configuration: FN + ESC.

by nosolosw at August 09, 2018 09:14 AM

July 22, 2018

Andrés Maneiro

The girl on the train

This book was the Reading Club assignment for June 2018, the last before the summer hiatus.

This is a thriller that builds slowly. Rachel is the main character, she’s a depressed, mentally unstable, and alcoholic woman that can’t cope with having lost her husband to another woman. Megan is also lost and has her own difficulties to find anything that fills her in life. Anna is a housewife and mother whose life goals are fulfilled.

Like in a jigsaw, we’re presented with partial and unreliable information about what’s happening to each one of them, which helps to build and keep the narrative tension. Through the story, they face different facets of emotional dependency, abuse, or personal struggles with life. There are some scenes that I particularly liked it because they embody so well one of the themes that give shape to the zeitgeist of our era: Rachel, in her daily train trips to work, invents any kind of stories about the people she sees through the window; their lives are always happier and out of struggles. We know that’s not true, but she doesn’t have that information. This made me reflect on our interactions through the so-called social networks and how they can be so much detached from the real ourselves in so many ways.

At times, I was so dragged to the story, that I even found myself reading while walking to board a plane.

by nosolosw at July 22, 2018 11:41 AM

June 27, 2018

Andrés Maneiro

Scratch Map Summer 2018

After some epic trips in the past years, this is what our scratch map looks like by the end of 2018 Summer. Antarctica is in our todo list.

by nosolosw at June 27, 2018 01:15 PM

June 25, 2018

Andrés Maneiro

Summer solstice

Depending on how you think about seasons, the summer’s solstice is the beginning of the summer or the middle of it – in either case, enjoy.

by nosolosw at June 25, 2018 01:28 PM

May 31, 2018

Andrés Maneiro

Hallo Berlin!

Hallo Berlin! 🇩🇪 I’m in the city to attend this week CSS and JS conferences. The line-up is fantastic, and I look forward to meeting all the folks there.

by nosolosw at May 31, 2018 03:08 PM

May 15, 2018

Andrés Maneiro

The kite runner

Lately, I felt the urge to read fiction again, after a long time focused on tech and non-fiction. I was also looking to widen my perspectives and stay away from sci-fi for a bit. I found an English book club ran by the neighborhood public library, and The kite runner was the first reading since I joined. Actually, a friend of mine had lent me the book many years ago, but I had forgotten most of it. It seems unfair that I did because the second read has left me very moved.

The book’s central character is Amir, born from a rich Pashtun merchant in the Kabul of the 60s. The first third of the book pivots on the relationships with his father and his Hazara servant during his teenage years. After the Saur revolution, the family flies to America and we are introduced to how was life like for Afghani immigrants, but also how our beloved character transitions to become an adult. The book’s third act goes back to Afghanistan, but to a different one, as it is set up after the Ismalic Jihad that ended up with the Taliban ruling the country.

Because I had already read the book I didn’t expect it to be able to generate so many emotions as I went through it. I was so wrong. In the beginning, I had some trouble to like it, and Hosseini’s way of expressing Amir feelings felt a bit pretending, but every time he focused on a particular plot, I felt engaged again. Certain scenes were a lot more disturbing than I remembered, to the point that I had to stop a couple of times, take fresh air, and make myself aware that I was living in a totally different reality than the books – that’s something I don’t experience in many books. Having to deal with my father’s death last year struck all kind of emotions and relived conversations as well – in a way, I think that helped the book to have more impact on me this second time, and reminds me that there are books that hold healing power if read at the proper time. Finally, I couldn’t help but think that the Amir and Hassan friendship is a metaphor for Afghanistan as a failed state during the many wars that beat the country in the 1974-2001 period. It seems to me as if Hosseini was trying to say that the country cannot be at peace until the Pashtuns and Hazaras are equals.

I’d say The kite runner is a book about guilt and redemption, a father-son relationship, and perhaps the main window to Afghanistan culture for most westerns. I think the book fares well in each of those.

by nosolosw at May 15, 2018 01:40 PM

April 11, 2018

Andrés Maneiro

February 25, 2018

Andrés Maneiro

On JavaScript modules

Next week I'm going to participate in a session about package managers for different languages – we'll present pip (python), composer (PHP), and npm (JavaScript). In sharing ideas with my colleagues I realized how many of the struggles of modern JavaScript tooling and workflow is based upon the fact that the language didn't have a built-in module system until recently, so I've decided to write down my thoughts as preparation for the talk.

A brief history of modularity

For a more in-depth explanation, please, check this evolution of modularity in JavaScript – it has many details hard to find in other places.

JavaScript was created in 1995 without modules, and every <script>  shared the same global scope. We learned how to work with functions and namespacing to gain a minimum ability to divide our code into pieces, but as the importance of JavaScript grew, the pressure to have better alternatives was more intense as well.

In the server, Node.js became the de facto standard and its module choice, CommonJS, the format used in the incipient node package manager,npm . That was 2010, 15 years after the JavaScript release. Browser-side nobody could afford or was interested in a unified module system, so alternatives bloomed and the market became more fragmented. With time, the use of npm skyrocketed and so the importance of CommonJS, even for browsers.

How to make CommonJS available in the browser

It may be worth to pause and remember that at that point we still didn't have a module system for browsers. We had something that was simple enough to work with and hack. The core of the CommonJS API is quite simple, and has two pieces:

  • require: a function to import some code that's somewhere else.
  • module.exports: a variable to hold the code to be exported.

Let's say that I have an input.js file in CommonJS format:

var constants = require( './constants' );
console.log( constants.HELLO + ' ' + constants.WORLD );

And the corresponding constants.js contains:

module.exports = {
    HELLO: 'HELLO',
    WORLD: 'WORLD',
};

I can't add those files to the browser through the <script>  tag and expect them to work. That's invalid JavaScript as browsers understand it.

How do we make it valid JavaScript? Well, something we can do is to copy the modules to the same file, wrap them in a function (so their internal variables don't collide) and expose the necessary keywords through the function arguments:

// Scope the first module
function( require, module ) {
    var constants = require( './constants' );
    console.log( constants.HELLO + ' ' + constants.WORLD );
}

// Scope the second module
function( require, module ) {
    module.exports = {
        HELLO: 'HELLO',
        WORLD: 'WORLD',
    };
}

This can be included in the browsers! It won't fail, but it will also do nothing.

OK, next step, let's implement require : it is a function that takes a module identifier and returns its module.exports object. We can do that:

// Implement require
var modules = {};
var require = function( moduleId ){
    var tmpModule = {};
    modules[ moduleId ]( require, tmpModule );
    return tmpModule.exports;
}

// Scope and register the first module
var input = function( require, module ) {
    var constants = require( './constants' );
    console.log( constants.HELLO + ' ' + constants.WORLD );
}
modules[ './input.js' ] = input;

// Scope and register the second module
var constants = function( require, module ) {
    module.exports = {
        HELLO: 'HELLO',
        WORLD: 'WORLD',
    };
}
modules[ './constants' ] = constants;

It looks a bit better, but still does nothing and we ended up adding a lot of variables to the global scope.

Let's fix this by scoping the code within an IIFE (so it doesn't pollute the global scope) and execute the main module, the entry point of our program (./input.js in our example):

(function() {
  // Implement require
  var modules = {};
  var require = function( moduleId ) {
    var tmpModule = {};
    modules[ moduleId ]( require, tmpModule );
    return tmpModule.exports;
  };

  // Scope and register the first module
  var input = function( require, module ) {
    var constants = require( './constants' );
    console.log( constants.HELLO + ' ' + constants.WORLD );
  };
  modules[ './input' ] = input;

  // Scope and register the second module
  var constants = function( require, module ) {
    module.exports = {
      HELLO: 'HELLO',
      WORLD: 'WORLD',
    };
  };
  modules[ './constants' ] = constants;

  // Execute the main module
  var module = {};
  modules[ './input' ]( require, module );
})();

This is it! We've transformed our initial CommonJS modules into something that is executable in today browsers.

This exercise would need quite a bit of work to be production-ready, but the fundamental steps are there and it's not difficult to see that's easily automated by tools. This is mostly what Webpack does when it transpiles CommonJS to IIFE. Rollup seems to be a bit more elegant but its strategy is similar. If you're curious, check the runnable code they generate.

The transition to ESModules

The success of npm and CommonJS  taught the browser ecosystem a valuable lesson: a better workflow was possible. Some attempts were made to replicate the registry plus format formula but, eventually, npmCommonJS won .

Flash forward to 2015 and the ES6 standard introduces modules in the JavaScript language. Three years after that, browser adoption and node support are still not universal or complete, but everybody agrees that it will. The whole ecosystem seems to be on board and execution environments, toolslibraries, and authors are preparing for what that means.

If we believe that, npm will continue to be the central registry to distribute JavaScript for the foreseeable future, but CommonJS will no longer be the default module format. In this moment of transition, not everything is clear or necessarily better. The ashes of the module wars are still warm, but they won't be forever.

by nosolosw at February 25, 2018 10:22 AM

February 23, 2018

Andrés Maneiro

The right to repair

These farmers can't repair the equipment they own because the manufacturer doesn't sell them the necessary tools to configure the software that controls the pieces. They're trapped into a monopoly. In response, they've become activists for their Right to Repair. But this is a wider issue than a John Deere monopoly in the agricultural business, it affects any industry whose products embed software – which is mostly everyone these days.

by nosolosw at February 23, 2018 01:28 PM

February 11, 2018

Andrés Maneiro

My first plant

My parents in law got me an evergreen bonsai for Christmas, a Ficus Retusa.

It's not until recently that I've got interested in the idea of growing a plant. I find fascinating that you can mold a living being to your liking, within certain constraints. Every branch contains a possibility, and you've got to decide which ones to develop. The fact that it's a slow process that takes years to fully see the results speaks of the patience and constant caring you need to put into it. I don't want to think too much about that because the thought of committing myself to something for so long is scary! At the same time, I've found a sense of calm and bonding in things like cleaning every individual leaf of the tree once a month – I can understand much better now to Paul Richardson, the exo-botanist of Mars.

Being the first plant I own, I'm still learning a lot about everything: its watering needs, what's a good pruning balance, how to identify and treat pests and diseases, etc. So far, it's been enjoyable.

by nosolosw at February 11, 2018 07:15 PM

February 02, 2018

Andrés Maneiro

The luxury of a desktop app

These apps are just little icons on my desktop bar. I don’t even have Bluetooth enabled on my computer. The amount of memory they consume is a luxury – the luxury of desktop apps.

by nosolosw at February 02, 2018 01:42 PM

February 01, 2018

Andrés Maneiro

Seamless offline docs

This combination of Zeal and Atom (with the dash package) seems to just work, and help you set up a seamless offline docs experience.

by nosolosw at February 01, 2018 08:06 PM

January 27, 2018

Andrés Maneiro

Tempestades de sal, Sés

Sés is a Galician singersongwriter. Her stage presence and lyrics reminds me of what it means to grow in small villages by the periphery. I feel connected to that dignity and survival skills, because it embodies the attitude of the women I grew around. The Galician matriachy.

by nosolosw at January 27, 2018 04:43 PM

January 24, 2018

Andrés Maneiro

UKL passed away

I’ve just learned that Ursula K. Le Guin is no longer with us. She left multiple worlds for us to play with and learn from. Two of them –The Left Hand of Darkness, and The Dispossessed– are my goto guides when it comes to imagining societies that take into account the role of self-management, genre, language, and free commerce. We cannot bring her back, but we still have her words to read all that she wanted to tell us.

by nosolosw at January 24, 2018 01:15 PM

January 08, 2018

Andrés Maneiro

JavaScript in use 2011-2017

According to the HTTP Archive, the top 1.000 websites download 5 times more JavaScript today than seven years ago – HTML grew 2x and CSS 3x. Combining that with the fact that the mobile web is more present than ever, the result is that the main bottleneck for the websites we create and consume is the CPU.

by nosolosw at January 08, 2018 07:18 PM

January 02, 2018

Andrés Maneiro

Input lag: 1977-2017

Input lag: 1977-2017 is an essay about the time it takes several computers to display a character from a keypress. A lot of newer computers take 3 to 5 times more than 30 to 40 years old computers.

by nosolosw at January 02, 2018 02:51 PM

December 20, 2017

Andrés Maneiro

Google Maps’ Moat

Google Maps’ Moat, by Justin O’Beirne. On the competitive advantage that Google Maps has over Apple Maps – equally interesting for map nerds and business people.

by Andrés at December 20, 2017 01:49 PM

December 02, 2017

Andrés Maneiro

Afuega’l Pitu

Saturday occupation: eating spicy cheese made of cow milk and paprika.

by Andrés at December 02, 2017 02:34 PM

December 01, 2017

Andrés Maneiro

Shelter from the Storm

Mars soundtrack (the National Geographic tv-show) is fantastic. Nick Cave is just the perfect voice to convey that feeling of exploration and fear. Moon, Interstellar, The Martian, etc; it seems sci-fi movies got an appreciation for soundtracks that have a major role in the film – and I enjoy that.

As much as I like Cave’s main theme for Mars, after a few episodes, I was in the need of something like Dylan’s Shelter from the Storm. Exploration needs joy and celebration.

by Andrés at December 01, 2017 02:51 PM

November 25, 2017

Andrés Maneiro

Agile according to Basecamp

Running in Circles is Basecamp’s view of agile product management. They acknowledge the value of working in cycles, but add three pieces: having the time to focus, being able to modify the original plan, and tackle the core unknowns of the feature first.

The first two are enablers that are provided to the makers by management. The last part is how the maker make the most of those powers. Together, they form a process that is nicely captured with the uphill / downhill metaphor. Uphill you are discovering the unknowns and making decisions about what goes in, downhill everything is clear and you are implementing it at warp factor 10:

by Andrés at November 25, 2017 01:07 PM

November 23, 2017

Andrés Maneiro

Ten years of mobile

10 years of mobile by Luke Wroblewski packs a lot of knowledge in one hour and a half. If I could only watch one talk about mobile, I'd make it this.

by Andrés at November 23, 2017 08:12 PM

November 22, 2017

Andrés Maneiro

Module counts

I came across Module Counts, which tracks the number of published modules for major language package managers. At this point, npm has 600k packages published, which is 3 to 4 times what any other package manager has. I’m not aware of download statistic across different package managers, but npm has surpassed the 2 billions downloads a week mark.

by Andrés at November 22, 2017 02:41 PM

November 18, 2017

Andrés Maneiro

Are you serious

This puts me in the perfect mood before going for a walk in this sunny and cold Saturday.

by Andrés at November 18, 2017 03:25 PM

November 12, 2017

Andrés Maneiro

Software architecture failing

Software architecture failing: tech writing is biased towards what the big ones do, which usually doesn’t fit most other contexts – but, who got fired for choosing IBM, right? Although I feel connected to this rant at an emotional level, I do think it’s necessary to elaborate more and make a positive contribution: help to create and spread that alternate history of software development. How do you do it? Hat tip: Fran.

by Andrés at November 12, 2017 10:30 PM

The language of programming

The language of programming is about the struggles non-native English speakers face when learning to program. Hat tip: Manuel.

by Andrés at November 12, 2017 10:15 PM

November 01, 2017

Andrés Maneiro

Touch typing in Dvorak

On November 2016 I had a free month between jobs. Apart from some resting, reading, and general preparations for my new adventure, I still had quite a bit of free time to do new things or build good habits. It was while cleaning my office that I found a keyboard I had bought a couple of years back:

Its layout was a beautiful matrix -which is good for your fingers- and came with Dvorak by default. So it struck me: how about improving my typing during the coming weeks?

As a programmer, typing is an essential skill for me. I had been doing it for more than 15 years in a learn-by-doing way, and I plan to keep typing for years to come. I thought it would be fun to spend a couple of hours a day training in touch-typing and give Dvorak a second try. And so I did.

The experience

Before I switched, I recorded about 15 typing sessions at TypeRacer using the QWERTY layout, which logs typing speed (words per minute) and accuracy (% characters right over the total). I was at 67 wpm and about 95% accuracy at the time.

Progress was very humbling at the beginning; it felt like learning to walk again, and I swear that, sometimes, I could even hear my brain circuits being reconfigured! After a few weeks, though, I was under 40 wpm and, by the end of the month, I was under 50 wpm. I stopped quantifying myself by then: as I started working, I had a lot of typing to do anyway.

During the first months, the only moments I struggled and felt like perhaps the switch wasn’t a good idea after all was during real-time communication: chats, slack, etc. I don’t know what people thought of me, but my velocity at the time was typing-bounded – I was certainly a very slow touch-typist by my own standards.

But time passed and I improved.

Spáñish Dvorak and symbols

Throughout the process I changed my setup quite a bit: I started my journey using the Programmer Dvorak layout with a TypeMatrix keyboard. After a few months, I switched back to my good old ThinkPad keyboard because having to use a mouse again after years not using it was a pain. A few months later, I switched to the Dvorak international, because the Programmers Dvorak layout didn’t quite suit me. Then, I tweaked the common symbols I use for programming so they were better positioned. Besides, although the bulk of my typing is in English, I still need to write decent Spáñish, which basically means using tildes on vowels and ñ. TLDR: the Spanish Dvorak version made things more difficult, so I’ve just tweaked the Dvorak international to accommodate tildes and ñ as I see fit.

At this point, I believe I can patent my own layout:

All the changes I did to the symbol positions have affected my ability to build muscle memory for them – sometimes I still need to look at some specific symbol on the keyboard. However, the current version has been unchanged for months, so I only need a bit more time for them to stick.

The numbers

Given that I was a QWERTY user for 15 years, I thought I would give the new layout a year before comparing any statistics. The fair thing to do would be comparing after 15 years, but I’m a bit impatient for that. I went to TypeRacer again and noted down the results for about 20 races. These are the numbers of this totally unscientific experiment:

A few remarks:

  • In terms of speed, it seems that I’m mostly there. My median speed now is 65 wpm, 2 words per minute less than before. I had a higher peak (83 vs 79) in one of the current typing sessions, but I was under 60wpm in more sessions this time.
  • In terms of accuracy, I’ve improved a bit. My median accuracy has increased by 1,5 points, and I had only 2 sessions below 95% of accuracy this time.

Coda

Overall, I’m very happy with the switch to Dvorak. My accuracy has improved, meaning that I can maintain a longer typing rhythm. Not having to correct mistakes makes me a faster typist as well, and by learning to touch-type I also have grown more endurance.

This experiment was very humbling but fun. I believe it increased my brain plasticity by an order of magnitude, and I’m hoping to improve my numbers as years pass as well. However that turns out, though, I think of this as a gift to the elder me, a way to prevent typing pain in the future and promote a healthy use of the tools I heavily depend upon.

by Andrés at November 01, 2017 03:45 PM

October 25, 2017

Andrés Maneiro

I spent the weekend reorganizing things, including my blog. I’ve got a new WordPress theme (independent publisher) which looks a lot more lightweight. I’ve consolidated the essays section with stuff that grew out of individual posts (I keep thinking that someday I’ll have the time to publish them as independent e-books), polished the about, fixed some links in the glossary, and started to reorganize the archives.

I’m also going to try a different approach in the following months: instead of having separate blogs for music, lifestream, thoughts, etc I’m going to publish everything here – I do not publish that much anyway, and I like the idea of this having a more personal touch.

by Andrés at October 25, 2017 07:16 PM

October 22, 2017

Andrés Maneiro

Learning to learn

When we want to acquire a new skill, we are faced with two choices: trial-error, or instruction. One is experience-driven or practice-based, the other is concept-driven or theory-based.

The trade-offs

Trial-error is the built-in mechanism humans come with to acquire knowledge and skills – our thinking processes are optimized for that. However, it may be expensive and impractical in some situations. For instance, learning to pilot an aircraft by trial-error is risky should you want to keep the chances of learning in the future high. We have developed systems that lower the cost of trial-error, though, such as pilot simulators. It can also be time-consuming: we just don’t have the time to trial-error every piece of knowledge our society is based upon!

Learning by instruction appears to be more efficient: we are presented with models and recipes that work, saving us a lot of time that we can use to advance our knowledge further. Nevertheless, the instruction is not always possible; sometimes the map of knowledge of a certain domain isn’t built yet, so we need to rely on the trial-error approach. Even most important is the fact that internalizing abstract knowledge not based on direct experience seems to be more difficult for humans.

This poses a question: how shall we learn?

The Dreyfuss model

In February 1980, Dreyfuss brothers published a seminal paper on how to teach: «A five-stage model of the mental activities involved in directed skill acquisition». This work was supported by the US Air Force, which was interested in improving their training programs.

What they said is 1) we should recognize the role of the first-hand experience in acquiring knowledge and 2) to become an expert it is necessary to learn the rules, guidelines, and maxims of the particular skill we are interested in.

The rules are the principles that always apply, they don’t depend on anything so they are context-free or non-situational. Examples of rules are the valid movements of a piece in the go game, the set of instructions in programming, the techniques in the Aikido martial art.

The guidelines are the principles that only apply in specifics contexts, so they are context-bound or situational. Things like josekis in the go game (sequences of moves in a specific part of the board), the design patterns in programming, or the katas in Aikido.

The maxims are principles that guide us towards achieving our long-term goal, they help us by assigning a value to guidelines: is this joseki worth it if I’m playing for territory in go? Is the ability to grow new features necessary for this specific part of the application? What specific throw should I use if I want to face the next adversary?

For one to become an expert, rules, guidelines, and maxims should be second nature.

Dreyfuss defines a 5-step process someone goes through to gain knowledge: novice, competence, proficiency, expertise, mastery. Others outline different systems that include three stages. What’s important is to realize that the learning process is at its best when we take a practical approach and theory is presented to the learner as they are prepared to assimilate the next artifact – rules, guidelines, maxims.

Coda

Learning to learn is probably one of the more important skills when we no longer know what’s coming next. The real world TM tends to be more chaotic and intertwined than the sequential process outlined by Dreyfuss. Realizing where are you at a particular skill will help you in making decisions about what focus on. For instance, am I a novice at skill X? Well, at this point, I’m better off focusing on learning the rules and imitate what others have done. And so on.

Learning also takes a lot of time – someone has even published a number, about 10.000 hours to become an expert in anything. It’s a lot! It may be discouraging. Luckily, a practice-based approach makes things more rewarding, and time flies when we are enjoying the process.

by Andrés at October 22, 2017 11:13 AM