Tranquillo, lei ha l'eternità davanti...
#lavoro #ufficio #call #priorità #bastardidentro #diario2027
#Call for Bids!
The Afghan Red Crescent Society intends to contract the rental of two vehicles (three-door hardtop Land Cruisers) for mobile medical teams in the provinces of #Badghis and #Logar, according to the specifications outlined in the tender documents.
All logistics and transportation companies operating in this sector are invited to submit their proposals to the Contracts and Procurement Department of the Afghan Red Crescent Society and participate in the bidding session held seven days after the publication of this announcement. A participation fee of 1000 Afs will be collected in cash.
Address: #Kabul, District Five, Silo Area, Central Office of the Afghan Red Crescent Society.
هلالاحمر_افغانی در نظر دارد پروسه #کرایهگیری دو عراده موتر نوع (لندکروزر هاردتاپ سهدروازهای ) را برای تیمهای سیار صحی ولایات #بادغیس و #لوگر، مطابق مشخصات درجشده در آفر، به داوطلبی بسپارد.
تمام #شرکتهای لوجستیکی و ترانسپورتی که در این بخش فعالیت دارند، میتوانند پیشنهادات خویش را به آمریت قراردادها و تدارکات هلالاحمر افغانی بسپارند و خودشان هفت روز پس از نشر این اعلان در جلسه داوطلبی اشتراک نمایند. حقالاشتراک داوطلبی مبلغ ۱۰۰۰ افغانی نقداً اخذ میگردد.
آدرس: #کابل، ناحیه پنجم، افشار سیلو، دفتر مرکزی هلالاحمر افغانی.
Source: Afghan Red Crescent | افغاني سره میاشت (@ARCSAfghanistan)
[ https://x.com/ARCSAfghanistan/status/2068911950709264686 ]
[Beginner] Call all functions from main() or jump to functions from within functions?
Context\
I have been learning C as a hobby since autum 2025 because I am intrigued by computers. I have mainly been using Bro Code’s tutorial and PDF The C Programming Language (Second Edition), although I’m too much of a beginner to understand all of the latter material. There’s not really much more to it. I don’t really have any concrete goals with learning C, but I thought it could be a good first step into the world of programming and for now, I just really enjoy coding. In the future, I’d like to learn assembly language and then finally (?) program some CPU.
Background\
When I realized how I can use for loops to go through strings and how I can then manipulate certain portions of said string, I realized that I can play around with it to allow a user to modify (here, “trim") any given text. Good fun!
In this particular case, I focused on practicing separating the program into as specific and small functions as possible.
Questions\
1) Should I or could I call the next function from within the previously called function, as opposed to listing them all in main() as I have done below? My guess is that listing them all in main() gives the reader a better overview of the flow, as opposed to having to look into each separate function to find out what’s connecting to what?
2) I believe that the only variable that really needs to be global is the “input”, since so many functions need to be able to access it. What are the pros and cons of using local variables where possible?
CODE#include <stdio.h>
#include <string.h>
//Function declarations
void promptchoice_main(void);
void promptchoice_main_again(void);
void promptinput(void);
void promptchoice_trim(void);
void executechoice(char choice_trim);
void trimnumbers(void);
void trimwhitespace(void);
void trimletters(void);
void trimspecial(void);
void specifyspecial(void);
void printresult(char input[]);
//Global variables
char choice_main = 0x00;
char choice_trim = 0x00;
char choice_detail = 0x00;
char choice_special = 0x00;
char input[1000] = "";
char previous_input[1000] = "";
//Remove specific numbers, letters, punctuation or whitespace characters from input.
int main() {
printf("\nWelcome! This program trims text by removing unwanted characters.\n");
while (1) {
if (strlen(previous_input) == 0) { // Check for previously trimmed text in memory.
promptchoice_main();
if (choice_main == 'E') { break; }
if (choice_main == 'T') {
promptinput();
promptchoice_trim();
executechoice(choice_trim);
printresult(input);
}
}
else {
promptchoice_main_again();
if (choice_main == 'E') { break; }
if (choice_main == 'T') {
promptinput();
promptchoice_trim();
executechoice(choice_trim);
printresult(input);
}
else if (choice_main == 'P') {
sprintf(input, "%s", previous_input);
printf("\nYou are trimming previously trimmed text: %s\n", input);
promptchoice_trim();
executechoice(choice_trim);
printresult(input);
}
}
}
printf("\nGoodbye!\n");
return 0;
}
//Function definitions
void promptchoice_main(void) {
while (1) {
printf("\nPress T and ENTER to trim text or E and ENTER to exit: ");
scanf("%c", &choice_main);
while (getchar() != '\n') {}
if (choice_main == 'T' || choice_main == 'E') { break; }
else { printf("\nInvalid input!\n"); }
}
return;
}
void promptchoice_main_again(void) {
while (1) {
printf("\nPress T and ENTER to trim new text, P and ENTER to trim previously trimmed text or E and ENTER to exit: ");
scanf("%c", &choice_main);
while (getchar() != '\n') {}
if (choice_main == 'T' || choice_main == 'P' || choice_main == 'E') { break; }
else { printf("\nInvalid input!\n"); }
}
return;
}
void promptinput(void) {
printf("\nEnter the text that you would like to trim and press ENTER: ");
fgets(input, sizeof input, stdin);
input[strlen(input) - 1] = '\0';
return;
}
void promptchoice_trim(void) {
while (1) {
printf("\nWhat would you like to trim?\n1) Numbers (1, 2, 3...)\n2) Whitespace (space, tab or newline) \n3) Letters (A,B,C... a,b,c...)\n4) Special characters (!,?, . , ...)\nType one of the above numbers and press ENTER: ");
scanf("%c", &choice_trim);
while (getchar() != '\n') {}
if (choice_trim >= 0x31 && choice_trim <= 0x34) { break; } // Only accept 1 through 4.
else { printf("\nInvalid choice!\n"); }
}
return;
}
void executechoice(char choice_trim) {
switch (choice_trim) {
case 0x31: trimnumbers(); // 123 etc
break;
case 0x32: trimwhitespace(); // space, tab, newline
break;
case 0x33: trimletters(); // ABC..., abc...
break;
case 0x34: trimspecial(); // ! ? , . etc.
break;
}
return;
}
void trimnumbers(void) {
int n = 0;
for (n = strlen(input) - 1; n >= 0; n--) {
if (input[n] >= 0x30 && input[n] <= 0x39) { input[n] = 0x18; }
}
return;
}
void trimwhitespace(void) {
while (1) {
printf("\nType S to trim SPACE, T to trim TAB, N to trim NEWLINE or A to trim all whitespace: ");
scanf("%c", &choice_detail);
while (getchar() != '\n') {}
if (choice_detail == 'S' || choice_detail == 'T' || choice_detail == 'A') { break; }
else { printf("\nInvalid input!\n"); }
}
int n = 0;
for (n = strlen(input) - 1; n >= 0; n--) {
if (choice_detail == 'S') { if (input[n] == 0x20) { input[n] = 0x18; } } // space
else if (choice_detail == 'T') { if (input[n] == 0x09) { input[n] = 0x18; } } // tab
else if (choice_detail == 'N') { if (input[n] == 0x0A) { input[n] = 0x18; } } // newline
else if (choice_detail == 'A') { if (input[n] == 0x20 || input[n] == 0x09 || input[n] == 0x0A) { input[n] = 0x18; } }
}
return;
}
void trimletters(void) {
while (1) {
printf("\nType U to trim uppercase letters, L to trim lowercase letters or A to trim all letters: ");
scanf("%c", &choice_detail);
while (getchar() != '\n') {}
if (choice_detail == 'U' || choice_detail == 'L' || choice_detail == 'A') { break; }
else { printf("\nInvalid input!\n"); }
}
int n = 0;
for (n = strlen(input) - 1; n >= 0; n--) {
if (choice_detail == 'U') { if (input[n] >= 0x41 && input[n] <= 0x5A) { input[n] = 0x18; } } // Uppercase
else if (choice_detail == 'L') { if (input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; } } // Lowercase
else if (choice_detail == 'A') { if (input[n] >= 0x41 && input[n] <= 0x5A || input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; } }
}
return;
}
void trimspecial(void) {
while (1) {
printf("\nType A to trim all special characters or S to specify which character to remove: ");
scanf("%c", &choice_detail);
while (getchar() != '\n') {}
if (choice_detail == 'A' || choice_detail == 'S') { break; }
else { printf("\nInvalid input!\n"); }
}
int n = 0;
for (n = strlen(input) - 1; n >= 0; n--) {
if (choice_detail == 'A') { if (input[n] >= 0x21 && input[n] <= 0x2F || input[n] >= 0x3A && input[n] <= 0x40 || input[n] >= 0x5B && input[n] <= 0x60 || input[n] >= 0x7B && input[n] <= 0x7E) { input[n] = 0x18; } } // All whitespace
}
if (choice_detail == 'S') { specifyspecial(); } // Let user specify character.
return;
}
void specifyspecial(void) {
while (1) {
printf("\nEnter special character to trim and press ENTER: ");
scanf("%c", &choice_special);
while (getchar() != '\n') {}
if (choice_special >= 0x21 && choice_special <= 0x2F || choice_special >= 0x3A && choice_special <= 0x40 || choice_special >= 0x5B && choice_special <= 0x60 || choice_special >= 0x7B && choice_special <= 0x7E) { break; }
else { printf("\nNot a special character!\n"); }
}
int n = 0;
for (n = strlen(input) - 1; n >= 0; n--) { if (input[n] == choice_special) { input[n] = 0x18; } }
return;
}
void printresult(char input[]) {
printf("\nTrimmed text:\n\n%s\n", input);
sprintf(previous_input, "%s", input); // Save trimmed text for reuse.
return;
}
//TODO
//Create error handling when trimming non existing characters.
//Replace characters (uppercase/lowercase, user selected, etc).
Today I will continue working on the Video and Voice Call Features. Due to the encryption the Voice is being send very slowly and with a big Delay!
#messaging #messenger #secure #safety #safe #private #privacy #shardmsgr #media #call #send #messsge #app
Digital Civilization / Internet Brain
🌐 SERIES TITLE:
The Internet Becomes a Brain: 8 Themes of the Fediverse Revolution
1. The Internet as a Living Brain
The modern internet behaves like a brain. Every post, share, and comment acts like a signal moving through neurons.
Instead of one central system, information flows through many connected nodes across the Fediverse.
This is the foundation of decentralized social media thinking.
2. Decentralization: No Single Control Point
Decentralization removes the idea of one company controlling everything.
Instead of one server, there are thousands of independent servers that still connect.
This creates resilience, diversity, and user control.
3. Mastodon and Community Servers
Mastodon is built on “instances”—independent communities with their own rules.
Each server is like a mini-social network inside a larger universe.
Users can still connect across servers.
4. ActivityPub: The Language of the Network
ActivityPub is the system that lets all platforms talk to each other.
It defines how posts move between servers and apps.
Without it, the Fediverse would be broken into isolated platforms.
5. The Fediverse Ecosystem
The Fediverse includes many apps working together:
Each platform is part of one connected ecosystem.
6. Digital Identity Without Big Tech
Your identity is not owned by a company.
Instead of one login tied to one platform, you get:
@name@server
This allows identity portability across the internet.
7. Community Governance and Moderation
Each server decides its own rules.
There is no global authority.
This creates many different cultures online, each managing its own digital space.
8. The Future Internet: A Multi-Brain Network
The future internet is not one platform—it is many connected systems.
Instead of one algorithm controlling attention, many communities shape their own information flows.
This is the shift from platform internet → protocol internet.
🧠 Final Concept Summary
This 8-blog series is built around one core idea:
The internet is becoming a distributed brain made of communities, not corporations.
#ad #africa #AI #artificialIntelligence #asia #broadcasting #caal #call #cast #china #cloud #cnn #com #cus #egypt #fediverse #google #html #http #icloud #ict #internet #irl #japan #link #matodosan #media #meta #metaverse #network #networl #online #protocol #proxy #russia #social #socialMedia #technology #ukraine #url #website