Playbook output

Building products and startups is like max 40% playbook (certain failure) and 60% unique strategic creativity (a little less certain failure).

And those startups are made up of people (and an agent or 2). It’s kind of weird to me that we treat roles as playbook-work, but expect non-playbook output on aggregate.

Everyone learns about engineering roles, leads, CTO, CEO, Product Owner etc.

But what about Advisors? Generalist operators? Operational assistants? Or just founder friends? Whatever you call all of those, they do wildly different things and are wildly different people.

Most proper running small companies just have ‘people doing shit well’. And we make up some title along the way. Who cares.

So my note to self: ditch the playbook. Just do what makes sense and beware of anyone telling you ‘thats not the way things are done’. Who cares.

I now help other founders & businesses

**💡** I’m fully booked atm! Advising and building with friends at Ynteq, Diabot, and Reading Rhythms 🧘

I’ve been connecting a cool group of founders and operators lately through Catalyst. And writing a few small angel cheques while building my own product. All of that is new to me, and it’s been rewarding.

It’s been especially fun to have 1 hour coffees and see other founders’ trajectory change tangibly (some sold their business where they wanted to give up, others changed hiring completely, or resolved complex tax stuff).

If you measure a successful day by output, course correcting one another that way is extremely high value.

I realized I have some perspective to offer. I didn’t know that before. But 10+ years, dozens of codebases, startups and people further, I guess you do learn a thing or two.

Specifically in these topics:

  • Hiring
  • What proper cloud infrastructure looks like at your specific stage
  • Developing an architecture
  • Leadership for specific teams and personalities
  • Resolving founder/board conflict
  • Having difficult conversations (firing, feedback)
  • Security principles in the software development lifecycle
  • AI in modern businesses
  • Founder relationships (especially as a CTO)
  • Making introductions to good engineers in my network

I also realized I really enjoy helping out this way. It’s epic and I learn a lot.

So I’m trying a new thing; I’ll help other businesses & startup people with the above problems for max 4 hours per week - because that amount feels like play, and not work.

2 hours are taken, and 2 are still free. Compensation is all up for discussion.

2024 Annual review - a small review

I like hosting reflection groups. I try to structure this, like most things I host, as part of Catalyst.

This year, I hosted a small 2024 reflection group. I had around 8 carefully invited people from founder/tech/academic areas come over, and dig deep into what’s going on in our lives we like to let go of, understand better, or fuel in 2025.

To help everyone hit the ground running, I made this ‘A la carte’ menu people could choose from. I figured it might be helpful for you too. Here are some of the key questions:

  • What were your ‘catalyst events’ of the year? How did they change the trajectory of your year?
  • What habits led to the positive catalyst events? And negative?
  • Whose behavior merited celebration?
  • Where in my life or work am I currently seeking comfort when a little discomfort is needed?

We intentionally created an ambiance that allowed for honest /direct reflection.

If you’d like access to the hosting process, reflection prompts we used and some other good input, send me a Twitter DM. I’d be happy to share!

Message @zowielangdon


Grateful forBentaking some inconspicuous pictures!

Summary of Ray Dalio's 'Changing world order'

From: https://www.youtube.com/watch?v=xguam0TKMw8&ab_channel=PrinciplesbyRayDalio

I like making summaries, and notes. I figured I can publish some of them. So here’s one on a cool macroeconomics video from Ray Dalio:

What happened in the past, can happen in the future. Especially economic cycles with central banks; the system structure didn’t change much, so it’s just a system cycle we’re on. We have had central banks and governments operating for a very long time.

I think system changes that can alter feedback loops in the system (e.g. bitcoin) are bound to come, and this is something to keep watching.

He describes the process:

  1. Countries default on debts. Even after interest rates are 0. Then they start printing more and more money.
  2. Internal conflict emerges due to the growing wealth gap. Left (redistribute wealth) and right (defend those holding wealth) clash.
  3. External conflict between leading power and emerging power, like now with US and China.\

External world orders change after wars.

The Bretton Woods system, set up in 1944, was the agreement establishing the US world order with USD as a reserve currency. This was a key moment in history for the establishment of the new world order.

### Comparing countries

The rise and fall are heavily correlated. Education oftentimes causes innovation and trade, which in turn causes competitiveness and output, which can result in the financial center/reserve status/military.

The Rise: steps to power

  1. Win power by gaining more support than opposition.
  2. Consolidate power by converting, limiting, or weakening the opposition.
  3. Establish systems and institutions that make things work well.
  4. Pick successors well. A great empire requires many great leaders over time.

Dutch came up with a quarter of all major inventions in the world (at least in 2022, according to Ray Dalio..). Most important: ships and capitalism.

At some point, the currency of a dominant world power becomes a preferable store of value.

For a currency to grow:

  1. As a country grows big, transactions can be paid in its currency worldwide.
  2. Because it’s accepted worldwide, people want to save in it.
  3. Then it’s a reserve currency.

Then, everyone wants to save in their currency and is happy to lend it back to the issuing country. The trust in the institution increases so everyone is happy to buy government bonds!

The peak

Balancing feedback loops are active here.

  • The world power is more expensive, relatively speaking, as it has more money. This makes it less competitive, so cheaper labor is sought.
  • Other countries copy technologies and produce/sell them more cheaply which reduces competitiveness. In a global economy, this is part of a balancing feedback loop.
  • People that become richer, don’t work as hard. Then focus on the ‘nicer things in life’. They then become decadent in extreme cases.
  • Their kids, because of comfortable circumstances, have a higher chance of becoming complacent and a lot less resilient. E.g. the golden era of the Dutch, or the Victorian era of the British.
  • They will borrow more because they bet on the stability and rise to continue. Little do they know, they’re just living a cycle. This creates a bubble.
  • The wealth gap grows more and more, as there is always unevenness in systems. This is greatly enhanced by the bubble as the state of markets is a multiplier.
  • Countries end up financing domestic overconsumption through means of massive borrowing and inflation-induced spending. However, the actual economic growth and income are not on par with the level of borrowing and spending (this is what we’re seeing now in the West). On top of this, additional costs are made to maintain military power, relative to the size of the power (larger = more spending)
  • At this point, the empire is simply not profitable and becomes bureaucratic. This increases internal and external friction and chances for escalation: war.
  • Naturally, the world power ends up borrowing from the poorer (competing) countries that save more. This is easy because the lending country already has the dollar. This borrowing happens often through the issuing of government bonds.
  • Because of all these effects, people are closing their ‘positions’ in the reserve currency, looking for other stores of value.

The decline

  • As the economic situation declines, conflict increases.
  • The country, desperate to maintain some stability, starts printing money (inflation), digging its own hole further. First gradually, and eventually massively.
  • For the Dutch and British, this was the repayment of war debt. For the US, it’s 3 cycles of ‘Boom and bust’: dot com bubble, mortgage crisis, and pandemic.
  • Internal conflict increases even more. Political extremism increases, and populism rises.
  • When the rich feel threatened, they will move their assets ASAP. This reduces income for the world power since domestic economic activity (taxable events) further decreases. This creates a feedback loop: more inflation needed, more friction, more fear, more fleeing, more inflation.
  • Populist leaders rise. Dictatorship on the loom.
  • These crises make the world power temporarily very weak, increasing external risks (other countries invading).
  • There is basically no money to spend on the military at this point. War ensues.
  • A new power is established.

Since currencies are actually forms of debt, as the currency falls, debt is reset.

Right now

  • Dollar sell-off has not begun yet (2022-05-31).

The future

It depends! A country has to look at its own vital signs and act!

A nations greatest war is with itself.

The only two things we have to do:

  • Earn more than we spend
  • Treat each other well

Meaning excerpt

Expedient experiences come about by following blind impulse. Meaning follows from its more mature counterpart; intention. Meaning emerges when impulses are regulated, organized, and unified. From the interplay of the possibilities of the world, and the value structure operating within that world.

Taken from the book 12 Rules for Life:

More powerful than mere words can express. Spanning the entire breadth of human emotion, from despair to exhilaration. Meaning is what manifests itself when the many levels of arranging themselves into a perfect functioning harmony. Such that past present and future are at once redeemed and reconciled.

Consistency is for the ego

One could apply consistency because we know it’s important. This results in, well, consistency.

However, you must wonder: what is it good for? It is certainly a test of willpower. But does it enable you to create something novel? Is your output stimulated positively?

For example, we could do a meditation every morning. This could be done out of discipline. Naturally, we shouldn’t skip meditation because we just don’t feel like it. But what if you wake up feeling calm, centered, and very creative? At that point, choosing to be consistent might diminish your output.

Inspiration is perishable - act on it immediately.

— Naval (@naval) December 11, 2019

Or you might wake up tired and groggy, and know that a workout will do you more good in that moment, and then end the day with a meditation before you go to bed. If you meditate anyways, you need to adapt to the structure you impose on yourself.


This is consistency for consistency’s sake. And I think it’s actually ego that drives it. It feels good to check all your boxes. But is that a good way to stimulate neural or neuromuscular adaptations? Perhaps. Is it the only way? Probably not. The best way? I’m convinced it isn’t.

Macro: Be consistent.

Micro: Be adaptive.

Macro: Measure and reflect.

Micro: Reflect and experiment.

Macro: Set goals.

Micro: Take action.

Relationship^2

A Structural tool that makes you - sometimes painfully - aware of your position in your relationship with something. You could also call it the meta relationship. Ben and I call it relationship squared.

Example:

Oftentimes, you have an opinion about your home town. This is your relationship with your home town. I’ll use my own hometown Amsterdam as an example.

In my case, I can ask: what do I think about Amsterdam?

The answer might be: busy, fun, pretentious, fulfilling, superficial, and successful.

Great! That tells me a lot. But I have more to extract.

Next to my opinion of Amsterdam, I also have a relationship with my opinion of Amsterdam. This is my relationship^2 with Amsterdam.

I miss my own position in my opinion. What do I think of my opinion of Amsterdam? What do I want to do with it?

I don’t have direct control over my opinion of my home town, Amsterdam. I do have control over my relationship with the relationship I developed over time. I can move away, I can see my own faults, and I can change my relationship with my opinion of my hometown.

It won’t change Amsterdam, but I will be able to change my relationship with Amsterdam by looking at how I feel about how I feel.

I apply this to my own relationship, to exercise, work, and sleep. You name it. Whenever I see a change in my behavior, I now look at my relationship^2.

Digest - Stoicism and building software without a real computer

Back!

Some learnings

Planning

Planning is the art of finding consistency in dealing with inconsistency. Instead of making a plan and expecting it to be followed, make a plan to take a direction and follow the rocky path to the goal. Take a moment to look behind you, and forward, and decide what steps to take.

In terms of my own posting, I’ll have to adjust again. I’ll be improving the approach: only a short sum up of what I read, with a strict format and less length. The time to produce should be under 30 minutes a week, next to the reading. The stuff I research will be done in the form of long reads or a series with more dedication.

2 weeks of consistently interrupted sleep

Sleeping in 5 to 8 phases of 1 to 1,5 hours instead of 8 hours straight (or more) is a completely different experience from sleeping 6 to 7 hours instead of 8. Some observations comparing interrupted sleep with simple lack of sleep:

  • I felt less tired but more intellectually restrained;
  • I was more open to chaos, and a lot less structured in thinking and dedication;
  • I experienced a severe lack of focus, but enough motivation to work;
  • Coffee worked better than with lack of sleep;

Note: The observations aren’t taken from a mentally or physiologically neutral stance, as I had an eye infection that impaired my overall physical and mental stability.

As an engineer, you don’t need a laptop

Not having my laptop for more than a week got me to forcibly get creative. As a result, I’ve found that I can work productively (even more productively, I’d argue) from the terminal only, using a remote server that runs vim/tmux and a load of other configurations to make life better. The only thing you need is a terminal emulator and an SSH/mosh client (mosh is a neat replacement for traditional ssh that ditches many connectivity challenges! I use it happily now).

You can use a Bluetooth keyboard and a tablet, smartphone, or raspberry pi as a development environment. No more worries about closing your laptop, losing state, or more importantly: not having enough RAM/disk/CPU. And it’s cheaper while being completely integrated with the cloud! There are some challenges like file sharing, but I have some tools in mind I could build for that.


Quite the portable development environment, albeit not ideal in terms of screen real estate.

Random thoughts

  • Use your senses to fill up time! They are the ultimate game and you always have them with you
  • Try this: notice something you are not looking for! Or try to distinguish 3 smells consciously during the day. Or sit somewhere and sketch the view. Look at or through an object (window?) for 5 minutes that you’ve never seen
  • Not improving in a changing world is more dangerous than changing. So change.
  • ‘Awesome’ is not as simple a concept as it seems, looking carefully at its meaning: being in awe. In its full context. Being in a state of complete awe towards something is a very valuable idea.
  • Use voice messages purposefully - think about the content before you send them. Voice messages cost the listener quite some time, and often aren’t effective for others.

Books, articles, podcasts, videos

The art of noticing on ‘Art of manliness’

The art of noticing is an easily overlooked skill over how we overlook the beautifully ordinary things around us.

The book is on my list of things to read without a doubt. A nice insight from this episode was that we have constant entertainment around us. We’re just not training the muscle of noticing those things actively, as we are inside of our own minds so much. A practice I am integrating into my morning routine thus is a 2-minute session of noticing. By doing this every morning, I can increase the amount of time I spend noticing the fascinating experiences of seemingly benign things around us. When you have the chance to look at something truly aesthetically detailed and/or pleasing, maybe take 5 full minutes to just watch it.

How to think like a roman emperor by Donald Robertson (audiobook)

A gem. It’s written by someone that’s a specialist in CBT (Cognitive Behavioural Therapy) and has a MA in Mental Philosophy. Next to a great narration of the story behind Stoicism and Marcus Aurelius by the author himself, he gives a psychological, historical, and philosophical approach to practice working on improving your mental health. From dealing with anxiety, addictions and to just being a happier person, there are amazing insights into Stoic philosophy and Robert’s take on it. I’m working on a long read on this topic, together with a long read on emotions.

Stoics in a nutshell: Stoics were committed to action in the service of wisdom and justice. It teaches us how to reconcile a commitment to determined action in the service of our fundamental values and principles with emotional acceptance so that we don’t become upset if we encounter setbacks or were thwarted along the way. The most important thing to stoics is the intention to do good in the world. - Donald Robertson on the Art of Manliness

Good habit: Ask yourself often: What kind of person do I hope to be? What would a truly wise person do?

Rituals are your personal grades: Set rituals, morning and evening, that allow you to constantly improve.

Your concept of who you are is f*cking you up (Mark Manson)

Values define who you are. What we are is an aggregation of what we choose to value in this world. Your actions will be defined by the things you value. It’s easy to miss that your values aren’t facts, they are actually decisions. Maybe not conscious, but completely and undeniably your personal responsibility nonetheless.

If you are aware of the things you value, you can consciously decide what you value. Do you value money? Do you value intimacy? Do you value challenges?

A good trick is to ask yourself: what would happen if I stopped valuing this thing? Do you want to let go of desire?

Things to try:

Write down your medium-term goals (2 years +). Ask yourself: why do you want those goals?

Write down what you’re grateful for. Ask yourself: Why am I grateful for these things?

Three laws of emotion, emotional analogies on Newton’s laws:

I added what they mean to me as personal notes.

  1. For every action, there is an equal and opposite emotional reaction → you’re a reactive machine;
  2. Self-worth (or identity) equals the sum of our emotions over time → You are a collection of what you feel. Control your experience, control your life;
  3. Our identity will continue to be our identity until new experience acts against us → Your character is only really shaped by feedback loops in the form of challenges;

My biggest takeaway:

Choose the right problem to throw yourself at, consistently. Reflect on what problem it might be. The greatest virtue is how we manage our own mind: you will have to solve problems in any case.

Quotes

  • The overlooked is the beginning of creativity - Rob Walker
  • Caring about something is the ultimate goal of attention - Rob Walker
  • No plan survives contact with the enemy (DevOps)
  • Beware of little expenses. A small leak will sink a great ship - Benjamin Franklin
  • It’s not what happens to you, but how you react to it that matters - Epictetus

Happiness ensues values

It’s really hard to value what’s valuable. We judge nearly everything around us by the values we have, and those values are often not ones that we decided on consciously.

The Cambridge Dictionary describes ‘values’ as the principles that help you decide what is right and wrong, and how to act in various situations.

That definition isn’t far from what can cause war. Seems pretty important to get right.

Our happiness is based on our values

Some people sold millions of records, and still feel like a failure. For many of us, it’d be an accomplishment we can only dream of.

We judge any situation with one of our underlying values subconsciously (this is our ‘conditioning’). And any given value that we compare a situation with in turn dictates how we feel about a situation. This experience further develops our values, and we get a cycle. Now, maybe take a second to reflect and look at a value you used in a recent situation you feel strongly about. What were your values there? And maybe more importantly, how did they get there? Do you actually agree with them?

This might be obvious for those that have reflected deeply on what constitutes happiness and fulfillment throughout life, but overall it’s really hard to consistently apply this knowledge. A specific focus on what values are and what role they play in our daily lives is very easily overlooked.

Rocky road

By listing the values we use to judge everything around us as we go through life, and by taking the time to decide how we think about these values, we can start consciously improving the values we have by aligning them to where we actually are in life. Like most things that improve our lives, this is not a ‘one-off’ trick. It requires constant dedication to reflect, and even discuss them with those that we deem capable and trustworthy enough to help us decide the things we choose to value in life.

My own path wasn’t straightforward. There has been a large portion of my (still short) life where I went day to day thinking that making a lot of money and ‘being free from limitation’ was my ultimate goal. Being the best at what I do, and beating others by combining skills that many weren’t capable of combining.

I was wrong, and the moment I started realizing it, I became happier and more successful on my own terms. Freedom ‘from something’ is not real freedom.

The mistake I made was that I built values, as many people do, through comparing myself to others that I thought were better than me, without realizing who they actually were. I distilled an idea out of people (which isn’t even that respectful to others, actually) and looked up to it. I thought they had lives that were without my problems, were more privileged, smarter, cooler, you name it. I then projected my future idea of who I wanted to be based on the values I built through these comparisons. This just originated from my own self-doubt.

I did eventually get close to the lifestyle I wanted. Or at least, I got to the point where I covered my bases and was able to ‘not care about money’ at a young age, because it came in faster than I was able to spend it. However, I wasn’t actually happy for a relevant period of that time. My ego grew, and it wasn’t legitimate. Slowly but surely, I ended up not having as many stable values anymore as I actually ‘fulfilled’ the ones I had, so I ended up more ‘valueless’. This was pretty worthless. After some extra screwups and big learnings with support from amazing people, it became clear that values make up personal fulfillment and should be chosen with your experience and current living environment in mind.

I didn’t realize that the values I had were based on my own discontent with the world. Many values I had were shaped by resistance. A resistance to where I came from.
Where I came from, in turn, developed my initial values: to not be like many of the people I saw while growing up. Part of these values was good: I subconsciously surrounded myself with people that I looked up to. But at times, those people weren’t good for me either, as many values they had didn’t overlap with my personal needs and values. For example, on health or friendship. Because I valued ‘moving up’ so much, I sacrificed many other values I had. When this happens these ‘leftover’ values wither slowly, and you can feel this in your overall satisfaction in life. It chips away at things you care about and can cost you relationships, freedom, and even health.

Now, I have a better idea of where values should be. You have to start somewhere, and the rest requires constant attention and reflection. Then, it’s your responsibility to care for and cultivate them as you live on.

‘Good’ values

So then, what are good values? Based on some interesting reads, that I hope to add more to in the future, there are some basics we can uncover. Good values should be, it seems:

  • Timeless: you never reach them. They constantly challenge you and allow you to try and apply them in your life. You can also fail and retry endlessly, getting better at manifesting them;
  • Internally enforced: They come from the way you handle yourself. They are a responsibility you set for yourself and work to maintain throughout your life;
  • Constructive and generative: they rub off on the world around you and aren’t there only to support you. They should evolve and stimulate a certain ‘harmony’ or ‘homeostasis’ with the world;
  • Fluid: values are powerful because they are ‘metaphysical’ and can evolve freely in this realm. They are constructed from extremely complex convictions and emotions. We should try to integrate and cultivate this mental complexity by challenging our values and open them up to challenges by others and reality.

Some examples of values I think are reasonable:

  • Pursue what is wholesome and not simply pleasurable;
  • Be honest - try to say what you really mean;
  • Work hard - don’t be lazy;
  • Try to understand people before you judge (and after you judge) - in context, every reaction is understandable (maybe not ethical);
  • Look at failure as a process and part of a responsibility to improve - don’t allow yourself to mentally make yourself the failure, and don’t become your own tyrant;

Values of a secondary order

Everyone has aspects - like career or fitness - in their life that they find more important than others. These things are individually meaningful and therefore lend themselves for further refinement of values I’d call ‘values of second order’.

Examples of aspects that are worth listing and developing your values in:

  • Personal goals (always let them revolve around your personal and chosen values) - think ‘learn throughout life’, ‘be fit, ‘be emotionally balanced’, ‘do not take yourself seriously, ‘eat healthily’;
  • Community (outer layer of people you know and have a relatively superficial but valuable relationship with. More transactional) - think ‘share knowledge, ‘stimulate others’, ‘show emotional support’, ‘give straight feedback’;
  • Friends (the ~5 to 10 people you see often and are very open with) - ‘share experiences’, ‘take risks’, ‘love clearly’, ‘support each other;
  • Best friends and partners (perhaps the ~2 people you feel completely and weirdly comfortable with) - ‘support unconditionally’, ‘be brutally honest, ‘give radically’, ‘do crazy new things, ‘total commitment’, ‘be there unconditionally’;
  • Finance (how you want money to work to support your other values: money is a means, not an end) - ‘spend minimally’, ‘earn consistently’, ‘live freely’, ‘grow organically’;
  • Appearance (how you appear to others) - ‘be confident, ‘look for getting out of your comfort zone, ‘try new things, ‘laugh about yourself;
  • Exploration (new experiences that might or might not enrich your life in unforeseen ways: think traveling, trying yoga) - ‘burn bridges’, ‘embrace letting go’;

Of course, this is by no means meant to be a permanent and consistent system. I just find that I have values in these aspects and very few of them overlap in all aspects. Some might be conflicting: in ‘Exploration’ you might find ‘burn bridges’ important, but not in finance or friendship.

I might find new topics, there definitely are and the ones above aren’t perfect. But these seem a good start. Values are to be developed!

Conclusion

Developing values you can explain and argue for with your current way of living, friends, job, and lifestyle in mind will help you to make decisions that allow compounding results throughout your whole life. If you work on a specific value and the manifestation of it your whole life, the result is amazing. Our potential is in the fact that we can commit years to one value like ‘be fit’ and end up learning multiple martial arts, anatomy, and gymnastics.

This becomes transferable and tacit knowledge that we can share with people around us that have similar values, and even the next generations.

The dance with our own values gives our life meaning, constant challenge and reward, and a lot to share with the world. They make us more complex and complete as human beings and allow us to grow toward true mastery.

Rubber duck debugging

As if you’re explaining the problem to a child (or better yet, an actual rubber duck), go through a situation step by step.

Useful in programming, and can be in real-life situations as well.

When you’re overwhelmed by a decision and its impacts, take the time to divide the problem by rubber duck debugging. Then conquer by doing ‘commitment grounding’.

Even when faced with a complex problem, rubber duck debugging and following up with uncovering the essentials of the problem will often provide you with a very clear view of the solution. The question might still be: are you willing to accept it’s the most practical one?

Random information digest

I’ve been an avid supporter of reflecting deeply on things I learn, think, and feel for a long time now. The tools I use are notes, walks, meditations, and some (not always private) mumbling to cultivate new ideas in my thinking.

For a while now, I’ve been playing around with the idea to reflect on the things I read every week, since I’ve been switching around some of my habits regarding information consumption over the last months. So here is the first attempt! I use the Timing App to track what I read (and how distracted I am) in a week, and I use Bear Notes like a complete addict to take notes about basically everything. Then Trello to organize my tasks.

Getting introduced to a way to organize my digital life using PARA has definitely played a role in preserving the mental bandwidth to commit to this. Thanks, Kent and Ben!

So here’s a small summary of things I read that were pretty interesting. I listed the cool stuff cause, well, it’s cool, obviously.

Cool women in tech

When talking to a close friend that cares about equality and the challenges, I often stated that signs I got from the tech/Python community show potential. I thought I’d list some cool tech ladies that I follow and find inspiring.

Articles/vids

This shows the pragmatic perspective of someone that experienced a reason for refining her way of viewing trust and reflects this on leadership. Also tells a little about why trust needs to be transparent (I believe on a personal level, but I also saw this so strongly in my position as a CTO at Blockport). It’s amazing how big the impact is on trust, safety, and a feeling of connectedness, if you entrust others with information.

It’s a great example of how taking action on a value like trust, by entrusting others, allows this value to manifest itself in others (since they feel how good it is to have shared responsibility for handling information).

Well, it’s mine, so not too much to say here. I re-read it and updated it to refine the thoughts there, as they were quite vague at points (and possibly still are). But I feel this reflects some of the thoughts I have on suffering. Also, I think I have a lot to learn about writing, so I’d love feedback :)

Relevant for anyone, basically. But I think especially if you deal with social anxiety (which can come over me too). I would implore anyone to honestly reflect on the impact the Social Survival Mammoth has on their life, and in what areas they can start to make little improvements.

Just some small improvements, as he mentions, will show you a way to balance the mammoth and start allowing it to work in your favor. At times the article might attribute a little too much influence over our lives to the metaphor, but at the very least it’s a great way to indicate that we’re just very very wrong in many assumptions and decisions we make.

Interesting to me since I believe in the economy, but also that it needs to change. The economy is such a fundamental part of our well-being and productiveness, and I believe it’s a machine we should learn to manage better together (where technology can help tremendously).

Quite interesting to indicate both the faultiness of the way we often portray the effect of the economy on the overall well-being of a society and how skewed the public notions of our economy’s strength often are due to awfully ill-applied metrics. I don’t always enjoy the rhetoric of these videos as much as I value the facts.\

But then again, it’s a way to create a stronger identity around their perspectives in a benign way. It’s hard to make videos that pose contradictions to peoples’ beliefs and state facts a fun experience, and they take the edge off by making some jokes.

The PARA Method: A Universal System for Organizing Digital Information

I implemented this system in my notes and drive immediately upon reading it. I had been looking for a generic system for so long! Being a big supporter of systemized organization combined with self-organization (something I like to see in DevOps and agile cultures), I love how the quality of a system is well expressed in how it synergizes in a chaotic environment (I’m the chaos, PARA is the system). So far, it’s been working well!

A Simplified Account of Kant’s Ethics

Interesting to remember the structure of Kant’s Categorical Imperative, and to reflect on it in the context of discussions I had about ethics with very smart people.

I advise anyone interested in ethics to read this through, as it’s a great way to show the complexity of ethics. I often find that going through the perspectives of philosophers on ethics shows how incredibly complex it is, and has led me to believe that ethics is subjected to evolution and is a construct that has its power structure. This does imply there is no universal good or bad, but it’s just contextual.

‘Good’ is a choice, not a given fact.

State machine replication

For the more techy people with an interest in distributed systems (obviously relevant in the blockchain). This a nice recap on some of the underlying principles that can be easy to miss if you’re used to working on a higher (more abstract) level.

Ciphertext-Policy Attribute-Based Encryption (did not finish yet)

I’ve been slowly thinking about the implementation of ABE in a project I want to start working on seriously. Attribute-Based Encryption is a method of encryption that can allow us to not use private information solely for securely storing and transmitting data but allows us to use a ‘set’ of attributes that need to be present to decrypt information.

A good implementation of this, I believe, can lead to more user-friendly and more secure systems. Of course, it warrants much more research before working with this. And probably more experts in general. Nonetheless a fascinating topic!

Info consumption goals for next week:

And probably some more :)

Happiness and trivial suffering

How can we grow through suffering? The immediate experience and the cultural notion of suffering are often negative. Though if we relate suffering to the effects it has on us, we can often see that our response to suffering is what can make us virtuous and puts our personal, cultural, and physical resilience on a path toward growth.

Take care that these are just thoughts, I’m not trained in psychoanalysis. Heck, I don’t even follow my own theories. But I do read about this topic a lot, and like to think I am ready to have some of my own thoughts on the matter to grow further.

In psychology - especially applicable to those with some form of anxiety - the brain can become accustomed to anxiety and develop a pretty constant state of ‘fear perception’ that induces stress and emotional resistance. Some personal reflection taught me that it’s quite simple to see this in my own mind, and sometimes in others as well. At one given time we find ourselves on one side of the spectrum: the side of anxiety, or motivation. The one extreme causes us to close off and refrain from showing any vulnerability (physically or mentally), whereas the other causes us to do the opposite (which is often necessary to manifest motivation into action and make shit happen). The trick, I believe, is to be able to induce this state of motivation structurally through habit formation, or be able to move more to the neutral middle consciously (using a variety of mental tactics). Consistency is key.

What I found interesting is some tendencies I think correlate with the state of anxiety in this spectrum that often indicates a pattern of someone’s mental state:

  • Tendency to become generally passive - or even lethargic/hopeless/panicked - without a high clarity of challenge and reward that is created externally. Manifests in lower risk-taking, feeling the need to confirm safety before taking any action, and induces further conformity (interesting read here: Why you should stop caring what other people think);
  • Reduced ‘causal’ reasoning. Reasoning in the form of ‘if this, then that’ is vital to start orienting towards taking action. Reasoning switched either to trying to emotionally analyze a situation or simply becoming emotional/anxious;
  • An overall increased fear of confrontation and misperception of its likelihood (which is easily quite skewed), both personally and physically. Confrontation is not bad, it’s merely potential for either resolution or more escalated conflict. We are the common denominator of all conflicts in our lives, thus we have a clear role to play in all of them. There’s substantial meaning in conflict (be it with people, yourself, or your environment);
  • To see discomfort as a reason to relax and distance oneself - basically avoiding the challenge - instead of as a reason to persevere (which could mean you have to rest, but that’s different from avoidance). This coping strategy leaves little room for relaxing during good times, as a reward, instead of as a coping strategy for challenging times. We need to push through and reward ourselves (ideally randomly) to stay most motivated and cultivate good habitual patterns;
  • Responding defensively instead of being inquisitive. Resisting, rather than taking control and deciding what to do. Forcing the discomfort of confrontation onto oneself can lead to a true experience of the power we have to choose, merely by influencing the way we react to external stimuli. We can’t control a situation, but we control ourselves. Annoyingly so, we are structured to view events as external situations rather than our own experiences, making cultivation of this insight rather challenging.

But how did we get there?

Now, time to make an interesting jump: this consistent, very much subconscious notion of fear in our conceptions of the world leads us to value abstract ideas around morality and the ‘good’ more, it seems to me. It comes from the primal functioning of our brain that is extremely focused on preventing bad shit from happening. Our conscious thoughts reflect this subconscious fear perception, so much more than we think. It greatly impacts the things we value and believe.

The more we use the notion and the softening effects of ideas around ‘true’ good, the more we calm our often unnecessarily panicked minds. Jiddu Krishnamurti, too, noted that we are only scared of our own thoughts. Within these thoughts, I feel the way we reason towards ethically ‘perfect’ and/or consistent ideas (which, when looking at the causal nature of the world isn’t that realistic) is a good indication of our - totally natural and acceptable - tendency to avoid confronting ourselves with the fundamental responsibility to act instead of judge. It leads to virtue signaling and other forms of non-constructive idealism, at times. Don’t get me wrong though, there is amazing power behind conveying ideas.

But the ideas are by no means a virtue on their own.

We are scared of fear itself, and not of reality. We easily miss the goodness in the world as it really is, because our thoughts reflect the torments of our minds on the world we perceive, causing us to guide ourselves towards ideas of good that often result in bad judgment and higher sacrifice for the good. The sacrifice itself is immensely valuable and underlines the power of ideas, but we should use it sparingly to not get caught in the trap of ideas, which in our causal world, can lead to interesting second and third-order consequences.

Why suffer?

This sacrificial tendency causes more suffering and takes away our focus from the trivial discomfort needed to actually achieve these long-term ideals. Avoiding sacrifice or suffering is on its own a form of suffering.  

This suffering is at times akin to martyrdom and merely exists for an idea and not in a well-attuned response to reality. What then, are we creating, besides a world based on ideals, that are based on feelings that don’t exist in a causal equilibrium with reality? How more can we diminish reality to something that we can neither experience the suffering, nor the true beauty of for what it is?

But I feel we need to continue to expand our souls, and I hope I’m not alone in this belief. I want my mind to be capable of being ‘here’ and ‘now’. Keeping my mental and physical posture under the stresses of the world, so that I can shape myself into a being that can live in harmony with reality a little better every day, well accustomed to its hardships and rewards. This is, to me, achieving something close to true fulfillment.

The first step, I believe at the time of writing, is to let go of the notion of some ‘continuously perfect equilibrium’ that we see in concepts like ‘good’, ‘balance’, ‘happiness’, ‘trust’ etc. These things have an interesting effect on the mind, whereas they make us compare what is to what could be whenever we judge a situation subjectively. Of course, the notion of ‘ideas’ is the very essence of our intelligence and constitutes a large portion of our extraordinary capacity to adapt to our surroundings. Yet I feel that in this world where I’m generally very safe, I’m guided by this tendency to extrapolate the notion of ‘perfect good’ into my judgments of the trivial. It evolves in my tendency to avoid trivial ‘discomfort’.

Avoiding discomfort is often unproductive and a sign of our ‘primal tendencies’, whereas avoiding real danger is good. But honestly, when are we scared of something truly dangerous? We often don’t even see it coming.

How I think it can work better

A state of avoidance, for me, is my tendency to not consciously acknowledge responsibilities, procrastinate my tasks, and generally be lazy and seek the easiest path. Naturally, this has a certain pragmatism to it: I leave room for more novel experiences, by preventing the responsibility I can predict.
However, our lives are so comfortable nowadays, that I am not actually getting used to avoiding responsibility more than I need to (and therefore, trained adaptability). I’m used to being able to avoid the discomfort of responsibility very very efficiently, mentally.

It makes one suffer more since our lives demand responsibility of us.

I see the detrimental effects of our inability to embrace suffering as a part of ourselves and our reality in my social anxiety, disorder in my living environment (postponing cleaning), and my general emotional sensitivity. This causes me to be more neurotic than I have to be. I think one would thrive on making trivial discomfort a habit. Things like this are cleaning, exercising, and a general focus on achieving order, intellectual prowess, and aesthetic greatness.

We predict the experience we might have when we do something, using the effect we think we could have on reality when we undertake something (I will feel this feeling if I do this thing). The thing is, the world is way too complex for us to predict even our own experiences let alone the non-isolated consequences of our actions.

Were we to get in touch with the world around us more in all its diversity of ideas and people, we would find ourselves confronted with challenges and situations equally complex - and rewarding - to our own intentions.

So, let’s look for the small change we can cultivate consistently like making our bed or doing only 10 sit-ups, giving someone a genuine smile without caring about the response, or telling someone how you feel. The idea is to embrace trivial discomfort and acknowledge it in the world, and keep aiming for our ideals while staying fully capable of bearing the true equilibrium of life: change and our own feelings. Aim high in ideals, aim low in actions. Achieve less but achieve consistently. Do more. And don’t forget to love.

Of course, goal setting and the notion of some ideal and attainable thing we can work towards is essential for our fulfillment. I’m trying to reflect on the fact that there is a lot of space for the trivial between where we are now, and the future goals we aim for.

In essence, we decide how we judge our own experiences and how we react to our own feelings. Our feelings are as they are, but our conception of what to do with them is where trivial suffering and the ability to welcome it, with a feeling of exhilaration and appreciation, truly allows us to control our mind’s reactions and with this, our lives.

Reflection on gratitude

Taken from the podcast of Broken Brain (#32, winning in life), where the founder of Bulletproof, Dave Asprey, is a guest. (He has his own podcast as well, called Bulletproof Radio).

If you want to do everything you do with excellence, you’ll want to invest in yourself. You’re your most valuable asset.

Lately, I’ve been reading, thinking, and listening more about things related to happiness and power. Some things I learned are listed under the ‘Thinking tool’ tag. This thinking got me to look more attentively at what these things are, and how they manifest in our lives.

You’re your only tool and life-long partner. Improving your life and that of others greatly depends on how you develop yourself and the relationship with yourself. Not only does your personal experience improve, your consented power - the power that people give to you with their consent - does too.
This allows you to reach goals of growing in impact, mental strength, and handling and maintaining relationships well.

Gratitude

Focusing on positive goals that make it worthwhile to make sacrifices, and things that give you and the people around you a form of self-actualization - or better yet: ‘human flourishing’ - is immensely valuable. Basically: help others grow by growing.

Doing this without treating people as purely a means, but as an end (a Kantian reference) is a virtuous act, I believe. This form of treating the individual experience of others as an end, and not as a means, promotes constant gratitude because it stimulates us to act in terms of the things that give the experience meaning. However, there are many ethical questions around this approach, and the sharing of values is still a major variable. Different topic, though. Back to gratitude…

Gratitude, appreciation in your practice and thinking will reduce your stress a lot. Try to make it a daily practice.

I recently heard somewhere (as in; not scientifically grounded) that if you are in a stressful situation, and you experience gratitude or relief, it appears your telomeres shrink less. Telomeres protect the end of the chromosome from deterioration or from fusion with neighboring chromosomes. It might be a bit of an hyperbolic stance on a cause of aging, but it prompts us to consider the overall relation between physiological states induced by gratitude and stress, and our longevity.

Your telomeres shrink due to cell division. As you probably know, this is a process your body manages constantly and is essential for our survival. Think of healing damaged tissue. It’s quite convenient that a paper cut heals. But like everything in this world, it has a limit. This limit of cell division is called the Hayflick limit.

This gives us some arguments to consider the management of our telomeres throughout our lives. Of course, we can’t suddenly try to remove stress. But we could do a decent job by managing gratitude, and removing stresses from our lives gives us gratitude on its own, right!

If you experience stress and fear, without resolving it - and experiencing gratitude or relief - it comes at longer term costs.

Appreciation for things that go well, and thereby also sharing winnings in a team or with your friends and partners, is therefore provably much more important than I previously realized.

Cultivating gratitude

Try this: Every night, ask yourself to list the things that happened that are meaningful to you. Focus on the small things you’re grateful for and happy about thoughtfully.

As an example:

Go through your day, and think about a stressful situation. What exactly made you stressed there? What went well in that situation that could’ve gone worse?

Then, go through your day or week, and ask yourself: what was truly nice? Something good happened, it could be as simple as making the train after running for it. Thinking about something valuable, finishing a book, or having a great workout.

Pause a bit at the positivity of that experience, and be grateful for the fact that that became a positive part of your reality.

Ugh, so what IS meaning?

‘Meaning’ is an often used term, but it’s something I’ve always found radically difficult to define. What is ‘meaning’? Is it rational truth? Is it experienced? Is it what most people believe?

I think it’s an experience. The experience of the manifestation of an idea into reality, maybe we could even call it the ‘experience of truth’. Not universal truth. I don’t think that exists.

If I call something a chair when I see it, I experience a sense of meaning from that when I do it with attention. I believe this chair to exist and it gets confirmed by my senses. When I achieve something, I also experience the manifestation of that achievement. This experience corresponds to my values (I value my achievement, like I value being correct about naming objects I see, like a chair).

We experience truth, a truth that corresponds to our values and accentuates our manifestation in this world. Self-actualization.

Underlying this transition, there is a plethora of complexity that can be found in the context of exactly this transition of an idea or a belief between its existence in the ‘self’ based on values (phenomenologically), and that of the ‘group’. If we look at ideas and beliefs from the level of the individual and the transitions thereof between the group and the individual, it aids us in slowly dissecting the process of meaning (I believe meaning is a status as part of a process in a value system, not a state on its own).

The system that defines the ‘rules’ or ‘norms’ of this natural selection (and how awareness and attention to beliefs influence the creation of new ideas and beliefs) is discussed in more depth in philosophical concepts like episteme (Foucault) and paradigms (Kuhn). More modern discussions of these things are also available around thinkers like Jordan Peterson.

Notes:

  • ‘Self’ is a reproduction of present experience within the experience (memory) of the past. A continuous process of attention;
  • Let’s separate the world of ideas from the ‘self’ (‘erzijn’ from ‘Zijn’?), to go forth on the wave of evolution, holding our very selves.

Blockchain's role in the global distribution of power

Society and the economy are constantly changing. Now faster than ever before.

The rate of change in society we’ve seen over the past decades is unheard of. As a result, our cultural evolution is being warped and accelerated through the new uses of technology. Obvious examples of this are smartphones, social media, and instant messaging.

A sometimes overlooked impact of technology, apart from changing the way we interact, is the role that it plays in the power structures of our ever-growing information society.

Informational power

Take informational power for example, which is power gained through information that others need or want. Informational power is effectively becoming more and more distributed through new mediums like the Internet. Nearly everyone can share and copy their information freely through dedicated online software. More specifically, the increasing distribution of informational power seems to be a process similar to diffusion; high concentration moves gradually to lower concentration areas, causing a more evenly distributed whole.

Valuable information is becoming increasingly public, and we’re gradually moving away from centralized informational power that still incorporates the concept of censorship of information. Censorship of information is one of the problems blockchain tries to solve through censorship resistance, by allowing anyone to transact and making transactions generally immutable.

As a result, this distribution of informational power allows other forms of power to become more distributed as well. Examples of this are status and money, as it is easier than ever for anyone to gain a following or sell their services through the internet and social media platforms. Nearly everyone can transform the gigantic amount of available information into something useful, and can, in turn, be rewarded with status (following) or money as a result.

Hierarchy and politics

Yet another impact of technological advancement relates to the establishment of hierarchy and political constructs. As information is constantly becoming easier to share, the alignment of people can change more rapidly as information is shared more efficiently and with more people at the same time.

A good example of the impact of our information society on political constructs is Trump’s campaign, which was heavily relying on social media like Facebook. As Brad Parscale, the digital media director for Trump’s campaign, said:

“… we needed to go out and find millions of people to be our supporters and Facebook allowed us to do that in alarming numbers, very fast” - Brad Parscale on CNBC

The Internet

The internet is playing a big role in this, as it is actively replacing our traditional distribution of information (letters, magazines, newspapers, television). The ability to easily do online payments, watch series on-demand, and use social media at every time of the day are examples that indicate our distribution of information is radically different from 10 years ago.

The ease with which we accumulate information, and the ease of sharing this information in a modern context are strong indications of our growing ability to give and take power through increasingly small actions. This is part of our motivation to implement social trading.

We are all constantly part of the distribution of power: using products from companies that utilize our data, liking someone’s post, paying for an article online, or getting ‘claps’ on Medium. But it is also active on other levels in your life: even greeting someone in a crowded place, or looking a certain way, is part of (social) power distribution. The list goes on.

Overall, the advent of technology seems to be stimulating the diffusion of power. Next, I’d like to focus on the role that the blockchain has in this pattern of global power distribution.

Blockchain: the new value distribution

This movement of power we see with information is slowly happening with money as we speak.

Blockchain-like protocols have the ability to replace our current distribution of value. As noted, in the past both value and information were generally governed by those who had the power to distribute it to others. Today, nearly everyone can distribute their information freely.

However, value is currently still governed by those who have the power to distribute it to others, because they can guarantee the ‘integrity’ of information - the reassurance that everyone involved can be certain a piece of information is trustworthy, like the balance on your bank account.

The inception of our banking system was (and still often is) a great first step of power distribution that had a major impact on our ability to evolve our society. Part of this evolution is tied to the Rothschild family, which had a big role in the evolution of banking and money during the industrial revolution. They, too, had a tight-knit system of power through which they helped create the world of banking as we know it.

Right now, a comparable combination of technological revolution and economic shift is happening. As a natural result of this tendency of technology to stimulate the diffusion of power, in the future, everyone will become able to distribute their value freely through decentralized networks and markets built on top of them.

Organizations like Blockport, and their fat protocols

Brands and hubs like Blockport will eventually exist to distribute the accessibility of value through shared protocols, but without holding the actual value and information that is distributed.

The division between the applications or organizations, and the protocols that they build upon, will start to look different as value is being created and managed by protocols more consistently. In different wording, protocols become ‘fat’ as they are taking more responsibility out of our hands. This is part of the ‘fat protocol’ thesis, as shown below:


Source: Monegro’s Fat Protocol post onUSVI’s blog

The fact that we are becoming increasingly reliant on public protocols, instead of applications or organizations that are managed by a centralized group of people, will result in a more consistent diffusion of information and value. This means both distribution of information and distribution of value will become more autonomous processes, left to the hands of our global society to manage and foster.

In the end, this process of power diffusion from high concentrations to lower concentrations is a continuous one, and will therefore continue to make our society more efficient in cycles.

Much of the value that is now created by organizations that consist of centralized groups of people, will be originating from protocols. Investors, but essentially anyone in the world, can invest in tokens that are linked to the optimal performance of the protocol itself, instead of traditional investments that are linked to the performance of an organization.

We believe in a strong network of organizations, both public and private, to properly manage and balance this innovation.

What will blockchains and cryptocurrency do for us in the future?

Technological innovations are consistently delivering more capabilities for interconnectedness, and engineering is advancing to a level that allows a global interconnected network of open services that can be tightly integrated. A truly future-oriented way of engineering a large system, is akin to that of nature itself, with many interconnected components adapting and individually evolving.

To scale the integration of blockchain and cryptocurrency to a global level, the ability for new and existing projects to adopt this technology and integrate it with our current system of money is necessary. A user should have the ability to start utilizing a new decentralized application without having to deal with high barriers of entry - and ideally, even basic knowledge of decentralization - like creating keys.

Building applications and markets in a decentralized way brings forth a new world of opportunity: through companies like Blockport, consumers will be able to invest in and seamlessly utilize decentralized projects that are integrated with chains we support. Information, money, and control will be in the hands of users, whatever application they use.

With a level of integration like this, it will become entirely possible to create new forms of collaboration. Reward structures can be reinvented through the use of micropayments and products can be built on networks of value exchange instead of being dependent on external integrations (as cryptocurrency is ‘programmable money’).

The concepts of trust in how we distribute information and value will gain a new meaning. People can express what they believe in through other means of voicing an opinion online: by becoming part of a new micro-economy. A micro-economy they are an equal part of, in which they are rewarded for participation, and one that can increase the value of its currency by providing value for others in this world.

As Aaron Swartz, founder of Reddit, once put it:

“We need to take information, wherever it is stored, make our copies, and share them with the world.” - Aaron Swartz, Guerilla Open Access Manifesto

This can bring people together globally as the internet did but built on a network of value exchange that combines the exchange of value with real purpose. People can support new purposes, find more meaning and create more means of improving the world we live in through the natural effect of public- and autonomous markets.

### Move forward: integration and adoption

Enabling our international and global financial system to integrate new technologies like cryptocurrency into it, is an essential step forward. Our ability to engineer trust into the systems we use every day can be - and I believe should be - safely adopted by our society and economy.

Looking at the trend so far, we can expect significant progress over the coming years:

● In 2011, the crypto market cap peak reached over 100 million dollars and over 70.000 wallet users;

● By the end of 2013, the market cap peak was over 13 billion dollars with a little under 1 million wallet users;

● In 2017, the market cap peak was nearly 300 billion dollars with over 20 million wallet users.

Source: Blockchain.com:https://www.blockchain.com/en/charts/

The next wave could see a market cap in the trillions and millions of new users, which is covered in more depth in another article on our blog.

The more we gradually distribute power, the less it will be taken by force.

Habitual recalibration

Thinking tool. An adaptive principle.

Remove habits or change behavior by changing the availability of something (fully, or form of) in your life, making room for new things to fill that time, or ensuring you create new habits and thought patterns that override older ones.

This can also mean walking away from something or turning something off.

Phases that come after the intention of changing some routine are, as I noted:

  • Resistance (letting go is quite hard in habit and emotion: can feel like getting up in the morning, or as much a routine as brushing teeth);
  • Confusion and suffering: there is a hole, it needs to be filled (what do I do?);
  • Balancing: filling it with changed behavior - gratification.

Very much related to habits. Remove the cue, fill it with a new one, and use the habit framework for new routines. Rewards are the most important factor for adopting new ones, in my experience.

Polertiek nominated for Dutch Interactive Awards

Polertiek, an app built by Elastique and BNNVARA and using the API of Kieskompas that we’ve built, has been nominated for the Dutch Interactive Awards!

Screen-Shot-2018-04-08-at-17.41.37

Polertiek

Polertiek was an initiative by #BOOS, a YouTube channel where Dutch presenter and extremely funny Tim Hofman joyfully helps people with their quarrels, often with large companies being their sometimes difficult selves. This results in the most hilarious situations, like occupying hallways with confetti cannons and other pacifistic, but revolutionary, warfare situations.

What’s #BOOS

https://www.youtube.com/channel/UCc0kHafEIzm6PiqyrsC5lyg

Nomination:

http://www.dutchinteractiveawards.nl/nominatie/polertiek/

How to: Autoscaling Gitlab Continuous Integration runners GCP 🤓

At Luminum Solutions, we run some relatively heavy test suites. The problem, however, is that runner servers can consume quite some resources, which is rather expensive. But even more problematic is a filled-up queue of pipelines that need running. It can block Merge Requests (Gitlab’s equivalent to a Pull Request), in turn blocking the release of new features.

So ideally you’d have enough computing power running for all test suites, without paying too much. This is exactly what autoscaling infrastructure can bring!

The idea is to create a Compute Engine Instance Group that automatically scales as instances get above a certain CPU usage. The Managed Instance group allows you to specify a template for the instances running as part of the Instance Group.

Step 1. Creating the image

Assuming you have a Google Cloud project (if not, create one here), the first step is to create a custom image that can be used in the template. The image is based on Ubuntu 16.04 in my case.

Create the VM

To create the image, start a Compute Engine VM. We use VMs with 2 CPUs and 4GB of RAM but you’re free to choose what you prefer during this step. You can make the disk quite small too, since the VMs will be ephemeral. I chose normal 20Gb hard disks.

This is what it should look like (sorry for the Dutch in there):

Creation of Compute Engine VM

Install the Gitlab Runner

After creating your VM, SSH into it and install the Gitlab Runner (instructions for Ubuntu are here). We don’t use the Docker executor, even though most of the attention-heavy infrastructure we run is on Docker. This is because so-called Docker in Docker scenarios can cause problems that are outside of this post’s scope.

Set up a cron job to clean images

Since the hard disk on our VM is not that big and Docker images can accumulate to take quite some space on the hard disk, it’s ideal to automatically clean the unused Docker images every 24 hours. Just to be sure :)

You can save the following script to /etc/cron.daily/docker-auto-purge and make it executable with chmod +x /etc/cron.daily/docker-auto-purge.

#!/bin/sh

docker images -q |xargs docker rmi

If you want to specify the number of runners you want to allow per instance, you can edit the /etc/gitlab-runners/config.toml file and change the following lines to whatever you prefer:

concurrent = 1 # Concurrent jobs for this instance (0 does not mean unlimited!)
check_interval = 0 # How often to check GitLab for new builds (seconds)

Step 2. Create the image and template based on your VM

To actually set up your VM to be managed inside of an instance group, we’ll have to create a blueprint for it. After this, we’ll remove the VM and allow the Instance Group to create it based on the blueprint, and manage it.

Create the image

First, stop your VM. This will allow for safer passage through the land of image creation we’re about to enter.

Select ‘Compute Engine’ from the sidebar in the Google Cloud Console and click ‘Images’. Here, create a new image based on the hard disk (use it as the source disk) of your recently created VM.

With your image now created, you can easily create VMs based on it! It’s exactly as easy as selecting ‘Ubuntu 16.04’ as your image, but instead, it will be your shiny image ✨

Create the Instance Template

Next, we’ll add the image to an instance template! I used the following settings:

  • 2 CPUs
  • 4 Gb memory
  • 20 Gb persistent disk
  • Your custom image as the startup disk

If you have any custom networking set up, this is the time to add the configuration for it to your instance template. But no worries if you forget; it’s super easy to update the instances in a managed instance group to a newer template 😄

Note: Make sure your VM won’t run at > 95% CPU on your test suite though, as this will trigger the autoscaler to add new instances without good reason.

This step is important! Now, you should set up the startup script on your VM:

#!/bin/bash

# Register runners
sudo gitlab-ci-multi-runner register -n   --url https://my-gitlab.example.com   --registration-token s5-FUy15QVjqMNsgZWPM   --executor shell   --description "ext-shell-$(hostname)-1"

sudo gitlab-ci-multi-runner register -n   --url https://my-gitlab.example.com   --registration-token s5-FUy15QVjqMNsgZWPM   --executor shell   --description "ext-shell-$(hostname)-2"

apt install build-essential -y

# Install docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Add the gitlab-runner user to the docker group
sudo usermod -aG docker gitlab-runner

This will let your runners automatically register on creation, and set up Docker compose. The reason I chose to add the docker-compose install here is to let me update/change the version whenever I please without having to update my image.

Now, save your instance template. Almost there!

Step 3. Create the instance group

Next, we’ll create the actual instance group that runs the Gitlab runners.

Go to the Compute Engine page from the sidebar of Google Cloud Console, and click ‘Instance Groups’. Now add a new Instance Group with your preferred configuration. Don’t forget to double-check that you selected ‘Managed Instance group’!

Use the Instance Template you created in the previous step here.

For the Statuscheck, I chose to set it to CPU usage of > 95%. This will trigger the auto scaler whenever an instance has more than 95% CPU utilization.

Then click ‘Create’. Presto! One more step to go!

Step 4. Enable Gitlab to automatically remove old runners

Having a lot of runners running because of autoscaling is handy, but the runners don’t unregister themselves. A solution would be to periodically check for runners that have been inactive for a while. I wrote a small Python script to help with this, which can be added as a CRON job on your GitLab instance:

import requests
import json
from dateutil import parser
from datetime import datetime, timedelta
import pytz

import logging

logger = logging.getLogger('gitlab_python_cron')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('/var/log/gitlab_runners_autodelete.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)

headers = {"PRIVATE-TOKEN": "<YOUR_PERSONAL_TOKEN_HERE>"}
base_url = "https://my-gitlab.example.com/api/v4/runners/%s?per_page=100"

runners = requests.get(base_url % 'all/', headers=headers)
runners = json.loads(runners.content)

logger.info("Got %s runners to delete" % str(len(runners)))

threshold_time = datetime.now(pytz.timezone('Europe/Amsterdam')) - timedelta(hours=8) # All runners that haven't reported for 8 hours will be deleted.

for runner in runners:
  runner = json.loads(requests.get(base_url % runner["id"], headers=headers).content)
  if parser.parse(runner["contacted_at"]) < threshold_time:
    resp = requests.delete(base_url % runner["id"], headers=headers)
    logger.info("Deleted runner with ID %s" % str(runner["id"]))

logger.info("Deleted runners! \n ---------")

You’ll have to generate a Personal access token for the API and replace <YOUR_PERSONAL_TOKEN_HERE> in the snippet above. You can see how to create one here.

And that’s it! Now your GitLab runner infrastructure can auto-scale as your test suites run, and you’ll pay as you go whenever your runner infrastructure scales beyond the single node! And your GitLab instance even cleans itself up every day… ✨

DDoS Kieskompas 2017 (Dutch)

Hoe gerichte DDoS aanvallen op Kieskompas de verkiezingen een onverwachte wending gaven.

Dinsdagmiddag 16:00. Een relatief rustige dag om aan een nieuw innovatieproject te werken bij Independer. Leek het.

Mijn lieftallige collega belt me met de melding dat alle kompassen van Kieskompas down zijn. Mijn eerste reactie is natuurlijk ‘Dat kan niet. We draaien op vele servers met enorme capaciteit.’

Maar toch; we waren down, en goed ook.

Eerste stappen

Als eerst; kijken naar statistieken. De belasting van het netwerk zag er op dat moment als volgt uit:

Zo zag het verkeer er uit.

Het opmerkelijke was dat onze infrastructuur geen enkele problemen vertoonde.

Dit is niet de volledige schaal van de aanval, omdat onze grote vriendelijke hosting provider (waar we een groot deel van het verkeer naar Kieskompas doorheen leidde) de DDoS aanval opmerkte en het verkeer blokkeerde naar het aangevallen IP adres. Na het analyseren van het verkeer naar de servers, en het handmatig uitsluiten van een aantal IP adressen waar een overdadige hoeveelheid verkeer vandaan kwam, besloten we van IP adres te wisselen. Dit leidde tot ongeveer 10 minuten uptime, waarna exact hetzelfde voorviel als waarmee het begon.

Omdat het verkeer naar de servers uit voorzorg geblokkeerd werd (een goede stap om te nemen, maar in ons geval wel een beperkende), zijn we er niet echt achter gekomen hoe goed we de aanval konden weren met onze eigen capaciteit.

Meer inzicht

Aan de hand van onderzoek hebben we kunnen bevinden dat het ging om een botnet dat opgeschaald werd om de automatische DDoS bescherming die op onze infrastructuur wordt toegepast te overbelasten. Het was duidelijk dat de aanval gericht was op het veroorzaken van blijvende downtime.

Na uitvoerig onderzoek binnen onze infrastructuur en de consequenties van de aanval (in principe geen), en overleg met het tech-team van Stemwijzer, nam Google Shield contact met ons op. Google Shield is een programma van Google om sites die zich richten op bevordering van vrije meningsuiting en politiek advies te beschermen tegen DDoS aanvallen.

Samen met meerdere Google Engineers heb ik tot laat in de nacht gewerkt aan het afweren van de aanval door over te gaan op Shield infrastructuur. Na onze overstap op Google Shield en het verwijderen van onze traditionele load balancers leek het erop dat alles weer goed ging.

Tot de volgende ochtend.

Om 08:00 was het weer raak. Dit keer dwars door Google Shield heen. Wederom geen overbelasting van onze applicatie servers en/of database, maar wel een enorme hoeveelheid verkeer vanuit Azië en Noord Amerika (het is niet ongewoon dat botnets/DDoS aanvallen hier vandaan komen, en het zegt niks over de daadwerkelijke oorsprong van de aanval).

Tweede soort DDoS

Het leek hier op een slowloris aanval, die verbindingen naar onze servers zo lang mogelijk open hielden. Door proactief honderden IP adressen uit deze continenten te blokkeren, is een groot deel van de aanval toen opnieuw afgeweerd. Dit was woensdag, rond 12:30. In onze logs zag ik duidelijk terug dat onze server processen timeouts vertoonden, en dat er abnormaal veel requests naar de homepage van het Kieskompas kwamen. Je ziet in de bovenstaande afbeelding dat er een hoog aantal errors was in deze periode.

Zo zag de afgeweerde aanval eruit, er was weer ruimte voor verbindingen vanuit Europa, die ‘legit’ waren:

Afgeweerde aanval

Het was alleen nog niet over. Tegen 15:00 was het opnieuw raak. Dit keer vertoonde de aanval weer andere eigenschappen; er werden namelijk enorm veel requests gedaan naar andere punten in de applicatie. Zoals je je wel kan voorstellen, is onze infrastructuur erg afhankelijk van specifieke requests en heeft extreme toename hiervan een substantiële impact.

Wederom was er geen moeite voor de servers om alle verkeer te verwerken, maar wel om de enorme hoeveelheid verbindingen te verwerken. Ze hadden een manier gevonden om de hoeveelheid verbindingen naar andere delen van onze infrastructuur extreem hoog te maken. Niet door verbindingen met het Kieskompas zelf lang open te houden, maar door er juist extreem veel te doen, met specifieke eigenschappen waardoor ze als ‘nieuw’ werden bevonden door onze applicatie servers (de meeste requests hebben nagenoeg geen impact). In alle onschuld openden onze applicatie servers welwillend verbindingen, die uiteindelijk zorgden voor verstoppingen.

Na wederom met (inmiddels 4) Google Engineers gesproken te hebben, hebben we weer een groot deel van ook deze aanval af kunnen weren door extra IP adressen te blokkeren (deze waren inmiddels gewisseld). Sindsdien is het redelijk rustig gebleven, en zijn we niet zonder slag of stoot online gebleven om zo nog een bijdrage te kunnen leveren aan deze extreem belangrijke verkiezingen.

Hoe nu verder?

Veel onderzoek en aangifte. Samen met de autoriteiten, Stemwijzer en Google Shield, gaan we bij Luminum Solutions alle data van deze aanval analyseren om er meer van te leren. In het vervolg zullen we voorbereid zijn, beter dan ooit. We gaan met man en macht werken aan het verbeteren van alle componenten in het Kieskompas en we hebben enorm veel geleerd.

Bij mij persoonlijk heeft dit voorval de motivatie me in te zetten voor onze democratie en vrijheid van meningsuiting op het internet enorm vergroot. Het kan niet zo zijn dat we de slagader van effectieve democratie; de mogelijkheid en het recht je vrij te kunnen informeren en om vrij informatie te delen, gevoelig laten zijn voor dit soort aanvallen op essentiële processen voor onze vrije democratie. Het feit dat stemadvies applicaties een slachtoffer geweest zijn bewijst alleen maar meer dat we iets bijdragen aan een proces dat een belang vervult binnen onze samenleving, dat is iets dat te allen tijde bewaakt moet worden.

Stemwijzer

Zoals in het begin genoemd was ook Stemwijzer aangevallen, op hetzelfde moment als Kieskompas. Bij ProcoliX was de aanval ook flink te merken, hierdoor is zelfs De Groene Amsterdammer (gehost door ProcoliX) gedeeltelijk down geweest. Hier kan je daar wat meer over lezen.

Optimize Django for Performance

Django is good stuff. I’m very convinced of that. However, there are always tradeoffs for awesomeness :) In Django, and in my opinion, this is performance. But a part of Django’s awesomeness is its community, and boy did it take care of this problem the right way! You will most likely run into performance problems eventually when serving more complicated Django apps. Here are some personal guidelines I thought to be interesting to write up!

Cached template loaders

Add this to the settings.py file (or your production settings preferably):

TEMPLATES[0]['OPTIONS']['loaders'] = [('django.template.loaders.cached.Loader', TEMPLATES[0]['OPTIONS']['loaders'])]

This will modify the TEMPLATES setting to use a Cached Template loader, which will enable Django to load templates from the cache rather than from the filesystem. You can read more in the Django [The Django template language: for Python programmers |…](https://docs.djangoproject.com/en/1.10/ref/templates/api/#django.template.loaders.cached.Loader ‘The Django template language: for Python programmers | Django documentation | Djangoundefined)

Enable Django’s caching framework

Django is pretty good at caching. You can read more about it here: [Django’s cache framework | Django documentation | Django](https://docs.djangoproject.com/en/1.10/topics/cache/ ‘Django’s cache framework | Django documentation | Djangoundefined). At Luminum Solutions, we use Redis for all our caching. It’s fast, actively developed, well supported, easy to configure, scalable, and very manageable in production.

Django Redis

The first best quickwin is [django-redis.](https://niwinz.github.io/django-redis/latest/ ‘django-redis documentationundefined) You can hook it into Django’s native caching framework, so it’s **very **easy to set up. What’s also pretty cool is that Django Redis does this thing called connection pooling in the background. I’ve never seen too many connections cause (performance) problems with a cache, but connection pooling is generally a good thing. Especially in database-land where PgBouncer can come to the quick rescue, but that’s another story :-)

Django Cacheops

The second Redis based cache is [Suor/django-cacheops: A slick ORM cache.](https://github.com/Suor/django-cacheops ‘GitHub - Suor/django-cacheops: A slick ORM cache with automatic granular event-driven invalidation.undefined)

You can use it in combination with Django Redis, as Django Cacheops serves a different purpose: it’s an ORM cache. This means that you can hook it into Django’s ORM to cache queries. There is some overlap in functionality. I personally prefer to use Django-Redis for most tasks like view caching or template fragment caching ([Django’s cache framework | Django documentation | Django](https://docs.djangoproject.com/en/1.10/topics/cache/ ‘Django’s cache framework | Django documentation | Djangoundefined)), as it’s more tightly integrated with Django itself.

Naturally, there are tons of other cache storages like Memcached, the database, filesystem, and local-in-memory. If you’re running a simple website that still requires good performance, the local in-memory options are a very good option.

General notes on caching (the gotchas)

Most of the gotchas around caching have something to do with invalidation. It can be quite a user experience killer if they end up with an untranslated menu, or with someone else’s profile even.

There’s one simple good habit that will enable you to set up good caching configurations; always ask yourself what can change in the entity you are considering caching. In the case of template or query set caching, which is where you’ll most likely end up, it’s good to list (maybe even write down) all the variables that should imply a change in content.

Security considerations

As most security priorities involve sensitive data, auth is the first thing to look at when keeping security and privacy in mind.

  • Never cache things like passwords. Preferably, just steer clear of exerting fine-grained cache control over the auth system. I personally try to focus on getting the database to only worry about auth, as all other things can usually be cached more easily and without the potential of a headache :-)
  • Don’t cache auth-related templates like profile pages. When you can prevent caching profile pages (or even fragments), try to do so. This also follows the database-for-auth philosophy!

Good quote on security

AviD’s Rule of Usability:

Security at the expense of usability comes at the expense of security.

Taken from: Security StackExchange

Very accurate and a good KISS message in there as well :-)

Not only in interfaces but also in security, our limitations of us humans have to be taken into account to enable us to live/work more effectively! We need solutions with high usability, as those are the ones that will enable us to put our time to good use. Until we’re able to assume complete privacy and security, or the world has been taken over by AI, we’ll need good usability.

Het Kieskompas TK2017 - wat een werk!

DDoS aanvallen

Lees hier meer over de DDoS aanvallen op het Kieskompas.

Het Kieskompas

Zaterdag 11 februari is het Kieskompas voor de Tweede Kamerverkiezingen live gegaan. Kieskompas is een wetenschappelijk verantwoorde stemhulp die - sinds 2006 - miljoenen Nederlandse kiezers heeft geholpen bij het maken van een afgewogen keuze.

Naast het vertrouwde Kieskompas, dat wederom is ontwikkeld met Trouw als mediapartner, hebben we zes verdiepende kompassen over het milieu, wonen, werken, ondernemen en de positie van ZZP-ers gebouwd. Ook is een speciaal Kieskompas app voor jongeren ontwikkeld met BNN/VARA.

André Krouwel, VU politicoloog en oprichter van Kieskompas: ”Het aantal zwevende kiezers is een maand voor de verkiezingen enorm groot. Het Kieskompas is voor veel van hen een onmisbaar hulpmiddel. Kieskompas werkt twee kanten op: het dwingt politieke partijen tot helderheid en transparantie over hun standpunten en dat levert kiezers relevante informatie over waar partijen precies voor staan op belangrijke thema’s en in welke iedere gebruiker het eens is met alle partijen.”

Wat is Kieskompas?

Bij Kieskompas brengen we politieke en maatschappelijke opinies in beeld. Met behulp van online tools en via gericht panelonderzoek. Kieskompas is volstrekt onafhankelijk, heeft wetenschappelijke roots en opereert internationaal. Ruim 45 miljoen mensen in meer dan 40 landen hebben een Kieskompas ingevuld. Kieskompas wordt gevormd door een groep betrokken en enthousiaste wetenschappers; fighting political analphabetism.

Recentelijk is een nieuwe site online gegaan, voor het analyseren van de staat van de media in relatie tot de politiek; MediaPolitiek

Luminum en Kieskompas

Het is voor de mensen om ons heen geen geheim dat we bij Luminum Solutions met trots bouwen aan het Kieskompas. Ook voor de Tweede Kamerverkiezingen hebben we keihard gewerkt aan het nieuwe ontwerp, maar ook de veiligheid en schaalbaarheid.

Het is op zichzelf al een uitdagend project; altijd volop verkeer vanuit meerdere landen op onze servers, gemiddeld meer dan een miljoen per maand.

Service, Tech and Startups

I’m the founder and managing director of the technical startup, Luminum Solutions, and a co-founder/co-developer/partner of two others: Freundlich and Capture Camera. Here, my day-to-day responsibilities include building cool solutions as backends and platforms, scaling large systems, operations, strategy, decision-making, and communication.  I’m also a Wittenborg University Amsterdam mentor.

Startups are pretty much everywhere these days and it’s gotten quite easy to start a business (and call it a startup). Going from a loosely organized group of people to something we call a ‘startup’ – which sometimes remains a loosely organized group of people – has become easier and easier. Of course, once you’ve set up your basic goals, your concept and supply chain will determine how challenging it’ll be to scale your business.


In this 3-part blog series, I’d like to share some thoughts and experiences I gathered while starting and scaling a company organically, while personally assisting other startups in building their product. The goal here is to give you an idea about what makes a good team and to identify valuable assets focusing mostly on the operational and human aspects of running a (tech) startup. The second blog in this short series will focus on the more technical aspects of succeeding as a starting company, and the third focuses on the combination of both while growing instead of starting.

## Organizing a Team

Setting up a business, especially a more ‘lean-oriented’ startup that focuses on validated learning and preventing premature assumptions, can be less paperwork and planning than what we’re led to believe. Most of the time, this is a good thing. Even though you don’t have to worry too much about the concrete organizational aspects, you’ll benefit from having a very clear idea about a couple of things that revolve around being a productive team.

A couple of things that I’ve found to be essential for a team to succeed:

  • Identify your knows and don’t-knows
  • Understand your shortcomings
  • Know who you need around to succeed
  • Trust your teammates, especially when things get difficult

Identify your knows and don’t-knows

To be a part of a team, support it, and enable it to operate effectively you’ll need to accept that even though you might be the lead, you don’t always have the answer. This has been a challenge for me from time to time, and I’ve seen others have difficulties with identifying both things they do know, and accepting the fact that they don’t know other things. It’s worth noting that you also want to make sure you’re aware of what you should know, and what you don’t have to know. Having people around you who know that you don’t means you have a more powerful team (and allows you to focus on what you do best)!

Understand your shortcomings

Accepting that you don’t know certain things is a big part of enabling yourself to function in a team. Understanding what you lack in ‘soft skills’(motivation, communication, empathy) is equally as vital. Identifying knows and don’t-knows is generally easier, as they’ll mostly consist of ‘hard skills’ (concrete skills like programming and planning). Soft skills, however, only become clear in real-life situations and therefore require more experience to identify and develop. To identify your shortcomings means to identify your soft skills and the potential lack thereof. You might have failed to stay motivated, impress a potential client or convince a colleague. To improve your soft skills, you’ll have to know where your shortcomings lie. The greatest help is to have trustworthy and brutally honest people around you who are willing to explain how you can improve yourself.
\

Know who you need around you to succeed

Next to having people around that can be brutally honest, you’ll need to know exactly who you need around to be most efficient and effective. In many situations, you just want to be productive and not worry about the little things. I’ve found that to enhance my productivity and that of others, I need to work with those who can communicate effectively and can be extremely pragmatic when needed. You don’t want to be stuck discussing the little things with brutally honest, intelligent, and stubborn people. This, however, is inevitable.

Tim, our awesome backend dev, working his magic.A good way to prevent and deal with these situations is to focus on the person you’re in a discussion with. Everyone has a certain motivation from which they communicate, if you’re able to identify that core reason and convince someone that you’re positive and willing to listen, you’ll be able to create a situation of mutual trust instead of passive conflict. People who can pick up on your pragmatic and thoughtful intentions are usually able to return them, in turn enabling you to stay productive when you need to.

Trust your teammates, especially when things get  difficult

When the going gets tough you may have the urge to take control away from others and do everything yourself. There are moments when you might need to step in and tell people what to do to solve any apparent issues.

But more often than not, you need to let it go. Here are 2 reasons why:
- First of all, when someone steps in too often, we get lazy. When your colleagues get used to you cleaning up their mess, why would they even bother trying to not make a mess?
- Second, the feeling of equality in your team will slowly fade. If someone does all the heavy lifting, but your whole team gets the credit, the one responsible will not be acknowledged. This might lead to colleagues getting overworked and frustrated, and others might not even know why!

To avoid these situations, I try to make open and clear communication a priority. This helps minimize the amount of doubt while allowing everyone to remain productive.

Systems I use to enable this include:

Daily standup meetings where everyone informs one another about their planning for the day, their current state of work, and where they might need help.

Friendly reminders through Slack (or any other chat tool), to assist your colleagues in being able to forget the small things a bit more.

Weekly personal meetings with your developers (if you’re a tech company) and clients to discuss who is working on what and what the status is or if there are any difficulties.

Clear tasks and responsibilities to provide everyone with a good description of every task, using a well-arranged project-management tool (like Trello). This will enable you to avoid as many misinterpretations as possible.

Our team meetings always include cake. And vegetables!Something I continuously see when organizing a team is the importance of open and frequent communication. This doesn’t mean you should fill your day with meetings; but a consistent, short, and progress-oriented meeting can be incredibly valuable if you’re able to keep everyone on track. If you want to improve on this or aren’t a natural speaker, you can read books on body language, or watch youtube videos of great speakers.

A book I found very valuable is “The Definitive of body language”. Here are 10 takeaways to get an idea of the contents. Another good book on pragmatic thinking and working is “The pragmatic programmer”. It’s also suitable (and valuable) if you’re not a programmer yourself! It describes the mindset you need to build something valuable (which is not necessarily software) the right way. Be sure to give it a try if you’re looking for your next good read! If you’re too busy, check out this Quick Reference 🙂

Last but not least: spend personal time with your teammates and get to know one another. In the end, everyone wants to have a team and place where they feel comfortable and productive (and have some fun!). Focussing on this will improve every single aspect of a team, and thereby your ability to get your startup to the next level!

Personal time with the team!Personal time with the Team

– Zowie