Chapi Dev Talks
8.55K subscribers
950 photos
108 videos
12 files
596 links
My name is Chapi and I am a Developer.

I post my thoughts about tech here.

Message to our assistant to give U Feedback: @sophiservebot

Join https://t.me/chapidevtalks_group

Urgent? Contact Me: @chapimenge (Don't say hi or ask Meta Questions )
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Legendary Video

Congressman, we do not do anything that is beyond any industry norms


πŸ˜‚πŸ˜‚πŸ˜‚
😁6🀣3
@MoonMam message from Amharic to English translation and damn that is amazing translation.

We are moving a lot on Amharic translation yemr.

πŸ‘
🀣16❀2
Look at this amazing voice that I admire the most. @MoonMam

The most humble human being and amazing person to have you around.

https://www.liquidbarriersolutions.com/voa/voices/mulu-tsega

She is a very active member of our Ethiopia developer community.

Now she is a voice of Africa. She is truely textbook definition of fantastic Human Being.

Glad to know you miss Mulu AKA Luna. πŸ™ Feeling soo proud
❀18πŸ‘5
This media is not supported in your browser
VIEW IN TELEGRAM
Memories bring back memories

ASTU
❀18πŸ‘1
Forwarded from GDG On Campus AASTU (Ikram..)
πŸŽ‰Attention all tech enthusiasts!πŸ”₯


πŸš€Our weekly dev dialogue session is back again with an unique event trail made just for you.As we have entered the month of March, we have invited a phenomenal guest who has worked with our previous dev dialogue guests Mukerem Ali and Chapi Meng in organizing EtCPC contests in CSEC club and participating in ICPC contests.πŸ”₯

Guess who she might be? Well, it's none other than Mebatsion Sahle, who has a lot to share about her tech journey.🀩She has various skill sets that define her as a true developer. With a strong background in Django, Spring Boot, React, and Data Science, Mebatsion is a coding team leader and a dedicated individual with experience in programming contests, contest organization, and site management.🌟

πŸ’«Join us as we discover the journey and inspiration that led Meba to these heights. Don't miss out on the opportunity to learn from our guest and get inspired.

πŸ“… Date: Sunday, March 3, 2024
πŸ• Time: 7:00 EAT|1:00 LT evening
πŸ“Location: Virtually

πŸ‘‰ RSVP to attend
❀13πŸ‘2πŸ”₯1
GDG On Campus AASTU
πŸŽ‰Attention all tech enthusiasts!πŸ”₯ πŸš€Our weekly dev dialogue session is back again with an unique event trail made just for you.As we have entered the month of March, we have invited a phenomenal guest who has worked with our previous dev dialogue guests Mukerem…
You are all not allowed to miss this event.

Meba is the world hardest worker and amazing dedicated women I have EVER EVER SEEN IN MY LIFE.

I AM NOT EXAGGERATING AT ALL PEOPLE.

I meet her when I was freshman at uni and ever since then she just impressed me day by day.

Some of her success story is that out club at ASTU. Without her I can tell you welahi it won't exist even for a semester.

All the competitive programming events she is always behind the event making it happen. Like she is an amazing programmer too.

She works like crazy. Her humbleness is over the roof.

She is just the best bestie I have and I am inviting you all to this amazing dialogue at [ GDSC ].

For everything you have done for me mebaye, thank you for life and you will always be my hero πŸ¦Έβ€β™€.

Everyone show her love and support and join me to hear this amazing girl on Sunday.
❀28⚑1πŸ‘1πŸ†’1
This media is not supported in your browser
VIEW IN TELEGRAM
ADWA victory day for Ethiopian and history for black people.
πŸ”₯33❀16πŸ‘3
This media is not supported in your browser
VIEW IN TELEGRAM
Memories
❀28🀩5πŸ‘1πŸ₯°1
Simple Deployed Web APP would look like this.
πŸ€”9πŸ‘4❀1
Forwarded from GDG On Campus AASTU (πš‹πš’πš›πšžπš” πš– 😎)
Dev dialogue Recap


πŸš€Last night's development dialogue session was truly extraordinary!

In line with our prior announcement, we had the honor of hosting Mebatsion Sahle⚑️, a remarkable woman in the tech industry whose expertise surpassed our expectations. 🚚We happed upon here tech journey, filled with lots of incredible achievements, experiences and people's. Prior to joining a university, she had some experience in programming and had lots of engagement in clubs as she told us.

Meba briefly addressed the issue of bureaucracy that women often encounter in the tech industry. She encouraged us to leverage it as motivation, turning obstacles into opportunities to prove ourselves.πŸ‘©β€πŸ’»πŸ”₯ Meba shared her personal experience of being underestimated and doubted, emphasizing how she triumphed over such challenges.

What made the evening particularly special was the presence of Meba's colleagues, Chapi, Duguma, and Ahmed🀩. Chapi played a pivotal role in highlighting Meba's exceptional achievements from the very beginning. Ahmed and Duguma served as living witnesses to her undeniable potentialπŸ™, creating an atmosphere reminiscent of a heartwarming family reunion🌟.

We extend our heartfelt gratitudeπŸ™ to Mebatsion for generously sharing her experiences and offering valuable advice. Additionally, we express our sincere appreciation to Chapi Meng, Duguma, and Ahmed for gracing us with their presence and infusing our night with positive energy.πŸ™

For those who missed this wonderful event, You can watch the recording on our platform to catch up on the inspiring insights, valuable lessons, and the sense of camaraderie that defined the evening. πŸŒπŸŽ‰ #TechTalks #Inspiration #WomenInTech

https://www.youtube.com/live/j6l_v9XS6TE?si=4LvapxVKe4bvX4h-
❀8πŸ‘2
😍 Team Untitled - ASTU have completed their registration.
We wish you all the best ❀️🫢

#ACPC2023 #acpc #etcpc2023 #etcpc #ICPC #ASTU
❀18πŸ‘1πŸŽ‰1
Let's talk about async/await a little bit.

The way async await works is it will not wait until the operation complete and hang other execution (if any) untill async task are completed.

Most IO bound tasks like opening files, networks tasks, we can't determine their speed based on *CPU speed so we can't just wait for these task to complete and stop the execution there like *most programming language does.

So when we work with IO bound tasks the best thing we can do is don't wait for the task to be completed if the remaining task is not dependent on it.

For example if the user registers and you want to send an email for confirmation you really don't need to wait for the email to be sent to respond to the user.

Because you can just send the email and don't wait for the email sending operating to be completed.

import asyncio

def register(...):
....
asyncio.create_task(
send_email, ...)
...
return...
#asyncio part 1
✍5❀1⚑1🀯1
Chapi Dev Talks
To clarify this more in a simple python code. This does resembles the actual code by just waiting yet the same thing happens in real codes too. #asyncio part 2
In JavaScript if you don't await it, it automatically will make it promise which will resolve by its own when it finish in background. That will give you a lot more Flexibility when you work on async.

I don't know much about JavaScript on how under the hood operates so please correct me if am wrong

#asycio
πŸ‘6⚑3
Chapi Dev Talks
To clarify this more in a simple python code. This does resembles the actual code by just waiting yet the same thing happens in real codes too. #asyncio part 2
Good Scenarios for Async Programming

There are many scenarios that we can leverage async programming to our work flow and i want to mention some of them.

Backend Services
- Notifying users is a really good choice if you can make it async. Ex: Sending emails, sending push notifications, etc.
- Processing data in the background. Ex: Processing a large file, processing a large amount of data, etc.
- Long running task operation that can be done in the background. Ex: Generating reports, etc.

Example in Action

# Accepting CSV file and processing it in the background
from fastapi import FastAPI, File, UploadFile, BackgroundTasks
import asyncio

app = FastAPI()

process_status = {} # use database in production

async def process_id_generator():
...

async def process_csv(process_id: int, file: UploadFile):
# Do some processing
await asyncio.sleep(5)
process_status[process_id] = "success"
return


@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):
asyncio.create_task(process_csv(file))
return {"status": "processing"}

# this uses fastapi background task scheduler to process
@app.post("/upload-fast-bg")
async def upload_file_fast_bg(file: UploadFile = File(...) , background_tasks: BackgroundTasks):
process_id = await process_id_generator()
background_tasks.add_task(process_csv, process_id, file)
return {"status": "pending", "process_id": process_id}

@app.post("process-status/{process_id}")
async def process_status(process_id: int):
return {"status": process_status.get(process_id, "not found")}

What we make here is, we are accepting a csv file and add the process to be processed in the background yet the user don't have to wait for that request to be the task completed. We can also check the status of the process by using the process id.

If the above were async, the user would have to wait for the process to be completed and that would be a bad user experience.

#asyncio part 3
why dont you follow me in X

https://twitter.com/chapimenge3
😁11πŸ‘Œ2
I was working reading more about how DNS Resolve works and that shit is so annoying, so far i only knows how to resolve the domain using

A Query 😭

import socket
import struct

def dns_resolver(domain_name):
# DNS server (Google's Public DNS)
dns_server = '8.8.8.8'
dns_port = 53

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Pack the DNS query
query = build_dns_query(domain_name)

# Send the DNS query to the DNS server
sock.sendto(query, (dns_server, dns_port))

# Receive the DNS response
response, _ = sock.recvfrom(1024)
print('response', response, _)

# Parse the DNS response
ip_address = parse_dns_response(response)

return ip_address

def build_dns_query(domain_name):
# DNS header
header = struct.pack('!HBBHHHH', 0, 1, 0, 1, 0, 0, 0)

# DNS question section
question = b''
for part in domain_name.split('.'):
question += struct.pack('!B', len(part))
question += part.encode('utf-8')
question += b'\x00' # End of domain name
question += struct.pack('!H', 1) # Query type A (IPv4)
question += struct.pack('!H', 1) # Class IN (Internet)
return header + question

def parse_dns_response(response):
# Parse the response to extract the IP address
ip_address = '.'.join(str(byte) for byte in response[-4:])
return ip_address

# Example usage
domain_name = 'blog.chapimenge.com'
ip_address = dns_resolver(domain_name)
print(f'The IP address of {domain_name} is {ip_address}')


This can resolve the domain or not


RFC: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION