2018: State of the Union.
Posted on
The last year, 2018, has been a very busy year for me, I barely had a break! I
am going to list what has been accomplished, and important milestones very
briefly in the following few paragraphs.
Work and Career
Java in Production
In November 2017, I joined an adtech company in Berlin, Germany to work on their
ad delivery server which was written in PHP and used technologies like Nginx,
MongoDB, and Redis. Most of the work was bug fixing, and little was about adding
new features. The project quickly became very boring, and any attempt to enhance
it, or refactor any part of it was rejected and foiled. Early last year, I
switched to another interesting project that was being built from scratch. This
time the project was built using the Java programming language, and the Vert.x
framework was used. Later Spring framework was used for most of the
microservices involved in the project. In both cases, this was my first time to
develop, maintain and deploy Java code to production.
Scalability
Back in Egypt, the most traffic I have dealt with was around 100K requests per
week! Looking to work on projects that handled large amounts of traffic was one
of the main reasons I moved to Germany.
The PHP project was handling 100K requests per hour, compared to the maximum I
had in Egypt that was a big step forward. But the production footprint of the
java project kept growing month over month till we reached a milestone of
handling more than 1 billion requests per day. It was a very exciting
journey, and I learned a lot from it in terms of teams, companies and systems
scalability.
The Year of The Good Reads
This year, I started with a pledge to read 10 books on the annual Good Reads
challenge. I ended up reading 18
books! The books were
mainly in the following areas
- Linux internals/kernel books
- Data structures and algorithms
- Python programming
- Linux systems programming
- Go programming
- Java programming
- A couple of non-fiction books, two of them about startups
One of the achievements I am particularly proud of is reading the entire
"Systems Performance: Enterprise and the
Cloud" by Brendan Gregg, in a
single weekend!
New Personal Library
Speaking of reading, one of the things that I really missed the most after
moving out of Egypt is my personal library. I had to take only a small portion
of it with me. But I managed to grow this portion into a little library over the
past year and 2 months. I have expanded both the hard copy books, my Kindle book
collection, and ebooks from other sources like Packt Publishing.
The year of “Finished” Online Courses
For the past few years, I have always started, but not finished, a lot of online
courses and MOOCs. This year, however, I managed to start and actually finish
more than 15 courses, on platforms like Stanford’s Engineering
Everywhere,
PluralSight,
Educative, Udemy, and
even some Youtube playlists for courses by MIT, Waterloo, & Carnegie Mellon
universities. You can find some of the interesting ones listed on my homepage.
It is worth noting that not all the courses on my resources
page I have finished yet, but I found
interesting enough to share with others.
Technologies and Skills
In 2018, I have acquired some completely new technical skills/technologies, as
well as worked on improving some existing ones.
The list of new technologies include:
- Golang
- Java
- Spring Framework
- Vert.x Framework
- Terraform
- MongoDB
- Redis
- Kafka
- Aerospike
The technologies and skills I was keen on improving include:
- Linux internals, linux administration and linux troubleshooting
- Python
- PHP
- Bash
- Docker
- Docker Swarm
PyPI Package
Towards the end of 2018, I published a silly Python package:
dir2html. The package converts a folder of
images, into an HTML album using a Bootstrap template. Here is an example of how
it looks like after the album has been generated: Mosab’s Bitmoji
Album. There is a list of improvements and
features to be added to the project, but they are not the top priority.
Job Interviews
Boy did I have tons of interviews in 2018! Before leaving Egypt, I was targeting
to move to London, and if that didn’t work, I had Amsterdam as a backup plan. So
in 2017, I did a lot of interviews for companies in both cities, as well as a
couple of stray interviews for companies in other cities like Paris. When the
first round didn’t yield a job offer in either, I started to believe that those
companies required a significantly higher experience than I had at the time. The
companies included Booking.com, Facebook, and Criteo Labs. Of course, all of
them dealt with insanely high amounts of traffic and required a very deep
understanding of more than just programming since I was also looking to switch
to a Site Reliability Engineering role at the time. I have worked in startups
most of my career and wanted to work with big companies, but it seemed I had to
up my game first before trying again.
In order to acquire this experience, I decided to start targeting companies in
between and started looking into other geographical locations like Germany,
until I landed a job at an adtech company in Berlin and worked on projects like
the mentioned above. I set a goal for the year to see whether Germany would be
where my family and I decide to settle. Turns out, Germany is not for me for
reasons that can be detailed in another future post, maybe. With that
conviction, I set on a new round of interviews again with Facebook, Booking, and
other companies, Mainly in London and Amsterdam again. There was one exception
of N26, an amazing bank of the future that is located in Berlin. I also had
interviews with Google for the same role.
The interview round yielded two offers, one from Booking, and one from a very
promising fintech startup in London, which I accepted. Both offers were decent
and choosing between them was a tough thing to do.
I did not pass Facebook and Google interviews, but I did learn a lot. In
particular, I was in a way better shape for the second facebook interview than
the one I had in 2017, and I feel confident I am close to passing it. The
Facebook interviews were for the Production Engineering role, which is -in the
words of a dear Production Engineer & friend- a software engineer + a systems
engineer + a networks engineer. Those interviews are really tough.
But at the moment, I am preparing to move to London, finally! And as exhausting
as the move is, even though we have not yet got the rest of the visas, it is
also extremely exciting!
IELTS Test
As part of the visa process for the UK, I had to take an English language test,
IELTS short for The International English Language Testing System. Ironically
enough, I didn’t find a suitable appointment in Germany, and the version of the
test that is approved by the UKVI (United Kingdom Visa and Immigration) is only
conducted in Dusseldorf, Germany, which is a 4 hours trip, or a one hour flight
from Berlin where I live. I looked for appointments in other cities, like
Amsterdam, Paris, and London, since my short stay visa was still valid. I ended
up taking the test in London.
The score I got was an overall band of 7, which translates to a C1 level in the
Common European Framework of Reference for languages, or CEFR for short. Not
bad, I guess, but I hoped to score better. Most importantly, it satisfies the UK
visa requirements, so I can improve that later.
Personal Stuff
Cities Visited
In 2018, I visited London 3 times, twice for interviews, and once to take the
IELTS exam. The city never ceases to amaze me. I am deeply in love with it. In
one of the trips, I visited the Museum of Science where I saw parts of the
Apollo mission -among other things- that was absolutely mesmerizing, had fish
and chips at “Sherlock” restaurant in Baker Street, had Egyptian pies, and
overall great times.
There was also a magical weekend that was well spent in Vienna, Austria. A
friend of mine was visiting another country in Europe, and we spontaneously
agreed to meet in Vienna for a weekend. A friend of his was amazing and gave us
shelter at his house, and took great care of us during the entire visit.
During the 4 days trip to Amsterdam for the second interview at Booking, I took
some time to meet some friends in Amsterdam. I also visited Haarlem since it is
a popular residential place for families and met another friend living there who
took me on a tour of the city. The Netherlands is always a delight to visit.
First Tax Declaration!
In Egypt, the situation is so messed up that many companies do not report the
actual salaries of their employees in order to skip paying some of the tax and
social insurance money. Since employees are not required, nor have the incentive
to declare their income for tax purposes, most companies get away with it. Most
of the companies I worked with were on the law-abiding side, but still, I
personally did not have to declare my income for the tax authorities. This has
changed in Germany. Last year was the first year I file my taxes, and I even got
some refunds! The refunds didn’t last long as they were used to fund my family’s
visit to Egypt a few months after they arrived in Germany, but still, that was a
great thing to happen.
First Fine!
In the first few months, I was experimenting with public transportation tickets
in order to decide what was best for me. I decided on the second month that I
will start buying monthly tickets until I figured out how to move forward. One
day, 3months into buying monthly tickets, I hopped into the underground, and a
few inspectors boarded the train. When the inspector came to me, I pulled out my
monthly ticket, the inspector looked at it and started speaking in German. I was
confused. No inspector ever spoke before, except to maybe say "Danke schön",
which mean "Thank you". Then I realized the ticket had expired THE DAY
BEFORE! I had to pay a fine of 63 euros. That day I signed up for the annual
card in order to avoid this situation in the future, and they charge my bank
account every month without requiring me to intervene.
New Laptop Sticker
This year, I bought a new personal laptop, and of course, needed some stickers
to decorate it. I bought some stickers from Sticker Mule and got others from
meetups. I am happy with the current status, but I am looking forward to adding
new stickers to the collections.
Cooking Adventures
The Germans have a really poor taste in food and most of the restaurants are
“Germanized”, thus most of the food experience in Germany isn’t something to
look forward to. Given that I finally started having some work/life balance, I
started looking for recipes online and trying my luck with cooking. The majority
of the recipes I cook come from Asian cuisines because I believe they know how
to eat best. I spend a lot of time searching for a recipe that I can actually
follow, which is an exhausting task, then it is easy getting the ingredients
from the supermarkets around. Sometimes, I have to go to ethnic stores to buy
specific spices or herbs, but overall the ingredients abundance situation is way
better than it was back in Egypt. You can find some pictures of the recipes I
cooked on my Instagram account.
Our Lovely Neighbours
The first two months I was in Berlin, I was assigned a temporary guest house to
stay in until I found a more permanent accommodation for my family and myself. A
lot of friends recommended a company that rented furnished apartments, and after
a few calls and emails which the HR helped me with, I got the apartment. At this
point, my wife was still in Cairo. She was communicating with one of her friends
who turns out lives in the same exact building we are moving into! That was such
a great coincidence, and we had a great year together. They got our backs in
countless occasions, often on short notice. Thank you, neighbours/friends!
A Friend Visited from Egypt
In 2018, my friend Osama visited me from Egypt as part of a Euro-trip he had.
Unfortunately, we coudln’t spend as much time together as we hoped to because of
all the interviews I had coinciding with the visit. Let’s see what the future
holds.
Amazing New Friends
Throughout the past year, I got to know some amazing new friends. I also got to
spend a lot more time with old friends I barely met back in Egypt. Some of them
I got the privilege of working with them, either in the same company, or the
same team. For that, I am ever thankful. I will miss them a lot after moving
out.
Adam, School and The German Language
My son, Adam, was afraid at first not being able to speak German and how that
will affect his relationship with his colleagues at school. Turns out, he
learned the fastest of us all and became very fluent in German. He especially
enjoys the playgrounds that seem to be everywhere in Berlin. That’s not the case
in Egypt, where you have to buy very expensive memberships in exclusive clubs in
order to have someplace for your kids to play. Adam acquired a lot of friends,
and he is very happy at school.
Health Adventures
The year 2018 had a lot of health-related stories. I had a tooth removed,
leaving a big gap in my mouth. I had a surgery to remove some extra skin that
looked suspicious but turned out to be nothing serious. I also had my first ever
ambulance ride when I suspected having a blood clot because I travelled to
London a few days after the surgery. I was held in the hospital for a few hours
but was cleared shortly after.
But that’s nothing compared with the two times my daughter, Sofia, had us rush
her into the ER. The first was a few days after they have arrived in Berlin, on
the day we were supposed to register them. She fell off the bed and hit her head
then threw up, which is a sign of a potential concussion. We immediately
cancelled the appointment and went to the first hospital that appeared on Google
maps.
The second time was when she decided she wanted a just-poured cup of tea and
grabbed it from the table very quickly leading it to spill on her arm. She got a
second-degree burn that we are still treating, but she has passed the danger
zone, and feels no pain, thank God!
Overall, I admire the health care system in Germany and most European countries,
although, sometimes you really have to wait to get some care.
Chess!
I started playing chess online, after
so many years of not doing so. I finished the year with a 900 score, and I
intend to continue playing this year.
New Year’s Eve Fireworks
My family and I have attended two New Year’s Eve fireworks nights. Most people
living in Berlin complain about how loud the noise is, but given that I have
spent many days on the streets protesting in Egypt’s 2011 revolution, in the
midst of real bullets fired at us, tear gas bombs, and other stuff, the
fireworks noise wasn’t much to handle. Adam enjoyed it very much though both
years. Sofia enjoyed it the first time but was absolutely terrified the second
time that Amira had to stay home with her, while I accompanied Adam on the
street.
Things I Miss in Egypt
A lot of my friends here kept telling me that by the end of the year I will miss
Egypt again. Truth is, I have not. Not even a little. I only miss very few
things there:
- My brothers, and few members of my family, and my wife’s family
- A few friends from work and otherwise
- A few restaurants
Many of my friends say the weather here is gloomy, but the weather here is one
of the things I like, and of the reasons I moved here.
I do not feel homesick, and I don’t think I will soon either.
The Next Year
We are only a few weeks into 2019, and a lot is going on already! My family and
I are preparing to move to London where I will join a very promising fintech
startup in the capacity of a Site Reliability Engineer. It is going to be a
challenging yet an exciting year, and I hope it goes well without any unwanted
surprises. I am excited!
The last year, 2018, has been a very busy year for me, I barely had a break! I am going to list what has been accomplished, and important milestones very briefly in the following few paragraphs.
Work and Career
Java in Production
In November 2017, I joined an adtech company in Berlin, Germany to work on their ad delivery server which was written in PHP and used technologies like Nginx, MongoDB, and Redis. Most of the work was bug fixing, and little was about adding new features. The project quickly became very boring, and any attempt to enhance it, or refactor any part of it was rejected and foiled. Early last year, I switched to another interesting project that was being built from scratch. This time the project was built using the Java programming language, and the Vert.x framework was used. Later Spring framework was used for most of the microservices involved in the project. In both cases, this was my first time to develop, maintain and deploy Java code to production.
Scalability
Back in Egypt, the most traffic I have dealt with was around 100K requests per week! Looking to work on projects that handled large amounts of traffic was one of the main reasons I moved to Germany.
The PHP project was handling 100K requests per hour, compared to the maximum I had in Egypt that was a big step forward. But the production footprint of the java project kept growing month over month till we reached a milestone of handling more than 1 billion requests per day. It was a very exciting journey, and I learned a lot from it in terms of teams, companies and systems scalability.
The Year of The Good Reads
This year, I started with a pledge to read 10 books on the annual Good Reads challenge. I ended up reading 18 books! The books were mainly in the following areas
- Linux internals/kernel books
- Data structures and algorithms
- Python programming
- Linux systems programming
- Go programming
- Java programming
- A couple of non-fiction books, two of them about startups
One of the achievements I am particularly proud of is reading the entire "Systems Performance: Enterprise and the Cloud" by Brendan Gregg, in a single weekend!
New Personal Library
Speaking of reading, one of the things that I really missed the most after moving out of Egypt is my personal library. I had to take only a small portion of it with me. But I managed to grow this portion into a little library over the past year and 2 months. I have expanded both the hard copy books, my Kindle book collection, and ebooks from other sources like Packt Publishing.
The year of “Finished” Online Courses
For the past few years, I have always started, but not finished, a lot of online courses and MOOCs. This year, however, I managed to start and actually finish more than 15 courses, on platforms like Stanford’s Engineering Everywhere, PluralSight, Educative, Udemy, and even some Youtube playlists for courses by MIT, Waterloo, & Carnegie Mellon universities. You can find some of the interesting ones listed on my homepage. It is worth noting that not all the courses on my resources page I have finished yet, but I found interesting enough to share with others.
Technologies and Skills
In 2018, I have acquired some completely new technical skills/technologies, as well as worked on improving some existing ones.
The list of new technologies include:
- Golang
- Java
- Spring Framework
- Vert.x Framework
- Terraform
- MongoDB
- Redis
- Kafka
- Aerospike
The technologies and skills I was keen on improving include:
- Linux internals, linux administration and linux troubleshooting
- Python
- PHP
- Bash
- Docker
- Docker Swarm
PyPI Package
Towards the end of 2018, I published a silly Python package: dir2html. The package converts a folder of images, into an HTML album using a Bootstrap template. Here is an example of how it looks like after the album has been generated: Mosab’s Bitmoji Album. There is a list of improvements and features to be added to the project, but they are not the top priority.
Job Interviews
Boy did I have tons of interviews in 2018! Before leaving Egypt, I was targeting to move to London, and if that didn’t work, I had Amsterdam as a backup plan. So in 2017, I did a lot of interviews for companies in both cities, as well as a couple of stray interviews for companies in other cities like Paris. When the first round didn’t yield a job offer in either, I started to believe that those companies required a significantly higher experience than I had at the time. The companies included Booking.com, Facebook, and Criteo Labs. Of course, all of them dealt with insanely high amounts of traffic and required a very deep understanding of more than just programming since I was also looking to switch to a Site Reliability Engineering role at the time. I have worked in startups most of my career and wanted to work with big companies, but it seemed I had to up my game first before trying again.
In order to acquire this experience, I decided to start targeting companies in between and started looking into other geographical locations like Germany, until I landed a job at an adtech company in Berlin and worked on projects like the mentioned above. I set a goal for the year to see whether Germany would be where my family and I decide to settle. Turns out, Germany is not for me for reasons that can be detailed in another future post, maybe. With that conviction, I set on a new round of interviews again with Facebook, Booking, and other companies, Mainly in London and Amsterdam again. There was one exception of N26, an amazing bank of the future that is located in Berlin. I also had interviews with Google for the same role.
The interview round yielded two offers, one from Booking, and one from a very promising fintech startup in London, which I accepted. Both offers were decent and choosing between them was a tough thing to do.
I did not pass Facebook and Google interviews, but I did learn a lot. In particular, I was in a way better shape for the second facebook interview than the one I had in 2017, and I feel confident I am close to passing it. The Facebook interviews were for the Production Engineering role, which is -in the words of a dear Production Engineer & friend- a software engineer + a systems engineer + a networks engineer. Those interviews are really tough.
But at the moment, I am preparing to move to London, finally! And as exhausting as the move is, even though we have not yet got the rest of the visas, it is also extremely exciting!
IELTS Test
As part of the visa process for the UK, I had to take an English language test, IELTS short for The International English Language Testing System. Ironically enough, I didn’t find a suitable appointment in Germany, and the version of the test that is approved by the UKVI (United Kingdom Visa and Immigration) is only conducted in Dusseldorf, Germany, which is a 4 hours trip, or a one hour flight from Berlin where I live. I looked for appointments in other cities, like Amsterdam, Paris, and London, since my short stay visa was still valid. I ended up taking the test in London.
The score I got was an overall band of 7, which translates to a C1 level in the Common European Framework of Reference for languages, or CEFR for short. Not bad, I guess, but I hoped to score better. Most importantly, it satisfies the UK visa requirements, so I can improve that later.
Personal Stuff
Cities Visited
In 2018, I visited London 3 times, twice for interviews, and once to take the IELTS exam. The city never ceases to amaze me. I am deeply in love with it. In one of the trips, I visited the Museum of Science where I saw parts of the Apollo mission -among other things- that was absolutely mesmerizing, had fish and chips at “Sherlock” restaurant in Baker Street, had Egyptian pies, and overall great times.
There was also a magical weekend that was well spent in Vienna, Austria. A friend of mine was visiting another country in Europe, and we spontaneously agreed to meet in Vienna for a weekend. A friend of his was amazing and gave us shelter at his house, and took great care of us during the entire visit.
During the 4 days trip to Amsterdam for the second interview at Booking, I took some time to meet some friends in Amsterdam. I also visited Haarlem since it is a popular residential place for families and met another friend living there who took me on a tour of the city. The Netherlands is always a delight to visit.
First Tax Declaration!
In Egypt, the situation is so messed up that many companies do not report the actual salaries of their employees in order to skip paying some of the tax and social insurance money. Since employees are not required, nor have the incentive to declare their income for tax purposes, most companies get away with it. Most of the companies I worked with were on the law-abiding side, but still, I personally did not have to declare my income for the tax authorities. This has changed in Germany. Last year was the first year I file my taxes, and I even got some refunds! The refunds didn’t last long as they were used to fund my family’s visit to Egypt a few months after they arrived in Germany, but still, that was a great thing to happen.
First Fine!
In the first few months, I was experimenting with public transportation tickets in order to decide what was best for me. I decided on the second month that I will start buying monthly tickets until I figured out how to move forward. One day, 3months into buying monthly tickets, I hopped into the underground, and a few inspectors boarded the train. When the inspector came to me, I pulled out my monthly ticket, the inspector looked at it and started speaking in German. I was confused. No inspector ever spoke before, except to maybe say "Danke schön", which mean "Thank you". Then I realized the ticket had expired THE DAY BEFORE! I had to pay a fine of 63 euros. That day I signed up for the annual card in order to avoid this situation in the future, and they charge my bank account every month without requiring me to intervene.
New Laptop Sticker
This year, I bought a new personal laptop, and of course, needed some stickers to decorate it. I bought some stickers from Sticker Mule and got others from meetups. I am happy with the current status, but I am looking forward to adding new stickers to the collections.
Cooking Adventures
The Germans have a really poor taste in food and most of the restaurants are “Germanized”, thus most of the food experience in Germany isn’t something to look forward to. Given that I finally started having some work/life balance, I started looking for recipes online and trying my luck with cooking. The majority of the recipes I cook come from Asian cuisines because I believe they know how to eat best. I spend a lot of time searching for a recipe that I can actually follow, which is an exhausting task, then it is easy getting the ingredients from the supermarkets around. Sometimes, I have to go to ethnic stores to buy specific spices or herbs, but overall the ingredients abundance situation is way better than it was back in Egypt. You can find some pictures of the recipes I cooked on my Instagram account.
Our Lovely Neighbours
The first two months I was in Berlin, I was assigned a temporary guest house to stay in until I found a more permanent accommodation for my family and myself. A lot of friends recommended a company that rented furnished apartments, and after a few calls and emails which the HR helped me with, I got the apartment. At this point, my wife was still in Cairo. She was communicating with one of her friends who turns out lives in the same exact building we are moving into! That was such a great coincidence, and we had a great year together. They got our backs in countless occasions, often on short notice. Thank you, neighbours/friends!
A Friend Visited from Egypt
In 2018, my friend Osama visited me from Egypt as part of a Euro-trip he had. Unfortunately, we coudln’t spend as much time together as we hoped to because of all the interviews I had coinciding with the visit. Let’s see what the future holds.
Amazing New Friends
Throughout the past year, I got to know some amazing new friends. I also got to spend a lot more time with old friends I barely met back in Egypt. Some of them I got the privilege of working with them, either in the same company, or the same team. For that, I am ever thankful. I will miss them a lot after moving out.
Adam, School and The German Language
My son, Adam, was afraid at first not being able to speak German and how that will affect his relationship with his colleagues at school. Turns out, he learned the fastest of us all and became very fluent in German. He especially enjoys the playgrounds that seem to be everywhere in Berlin. That’s not the case in Egypt, where you have to buy very expensive memberships in exclusive clubs in order to have someplace for your kids to play. Adam acquired a lot of friends, and he is very happy at school.
Health Adventures
The year 2018 had a lot of health-related stories. I had a tooth removed, leaving a big gap in my mouth. I had a surgery to remove some extra skin that looked suspicious but turned out to be nothing serious. I also had my first ever ambulance ride when I suspected having a blood clot because I travelled to London a few days after the surgery. I was held in the hospital for a few hours but was cleared shortly after.
But that’s nothing compared with the two times my daughter, Sofia, had us rush her into the ER. The first was a few days after they have arrived in Berlin, on the day we were supposed to register them. She fell off the bed and hit her head then threw up, which is a sign of a potential concussion. We immediately cancelled the appointment and went to the first hospital that appeared on Google maps.
The second time was when she decided she wanted a just-poured cup of tea and grabbed it from the table very quickly leading it to spill on her arm. She got a second-degree burn that we are still treating, but she has passed the danger zone, and feels no pain, thank God!
Overall, I admire the health care system in Germany and most European countries, although, sometimes you really have to wait to get some care.
Chess!
I started playing chess online, after so many years of not doing so. I finished the year with a 900 score, and I intend to continue playing this year.
New Year’s Eve Fireworks
My family and I have attended two New Year’s Eve fireworks nights. Most people living in Berlin complain about how loud the noise is, but given that I have spent many days on the streets protesting in Egypt’s 2011 revolution, in the midst of real bullets fired at us, tear gas bombs, and other stuff, the fireworks noise wasn’t much to handle. Adam enjoyed it very much though both years. Sofia enjoyed it the first time but was absolutely terrified the second time that Amira had to stay home with her, while I accompanied Adam on the street.
Things I Miss in Egypt
A lot of my friends here kept telling me that by the end of the year I will miss Egypt again. Truth is, I have not. Not even a little. I only miss very few things there:
- My brothers, and few members of my family, and my wife’s family
- A few friends from work and otherwise
- A few restaurants
Many of my friends say the weather here is gloomy, but the weather here is one of the things I like, and of the reasons I moved here.
I do not feel homesick, and I don’t think I will soon either.
The Next Year
We are only a few weeks into 2019, and a lot is going on already! My family and I are preparing to move to London where I will join a very promising fintech startup in the capacity of a Site Reliability Engineer. It is going to be a challenging yet an exciting year, and I hope it goes well without any unwanted surprises. I am excited!