First Piano Lesson

The outside of the music school.

I showed up for my first piano lesson with an open mind, not really knowing what to expect, nor having prepared anything. I found the right building and floor, located the door with my teachers name on it, and sat down.

At about a minute past my start time, the teacher emerged with the previous student, a boy around the age of 8–10, and had to make some photocopies etc. So at about 5 minutes past my time, I entered the room. In there were two digital pianos, one of them by which I sat down.

It seems the instructor also approached this with an open mind, as seems fitting for individual instruction. So I shared a bit of my background and interests. After 5 years playing the trombone in a school marching band, I feel somewhat confident reading music in the narrow band of the G-clef, but not so much the F-clef. I can construct triad major, minor and seventh chords, and understand inversions, but I have to think about it for a few seconds 🙂 I have dabbled with learning classical pieces, but my focus for this course will be pop music akin to Elton John etc.

The teacher did not have a set curriculum, and I happened to have brought with me a “Big Notes Easy Piano” score sheet of “Can You Feel The Love Tonight”, so we proceeded to have a stab at it. I had on purpose not looked at it previously, so ended up trying to sightread and play directly on the spot. It was predictably horrible, and at least I gave the “complete beginner experience” to the teacher. We decided to simplify a bit more for the first iteration. I would practice just doing chords with the left hand and single note melody with the right.

In addition to this, we managed to touch on a few basic exercises in technique. I was shown that the focus should be on the fingers being relaxed claw-like, in close contact with the keys, and minimise up/down movement. The first point I was corrected on, was assuming a hand position with my thumbs not actually over the keys; I guess that is what 30 years of Touch Typing will do to you 😉

The first exercise was, with all fingers pressing down on keys, play each individual finger repeatedly, and also trills with adjacent pairs of fingers. This was quite strenuous and will obviously build finger strength in addition to a certain level of dexterity and motor skills. The next exercise was playing adjacent keys up and down with both hands, while slowly advancing one key sideways on every iteration. To get used to a controlled tempo, I will practice this with a metronome. I will also make sure to not overdo these exercises, but rather try doing a few batches of 10 minutes every day.


  • 20 minutes is a very short time, but I assume it felt extra short this being the first meeting. And losing a few minutes at the start. I hope this truncation will not happen as the sessions get rolling, for all students.
  • The actual lessons might not give room for much practice, and will have to be very efficient to fit the timeslot. Hopefully the teacher will take command.
  • Finger exercises for strength is sorely needed (pun intended…)
  • I suck at sight reading, but working on that will have to wait until I am actually able to play a “slow reading” piece.

After the lesson, I am now working on learning the piece. Will report back with progress!

Time to do Something New

Roughly four years ago I started bringing a video recorder to work with me. In moments of privacy I’d record messages to myself. The gist of my monologues: “If you want something you’ve never had then you’ve got to do something you’ve never done.”

Me as a Fresh Udacity Grad

I was delivering auto parts around my state. A mindless, often thankless job. Naturally curious, I found myself languishing and knew a change had to take place. It was about that time that I found Udacity’s Front-end Nanodegree, enrolled in the first cohort and completed it eight months later. Before the end of 2015 I connected with another developer and we began co-freelancing together. It turned into Skragglies, a web design and digital marketing agency with a physical office and clients that loved our work.

It was great, but I desired to take part in more challenging projects. The old mantra began to play in my mind. “If you want something you’ve never had then you’ve got to do something you’ve never done.”

So it’s time to go full circle and teach myself the principles of computer science. I hope this will give me a stronger foundation of software engineering and pave the way to more challenging projects that promise to change the way businesses and customers interact with one another.

So here’s the plan. Take an accelerated pace through what I’d expect to learn in a BSCS program and then enroll in Georgia Tech’s OMS CS program. These are the courses I’m putting myself through. I’ll use Class Central to help me find the courses. Note that this list is greatly inspired by aGupieWare. (Thanks for putting this resource together).

Introduction to Computer Science MIT
Programming Abstraction Stanford
Discrete Mathematics ArsDigita
Principles of Computing Rice
Introduction to Data Structures and Algorithms UNSW
Theory of Computation UC Davis
Efficient Algorithms and Intractable Problems Berkeley
Data Structures Berkeley
Linear Algebra Through C.S. Applications Brown
OS and Systems Programming Berkeley
Introduction to Linux EdX
Programming Paradigms Standford
Object Oriented Programming MIT
Functional Programming MIT
Software Engineering Berkeley
Elements of Software Construction MIT
Computer Architecture Carnegie Melon
Introduction to Databases Stanford
Fundamentals of Computer Networks Manhattan College
Introduction to Cryptography Ruhr University
Introduction to IT Security Thummasat University
Introduction to AI Berkeley

Advanced Data Structures MIT
Analytic Combinators Princeton
Computer System Engineering MIT
The Hardware/Software Interface UW
Design in Computing UNSW
Principles of Programming Languages IIT
Compilers Standford
Cryptography 1 Standford
Cryptography 2 Standford
Bilinear Pairings in Cryptography BIU
Machine Learning Stanford
Statistics and Probability Harvard
Probabilistic Systems Analysis and Applied Probability MIT
Statistical Inference John Hopkins

So that’s the start of it. I’ve also rented a small library from my local inter-library loan system.

My Small Library

These titles include:
Concrete Mathematics
Gray Hat Hacking
Head First Python
Artificial Intelligence
Natural Computing
Becoming a Better Programmer
Python Cookbook
Algorithms to Live By
Database Design for Mere Mortals
Ada’s Algorithm
Algorithms for Dummies
The Developer’s Code
Scrum in Action
Srum: The Art of Doing Twice the Work in Half the Time
Sam’s Teach Yourself Unix in 24 Hours
Encyclopedia of Computer Science
The Art of Computer Programming

and for pleasure I’m reading Cryptonomicon by Neal Stephenson

I’ll keep a weekly update of my progress.

Are we doing enough?

How can we do more?

Image result for inspiring images

We all have the potential to make massive positive contributions to society and to the world but so often this isn’t the case — often we are holding ourselves back.

So what’s stopping us?

This depends on the individual but there are certain patterns. For me, the main three have been fear, naivety and ego.

I have been fearful about doing anything that wasn’t part of the ‘standard path’ or explicitly accepted by society. This included not questioning conventional wisdom as well as making ‘safe’ career choices.

“Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure.”

I have been naïve, with unrealistic expectations about how to make a positive impact. In the past, I have spent a lot of time contemplating grand schemes without taking action, not appreciating that endless planning will take you nowhere — it is the accumulation of small actions that produce results.

I have also spent a lot of time worrying about things that, in the scheme of things, are very unimportant.

“Most people major in minor things”

In the absence of a greater purpose, it is easy to let yourself shrink to your immediate surroundings, lose perspective and worry too much about small things.

My ego led me to give unnecessary attention towards how I appeared to others, sometimes caring more about doing things that appear good on the surface than actually getting to the bottom of what action is truly the best.

To liberate ourselves and make positive contributions to the world we need to remove our personal limitations. This is a gradual process but it involves conscious effort. To reduce my anxiety, I actively do things outside my comfort zone. To reduce my naivety, I keep asking myself whether I am maintaining perspective. To combat my ego, I take measures to reduce the effect of others in motivating my actions.

But how do we make a positive change to the world?

This may be the hardest question of all and I can’t claim to be in a position to answer it. In reality, there isn’t a clear answer. However, three important stages are required as a minimum:

1. Become aware of the situation

Understand the reality of the world and where you fit into it. Develop realistic expectations regarding the outcome of different actions. From my experience this is gained from a combination of personal real world experiences and tapping into the cumulative wisdom of others in the form of writing and audio.

2. Decide what you are going to do

Assess your strengths and personal interests in the context of the reality of the world and find something that you could dedicate your life to.

The Singularity University suggests “If what you’re working on couldn’t benefit 1 billion lives in the next 10 years, it’s not worth doing”. This is a pretty tough metric, but it emphasises the need to think big, beyond what we initially perceive as possible, to find a worthy goal.

3. Commit to it

In order to perform meaningful work, it is essential to commit as any meaningful problem will require someone to devote their whole life towards it.

An analogy is drilling for an underground oasis. You may drill 10ft in one area then change your mind and start working in another. After getting 10ft down, you may again decide to change spot. However to have the best chance of finding the oasis, you must choose an area to drill and commit to it.

Cal Newport describes how scientific breakthroughs are found in the ‘adjacent possible’ — the area just outside the edge of your chosen field. Therefore to be in the position to discover it you must first get to the cutting edge of your field — this requires sustained work.

In summary

We all have the potential to make massive positive changes to the world but we often ourselves back. To do this, all we need to do is develop an accurate view of the world, find our life goal and spend our whole life working towards it. Simple, huh..

Spike em métodos ágeis: Adquirindo conhecimento durante a Sprint

Para manter um time multidisciplinar, capaz de resolver problemas e propor soluções, é preciso aprender constantemente sobre assuntos diversos. E essa prática deve refletir na sua sprint e no seu produto.

O plano de desenvolvimento de um produto normalmente é composto por coisas que já sabemos e outras que ainda não, mas tentamos prever. Por isso, algumas vezes precisamos criar um item de backlog focado em explorar novas soluções e adquirir conhecimento para esclarecer o que não sabemos. No mundo dos métodos ágeis essa atividade é chamada de Spike.

O Spike tem o objetivo de obter conhecimento necessário para reduzir o risco de uma abordagem técnica inadequada e entender melhor os requisitos técnicos para aumentar a confiabilidade do time, e então desenvolver e estimar uma feature com assertividade. Assim você utiliza um tempo na sua sprint conhecendo sobre uma nova solução para decidir com mais segurança e poupar tempo e dinheiro com retrabalho no futuro.

Existem várias formas de conduzir um Spike e validar se uma nova solução é adequada ao seu produto e reduzir as suas dúvidas: fazer um protótipo, uma prova de conceito, um experimento, um estudo etc. Estas atividades vão servir para colher informações importantes para a tomada de decisão.

Quando fazer

Provavelmente você já escutou a seguinte frase: “Conheci essa nova ferramenta. Parece que resolve o problema X. Vamos experimentar?”. Bom, essa é uma ótima ocasião para criar um Spike.

Tomar uma decisão se é melhor usar a ferramenta A ou B, se deve desenvolver uma solução ou contratar/comprar uma, ou até mesmo se devemos começar a trabalhar com uma plataforma ou linguagem que o time nunca trabalhou antes. Essas são boas oportunidades para você ter um tempo na sua sprint focado no aprendizado.

Dessa forma o time ganha confiança técnica sobre qual é o melhor caminho para alcançar a solução desejada, reduzindo riscos e incertezas.

Como fazer um Spike

Deve ser tratado como um item de backlog. Ele deve ser criado, detalhado com o que se espera ao final daquele experimento, priorizado e alocado na sprint.

Veja um exemplo: o time tem que avaliar se devemos usar a arquitetura A ou B para sustentar a nova feature X. É proposto fazer um protótipo das duas arquiteturas e realizar testes de performance, testes de carga e alguns testes padrões. E ao final deve ser criado um documento descrevendo o experimento, os resultados obtidos e recomendações.

É importante que o Spike tenha um limite de duração pré-determinado, afinal em um time ágil e principalmente em um ambiente de Startup, você não tem tempo o suficiente para ficar pesquisando até encontrar a solução perfeita.

Listei algumas formas de como você pode controlar o tempo da sua atividade de aprendizado:

  • Limite de tempo: Ela pode ter um tempo de X horas, um dia, uma semana, uma Sprint ou até mesmo até uma data específica.
  • Limite de esforço: Você pode compará-la a outro item de backlog e reservar na sua contagem de pontos um valor de esforço dentro da sua sprint. Por exemplo: “A atividade deve ter o tempo equivalente a um item de backlog de esforço X”.
  • Limite de budget: Se é uma tarefa que existem gastos para ser testada, ela pode ser limitada por budget, por exemplo: “Você poderá usar até 50$ em tal ferramenta”.
  • Limite de possibilidades: Eu sei que sempre queremos ter acesso a todas as possibilidades para escolhermos a melhor, mas as vezes não temos tempo para isso. Então você pode limitar número de possibilidades para serem analisadas, exemplo: “Avaliar duas possibilidades de arquitetura para o mecanismo X”. E caso não sejam satisfatórias, você pode criar outro Spike para avaliar outras duas e assim por diante.

Entregável de um Spike

Esse é o momento de ensinar a equipe o que foi aprendido, independentemente de qual foi o experimento feito, seja um protótipo, uma prova de conceito ou um estudo. É importante que seja produzido um documento compartilhando informações relevantes como: detalhes sobre os testes feitos, evidências, os prós e contras, recomendações de qual ferramenta é melhor usar etc. Essas informações devem ser suficientes para a tomada de decisão sobre qual caminho seguir.

Mesmo que a solução ou a ferramenta não seja usada naquele momento — ou seja, você faz um experimento, mas os resultados não resolvem o seu problema — , o documento criado serve como histórico da decisão tomada e prevenção/defesa de discussões futuras. Ele responde perguntas como “Porque não usaram a ferramenta X?”, “Vocês já conhecem tal ferramenta?” ou “Porque vocês usam a solução A e não a B?”.

A cultura do Spike

Sempre que o time identificar uma oportunidade onde será mais útil fazer um Spike do que começar a desenvolver uma feature de imediato, deve pedir para priorizar um item de backlog focado no entendimento técnico daquela feature.

Por outro lado o Product Owner também deve reservar um tempo na sprint para o time adquirir conhecimento e dar recomendações para contribuir com stories que serão desenvolvidas na próxima sprint ou até mesmo em um futuro mais distante. O PO também pode se antecipar e sugerir que o time faça um Spike.

Ter uma prática de exploração registrada como atividade da sprint permite alinhar expectativas se uma tarefa está em pesquisa ou em desenvolvimento e ter um time mais capacitado para estimar as próximas stories. Isso dá previsibilidade de entrega da tarefa e do roadmap.

Ter um Spike ou não é uma decisão tomada pela equipe em conjunto e ela não pode atrapalhar os entregáveis da sprint, afinal você sempre deve ter um novo incremento no seu produto.

Estas são apenas algumas formas para manter o time em aprendizado e apto para tomar as melhores decisões sem prejudicar a sprint. Lembrando que cada time/empresa deve se adequar às suas necessidades.

Se você conhece outras opções compartilhe ou deixe nos comentários e auxilie a aprimorar as boas práticas em gestão ágil de produtos.

Phase 1 | Territory definition | 01.18.2018

Territory mapping

A rigorous and thorough research process is the foundation of any novel, thought-provoking and distinctive product. And it is equally important to carefully plan the research phase. This week, we would be channeling our efforts towards developing a territory map that would aid us to explore the kind of research we will need to conduct in the next stage.

A territory map is a visual representation of the combined knowledge of what we know and understand exists already in the world. It allows us to group elements, discover patterns, identify outliers, uncover relationships, commonalities and differences that exist between various elements. It provides a means of locating gaps, defining problem areas and finding opportunities. Territory mapping is a powerful tool in the sense that it reveals both a broad and an in-depth view of the space under exploration.

So far we’ve had two collaborative sessions on defining our territory map.

Session 1

In the first meeting, we laid out all the areas and domains that we know are related to Learning and Teaching. We sorted them into three broad categories:

What: Field of learning
Who: Learner type
How: Ways of learning

We discovered that there was a common interest in exploring the area of lifelong learning and decided to explore it further.

Session 2

In continuation of the first session, we used our time to plot the various platforms, users, technologies and interaction elements associated with lifelong learning.

We segregated the learning platforms in two major groups: Structured and unstructured forms of learning with some platforms like podcasts, books etc. that coexist in both. We mapped user types and technologies involved against the the various platform of learning that we’d identified.

Although we’ve identified the various, in my opinion, we could benefit from another go at mapping elements as we learn more about these areas.

Reading Material :

Osher — Lifelong learning

Types of AI

Why You Shouldn’t Be Afraid of Artificial Intelligence

Is AI the Future of Education?

Stage 1 Deliverables :

  • A presentation that details your plan for your exploratory research (with examples)
  • A territory map
  • Project definition that illustrates your current understanding of what you are working on.

We’re not just playing games — we’re learning

Why do teenage students get so bored with studying at school? What if they could take charge of their own learning, enjoy it and get better results. And what if their education could be relevant beyond the grades and become a foundation for the rest of their lives?

How can this happen? It will need many changes in many places. But it could start with one small step: learning games that are actually fun and make practising skills and knowledge part of the play.

Education under pressure

Education is a great privilege, but most mid-teens students find much of their studying boring and irrelevant. I won’t start quoting research studies to support that — just think about your own experience of school. What’s going on here?

It’s not the teachers’ fault. I believe that they are hard-working, under-paid people dedicated to helping their students — at least in the UK where I live. The problem is the society and education system they work in.

Governments rate schools based on their students’ results. Parents look at the numbers and not at the way the school teaches. Universities require ever-higher grades for entrance. Employers demand that schools produce workers with the exact skills they want this year. The media misuse statistics to run scare-stories about students falling behind. And everyone from the education minister down has an opinion about how teaching should be done.

So teachers have no choice but to try to follow all these demands. They concentrate on the exact syllabus and examination style for each subject. No time or headspace left to consider what the students will get from their education in the long term. No time either for introducing new teaching techniques that might make learning more rewarding and effective. And any new idea would lead to an uphill struggle against traditionalist voices.

Is it any wonder that school students end up seeing education as a slog that they must get through somehow to achieve that narrow goal of a bunch of grades on a certificate? Where they take a passive role and get taught stuff. Stuff that doesn’t seem very relevant to the future they will live in, pushed at them in the same way it was to their parents. Teenagers today live in a very different world, but a student from the 1980’s would probably not notice much change in a current day classroom.

There must be room for something better here.

There is another way

What if students were to take charge of their own learning? What if students were actually interested in what they studied, and believed that it was useful to them? What if the ways they learned were interesting in themselves? What if exam grades and skills for work were one useful outcome of a rounded and enjoyable education, rather than the only thing that mattered?

Schools and teachers would still be at the core, but the emphasis would be on learners learning, instead of on teachers teaching. Students would have the agency, the responsibility to learn what they needed. Teachers would still explain and check progress, but they would also guide students in other ways of learning and show them why the subject was worthwhile.

OK — this is a grand vision and a huge shift in thinking — not least for students who are used to being spoon-fed. It would probably take a generation even after everybody agreed it was a good idea. So rather than wait for that, let’s look at a small step we could take now to start giving students a desire to learn for themselves, and show it could work. Let’s get students playing games.

Games? You can’t be serious!

Most teenagers are prepared to spend hours becoming skilled at a computer game. They enjoy the interest or excitement of playing, and the satisfaction of their achievements. So if you can create a game that requires learning a school subject to play, you have given a student a reason to learn. An artificial reason, true, but it’s a lot better than no reason at all.

This isn’t a new idea. People have been writing about it for around 15 years — Jane McGonigal’s Reality is Broken is an excellent place to start. But no-one seems to be doing much about it. Current educational games tend to be aimed at primary schools, or are just basic quizzes dressed up. We need games that are fun to play as games in their own right, but happen to need knowledge and skill in a school subject to master them. As one quick example, imagine coming to a river you need to cross in a game. You can build a bridge, but only if you use your maths skills to calculate the dimensions. Now you have a real interest in cosines and Pythagoras, not just an imposed deadline for handing in your homework.

A future for learning

So that’s where my new venture Game To Learn comes in. We want to create games that give students a reason to learn for themselves and enjoy it. As a step further, we want students to help each other learn by playing as teams and contributing material to the games. We also recognise that we won’t have all the good ideas, so we want to make it easy for other people to create and publish games.

Let’s get one thing clear: we are doing this for the students. It’s not for the teachers, the schools or parents. If teachers and parents support us, that’s fine. If they don’t, that’s really great. There’s nothing like opposition from authority figures to get teenagers interested in something. And things stop being fun as soon as somebody is telling you to do it, rather than you choosing to do it yourself.

We’re not going to change the world of education overnight. But we can change each individual student’s world, one game at a time

Find out more

Thanks for reading this far. If this article has got you thinking, head over to the Game To Learn website to see what ideas we’re working on. Please pass on the link to any school students you know and see what they think — and tell them to sign up for a preview of the first game!

Game to Learn