Software Engineering
Your job involves turning the unknown into the known and translating vague ideas into actionable plans. This often involves a blend of:
- Detective work — ask the right questions, collect evidence, build a case theory, validate it
- Isolating uncertainty to the smallest components and proving / disproving theories
- Divide and conquer — breaking down the
3 Critical Skills You Need to Grow Beyond Senior Levels in Engineering
Why is Continuous Delivery for ML/AI hard(er)?
Since the challenge is not new and many valid solutions exist targeting traditional software projects, is there a reason to treat ML/AI systems any differently? Consider these three core challenges that are endemic in ML, AI, and data projects:
Since the challenge is not new and many valid solutions exist targeting traditional software projects, is there a reason to treat ML/AI systems any differently? Consider these three core challenges that are endemic in ML, AI, and data projects:
- Development and debugging cycles are more tedious due to
How To Organize Continuous Delivery of ML/AI Systems: a 10-Stage Maturity Model | Outerbounds
Whenever you write a log, it’s important you choose the correct log level.
I personally mostly use ERROR, WARNING, INFO, or DEBUG (yes there are a few more).
Log levels TLDR
I personally mostly use ERROR, WARNING, INFO, or DEBUG (yes there are a few more).
Log levels TLDR
- ERROR: Parts of the flow failed, we want to send alerts to our on-call for this failures.
- WARNING: Doesn’t necessarily point to a failure, but an unexpected behavior that should
Logging practices I follow
We ship often
Shipping early is not enough. We also need to keep shipping tiny iterations daily instead of waiting months to ship something big.
Having a strong sense of urgency , and making hard decisions fast is how we enable that process. Our sprints only last 1 week and are quite short when compared to the rest of the industry - this is by... See more
Shipping early is not enough. We also need to keep shipping tiny iterations daily instead of waiting months to ship something big.
Having a strong sense of urgency , and making hard decisions fast is how we enable that process. Our sprints only last 1 week and are quite short when compared to the rest of the industry - this is by... See more
How we ship new features · Resend
Welcome to rx!
rx is a command-line tool that makes it easy to create, use, and share development environments. It integrates with whatever tools you're currently using and gives you a long-running VM in the cloud that is kept in sync with your local machine.
Check out our blog post on why we built rx .
rx is a command-line tool that makes it easy to create, use, and share development environments. It integrates with whatever tools you're currently using and gives you a long-running VM in the cloud that is kept in sync with your local machine.
Check out our blog post on why we built rx .
GitHub - run-rx/rx: Remote execution made easy
Build & Deployments
Our build process starts by pushing changes to a repository on GitHub. When code is pushed to a repository through a pull request, it triggers a job to build the changes made to the branch and deploy them in isolation. This worklow happens interactively within the pull request, where the author has visibility of all steps.
Some... See more
Our build process starts by pushing changes to a repository on GitHub. When code is pushed to a repository through a pull request, it triggers a job to build the changes made to the branch and deploy them in isolation. This worklow happens interactively within the pull request, where the author has visibility of all steps.
Some... See more
How we approach CI/CD · Resend
Each log message in the system should be unique.
If I query for a log in a specfic service, I will be confused to see the exact same logs at different flows inside the service.
More than that, I’ll just have to start debugging for the issue, since the logs are now offically useless.
One way to keep the logs unique is to denote the service name and... See more
If I query for a log in a specfic service, I will be confused to see the exact same logs at different flows inside the service.
More than that, I’ll just have to start debugging for the issue, since the logs are now offically useless.
One way to keep the logs unique is to denote the service name and... See more
Logging practices I follow
Problem : Tight coupling leads to fragility - a change in one microservice breaks connected services.
Low cohesion results in unclear responsibilities.
Low cohesion results in unclear responsibilities.
- Solution : Apply loose coupling and high cohesion. In a loosely coupled system, each component is independent and changes in one will not affect the others. High cohesion means that each component
Muaath Bin Ali • Microservices Design Principles
factory_boy
factory_boy is a fixtures replacement based on thoughtbot's factory_bot.
As a fixtures replacement tool, it aims to replace static, hard to maintain fixtures with easy-to-use factories for complex objects.
Instead of building an exhaustive test setup with every possible combination of corner cases, factory_boy allows you to use objects... See more
factory_boy is a fixtures replacement based on thoughtbot's factory_bot.
As a fixtures replacement tool, it aims to replace static, hard to maintain fixtures with easy-to-use factories for complex objects.
Instead of building an exhaustive test setup with every possible combination of corner cases, factory_boy allows you to use objects... See more