Learning to code faster and better, 12 tips

Young programmer typing in a laptop

Becoming a better programmer

what if You can become a better programmer. I believe you are able to learn to code faster and more efficiently, just by having the right approach and instructions.

I started programming years ago. Out of need. I started working in a web design team using PHP. My (amazing) boss considered writing code in your Windows Notepad not only acceptable, but the proper way. I had to learn, fast.

Later, after switching roles, I wanted to do things for my org that were not possible with the existing tools . Like data analysis of BIG files. Or manipulating existing data to get insights that were not available anywhere else. I wanted to build or deliver results, so I had to learn how to ship those.

These are some tips around learning how to code. Things I have found useful to improve my programming skills. I have always been thinking long and hard about how to become better at learning. I enjoy learning. Even with the constraints of having to do it in a fast paced environment, with little margin of error.

A quick caveat, most of the references and links are for learning JS. I am going deeper into solidity now. The examples that come to the top of my mind are for JS as in the last years I have spent more time with that stack.

The joy of learning also comes from being successful at it. Understand that you need to some extent to perceive your progress and improvement.
Our ego is at the centre of all we do, learning something that goes nowhere is usually not fun at all. We need to feel the car is moving towards the right direction. This is not about reaching a particularly far destination, but about progression. Tracking your progress and measure it.

Ask what are the best books about what you are trying to learn and devote time to read them. In my case, “javascript the good parts” and “JavaScript: The Definitive Guide”.

Being grateful about having to do pull reviews. This is probably my number one, having a great person working with you and reviewing your code is amazing. Try to be that person for someone else. Learn how to do a useful pull review.

Get the best possible teachers. If we are talking about courses, go for the best possible ones. Sometimes more expensive does not mean necessarily better. Ask around. Disclose what are your learning goals (it does make a difference). Filter recommendations. You have access to the best universities of the world, and top-of-the-line educational material from MIT, Oxford, Harvard, Caltech, University of Helsinki… no excuses. Learn to code for free, or almost free, is possible.

Some people out there are creating epic content for a fraction of what costs a traditional education.

Study how other people code. Looking for people setting the standards for your industry, first-rate individual contributors. Check their GitHub projects, learn about how they structure stuff, and what approaches they have to their code. What do they use? what do they avoid?

Learn to handle your own frustration. As with anything important, it takes effort. The important thing is the long game. You are not gonna become great from the very start, but you can target to improve your skills and polish your craft. Not giving up on becoming better, being okay with sucking at first.

Ask questions, no matter how dumb they sound. Getting feedback and filling the gaps in your knowledge is the way to go.

Take notes of your journey. Every day, write down your coding experience. What you find, what is useful, what is not. It can be a simple folder with notes. Eventually, you’ll find the same blockers down the road. By taking notes about it, you’ll keep a backlog of solutions, it will help you debrief situations.

Use your notes actively. Do you know what is even better than writing down everything you learn? remembering it. I use Anki to create flashcards and help my brain retain and recover what I learn. It does make a difference.

Learn from your code. Allocate time to go back to your code and do a post-mortem exercise. Be disciplined about your approach. Sometimes we do not have all the time we would want to plan. Once things are calmer, find time to go back and think about how would you have done it better.

Test yourself, push your limits. What are they asking for the kind of positions you are targeting? What do you need to learn to build whatever you need to exist? how can you do X with your code?

Learn by doing. Practice, practice, practice. Smart, dosed, spaced repetition… Lots of research around the best ways to learn something (an obsession of mine), go look for it and apply it to your field.

Effective learning is something I care about deeply. A recurrent topic in my conversations and my tweets. I have never stopped learning. I see myself as a perpetual learner. I love having those epiphanies about concepts. Magic connections that happen between fields that theoretically are not connected at all.

I cannot stress enough it enough. Having a structured approach to your learning can make a huge difference. Having systems in place, avoiding waste energy and increasing focus. It all will help you overcome your challenges and learn at a faster pace. Do you have your insights? share them!

Sense of Agency

Sense of agency

Some concepts are pretty powerful. In the sense, that just being aware of them provide higher odds of succeed in life. Some are non obvious or even counter-intuitive. One of those is the sense of agency.

So, what is sense of agency and why is it important to have a strong sense of agency? it refers to the feeling of control over actions and their consequences. It is the feeling of being an agent, of a connection between our actions and the outcomes, when not explicitly thinking about it. Experiencing control over the outcomes. There are different theories that explain how it works and how we measure it. My take away for you is that its impact is transformational.

Your sense of agency is intrinsically connected with your context. In my case, moving from working in a big tech company to operating independently. As consultant and founder, provided a higher and deeper sense of agency. I had it before, I am not saying you can not have leverage in a company. My point that the output of your leverage; The extent of impact. As well as your perception of control are influenced by your environment.

It is literally one of the secrets of life according to Steve Jobs, “When you grow up you tend to get told that the world is the way it is and your life is just to live your life inside the world-try not to bash into the walls too much, try to have a nice family life, have fun, save a little money. But life-that’s a very limited life. Life can be much broader once you discover one simple fact. And that is everything around you that you call life was made up by people that were no smarter than you. And you can change it-you can influence ityou can build your own things that other people can use.”

It is important for you. It is paramount when you work in a product development team. Instilling it in your team mates. Nurturing the feeling ownership in the different stakeholders. The impact they make, it is the way to succeed creating great products. It took me some time to learn this. How crucial is to create space. To encourage providing inputs for less vocal members of the teams. Cultivating that sense of agency and autonomy. For all the participants in the production process.

There are relatively extensive research around it from a psychological point of view. The mechanisms in play as well as the different evolutive motivations for it. One of my favourite concepts!

A Quick intro to DAOs challenges

DAO challenges

In the next essays I will write about Web3, in particular DAOs. I’ll share some of my findings and takes. Developed in the last years, doing consultancy. As well as being a somehow hardcore user of blockchain-based tech. Somehow I thought it needed a bit of context. At least for a part of the audience with a shallow experience around most parts of the web3 universe.

DAOs are particular entities, that face new operational paradigms. Some of the ones any traditional organization has. Some new and exclusive from this kind of organization. This will be a quick review of the challenges they face. There is a complete DAO stack that is surfacing to solve those particular problems. I’ll touch base in the next weeks about analysis of specific areas and solutions in the landscape.

I like the way new situations create new types of problems. From time to time you have the opportunity to work on challenges that have a little background. You are an explorer in a new land and I find that appealing to say something.

My belief is DAOs will be WAY more impactful down the road than we can foresee now. Perhaps not in the actual form. In an evolved shape, resulting in overcoming today’s challenges. By learning about those challenges. About what kind of solutions are being developed around them. We can get a solid head start on understanding the future.

If you are familiar with what DAOs are, please, skip this part. I want to give a quick overview for someone who does not know what they are, providing a bit of context. Pretty hard to not know what DAOs are, but there is a world outside of our little bubble.

What DAOs are

DAO stands for decentralized autonomous organization. In essence, a group of individuals, aligned with a shared purpose. Using web3 technology to register its nature, rules and operational logic.

Smart contracts are at their core. They use blockchain-related technology to operate. Making use of web3 financial and operational instruments (cap table, treasury handling, tokenization of shares, voting mechanisms, ID management,…).

The autonomous part comes from it being a flat hierarchy org. Not connected to a central organization or institution. In theory, the members of the DAO. The theory implies fewer management layers. A learner structure. Value-based and with the consensus of its members being a driver of every workflow.

The first proponents of a decentralized structure go back to 2016. DAOs are relatively new, aren’t they? ergo a work in progress.

What challenges DAOs face now

They have a particular set of operational challenges. It will vary depending on what the DAO’s targets are. A social DAO does not have the same needs as an investment DAO. They will share some commonalities, regardless of the nature of their goals. Some of those challenges are:

  • Governance and decision making
  • Setting goals in a decentralized way
  • Handling the shared cap tablet, shared treasury, taxes…
  • Allowing participants to capture value in a healthy way
  • Keeping coherence and do not diverge from the original targets over time
  • rewarding contributions without encouraging pavlovian behaviours.
  • Incentivize engagement with the project, rewarding participation
  • Aligning resources with goals effectively
  • Onboarding and effective engagement of new participants

Defining business logic without a central structuring is challenging. DAOs are not only subjected to new dynamics and tensions because of their nature. They interact and live in the real world. They have to run and deal with trad organizations and structures. I find it extremely enticing to follow its evolution. Seeing new forms of organizational structures popping up is absolutely exciting.

Keep tuned if you want to know more about it. Something you’d like to know in particular? please, hit me up!

Unstoppable Sites, how do they work

unstoppable sites in the web3

I have been playing this weeks with deploying decentralized applications. Doing a bit of analysis on the landscape. What are the existing options, the challenges they face and the stage of the different parts. What would be a decentralized web3. Moving some of my notes into articles.

How do they work now?

Let’s take a step back and check how the web2 works. You have a DNS, Domain Name Service, a service able to translate IP addresses into human-readable addresses (i.e. “yahoo.com”). When you ask for a site, your ISP handles that request. Routing it to the entity you are looking for and retrieving the packages said entity sends back to you (data).

All this game of interactions. Between your computer, the application you are using, your ISP, servers, etc, is abstracted. To create a more user-friendly experience.

Here you have a nice graph (not mine) of how all that works. It is of course a simplification, we have built a lot of infrastructure over the years to deliver a great experience (CDNs, containers,…). You get the idea.

How do decentralized domains work then?

How do web3 works? We have a similar problem. For starters, wallets have long, unfriendly addresses. Hard to memorize, share and prone to typing errors. We have Unstoppable Domains and ENS, Ethereum Name Service, whose job is to “translate” those into something easy to type and remember. Both allow multiple wallets in different coins (ETH, BTC, LTC, DOGE). As Well as add different records (content, discord,…). Allow you to point your domain to a site.

There are differences and similarities around how the registration process works. Price models, how ownership is handled, etc, but will not go there. The main difference between both services is their business model. ENS has a yearly payment structure, while UD has a one-off payment model. Not fundamentally relevant, but worth remembering.

The main caveat right now is that you need to use applications that work with said domain extensions.

The ICANN has not introduced those domain extensions in the standard. Regardless of how you host your site, your audience will still need a browser supporting your “special” domain (Brave). Alternatively, extensions that help you load crypto-related domains. It is very unlikely they will be incorporated natively in the future. Their creation and ownership are completely out of the control of the ICANN. A strong barrier to adoption, although not a definitive one.

What is the promise?

The promise is to have a decentralized web. Meaning your site infrastructure is not dependent on private entities, but organized in a way that your content would be theoretically more resilient. Your data cannot be taken down, disappear or be regulated.

This would enable to have always available information, reliable. Escaping the censorship in authoritarian governments. We all know the dark side of said promise as well, the dark web, the uncontrollable spread of fake information… Aspects not limited to a pure societal rejection, but also having strategic value. Being susceptible to manipulation according to particular interests. Weaponizing information is not new, but the scale and reach are.

Another aspect to take into account is that complete anonymity is not possible. Even not providing your personal information when registering. You are still leaking details about your wallet, IP address, etc.

The elephant in the room is they are still pretty much centralized. As they are now at least. First, you need the central organization (ENS, Unstoppable Domains) to provide the domain. You also need a said entity to allow the association with a particular coin or asset. Second, you still need a third-party browser or extension to route to your domain. Meaning that, as example, Brave could tomorrow decide to block your particular site and no user will be able to easily reach your content.

Great teams are working on providing the other (more significant) significant parts of the equation in an almost decentralized shape (message routing, container resolving,…). Making it possible running on-chain applications. I promise I will write more about all the work done by the IPFS and the Internet Computer protocol.

5 great ways to increase your understanding of your customer’s path to conversion

Path to conversion

Understanding your customer’s path to conversion is tricky. Conversion in the ample sense of the word. Conversion is the completion of a particular goal we need our users to accomplish. Some things that I find useful in the process of understanding said path.

Nurture your beginner’s mind.

The moment you write a line of code you are trapped. Or mocking a UX interface, or design a prototype. Pick your poison. You become a prisoner of your views about the product/service/feature.

There is a difference between being opinionated about your product. You better be. And being open to exploring possibilities and options. The best product people I know can play both. Looking at things with a beginner’s mind will help you understand potential blockers. Identifying knowledge gaps. Differences in expectations. All aspects that might be ruining your conversion rate.

Internalize that the conversion happens not at a point, but as a result of a path

It is the outcome of a process that starts way before. More often than not, it begins outside of your platform. Mapping your user journeys and the diverse challenges they face is essential. Go back as far as you can go. You might have a nice set-up available for that. Depending on the sophistication of your operation of course. Explore your analytics tools. Learn about the different attribution models. How they might be impacting your data. Using qualitative research and educated guesses should always complement your data.

Understand HOW your customers reach you.

The circumstances of that customer ending up in contact with your product do matter. One example. Users landing on your site from Search Engines (non-brand queries) lack context. They probably know nothing about the years you have been in the business. They ignore how your solution ranks against competitors. Know nothing about all your great points. The safe assumption is they don’t. Plan accordingly.

Ask yourself. What is your customer context? How does it impact their experience? what can I do to improve it? how can I increase the level of trust? How can I remove friction? Do the same exercise for all your acquisition channels or particular segments.

Become familiar with your customer expectations

The purchase criteria might be already defined in your customer’s mind. Way before the customer is even aware of your brand existence. Talk with your marketing team. Talk with your sales guys, or the founder (depending on the structure you are working on). Become an expert on your brand positioning. What is the category mapping the potential customers have in mind. Find out where EXACTLY they place your product.

Share your knowledge across your team.

Deepen the team’s understanding of the customer path to conversion. at various stages of customer marketing and product lifecycle through education and mentorship. Document your findings. Discuss your insights. Share nuggets of the interviews. Proof of the epiphany moments that helped you discover those insights.

In summary, be open and flexible with a learning mindset always on. Obsess over your customers. Become an expert in their perception of your product and their experience. Leverage that knowledge. Make sure everybody in your team is in the same page. Learn what is your customer’s journey, characteristics, needs and wants.

Blockchain Layers, L1s and L2s

Layer one and layer two explained

Once we passed the stage about explaining to my dad what a blockchain does (lately I am working more with Web3 projects, protocols, etc), the biggest struggle was not so much the logistics (cloud, decentralization), but the motivations. “Nodes? yes, but why? who owns them, how do they find out about all this, … “. From there I moved to how does it operate and works (proof-of-work, proof-of-stake). Then I started to mention L1s and L2s.

If you are having trouble figuring out what are L1 and L2s, you are not the only one. Let’s give it a try to explain something relatively complex in a simple way.

What does it mean L1s and L2s?

The L means Layer (network) and the number indicates their “position” (duh). A Layer network is a blockchain in a decentralised system. Not very clear, isn’t it? we have a decentralized system, the blockchain would be the first layer (L1). It provides the core functionality of the system. The second layer (L2would be third-party integrations that interact with the first layer to enhance the whole system throughput. They expand the blockchain protocol, augmenting its scalability. Examples of L1 are BTC (Bitcoin) or ETH (Ethereum). Examples of L2s are Plasma (extending Ethereum protocol) and Lightning (built on top of Bitcoin).

In an even simpler way to define it, we have the blockchain protocol. Conceptually exciting but hard to implement in real life. L1 solutions re-define how the protocol works to increase its utility (they make it a better, usable, native version). L2 solutions work on top of that protocol to improve its scalability and performance.

What is the difference between L1s and L2s

To understand the difference, we need to understand their “raison d’etre”. Let’s introduce the scalability trilemma. In Vitalik Buterin words:

The scalability trilemma says that there are three properties that a blockchain try to have, and that, if you stick to “simple” techniques, you can only get two of those three. The three properties are:

  • Scalability: the chain can process more transactions than a single regular node (think: a consumer laptop) can verify.
  • Decentralization: the chain can run without any trust dependencies on a small group of large centralized actors. This is typically interpreted to mean that there should not be any trust (or even honest-majority assumption) of a set of nodes that you cannot join with just a consumer laptop.
  • Security: the chain can resist a large percentage of participating nodes trying to attack it (ideally 50%; anything above 25% is fine, 5% is definitely not fine).

L1 protocols eventually found scalability problems when they reach a high adoption rate. Layer 2 solutions solve scalability problems while preserving those three properties of the system.

How do Layer 2 solutions work?

By abstracting part of the transactional load to an auxiliary architecture. A different “layer” absorbs part of the burden of the native system. It processes part of the data, reporting back to the main network. By doing that, the base layer gets less congested, can scale up and handle overall higher levels of activity.

L2s promise to bring transaction costs down, speeding up transactions along the way.

I would like to note down that L2s are not a monolithic solution. There are different approaches to Layer-2 solutions. Nested blockchains, State channels, sidechains, all of them with their own particularities, making use of different mechanisms, with their set of tradeoffs and advantages towards solving the scalability problem. I’ll review some of those in future articles, probably.

The competition between L1s and L2s

How do they compete? In a world of finite attention and capital, there is a paradigmatic competition between L1s and L2s. On one side, L1s compete to be the base layer for L2s. On the other side, their future growth depends on how they look in terms of investment returns potential. They compete in terms of adoption (we can measure it in terms of daily transaction growth and Total Value Locked / TVL), public awareness as well as how rich is the ecosystem (participants, tooling, quality of satellite solutions).

There are great theses out there about how to evaluate the quality of those assets and useful information about the more probable bets, but for the moment the key idea is that said competition exist.

I hope what are Layer 1 and layer 2 is clear by now, how they operate and why they somehow are competing. If you have questions just send them my way!

Proof-of-stake

I am writing it for my father, or at least that is the idea. Explaining complex concepts, to someone that does not necessarily have the same background or technical acumen. I got a lot of questions about my line of work, mostly related to tech or logistics of how I operate daily (aka, “yes, you are paid, but what is that you do exactly? how is your day at work?”). So I’ve decided to write about those. Disclaimers about the technical validity or accuracy of my affirmations.

My dad, the gentleman in the middle

What is proof-of-stake (POS)?

It is a safety mechanism to prevent abuse of a system. The most popular application is to cryptocurrencies. It is actually a solution to a somehow faulty solution, Proof-of-work (POW). Proof-of-work is a similar mechanism, based on increasing the cost of interacting with the system artificially. In PoS, instead of demanding a costly computation to participate, participants stake the coins they hold. The more coins they hold, the higher the possibility for them to interact (validate).

Lets’s take a step back. How do we prevent people from interacting maliciously with a system where said interaction has friction closer to zero? By adding friction artificially. Asking to solve a problem that is difficult to find, but easy to verify. It adds the right amount of effort to dissuade malicious attacks, keeping it functional.

The idea Cynthia Dwork and Moni Naor come up with in 1993 were quite beautiful. It was adopted in the famous foundational Bitcoin paper by Satoshi Nakamoto in 2008.

How does proof-of-work work?

Bitcoin is a distributed ledger. Information is stored in blocks, where every piece can be viewed by all participants in the network. It has a caveat though, without a central authority to verify if a transaction is real or fraud, how can you trust it? It needed a mechanism at its core to resolve this validation process in a decentralised way.

So, we have a blockchain (a distributed database), miners (nodes in that network, computers) and transactions we want to record in a way we can trust. When a new transaction occurs, a puzzle is given to miners. Miners compete to resolve it. Once the first one to solve the puzzle, the others verify the solution is right. If it is okay, the transaction is recorded and only that miner is rewarded. We have a system decentralised (multiple verification nodes), autonomous (as soon as the incentives are economically efficient miners will keep operating) and trustable.

How is the puzzle? It is a mathematical problem. The kind that can only be solved by trying one solution after another. They try to guess a 64-digit hexadecimal number, called a hash, that is less than or equal to a target hash in SHA-256, Bitcoin’s PoW algorithm. Not a hard problem, but one that allows for no shortcuts. Speed of processing is more important than being “smart”. This is an oversimplification and there are TONS of nuances around it (how the difficulty of the problem increases over time, probability of reward, POW algo…).

What is the issue then?

On one side POW is by definition costly. In terms of energy, hardware, infrastructure. It has raised real concerns about it being the best possible use of that energy. On the other side, participants (miners) are prone to maximise profits, regardless of the network. There is no incentive to improve the network. Bitcoin or Litecoin are still running on a PoW method.

Proof-of-stake is the proposed solution. Instead of having all participants compete, it assigns the option to create the block randomly. The amount of mining power depends on the amount the participant holds, assuming the more coins you hold, the higher the incentive to keep the system running. Miners or validators are rewarded as well, but they have to lock their tokens up in order to participate. Risking losing them if they are being malicious agents.

I hope it is clear enough. It passed the Dad test. Quite literally.

This is America video, by Hiro Murai for Childish Gambino

Directed by Hiro Murai and produced by Doomsday.  With Ibra Ake and Fam Rothstein of the creative agency/Label Wolf + Rothstein, for multi-Grammy nominee Childish Gambino. I love the work of Hiro, “Do you” video for Spoon, or “Gold” for Chet Faker, he is a star.

This is the first result of partnering with RCA Records. Timely topic, action at different levels in the same frame, overlapping on purpose violence, popular dance moves and criticism. An amalgamation of different views of modern America. They deliver, in such a solid way one could not wait to see what comes next.

Opening

 

Muji Award 2018 04 edition

Muji Award 2018 gold prize winner: the Storage Book, created by Ip Chi Chuen (HONG KONG)

According to the designer, “Sorting things” is a part of our lives, but you may often have trouble finding a place to store things after sorting them. As a solution to this problem, I made a storage case shaped like a book to make it easier to decide where to place. This MUJI PP case is designed to have the same shape and size as a normal book and the spine on which an identification sticker can be attached. It is an idea where a book on a bookshelf has an ability to store things.”

Book storage, muji awards 04, side view
Book storage, muji awards 2018, use case picture

Book storage, muji awards 04 winner. By Ip Chi
By Ip Chi Chuen, Hong Kong

I love it because I have been storing things in books since I was a kid. Although I find it more interesting the Door-in-Door project (Bronze award), from Chinese duo Lu Jiajheng & Cheng Yatin. But who am I to judge? 😉

Here you have the list of nominees and winners of Muji Awards 2018.

Kenzo ad, by Spike Jonze

Spike Jonze’s new ad for Kenzo’s new parfum, with Margaret Qualley. Top-notch.

Enjoy the video:

Director: Spike Jonze
“Margaret”: Margaret Qualley (Insta)
Producers: Natalie Farrey and Vincent Landay for MJZ
Executive producers: Humberto Leon and Carol Lim
Co-Production: Amanda Adelson
Art Directing Photography: Hoyte van Hoytema
Production Designer: KK Barrett
Editor: Eric Zumbrunnen
Choreographer: Ryan Heffington
Costumes: Heidi Bivens
Music: Mutant Brain (feat. Assassin) par Sam Spiegel & Ape Drums

Previously oorei dot com | Comments are disabled