LambdaClass Hobby Club, hacking learning path handbook. The journey starts here!
481
363 commits
updated Jan 12, 2026
⚠️ If you are applying to LambdaClass' Engineering Residency you've to complete this learning path ⚠️
⚠️ If you are applying to LambdaClass' Engineering Residency you've to complete this learning path ⚠️
You can choose a life of ease and comfort or you can choose a life of service and adventure. When you're 90, which one of those things do you think you'll be more proud of? - Jeff Bezos
My algorithm has always been: You put smart people together, you give them a lot of freedom, create an atmosphere where everyone talks to everyone else. They're not hiding in the corner with their own little thing. They talk to everybody else. And you provide the best infrastructure. The best computers and so on that people can work with and make everyone partners. - Jim Simons
Top-down management leveraging command-and-control hierarchies are for the mahogany boardrooms of yesteryear. We are navigators, adventurers, and explorers of the future. We are married to the sea - Yearn's Blue Pill
A boring codebase doesn't make a bored developer, on the contrary, it frees developers up to think about important stuff and deliver value to the business. Just as I want my language to be boring so I can focus on interesting stuff, I also want my tech stack to be boring - the interesting bits should be in the value added, not the stuff under that. - HN
Welcome!
If you are reading this, you are probably giving your first -or second- steps on the long journey towards being a good developer, but first try to be a good human being and you will see how far that can get you.
This text is a guide intended to aid employees in their first days at the company, it will guide you in setting up expectations and working tools, and includes a whirlwind tour of the background knowledge necessary to work on the kinds of projects common at LambdaClass. This comprises the first part of the path.
The second part is a repository of selected and categorized reference material, exercises and projects for engineers at any stage.
During the initial onboarding of new employees, the first part must be read (end eventually re-read!) by everyone during this process, while the second part can be read on demand.
Before tackling the technical challenges ahead of us, we realized that the most important things any institution aspiring to greatness must have are clear and shared values and principles. These characteristics, along with several others, define a company's culture.
In these pages, you will find these principles and values, which are expected of anyone who is part of this institution, whether they are a newcomer or a settled employee, an intern or a manager, and how to solve non-technical problems. LambdaClass is a company with high technical content, but this knowledge must be enhanced by cultural values that allow a fast identification of problems, as well as ways to solve them, based on different learnings and heuristics that many have experienced throughout this journey.
While this document aims to be useful, organized, and verified, it is important to note that knowledge and wisdom must be challenged, evaluated, and modified over time. The ideas in these pages are not set in stone but are constantly being assessed and seeking to be refuted or improved.
c.f. The Hacker Manifesto.
Many of the values we elaborate on stem from a central truth: our work only matters if it can be trusted.
We are part of a global effort to build open, secure, and equitable digital infrastructure—systems that may outlast us and serve people we'll never meet. That reach gives us both influence and responsibility: every decision we make must reflect precision, respect, and honesty.
We work on technologies that manage sensitive data, financial transactions, and trustless environments—tools that are redefining how information, value, and identity are handled worldwide. The choices we make ripple far beyond LambdaClass, directly affecting security, privacy, and access to information.
In the fields of blockchain, cryptography, and decentralized systems, maintaing trust is a foundational and non-negotiable principle. A single careless action can erode confidence not just in one project, but in the entire ecosystem that depends on it.
When we ask people to trust the systems we create, we are also asking them to trust us. That trust is earned only when every member of our team acts with integrity, safeguards information, and approaches their work with professionalism.
When we ask people to trust the systems we create, we are also asking them to trust us. That trust is earned only when every member of our team acts with integrity, safeguards information, and approaches their work with professionalism.
One of Lambda's core goals is the betterment of society via technology, and cryptography (and soon AI) are central to these goals.
Attitude is how you feel, think, and what you believe regarding something, in other words, these things determine how you approach it.
Although the points we are going to discuss may seem obvious to someone with experience, most of the people who join us are trainees, meaning they have little or no experience in the development industry. Therefore, it becomes necessary to make these clarifications to ensure that everyone understands what we expect.
At Lambda you'll be surrounded by highly skilled professionals. We focus on building a high-performance team, so everyone here excels at what they do. In fact, being exceptional is the standard, which creates a paradox—because in a sense, no one is truly exceptional. Achieving top grades and finishing your degree on time, being passionate about System Programming or Cryptography, or mastering coding skills may have brought you here, but won’t suffice to ensure that you will continue to be a valuable team member. Everyone must continually prove they deserve to be part of this team.
Please don't interpret this point as an invitation to break rules, procedures, or timelines in the pursuit of excellence. While striving for exceptional performance is encouraged, it must be done within the boundaries of established guidelines. For example, completing the Learning Path in a week doesn't demonstrate mastery — it only shows that you rushed through the content without taking the time to truly absorb it. You won’t gain a deeper understanding by rushing through it. Additionally, we explicitly address the importance of ethical conduct, and cutting corners is never acceptable.
There are three key elements we want you to have present at every moment: Communication, Accountability, and Empathy.
Also remember our core principles are:
Those truly exceptional at Lambda are the least likely to believe they are. You may know how to code, but dealing with your own perception and emotions related is a soft skill that appears more rarely in young developers. Trust is earned over time, skills are learned and perfected over time, outliers in one context may not be so in another, and being an excellent team member and understanding one’s role in an organization is more important than standing out.
Excellency is a habit, and no one is above making mistakes. These two facts together lead to a an important conclusion: in order to be exceptional, it's crucial to learn from your mistakes. This starts with acknowledging them. Making mistakes isn’t the same as failing—pretending they didn’t happen is. Mistakes are an essential part of learning; you can’t grow without them. The next step is communicating them. Your work impacts others, so if you make a mistake, it’s important to acknowledge it. This not only makes it easier for others to help, but it also shows accountability.
On the other hand, self-doubt can also become unhelpful and crippling. We can guarantee that almost everyone at Lambda is constantly asking "how can I be better?" of themselves, but believing you don't belong will eventually lead to making it true.
As with most projects making mistakes fast and loudly will make you learn faster, this is why you must work directly on a repository through Pull Requests rather than workshopping in a draft made elsewhere.
Much is said about the Dunning-Kruger Effect and Impostor Syndrome, but the important points can be boiled down to:
Some resources on this topic:
Developing equanimity and focusing on the truth revealed by results is The Lambda Way. You’ll come across more lessons on this throughout your learning path.
We follow a code of conduct designed to ensure a safe team environment. You signed it when you entered Lambda and we expect you to follow it. Basically, treat everyone with respect.
At Lambda we won't micromanage you because we don't want to: we give flexibility but ask for responsibility in exchange. Of course, you can have days off to study, or if you feel sick, but you can also have days off if you feel brain fog, nervous, or a bit under the weather; we actually prefer it that way.
If you feel healthy and comfortable, you will be able to solve more efficiently the problems you have in front of you. And even better, you will contribute to a healthier workspace.
Nobody wants to give up, that's a common emotion. The good news is that you are not giving up, you are getting to know yourself better, so you can recharge your energies and keep learning and improving. In turn, when you are working we expect you to hit goals, be proactive, and be a valuable member of the team.
One of the first thing you’ll learn during your onboarding process is that feedback is our most valuable tool, and the ability to give and receive it is something we continuously develop here at Lambda. One quality we all share as collaborators is the ability to take feedback and act on it. Here, feedback is direct and to the point—we’re transparent and clear. If you’re making a mistake or there’s something to improve, you’ll be told as soon as possible. The same goes for positive feedback: if something stands out, we’ll make sure to highlight it.
For us, feedback isn’t a one-way street. It’s not just top-down from managers to team members—we encourage and value feedback in all directions. Two clarifications are in order:
If something is in place, it's because it was determined to be the most effective solution.
When you enter the workforce, giving feedback, especially negative feedback may be one of the most challenging skills you have to build. Here’s the key: It’s not just about what you say — it’s about how you say it.
Keep in mind that feedback, regardless of which direction it's going in, is affected by this power dynamic. This is why:
References:
Remember you are employed by Lambda even if you work on a client project. It's commonplace in Lambda to work collaboratively with clients in the development of apps and features, so maybe you will have more day to day rapport with them than with your other Lambda coworkers. If you're in that situation you should always remember a few key things:
Just reading this subsection title, you can feel your eyes rolling back into your head. What does an attitude of "hack the planet" have to do with the words "professionalism" and "ethics"?
Well, the lone hacker may be romantic, but great things only come from working together. At Lambda, we foster a youthful, relaxed, and collaborative environment to make sure that we can work together, and because of this professionalism and ethics are non-negotiable, whether you're 18 or 40.
We'll elaborate, but a tl;dr boils down to:
As all things, this is learned over time, with experience, and from others. If you are ever in doubt, ask your managers, tech leads, and mentors.
So what is professionalism?
Professional behavior is being considerate, formal and focused. In other words, putting constraints on behavior to enable something else. What exactly? A professional attitude makes you trustworthy and reliable. Clients and colleagues prefer to work with people who are polite and dependable. When you are known as somebody who is reliable, you’re more likely to be given added responsibilities and opportunities, and can make faster progress in your career.
Some of the most professional traits:
Software has over the decades, developed a culture and folklore of its own. As trends fade in and out, older tools and practices give way to newer ones, and flame wars rage one, we gather battle stories, wisdom, quotes, bibles, and memes with which we talk about our craft.
We have selected a few articles and posts we consider especially important to be familiar with, because they align with our values and way of working. To ensure everyone has time to be exposed to this material, we set up discussion groups in which someone volunteers to present some material, and the ensuing debate involving everyone, including more senior members, always results in relating the information to concrete experiences.
In addition to the Hacking Learning Path, new employees must participate in these Readings until they cycle out of the contents. You can see the program here.
However, we encourage everyone to continue to embed themselves in this engineering folklore and to continue studying and gainig new skills. For this reason, once the mandatory readings are done with, we invite them to the Book Club, which votes on what research papers, books, posts, or presentations they will study and debate.
We organize activities where we share thoughts and interests with anyone who wants to join us.
The learning path is not just a pile of material to read through, and there is no exam at the end with questions you need to answer. The point of gaining knowledge is to be able to do more things and apply them in problem solving. The only way to learn how to do this is via practice, and since small exercises can only exercise very specific things, there are a few larger projects throughout the learning path which newcomers are expected to complete. These projects are located in the respective section for their language.
When the time comes to start one of the projects please follow these steps:
README.md: Create some initial documentation that explains what the repository contains.Makefile: a Makefile with standard targets (build, run, test) will allow anyone, regardless of familiarity with the commands specific to your language, to run the project.dev branch, in addition to the main one. Learning projects have two separate phases: the first is active development. During this phase your PRs should branch from dev, and once reviewed by other members of the group following the Hacking Learning Path be merged into dev. Once your MVP has been achieved, and all the base functionality is implemented, create another PR from dev into main with the entirety of the code developed during the first phase. This PR will be reviewed by more senior members. Address any corrections that the may give you, and once this PR is merged into main the project can be considered complete.main and dev branches. Your CI must have jobs for ensuring that the code is formatted correctly according to the language's formatter, compiles, and passes tests. Each of these should be a separate job and required for merging a PR.The goal of doing all this for a learning project is to allow reviewers to skip the more basic corrections and address more meaningful corrections, and to make you familiar with the basic expectations and workflow of any project at LambdaClass.
One of Lambda's core goals is the betterment of society via technology, and cryptography (and soon AI) are central to these goals.
We use a suite of tools to facilitate many tasks, as well as to enforce our security standards for all employees.
Please refer to our Notion document, which aims to provide a simple overview of all of our tools.
Before beginning with this Journey, if you're a macOS user, you may need some tools or utils for a better experience in your learning path, otherwise, you can skip this section.
Homebrew is a package manager for macOS. It is a must on any developer machine.
Once you have installed Homebrew in your macOS system, you'll need to install some of the GNU tools/utilities for a better work experience. Just type in your shell the following command lines:
Do's and don'ts about the use of Vertical Whitespace
"Always implement things when you actually need them, never when you just foresee that you need them" - Ron Jeffries
Strive for solving problems in the simplest way possible. To achieve this, you first need to figure out a handful of ways to confront the issue at hand, and only then pick the one you consider will work in the fewest, tiniest steps. Afterwards, refactor. Tomorrow’s code may need to be more complex, so do everything in your power to facilitate tomorrow’s code as simple as possible. Also, while you shouldn't be blind to the future, avoid investing time and effort into developing features that are not currently necessary and might be a waste.
Some questions to guide your learning
If you've already installed GNU-tools, there's no need to install Linux on a VM.
Some questions to guide your learning
ls -l /bin/usr > ls-output.txt 2>&1ls /bin /usr/bin | sort | uniq | lessls /bin /usr/bin | sort | uniq | grep zipsda2 folder represent?/root and /usr/bin store?Some questions to guide your learning
No one should merge his/her own PR without it being reviewed and approved by a co-worker and/or a client.
Note: commit and push every day. Don't expect something perfect, go for the concrete. In one way or another, you will likely have to iterate later about that work done. Also, since that work isn't only stored on your computer, it won't be lost.
Note on Newlines at end of file It is considered good style - and sometimes a necessity - to always end files with a newline (see here and here). Make sure your editor of choice is correctly configured to add them automatically.
Some questions to guide your learning
merge and rebase?cherry-pick do?reflog do?git reset --hard HEAD do?Before you continue on your Git journey and learn how to use git together with GitHub, it is important to learn what an SSH Key (Secure Shell Key) is and how to generate one and add it to your GitHub account. This key will allow you to connect and authenticate to remote servers and services using the SSH protocol. With it, you will be able to connect to GitHub without supplying your username and personal access token each time.
Once you have an SSH key associated with your GitHub account, managing it will become a pain. The most basic next step is learning that instead of entering your SSH passphrase every time you have to authenticate, you can tell your operating system's SSH Agent to remember it for you and provide it.
In addition, you can tell 1password to manage it as well: instructions.
Once your system is configured to use the 1password SSH agent with your key, you can configure your local git client to use the SSH key to sign your commits, ensuring that your authorship of the code is verified. You can find the instructions here.
If you have existing commits that you need to push but have not been signed yet you can run the following command:
git rebase -i --exec "git commit --amend --no-edit -S" main
Some questions to guide your learning
RUN and CMD?Reference:
Some questions to guide your learning
COALESCE do?LIKE 'S%' do in a query?Some questions to guide your learning
⚠️WIP⚠️
Some questions to guide your learning
logging library, how do you log to a file?In the beginning, the BEAM and Erlang were almost synonymous, there were no other languages that ran on the BEAM virtual machine and ERTS. In fact the core of the platform is the ERTS -- the Erlang Run Time System. In time, others have emerged such as LFE, Elixir, and Gleam. Today, the most common gateway into the ecosystem is learning how to be productive with Elixir, learning the serial (non-concurrent) and functional programming aspects first, and then the support for concurrency, the common concurrency and distribution patterns provided by the OTP. This is usually eventually complemented by learning Erlang to be able to understand and read code from common dependencies (e.g. Cowboy). Lately, Gleam has also matured and is a very interesting possibility.
Getting started section starting at the introduction EXCEPT:
In addition, read:
Other useful resources:
The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic.
QuickCheck is a testing method (formerly a Haskell library that got adapted to many more languages) that consists of defining expected properties of your program or function, and then testing it extensively against randomly-generated variables automatically. ExCheck is a property-based testing library that resembles QuickCheck.
Check out the project description
Exercises
⚠️WIP⚠️
There are now many books on Rust and specific topics within Rust but we consider the following to be of the highest quality/relevance:
Posts:
Other resources:
Exercises
rustlings lsp
Implement Conway's Game of Life using Rust + Wasm.
We suggest you:
and here are some sources you might find useful in this journey:
Implement a simple Merkle Tree in Rust.
We suggest starting simple, do not optimize prematurely because it's pretty sure that you're not gonna need those optimizations.
Here are some sources that you might find useful:
Although we do not currently use any Lisps at Lambda, we have in the past and there is much to learn from this most venerable family of tools.
All distributions are shown on this page, for Mac follow this link.
Amazon Web Services (AWS) is the world’s most comprehensive and broadly adopted cloud platform, offering over 200 fully featured services from data centers globally. Millions of customers—including the fastest-growing startups, largest enterprises, and leading government agencies—are using AWS to lower costs, become more agile, and innovate faster.
AWS tools
(Optional) To further learn about AWS and its practical uses go here for exercises. These exercises are purely optional and require creating a free tier AWS account, and even then, some of the exercises require a paid account.
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
There are some good books on the general theory and practice of building distributed systems:
Some good posts and articles:
The book Designing Data-Intensive Applications is an excellent introduction to many topics related to building scalable and fault-tolerant systems. It provides a decent map of the territory and jumping-off points for anyone beginning to understand how systems are architected to provide these characteristics since it provides many references for further reading.
⚠️WIP⚠️
⚠️WIP⚠️
⚠️WIP⚠️
⚠️WIP⚠️
⚠️WIP⚠️
When onboarding to Ethereum-related projects it is important to get a general idea of the high-level components, how they relate, and the general design tradeoffs involved, and then a deeper understanding of some central components.
However, understanding everything from the get-go is impossible. Read the Introductory Material, Ecosystem, the selected subsections of the official docs, and the EVM sections. The rest are for reference or reading at your own pace.
This is the official documentation at ethereum.org.
Reading through it all in the beginning is not necessary but these highlighted subsections are recommended.
⚠️WIP⚠️
⚠️WIP⚠️
(top 30 of 50)
LambdaClass Hobby Club, hacking learning path handbook. The journey starts here!
481
363 commits
updated Jan 12, 2026
⚠️ If you are applying to LambdaClass' Engineering Residency you've to complete this learning path ⚠️
⚠️ If you are applying to LambdaClass' Engineering Residency you've to complete this learning path ⚠️
You can choose a life of ease and comfort or you can choose a life of service and adventure. When you're 90, which one of those things do you think you'll be more proud of? - Jeff Bezos
My algorithm has always been: You put smart people together, you give them a lot of freedom, create an atmosphere where everyone talks to everyone else. They're not hiding in the corner with their own little thing. They talk to everybody else. And you provide the best infrastructure. The best computers and so on that people can work with and make everyone partners. - Jim Simons
Top-down management leveraging command-and-control hierarchies are for the mahogany boardrooms of yesteryear. We are navigators, adventurers, and explorers of the future. We are married to the sea - Yearn's Blue Pill
A boring codebase doesn't make a bored developer, on the contrary, it frees developers up to think about important stuff and deliver value to the business. Just as I want my language to be boring so I can focus on interesting stuff, I also want my tech stack to be boring - the interesting bits should be in the value added, not the stuff under that. - HN
Welcome!
If you are reading this, you are probably giving your first -or second- steps on the long journey towards being a good developer, but first try to be a good human being and you will see how far that can get you.
This text is a guide intended to aid employees in their first days at the company, it will guide you in setting up expectations and working tools, and includes a whirlwind tour of the background knowledge necessary to work on the kinds of projects common at LambdaClass. This comprises the first part of the path.
The second part is a repository of selected and categorized reference material, exercises and projects for engineers at any stage.
During the initial onboarding of new employees, the first part must be read (end eventually re-read!) by everyone during this process, while the second part can be read on demand.
Before tackling the technical challenges ahead of us, we realized that the most important things any institution aspiring to greatness must have are clear and shared values and principles. These characteristics, along with several others, define a company's culture.
In these pages, you will find these principles and values, which are expected of anyone who is part of this institution, whether they are a newcomer or a settled employee, an intern or a manager, and how to solve non-technical problems. LambdaClass is a company with high technical content, but this knowledge must be enhanced by cultural values that allow a fast identification of problems, as well as ways to solve them, based on different learnings and heuristics that many have experienced throughout this journey.
While this document aims to be useful, organized, and verified, it is important to note that knowledge and wisdom must be challenged, evaluated, and modified over time. The ideas in these pages are not set in stone but are constantly being assessed and seeking to be refuted or improved.
c.f. The Hacker Manifesto.
Many of the values we elaborate on stem from a central truth: our work only matters if it can be trusted.
We are part of a global effort to build open, secure, and equitable digital infrastructure—systems that may outlast us and serve people we'll never meet. That reach gives us both influence and responsibility: every decision we make must reflect precision, respect, and honesty.
We work on technologies that manage sensitive data, financial transactions, and trustless environments—tools that are redefining how information, value, and identity are handled worldwide. The choices we make ripple far beyond LambdaClass, directly affecting security, privacy, and access to information.
In the fields of blockchain, cryptography, and decentralized systems, maintaing trust is a foundational and non-negotiable principle. A single careless action can erode confidence not just in one project, but in the entire ecosystem that depends on it.
When we ask people to trust the systems we create, we are also asking them to trust us. That trust is earned only when every member of our team acts with integrity, safeguards information, and approaches their work with professionalism.
When we ask people to trust the systems we create, we are also asking them to trust us. That trust is earned only when every member of our team acts with integrity, safeguards information, and approaches their work with professionalism.
One of Lambda's core goals is the betterment of society via technology, and cryptography (and soon AI) are central to these goals.
Attitude is how you feel, think, and what you believe regarding something, in other words, these things determine how you approach it.
Although the points we are going to discuss may seem obvious to someone with experience, most of the people who join us are trainees, meaning they have little or no experience in the development industry. Therefore, it becomes necessary to make these clarifications to ensure that everyone understands what we expect.
At Lambda you'll be surrounded by highly skilled professionals. We focus on building a high-performance team, so everyone here excels at what they do. In fact, being exceptional is the standard, which creates a paradox—because in a sense, no one is truly exceptional. Achieving top grades and finishing your degree on time, being passionate about System Programming or Cryptography, or mastering coding skills may have brought you here, but won’t suffice to ensure that you will continue to be a valuable team member. Everyone must continually prove they deserve to be part of this team.
Please don't interpret this point as an invitation to break rules, procedures, or timelines in the pursuit of excellence. While striving for exceptional performance is encouraged, it must be done within the boundaries of established guidelines. For example, completing the Learning Path in a week doesn't demonstrate mastery — it only shows that you rushed through the content without taking the time to truly absorb it. You won’t gain a deeper understanding by rushing through it. Additionally, we explicitly address the importance of ethical conduct, and cutting corners is never acceptable.
There are three key elements we want you to have present at every moment: Communication, Accountability, and Empathy.
Also remember our core principles are:
Those truly exceptional at Lambda are the least likely to believe they are. You may know how to code, but dealing with your own perception and emotions related is a soft skill that appears more rarely in young developers. Trust is earned over time, skills are learned and perfected over time, outliers in one context may not be so in another, and being an excellent team member and understanding one’s role in an organization is more important than standing out.
Excellency is a habit, and no one is above making mistakes. These two facts together lead to a an important conclusion: in order to be exceptional, it's crucial to learn from your mistakes. This starts with acknowledging them. Making mistakes isn’t the same as failing—pretending they didn’t happen is. Mistakes are an essential part of learning; you can’t grow without them. The next step is communicating them. Your work impacts others, so if you make a mistake, it’s important to acknowledge it. This not only makes it easier for others to help, but it also shows accountability.
On the other hand, self-doubt can also become unhelpful and crippling. We can guarantee that almost everyone at Lambda is constantly asking "how can I be better?" of themselves, but believing you don't belong will eventually lead to making it true.
As with most projects making mistakes fast and loudly will make you learn faster, this is why you must work directly on a repository through Pull Requests rather than workshopping in a draft made elsewhere.
Much is said about the Dunning-Kruger Effect and Impostor Syndrome, but the important points can be boiled down to:
Some resources on this topic:
Developing equanimity and focusing on the truth revealed by results is The Lambda Way. You’ll come across more lessons on this throughout your learning path.
We follow a code of conduct designed to ensure a safe team environment. You signed it when you entered Lambda and we expect you to follow it. Basically, treat everyone with respect.
At Lambda we won't micromanage you because we don't want to: we give flexibility but ask for responsibility in exchange. Of course, you can have days off to study, or if you feel sick, but you can also have days off if you feel brain fog, nervous, or a bit under the weather; we actually prefer it that way.
If you feel healthy and comfortable, you will be able to solve more efficiently the problems you have in front of you. And even better, you will contribute to a healthier workspace.
Nobody wants to give up, that's a common emotion. The good news is that you are not giving up, you are getting to know yourself better, so you can recharge your energies and keep learning and improving. In turn, when you are working we expect you to hit goals, be proactive, and be a valuable member of the team.
One of the first thing you’ll learn during your onboarding process is that feedback is our most valuable tool, and the ability to give and receive it is something we continuously develop here at Lambda. One quality we all share as collaborators is the ability to take feedback and act on it. Here, feedback is direct and to the point—we’re transparent and clear. If you’re making a mistake or there’s something to improve, you’ll be told as soon as possible. The same goes for positive feedback: if something stands out, we’ll make sure to highlight it.
For us, feedback isn’t a one-way street. It’s not just top-down from managers to team members—we encourage and value feedback in all directions. Two clarifications are in order:
If something is in place, it's because it was determined to be the most effective solution.
When you enter the workforce, giving feedback, especially negative feedback may be one of the most challenging skills you have to build. Here’s the key: It’s not just about what you say — it’s about how you say it.
Keep in mind that feedback, regardless of which direction it's going in, is affected by this power dynamic. This is why:
References:
Remember you are employed by Lambda even if you work on a client project. It's commonplace in Lambda to work collaboratively with clients in the development of apps and features, so maybe you will have more day to day rapport with them than with your other Lambda coworkers. If you're in that situation you should always remember a few key things:
Just reading this subsection title, you can feel your eyes rolling back into your head. What does an attitude of "hack the planet" have to do with the words "professionalism" and "ethics"?
Well, the lone hacker may be romantic, but great things only come from working together. At Lambda, we foster a youthful, relaxed, and collaborative environment to make sure that we can work together, and because of this professionalism and ethics are non-negotiable, whether you're 18 or 40.
We'll elaborate, but a tl;dr boils down to:
As all things, this is learned over time, with experience, and from others. If you are ever in doubt, ask your managers, tech leads, and mentors.
So what is professionalism?
Professional behavior is being considerate, formal and focused. In other words, putting constraints on behavior to enable something else. What exactly? A professional attitude makes you trustworthy and reliable. Clients and colleagues prefer to work with people who are polite and dependable. When you are known as somebody who is reliable, you’re more likely to be given added responsibilities and opportunities, and can make faster progress in your career.
Some of the most professional traits:
Software has over the decades, developed a culture and folklore of its own. As trends fade in and out, older tools and practices give way to newer ones, and flame wars rage one, we gather battle stories, wisdom, quotes, bibles, and memes with which we talk about our craft.
We have selected a few articles and posts we consider especially important to be familiar with, because they align with our values and way of working. To ensure everyone has time to be exposed to this material, we set up discussion groups in which someone volunteers to present some material, and the ensuing debate involving everyone, including more senior members, always results in relating the information to concrete experiences.
In addition to the Hacking Learning Path, new employees must participate in these Readings until they cycle out of the contents. You can see the program here.
However, we encourage everyone to continue to embed themselves in this engineering folklore and to continue studying and gainig new skills. For this reason, once the mandatory readings are done with, we invite them to the Book Club, which votes on what research papers, books, posts, or presentations they will study and debate.
We organize activities where we share thoughts and interests with anyone who wants to join us.
The learning path is not just a pile of material to read through, and there is no exam at the end with questions you need to answer. The point of gaining knowledge is to be able to do more things and apply them in problem solving. The only way to learn how to do this is via practice, and since small exercises can only exercise very specific things, there are a few larger projects throughout the learning path which newcomers are expected to complete. These projects are located in the respective section for their language.
When the time comes to start one of the projects please follow these steps:
README.md: Create some initial documentation that explains what the repository contains.Makefile: a Makefile with standard targets (build, run, test) will allow anyone, regardless of familiarity with the commands specific to your language, to run the project.dev branch, in addition to the main one. Learning projects have two separate phases: the first is active development. During this phase your PRs should branch from dev, and once reviewed by other members of the group following the Hacking Learning Path be merged into dev. Once your MVP has been achieved, and all the base functionality is implemented, create another PR from dev into main with the entirety of the code developed during the first phase. This PR will be reviewed by more senior members. Address any corrections that the may give you, and once this PR is merged into main the project can be considered complete.main and dev branches. Your CI must have jobs for ensuring that the code is formatted correctly according to the language's formatter, compiles, and passes tests. Each of these should be a separate job and required for merging a PR.The goal of doing all this for a learning project is to allow reviewers to skip the more basic corrections and address more meaningful corrections, and to make you familiar with the basic expectations and workflow of any project at LambdaClass.
One of Lambda's core goals is the betterment of society via technology, and cryptography (and soon AI) are central to these goals.
We use a suite of tools to facilitate many tasks, as well as to enforce our security standards for all employees.
Please refer to our Notion document, which aims to provide a simple overview of all of our tools.
Before beginning with this Journey, if you're a macOS user, you may need some tools or utils for a better experience in your learning path, otherwise, you can skip this section.
Homebrew is a package manager for macOS. It is a must on any developer machine.
Once you have installed Homebrew in your macOS system, you'll need to install some of the GNU tools/utilities for a better work experience. Just type in your shell the following command lines:
Do's and don'ts about the use of Vertical Whitespace
"Always implement things when you actually need them, never when you just foresee that you need them" - Ron Jeffries
Strive for solving problems in the simplest way possible. To achieve this, you first need to figure out a handful of ways to confront the issue at hand, and only then pick the one you consider will work in the fewest, tiniest steps. Afterwards, refactor. Tomorrow’s code may need to be more complex, so do everything in your power to facilitate tomorrow’s code as simple as possible. Also, while you shouldn't be blind to the future, avoid investing time and effort into developing features that are not currently necessary and might be a waste.
Some questions to guide your learning
If you've already installed GNU-tools, there's no need to install Linux on a VM.
Some questions to guide your learning
ls -l /bin/usr > ls-output.txt 2>&1ls /bin /usr/bin | sort | uniq | lessls /bin /usr/bin | sort | uniq | grep zipsda2 folder represent?/root and /usr/bin store?Some questions to guide your learning
No one should merge his/her own PR without it being reviewed and approved by a co-worker and/or a client.
Note: commit and push every day. Don't expect something perfect, go for the concrete. In one way or another, you will likely have to iterate later about that work done. Also, since that work isn't only stored on your computer, it won't be lost.
Note on Newlines at end of file It is considered good style - and sometimes a necessity - to always end files with a newline (see here and here). Make sure your editor of choice is correctly configured to add them automatically.
Some questions to guide your learning
merge and rebase?cherry-pick do?reflog do?git reset --hard HEAD do?Before you continue on your Git journey and learn how to use git together with GitHub, it is important to learn what an SSH Key (Secure Shell Key) is and how to generate one and add it to your GitHub account. This key will allow you to connect and authenticate to remote servers and services using the SSH protocol. With it, you will be able to connect to GitHub without supplying your username and personal access token each time.
Once you have an SSH key associated with your GitHub account, managing it will become a pain. The most basic next step is learning that instead of entering your SSH passphrase every time you have to authenticate, you can tell your operating system's SSH Agent to remember it for you and provide it.
In addition, you can tell 1password to manage it as well: instructions.
Once your system is configured to use the 1password SSH agent with your key, you can configure your local git client to use the SSH key to sign your commits, ensuring that your authorship of the code is verified. You can find the instructions here.
If you have existing commits that you need to push but have not been signed yet you can run the following command:
git rebase -i --exec "git commit --amend --no-edit -S" main
Some questions to guide your learning
RUN and CMD?Reference:
Some questions to guide your learning
COALESCE do?LIKE 'S%' do in a query?Some questions to guide your learning
⚠️WIP⚠️
Some questions to guide your learning
logging library, how do you log to a file?In the beginning, the BEAM and Erlang were almost synonymous, there were no other languages that ran on the BEAM virtual machine and ERTS. In fact the core of the platform is the ERTS -- the Erlang Run Time System. In time, others have emerged such as LFE, Elixir, and Gleam. Today, the most common gateway into the ecosystem is learning how to be productive with Elixir, learning the serial (non-concurrent) and functional programming aspects first, and then the support for concurrency, the common concurrency and distribution patterns provided by the OTP. This is usually eventually complemented by learning Erlang to be able to understand and read code from common dependencies (e.g. Cowboy). Lately, Gleam has also matured and is a very interesting possibility.
Getting started section starting at the introduction EXCEPT:
In addition, read:
Other useful resources:
The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic.
QuickCheck is a testing method (formerly a Haskell library that got adapted to many more languages) that consists of defining expected properties of your program or function, and then testing it extensively against randomly-generated variables automatically. ExCheck is a property-based testing library that resembles QuickCheck.
Check out the project description
Exercises
⚠️WIP⚠️
There are now many books on Rust and specific topics within Rust but we consider the following to be of the highest quality/relevance:
Posts:
Other resources:
Exercises
rustlings lsp
Implement Conway's Game of Life using Rust + Wasm.
We suggest you:
and here are some sources you might find useful in this journey:
Implement a simple Merkle Tree in Rust.
We suggest starting simple, do not optimize prematurely because it's pretty sure that you're not gonna need those optimizations.
Here are some sources that you might find useful:
Although we do not currently use any Lisps at Lambda, we have in the past and there is much to learn from this most venerable family of tools.
All distributions are shown on this page, for Mac follow this link.
Amazon Web Services (AWS) is the world’s most comprehensive and broadly adopted cloud platform, offering over 200 fully featured services from data centers globally. Millions of customers—including the fastest-growing startups, largest enterprises, and leading government agencies—are using AWS to lower costs, become more agile, and innovate faster.
AWS tools
(Optional) To further learn about AWS and its practical uses go here for exercises. These exercises are purely optional and require creating a free tier AWS account, and even then, some of the exercises require a paid account.
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
There are some good books on the general theory and practice of building distributed systems:
Some good posts and articles:
The book Designing Data-Intensive Applications is an excellent introduction to many topics related to building scalable and fault-tolerant systems. It provides a decent map of the territory and jumping-off points for anyone beginning to understand how systems are architected to provide these characteristics since it provides many references for further reading.
⚠️WIP⚠️
⚠️WIP⚠️
⚠️WIP⚠️
⚠️WIP⚠️
⚠️WIP⚠️
When onboarding to Ethereum-related projects it is important to get a general idea of the high-level components, how they relate, and the general design tradeoffs involved, and then a deeper understanding of some central components.
However, understanding everything from the get-go is impossible. Read the Introductory Material, Ecosystem, the selected subsections of the official docs, and the EVM sections. The rest are for reference or reading at your own pace.
This is the official documentation at ethereum.org.
Reading through it all in the beginning is not necessary but these highlighted subsections are recommended.
⚠️WIP⚠️
⚠️WIP⚠️
(top 30 of 50)