bookmark_borderQuestions That You Should Not Answer In Interviews!! [Career Tips 01] – Khaled Alam

Hello connections,

My name is Khaled, a software engineer. I have no Master or PhD degree yet but I have something called curiosity.

This is my first video of this kind, if I find this useful, I will write from time to time about similar topics.

Note: everything mentioned from my personal experience and my personal opinions.

P.S. :

Since I have +10,000 LinkedIn connections, most of them are Students, C(*)Os and top-tech companies Engineers and Recruiters. I will give a few random career tips to:

▶ Students, fresh graduates and noobs:

↪ Don’t be proud of working at many companies in just 1 year or a few months, that refers to instability and gives very bad feedback about you.

↪ You can be a great candidate for the opportunity but answering my video’s questions may cause rejection.

↪ Marketing yourself and your work are very important points.

↪ Your CV content and style are very important points, invest some time making a creative, simple and powerful one.

↪ Follow-up with recruiter after each stage(but don’t spam him/her)

↪ If you worked with the worst companies/bosses/etc ever on the earth, DON”T talk badly or negatively about that. (stay positive or keep silent)

↪ Evaluate your real value in the market and put yourself in the correct place.

↪ NEVER stop learning and developing yourself.

↪ Be yourself.

↪ There are many factors to be considered regarding evaluating offers(not only money)

↪ For IT people: fundamentals -> problem solving -> trend technologies -> market yourself.

↪ Surround yourself with successful and professional people.

↪ Good certificates and good universities are useful. They are important exactly as the importance of skills and experiences.

↪ Don’t waste other people time.

▶ Recruiters and talent acquisition specialists:

↪ Don’t ask the candidate about my video’s questions, these are uneducated questions, these questions give a bad impression about you and/or company in most cases. If you have to ask these kinds of questions, tell the candidate that answering these questions is optional.

↪ Don’t ignore candidate questions and/or emails even if the candidate rejected unless the person is very noisy and spam.

↪ If you are working for a hiring agency and you have not to speak about the clients companies names, salaries etc.. let the candidate know that from the beginning.

↪ If you find the candidate (un/over)-qualified regarding the package and the opportunity, let him/her know from the beginning.

↪ Read about the opportunity and understand its details very well before posting or talking about it.

↪ Don’t waste other people time.

▶ C(*)Os:

↪ If some person accepts your very low opportunity that means 1 of 2 options, the 1st option means this person is silly and has no enough experience and the 2nd option is this person considers your opportunity as a temporary till getting a better one!

↪ Don’t open the door to any person till you see a proof of deservation.

↪ Don’t use the word “internship” as a way of manipulation.

↪ Quality is more important than quantity and Quantity is important than quality.

↪ Sometimes some young age candidates are highly skilled more than the old candidate.

↪ Don’t waste other people time.

Find me on LinkedIn: https://linkedin.com/in/khaledalam

Reach me: khaledalam.net@gmail.com

bookmark_borderJAVA in JAVA

This photo I called it “Java in Java”.

The most interesting programming language name for me after “Brainf**K” programming language is Java!

In my childhood, the first interesting mobile I used was “LG L342i” which was released in 2005, first mobile I tried that has the ability of accessing internet but it wasn’t work with Egyptian networks operators,  I liked LG brand and I were impressed by this mobile functionalities and its games (GAMELOFT, Golf, UNO, Pool, and other few interesting puzzles games) there was a splash screen in each game that has a special Java logo intro and a wonderful loading animation which makes me interested about Java and what is this name refers to? Is Java a very big game that contains all other mobile games or is it a big mobile application?

I decided to go to internet coffee and instead of playing Command & Conquer, Max Payne, GTA and other games as usual.. I decided to search for Java, on that day I read for the first time about something called programming and knew more about Java history and the reason for naming Java with that name.. and I found that there is some real Island in another country called Java!

I wished that one day I would visit this Island and try 3 things there:
Try drinks, especially coffee.
Play Java games.
Search for Java books.

After about 14 years I managed to visit Java Island(Central and West), and tried the 3 things and remembered all my childhood memories.

Childhood dreams and wishes are not just dreams and wishes.
– Khaled Alam

—–

The Java programming language project was initiated in June 1991. Java was originally designed for interactive television.

The language was initially called Oak after an oak tree that stood outside Gosling’s office. Later the project went by the name Green and was finally renamed Java, from Java coffee, the coffee from Indonesia.

bookmark_borderIBM October 2020 – Challenge (control-flow graph)

https://www.research.ibm.com/haifa/ponderthis/challenges/October2020.html

This month’s challenge is dedicated to the memory of Frances Allen, who passed away in August. Among her many accomplishments is the invention of the control-flow graph, in her 1970 paper “Control flow analysis

My solution

with step number:

10 A = a
20 B = b
30 JMP_ZERO B 90
40 AA = A
50 BB = B
60 A = B
70 B = AA % BB
80 JMP 30
90 RETURN A


-----

without step number:

A = a
B = b
JMP_ZERO B 90
AA = A
BB = B
A = B
B = AA % BB
JMP 30
RETURN A

IBM Gadi submission result:

Thanks! This indeed computes the GCD, but the requirement on the number of paths is not fulfilled.

bookmark_borderUsing Pipelines to Invalidate AWS CloudFront Cache that Pointing to AWS S3 bucket

Steps:

  • Add Repository Variables for Distribution IDs
  • Add Repository Variables for AWS keys as well
  • Add invalidate step in your pipeline
    e.g.
- step:
          name: ">> Invalidate AWS CloudFront (by: Khaled alam)"
          script:
          - pipe: atlassian/aws-cloudfront-invalidate:0.4.1
            variables:
              AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
              AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
              AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
              DISTRIBUTION_ID: $TEST_CLOUDFRONT_DISTRIBUTION_ID
              # PATHS: <string> # Optional
              DEBUG: "true" # Optional

Note: in case you want to invalidate specific files or paths, you should define that in PATHS: <string>

bookmark_borderConfirm AWS Elastic Beanstalk Deployment Progress

Amazon Web Services Elastic Beanstalk

Use case:
You are using Amazon Web Service(AWS) Elastic Beanstalk to handle your deployment process via some git version control pipelines and there is a step that needs to run after your code has been deployed successfully.

There are a lot of solutions that can be used e.g CloudWatch, Lambda Function,.. etc. but I decided to invent my own solution that is easy, interesting and will cost 0$ :))



Idea:
Use a unique value on pipeline level (e.g pipeline build number) and add it to new code before upload it to server then call some endpoint or file to check this value. while this value does not equal out the new unique value in the pipeline then the deployment not finished yet and we should wait!


How to add new value to new code?
– we will create special endpoint or file in our project
– in the pipeline before upload new code to server change value of this file eg. deploy_version.txt or endpoint {api_link}/current_version
e.g: set some variable value with a new unique value. (you can do that using e.g sed Unix-like command)

ex.

we have a static endpoint that returns JSON result with the value of currentVersion variable that placed in e.g `version.js`

const currentVersion='123';

in the pipeline before upload code step:
- sed -i 2"s/currentVersion='123'/currentVersion='$BITBUCKET_BUILD_NUMBER'/g" src/version.js


How to validate deployment progress?

create a bash script that will send curl request to that endpoint to validate if current version from the endpoint(currently deployed code) is equal to new unique pipeline value or not.

how can this bash script look like? email me for more details(khaledalam.net@gmail.com)


bookmark_borderIdeal City

Cloud system micro-serviced using Docker, Python, Golang, Node, Flask, Gin, Express.js, MongoDB

Reflection

Show cheaper products of a target city comparing to your city!

=> City Searcher API Microservice Repo

Run
sh run.sh

output

live demo: http://khaledalam.net:8001


Architecture

GitHub: https://github.com/khaledalam/ideal-city

bookmark_borderAliases Manager

Hi everyone!
I just released the first version of my new tool
(Aliases Manager a GUI app using #Python and #Tkinter)

project on #GitHub : https://lnkd.in/dynSGDm

feel free to give the tool a try and a star if you liked it.

#gui#python3#pip#docker#git#files#string#manipulation#linux#unix#mac#windows#bash#treeview#tk#tcl#geometry#terminal#terminals#kernal#cmd#sh#scripting

bookmark_borderAllocate memory to work as swap space on VMs

When physical RAM is already in use, VM instances use swap space as a short-term replacement for physical RAM.

Contents of RAM that aren’t in active use or that aren’t needed as urgently as other data or instructions can be temporarily paged to a swap file. This frees up RAM for more immediate use.

Resolution

Calculate the swap space size

As a general rule, calculate swap space according to the following:

Amount of physical RAMRecommended swap space
2 GB of RAM or less2x the amount of RAM but never less than 32 MB
More than 2 GB of RAM but less than 32 GB4 GB + (RAM – 2 GB)
32 GB of RAM or more1x the amount of RAM
Note: Swap space should never be less than 32 MB.

In this example dd command, the swap file is 4 GB (128 MB x 32):  

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32

2.    Update the read and write permissions for the swap file:

$ sudo chmod 600 /swapfile

3.    Set up a Linux swap area:

$ sudo mkswap /swapfile

4.    Make the swap file available for immediate use by adding the swap file to swap space:  

$ sudo swapon /swapfile

5.    Verify that the procedure was successful:

$ sudo swapon -s

6.    Enable the swap file at boot time by editing the /etc/fstab file.

Open the file in the editor:

$ sudo nano /etc/fstab

Add the following new line at the end of the file, save the file, and then exit:

/swapfile swap swap defaults 0 0

Done )

run $ htop and check swp [ ] section.

bookmark_borderAwesome Docker WordPress

Simple and easy containerized WordPress website with docker-compose.

Components used:

  • [image] wordpress:latest
  • [image] mysql:5.7
  • [image] phpmyadmin/phpmyadmin
  • docker
  • docker-compose
  • wget, curl, tar, mysqladmin

Usage

  • $ git clone
  • $ cd awecome-docker-wordpress
  • make sure ports in docker-compose file are opened and not in used
  • make sure no running containers using same ports. delete all containers: $ docker rm $(docker -aq) -f
  • $ sudo ./build.sh
  • Naviagate to:
    website: localhost or 127.0.0.1
    PMA: localhost:5000 or 127.0.0.1:5000

Notes: if you want to use your existing WordPress files remove or comment <<< Download latest wordpress section in build.sh file and put your files in app folder!


GitHub: https://github.com/khaledalam/awesome-docker-wordpress