A Team Can Have Genius People and Still Fail
Our Friday weekly article is here.
this one is about team work and how to make it efficient. Hope you enjoy reading it :)
@CTBEsoftwareengineers
Our Friday weekly article is here.
this one is about team work and how to make it efficient. Hope you enjoy reading it :)
@CTBEsoftwareengineers
β€6π₯1π1
Software engineering is dying?
No, it isnβt.
AI is reducing the barrier to producing code. It is not eliminating the need to understand what that code should do, why it should work, and what happens when it doesnβt.
The industry isnβt necessarily losing software engineers. Itβs changing what separates an engineer from someone who can simply produce software.
@CTBEsoftwareengineers
β€5π₯5π2
Common Git and GitHub features besides git commit and git push:
β git status shows which files are changed, new, or ready to save.
β git log shows the history of past changes.
β git diff shows exactly what changed in a file.
β git branch creates or lists separate lines of work, so people can try ideas safely.
β git switch or git checkout moves you to another branch.
β git merge combines changes from one branch into another.
β git clone copies a repository to your computer.
β git pull gets the newest changes from a remote repository.
β git stash saves work temporarily when you are not ready to commit.
β On GitHub, pull requests let people review and discuss changes before merging.
β GitHub issues help track bugs, tasks, and ideas.
β GitHub Actions can run tests and builds automatically.
β Forking copies someone elseβs GitHub repository to your own account.
β Releases let you mark and share important versions of a project.
@CTBEsoftwareengineers
β git status shows which files are changed, new, or ready to save.
β git log shows the history of past changes.
β git diff shows exactly what changed in a file.
β git branch creates or lists separate lines of work, so people can try ideas safely.
β git switch or git checkout moves you to another branch.
β git merge combines changes from one branch into another.
β git clone copies a repository to your computer.
β git pull gets the newest changes from a remote repository.
β git stash saves work temporarily when you are not ready to commit.
β On GitHub, pull requests let people review and discuss changes before merging.
β GitHub issues help track bugs, tasks, and ideas.
β GitHub Actions can run tests and builds automatically.
β Forking copies someone elseβs GitHub repository to your own account.
β Releases let you mark and share important versions of a project.
@CTBEsoftwareengineers
β€6π₯2
Hello AAU Coders!
I'm a new admin here, and I'm excited to get this community active . π
Starting *today*, expect a post every day:
π‘ Coding tips & concepts
π§© Quizzes & challenges
π Project ideas
πΌ Internships, jobs & scholarships
π Study & exam resources
π Dev humor & motivation
This is your community, so help shape it.π
What do you want to see more of? React or comment:
I'm a new admin here, and I'm excited to get this community active . π
Starting *today*, expect a post every day:
π‘ Coding tips & concepts
π§© Quizzes & challenges
π Project ideas
πΌ Internships, jobs & scholarships
π Study & exam resources
π Dev humor & motivation
This is your community, so help shape it.π
What do you want to see more of? React or comment:
β€18
If our code lives on GitHub, where does GitHub store its own code? π
Feel free to ask AI. We want you to know what happens behind the scenes.
Answer in the comment π
@CTBEsoftwareengineers
Feel free to ask AI. We want you to know what happens behind the scenes.
Answer in the comment π
@CTBEsoftwareengineers
β€3β‘1
AAU Software Engineering community
If our code lives on GitHub, where does GitHub store its own code? π Feel free to ask AI. We want you to know what happens behind the scenes. Answer in the comment π @CTBEsoftwareengineers
Ever wondered where GitHub stores its own code? π
GitHub doesn't need some magical place outside the system.
Its engineers use private repositories on GitHub itself to build and maintain the platform.
Curious to see whatβs behind the scenes? Explore their public repositories here π
π https://github.com/github
GitHub doesn't need some magical place outside the system.
Its engineers use private repositories on GitHub itself to build and maintain the platform.
Yep, GitHub uses GitHub to build GitHub.
Curious to see whatβs behind the scenes? Explore their public repositories here π
π https://github.com/github
GitHub
How people build software. GitHub has 573 repositories available. Follow their code on GitHub.
π€©3π₯1
1. Coding is just the cover. Software Engineering is building the skyscraper
πAI is getting incredibly good at coding (writing lines of syntax). But coding is not software engineering.
AI cannot talk to a frustrated client, understand their messy human emotions, figure out what they actually need (because clients never know what they want), and design a system to solve it. It doesn't understand business strategy, user empathy, or organizational politics. The syntax is automated; the problem-solving is yours.
2. If everyone can code, the "Ideas & Execution" person rules the world
Think about this as an entrepreneur: If AI makes coding "free," then code is no longer a moat. A billion-dollar company can't stop you just because they have 10,000 engineers. If you have a brilliant idea, a deep understanding of a specific industry's pain points, and the drive to execute, AI becomes your free, infinite workforce.
Instead of being a tiny cog in someone else's tech company, you are now the conductor of an AI orchestra. But to conduct the orchestra, you still need to know how music works. You need that engineering foundation to guide the AI effectively.
3. The "Last Mile" Problem (Why AI needs you)
Projects like ArtCraft prove exactly why humans are safe. An AI can generate 90% of a massive codebase in an hour. But that last 10%? Itβs filled with weird, hallucinated bugs, security vulnerabilities, and architectural nightmares.
AI cannot fix its own deep architectural flaws yet because it doesn't "think" it predicts the next token. The world is going to need a massive wave of AI-fluent human engineers to step in, debug, refine, and deploy this massive wave of AI-generated software.
4. You are entering at the absolute baseline
Imagine trying to learn software engineering in the 1970s, punching holes into physical cards and waiting days to see if your code worked. Every generation of tech gets higher-level abstractions.
You don't have to struggle through the old, tedious ways of learning. You get to learn with AI as your personal, 24/7 tutor. You can learn concepts 10x faster than engineers did five years ago. You aren't falling behind; you are being handed the most powerful educational tool in human history.
The Real Danger
The only way you get "cooked" is if you quit. If you quit, you miss the boat entirely. If you keep going, you become part of the top tier of builders who know how to command these models to build the future.
Take a deep breath. The tools are changing, but the world will always need builders !
@CTBEsoftwareengineers
π8β€3π₯1
Programming is clear thinking, not memorizing syntax or chasing trends.
Avoid the classic beginner trap of obsessing over boilerplate and language quirks. Instead, focus on what actually lasts:
β’ Breaking complex problems into simple, atomic steps
β’ Designing clean, predictable data flow
β’ Catching edge cases before they catch you
Frameworks come and go, but core logic and algorithms never change.
Once your mental blueprint is clear, the implementation is the easiest part. Master the fundamentalsthe code will follow effortlessly.
Avoid the classic beginner trap of obsessing over boilerplate and language quirks. Instead, focus on what actually lasts:
β’ Breaking complex problems into simple, atomic steps
β’ Designing clean, predictable data flow
β’ Catching edge cases before they catch you
Frameworks come and go, but core logic and algorithms never change.
Once your mental blueprint is clear, the implementation is the easiest part. Master the fundamentalsthe code will follow effortlessly.
β€4
AAU Software Engineering community
Programming is clear thinking, not memorizing syntax or chasing trends. Avoid the classic beginner trap of obsessing over boilerplate and language quirks. Instead, focus on what actually lasts: β’ Breaking complex problems into simple, atomic steps β’ Designingβ¦
A real example of this that hit me recently:
I was building a voice feature using Expo Audio, and no matter what I did, the recorded audio sounded terrible. Muffled, quiet, unusable.
Instead of stepping back to understand how the audio pipeline actually worked, I started treating symptoms: β’ Tweaked random recording presets and audio modes
β’ Added aggressive volume boosts
β’ Built an entire backend server dedicated to noise suppression and audio cleanup
Hours of work. Still sounded awful.
The root cause?
I had let AI scaffold the initial audio config, and it silently added unnecessary low-level flags that throttled sample rates and audio modes that were completely fine by default.
I finally stopped patching over the mess, closed the extra backend, and actually read the core Expo Audio docs.
I stripped out the clutter and implemented the native config myself from first principles.
The result: Crystal-clear audio, zero external processing servers needed, and 70% less code.
When you donβt fully grasp the underlying tool, you fix bad assumptions by adding more complexity. Master the fundamentals, understand what each line actually does, and the simplest solution usually wins.
I was building a voice feature using Expo Audio, and no matter what I did, the recorded audio sounded terrible. Muffled, quiet, unusable.
Instead of stepping back to understand how the audio pipeline actually worked, I started treating symptoms: β’ Tweaked random recording presets and audio modes
β’ Added aggressive volume boosts
β’ Built an entire backend server dedicated to noise suppression and audio cleanup
Hours of work. Still sounded awful.
The root cause?
I had let AI scaffold the initial audio config, and it silently added unnecessary low-level flags that throttled sample rates and audio modes that were completely fine by default.
I finally stopped patching over the mess, closed the extra backend, and actually read the core Expo Audio docs.
I stripped out the clutter and implemented the native config myself from first principles.
The result: Crystal-clear audio, zero external processing servers needed, and 70% less code.
When you donβt fully grasp the underlying tool, you fix bad assumptions by adding more complexity. Master the fundamentals, understand what each line actually does, and the simplest solution usually wins.
β€6
Developing a Local Wispr Flow Alternative Using a 16.9 MB Model
For individuals seeking immediate desktop voice-to-text conversion with no API expenses and complete offline privacy, Whistle by Cactus Compute facilitates execution on pure CPU architecture:
β’ Minimal Resource Footprint: 16.9 MB model size
β’ High Performance: Approximately 11 ms time-to-first-token
β’ Multilingual Support: Seven languages supported
β’ GPU Independence: Operates directly on the CPU
π Implementation in three steps:
Global Hotkey and Microphone: Assign a push-to-talk key (for example, holding
Immediate Local Speech-to-Text: Transmit the audio segment to the local Whistle engine immediately upon releasing the key.
Active Window Input: Insert the resulting text directly into the currently focused text field using OS-level keystroke emulation methods such as
This solution ensures complete privacy, eliminates network latency, and requires minimal RAM. It serves as an efficient project for enhancing daily typing productivity. π
For individuals seeking immediate desktop voice-to-text conversion with no API expenses and complete offline privacy, Whistle by Cactus Compute facilitates execution on pure CPU architecture:
β’ Minimal Resource Footprint: 16.9 MB model size
β’ High Performance: Approximately 11 ms time-to-first-token
β’ Multilingual Support: Seven languages supported
β’ GPU Independence: Operates directly on the CPU
π Implementation in three steps:
Global Hotkey and Microphone: Assign a push-to-talk key (for example, holding
Ctrl + Space) to record audio via a lightweight background script utilizing pynput and sounddevice.Immediate Local Speech-to-Text: Transmit the audio segment to the local Whistle engine immediately upon releasing the key.
Active Window Input: Insert the resulting text directly into the currently focused text field using OS-level keystroke emulation methods such as
xdotool, ydotool, or Windows SendInput APIs.This solution ensures complete privacy, eliminates network latency, and requires minimal RAM. It serves as an efficient project for enhancing daily typing productivity. π
β€3π1
βDev3Pack Hackathon 2026
Build on Solana with students around the world, 27β29 November 2026. Join online or at the Addis Ababa Build Station to collaborate, get support, and bring your ideas to life.
Learn Solana and Rust through the bootcamp starting 2 November. Top teams can continue with the Bridge Accelerator from 7 December.
Compete for prizes including $10,000+ for the best Solana app, $500 local-track prizes, Seeker Phones, and $2,500+ in student perks.
register here and Participate!
@CTBEsoftwareengineers
Build on Solana with students around the world, 27β29 November 2026. Join online or at the Addis Ababa Build Station to collaborate, get support, and bring your ideas to life.
Learn Solana and Rust through the bootcamp starting 2 November. Top teams can continue with the Bridge Accelerator from 7 December.
Compete for prizes including $10,000+ for the best Solana app, $500 local-track prizes, Seeker Phones, and $2,500+ in student perks.
register here and Participate!
@CTBEsoftwareengineers
app.dev3pack.xyz
Build Station in Addis Ababa
We are hosting a Build Station in Addis Ababa for the largest Solana university hackathon, in collaboration with Dev3pack.
β€4
Hungry enough to build
β‘οΈ Here is our Friday's weekly article. If you want to build a startup as a software engineer and student, you should read this.
@CTBEsoftwareengineers
@CTBEsoftwareengineers
Please open Telegram to view this post
VIEW IN TELEGRAM
β€7π₯4
This media is not supported in your browser
VIEW IN TELEGRAM
This AI skill explains code by building it as a machine. π§
Meet Anatomy, a free, open-source skill for Claude Code, also compatible with OpenCode, Codex, and Antigravity.
Ask it to explain a hard concept, and instead of a wall of text, it builds an interactive illustration of a machine that works like the concept. A rate limiter becomes a token bucket machine. A cache becomes a lock that only opens when every pin matches.
You can hover to take it apart and watch the numbers change live.
It already passed 19,000 stars on GitHub in about two weeks.
Source: github.com/wheresryan22/anatomy
Meet Anatomy, a free, open-source skill for Claude Code, also compatible with OpenCode, Codex, and Antigravity.
Ask it to explain a hard concept, and instead of a wall of text, it builds an interactive illustration of a machine that works like the concept. A rate limiter becomes a token bucket machine. A cache becomes a lock that only opens when every pin matches.
You can hover to take it apart and watch the numbers change live.
It already passed 19,000 stars on GitHub in about two weeks.
Source: github.com/wheresryan22/anatomy
π3β€2
HTTP status codes in plain English π
Every time your browser or app talks to a server, the server answers with a 3-digit code. Read it before you blame your code.
200 - OK, it worked
201 - Created, your POST made something new
400 - Bad request, your request was malformed
401 - Unauthorized, you need to log in
403 - Forbidden, logged in but not allowed
404 - Not found, that page or resource doesn't exist
500 - Server error, the backend broke
Next time a page fails, check the code first. It tells you where to look. π
Every time your browser or app talks to a server, the server answers with a 3-digit code. Read it before you blame your code.
200 - OK, it worked
201 - Created, your POST made something new
400 - Bad request, your request was malformed
401 - Unauthorized, you need to log in
403 - Forbidden, logged in but not allowed
404 - Not found, that page or resource doesn't exist
500 - Server error, the backend broke
Next time a page fails, check the code first. It tells you where to look. π
β€5
βοΈ THE DEVELOPER'S COURT IS NOW IN SESSION.
Today's defendant:
"If it works, don't touch it."
The prosecution argues that this mindset creates technical debt.
The defense argues that nobody has time to rewrite working code just because the developer had a sudden spiritual awakening. π
π¨ββοΈ JURY, WHAT'S YOUR VERDICT?
π’ INNOCENT β ship it.
π΄ GUILTY β clean up your code.
π‘ IT DEPENDS β context is king.
Drop your verdict and defend your position in the comments.
Objection? Make it technical. π¨βπ»
Today's defendant:
"If it works, don't touch it."
The prosecution argues that this mindset creates technical debt.
The defense argues that nobody has time to rewrite working code just because the developer had a sudden spiritual awakening. π
π¨ββοΈ JURY, WHAT'S YOUR VERDICT?
π’ INNOCENT β ship it.
π΄ GUILTY β clean up your code.
π‘ IT DEPENDS β context is king.
Drop your verdict and defend your position in the comments.
Objection? Make it technical. π¨βπ»
πΎ5β€3
What is an API, really?
Think about sending money using a banking app.
You open the app, enter someoneβs account number, and send 500 birr.
But your phone doesnβt have direct access to the bankβs database. It canβt just reach in and change your balance.
Instead, your app sends a request to the bankβs system through an API.
The bank checks the request, processes the transfer, and sends a response back to your app.
Request: βSend 500 birr to this account.β
Endpoint: The specific address your app sends that request to.
Response: βTransfer successfulβ β or βInsufficient balance.β
Thatβs an API. It lets two different software systems communicate without either one needing direct access to the otherβs internal workings.
And this happens every time you log in with Google, check the weather, or pay online.
An API is how software asks other software to do something.
Think about sending money using a banking app.
You open the app, enter someoneβs account number, and send 500 birr.
But your phone doesnβt have direct access to the bankβs database. It canβt just reach in and change your balance.
Instead, your app sends a request to the bankβs system through an API.
The bank checks the request, processes the transfer, and sends a response back to your app.
Request: βSend 500 birr to this account.β
Endpoint: The specific address your app sends that request to.
Response: βTransfer successfulβ β or βInsufficient balance.β
Thatβs an API. It lets two different software systems communicate without either one needing direct access to the otherβs internal workings.
And this happens every time you log in with Google, check the weather, or pay online.
An API is how software asks other software to do something.
β€12
CI/CD is a set of automated practices that help teams build, test, and release software safely and quickly.
CI (Continuous Integration) means every time a developer pushes code or opens a pull request, an automated system checks that the code builds and passes tests.
CD (Continuous Delivery/Deployment) means code that passes those checks can be automatically prepared for release or deployed to an environment like staging or production.
Here is how it works in practice:
you create a small config file, usually a .yml file (for example, .github/workflows/ci.yml for GitHub Actions), and inside it you define when the pipeline should run and which commands it should execute, such as
npm ci,
npm run lint,
npm test,
and npm run build. You can set it to run on pull requests, for example with on: pull_request, so when a developer creates or updates a PR, the CI system automatically starts a machine, installs dependencies, and runs those lint/test/build commands.
The PR then shows a green check if everything passes or a red X if something fails.
This helps because problems are caught early before merging, every PR gets the same checks instead of relying on people to remember, reviewers save time, and the main branch stays safer and more stable. After merge, CD can continue the same idea by automatically deploying the app to staging or production.
@CTBEsoftwareengineers
CI (Continuous Integration) means every time a developer pushes code or opens a pull request, an automated system checks that the code builds and passes tests.
CD (Continuous Delivery/Deployment) means code that passes those checks can be automatically prepared for release or deployed to an environment like staging or production.
Here is how it works in practice:
you create a small config file, usually a .yml file (for example, .github/workflows/ci.yml for GitHub Actions), and inside it you define when the pipeline should run and which commands it should execute, such as
npm ci,
npm run lint,
npm test,
and npm run build. You can set it to run on pull requests, for example with on: pull_request, so when a developer creates or updates a PR, the CI system automatically starts a machine, installs dependencies, and runs those lint/test/build commands.
The PR then shows a green check if everything passes or a red X if something fails.
This helps because problems are caught early before merging, every PR gets the same checks instead of relying on people to remember, reviewers save time, and the main branch stays safer and more stable. After merge, CD can continue the same idea by automatically deploying the app to staging or production.
@CTBEsoftwareengineers
β€1
Your past is not your future.
Past: I wasted months learning without building anything.
Future: What if I spend another year and still fail?
Present: You become overwhelmed and avoid the very work that could help you improve.
Your mind gets trapped between two things you cannot change directly: yesterday and tomorrow.
Use the past to learn. Use the future to set direction. Then bring your attention back to what you can do today.
Ask yourself:
What did the past teach me?
What am I working toward?
What is the next action I can take right now?
@CTBEsoftwareengineers
Past: I wasted months learning without building anything.
Future: What if I spend another year and still fail?
Present: You become overwhelmed and avoid the very work that could help you improve.
Your mind gets trapped between two things you cannot change directly: yesterday and tomorrow.
Use the past to learn. Use the future to set direction. Then bring your attention back to what you can do today.
Ask yourself:
What did the past teach me?
What am I working toward?
What is the next action I can take right now?
Your future is shaped by what you repeatedly do in the present, not by how vividly you imagine tomorrow.
@CTBEsoftwareengineers
β€9π₯4
Media is too big
VIEW IN TELEGRAM
π5π¨βπ»2