samuel watua Soita
Nairobi, Kenya · Full Stack Software Engineer · RemoteXcelsz
University of Nairobi
8 followers
About
Samuel Soita is a Full Stack Software Engineer with over 4 years of experience building, deploying, and maintaining web applications, backend services, REST APIs, and cloud-ready systems. He possesses strong skills in React, Node.js, C#/.NET, Python, and AWS. Samuel is also proficient in microservices, distributed systems, real-time communication, and AI-assisted development workflows.
Specialties
- DevOps Security
- Incident Response
- Penetration Testing
- SOC Analyst
- Threat Detection
Skills
- React
- Node.js
- C#/.NET
- Python
- AWS
- Backend Engineering
- Cloud Engineering
- TypeScript
- JavaScript
- Express.js
177 skills in total
Licenses & Certifications
-
Technology Software Development
Citi (Forage)
Issued Sep 2026
-
Solutions Architecture
Forage Academy
Issued Sep 2026
-
Software Engineering
Skyscanner (Forage)
Issued Sep 2026
14 certifications in total
Experience
-
SOFTWARE ENGINEER — FULL STACK
RemoteXcelsz
Nov 2025 — Present
United Kingdom | Remote
-
SOFTWARE ENGINEER — FULL STACK | FREELANCE
Freelance
Jan 2025 — Present
Nairobi, Kenya | Remote
-
IT INTERN — NETWORK & SYSTEMS SUPPORT
County Government of Bungoma
Jun 2022 — Sep 2022
Kenya
4 experiences in total
Education
-
University of Nairobi
Bsc, Microprocessor and Instrumenation Technology
Sep 2019 — Sep 2023
-
Moringa School
Bsc, Full stack software Engineering
Jan 2025 — Sep 2025
Repositories
-
Samuel-soita/PalaceApp
TypeScript
-
Samuel-soita/playstation-frontend
TypeScript
Recent posts
**You deployed a new version of your backend. Everything works. Then three background services start failing. What happened?**
Welcome to one of the less glamorous challenges of event-driven architecture: schema evolution.
Imagine your order service publishes this event:
```json
{
"orderId": "ORD-102",
"customerId": "CUS-45",
"amount": 2500
}
```
Your notification service, analytics service and inventory service all consume it.
Now your team changes the structure:
```json
{
"id": "ORD-102",
"customer": {
"id": "CUS-45"
},
"totalAmount": 2500,
"currency": "KES"
}
```
The new order service works.
But older consumers still expect `orderId`, `customerId` and `amount`.
Suddenly, your deployment has broken services that were not directly changed.
This is why event contracts deserve the same attention as public API contracts.
A robust approach includes:
- Explicit event schemas.
- Backward-compatible changes where possible.
- Versioning when breaking changes are unavoidable.
- Contract tests between producers and consumers.
- A migration strategy for old consumers.
- Monitoring for rejected or unprocessable events.
- Dead-letter handling and controlled replay.
One useful principle: adding a field is often safer than renaming or removing one, but compatibility still depends on how producers and consumers validate their messages.
**Backend engineers: do you version your internal events, or do you assume every service will always understand the latest payload?**
#EventDrivenArchitecture #BackendEngineering #Microservices #SystemDesign #DistributedSystems #APIContracts #SoftwareArchitecture #NodeJS #MessageQueues #DatabaseEngineering #ScalableSystems #EngineeringExcellence
**You built a feature that lets users submit a URL so your backend can fetch data from it. Have you considered what happens when someone submits an internal server address?**
This is where a seemingly harmless feature can become a serious security vulnerability.
Imagine building:
- A URL preview service.
- A webhook testing tool.
- An image importer.
- A document fetcher.
- An integration that retrieves external API resources.
Your backend receives a URL and makes an HTTP request.
But what if the submitted URL points to an internal service or cloud metadata endpoint?
The server might unintentionally access resources that should never be exposed to external users.
This is known as Server-Side Request Forgery (SSRF).
A safer implementation should consider:
1. Allowlisting trusted destination hosts where practical.
2. Blocking private, loopback and link-local IP ranges.
3. Validating DNS resolution and rechecking destinations after redirects.
4. Restricting outbound network access.
5. Controlling supported protocols and ports.
6. Applying request timeouts and response-size limits.
7. Never assuming a URL is safe simply because it starts with HTTPS.
This is especially important for applications that integrate with third-party services or allow user-controlled URLs.
Your backend should not become a proxy into infrastructure that users were never supposed to reach.
**Developers: do you validate user-submitted URLs before your server makes outbound requests?**
#Cybersecurity #SSRF #OWASP #ApplicationSecurity #BackendEngineering #API Security #CloudSecurity #NodeJS #WebSecurity #SecureCoding #DevSecOps #SoftwareArchitecture
**Your monitoring dashboard is green. Your servers are online. But customers cannot complete payments. Is your system available?**
This is an important distinction in reliability engineering.
Infrastructure health is not necessarily business health.
A server can respond successfully while:
- Payment requests are timing out.
- Checkout latency is increasing.
- Database queries are becoming slower.
- Background jobs are falling behind.
- Order confirmations are not being delivered.
If you only monitor CPU, memory and server uptime, you might miss the failures customers actually experience.
This is where Service Level Indicators (SLIs) and Service Level Objectives (SLOs) become valuable.
For example, a payment service could monitor:
**Availability:** What percentage of eligible payment requests receive a valid system response?
**Latency:** How long does it take to process payment requests?
**Correctness:** Are transactions reaching the expected final states?
**Freshness:** How long are unresolved payment records waiting for reconciliation?
An SLO defines the reliability target. An error budget helps teams understand how much unreliability they can tolerate before prioritizing stability over new changes.
The objective is not to make every service perfect.
It is to measure reliability in a way that reflects what users actually experience.
**If your application is online but customers cannot complete its most important business operation, would you still call it 99.9% available?**
#SRE #SiteReliabilityEngineering #BackendEngineering #Observability #SystemDesign #CloudEngineering #DevOps #Monitoring #Fintech #SoftwareArchitecture #ProductionSystems #EngineeringLeadership
**How many API endpoints does your application have that nobody remembers creating?**
Your application started with 15 endpoints.
Then came:
- A mobile application.
- A partner integration.
- An admin dashboard.
- A new API version.
- A temporary testing endpoint.
- A microservice migration.
A year later, nobody is completely sure which endpoints are still active.
Some are undocumented.
Some are outdated.
Some are still accessible without the security controls introduced in newer versions.
This is not just a documentation problem.
It is an API security problem.
OWASP identifies Improper Inventory Management as a specific API security risk.
Every exposed endpoint increases the surface that engineering teams must understand and protect.
A practical API inventory should track:
- Endpoint and API version.
- Authentication requirements.
- Authorization rules.
- Data exposed.
- Owning service or team.
- External dependencies.
- Deprecation and retirement status.
- Public, internal or partner-facing classification.
Also, removing an endpoint from your frontend does not necessarily remove it from your backend.
A forgotten endpoint can remain reachable.
**Engineering teams: do you have a reliable inventory of every API exposed by your production environment?**
#APISecurity #Cybersecurity #OWASP #BackendEngineering #Microservices #APIManagement #SoftwareArchitecture #DevSecOps #CloudSecurity #SecureAPIs #SoftwareDevelopment #TechLeadership
**Imagine rotating your payment gateway credentials and accidentally taking payments offline. What went wrong?**
Credential rotation is not simply generating a new API key and replacing the old one.
Production systems have dependencies.
Your backend uses the credentials.
Your background workers use the credentials.
Your staging environment may use different credentials.
Your deployment pipeline may inject credentials.
Your monitoring systems may depend on authenticated API access.
Now imagine updating only the main application.
The API works.
But background jobs continue using the expired credential.
Payment reconciliation starts failing.
Refund requests begin returning authentication errors.
And the team spends hours investigating what appeared to be an unrelated outage.
A safer credential-rotation process considers:
1. Identify every consumer of the existing credential.
2. Provision the replacement securely.
3. Update dependent services in a controlled sequence.
4. Verify successful authentication.
5. Monitor errors during the transition.
6. Revoke the old credential once the migration is confirmed.
7. Keep an emergency recovery procedure.
Where the provider supports overlapping credentials, a staged transition can reduce downtime.
This is why secrets management is an operational engineering responsibility—not just a security checklist.
**If you had to rotate every production API key today, would you know exactly which services would be affected?**
#Cybersecurity #DevSecOps #APIIntegration #SecretsManagement #BackendEngineering #CloudEngineering #PaymentGateway #AWS #ProductionEngineering #SoftwareArchitecture #SecureCoding #InfrastructureSecurity