Showing posts with label Amr Kabardy. Show all posts
Showing posts with label Amr Kabardy. Show all posts

Tuesday, May 3, 2011

Tip: Be Administrator

Programming is full of ambiguous surprises :D You keep writing code, or configuring your environment just to be faced by a mysterious error message that takes you into a long cycle of search - try - search...etc

Okay, enough chitchat...

I was developing something against Azure Storage. For some reasons, I wanted to have my Azure Development Storage Emulator running on other machine than the development machine...

Well, that's pretty easy... Here are a couple of posts telling you how to do so:
You just need to change the (127.0.0.1) in the "DSService.exe.config" file to the {IP Address} assigned to your network card. After starting the development storage service you will be able to let other computers on the network do work on this emulator.

However, you may get into problems running the service after modifying the config file! And that's my case.. I kept seeing "Access Denied" error message when trying to start the storage emulator :)

After some search, I dropped into this question on msdn. The answer was telling that the fabric and storage services can't listen on IPs other than the 127.0.0.1 for some reasons.. One of these reasons was:
Both of these are likely to be run as administrator...
So, I thought to use the "Run As Administrator" option in Windows. And YESS, It Worked :)

If you still have problems reaching the server after getting the storage emulator running and listening on the machine assigned IP, you may check your firewall settings.

Good Luck!

Tuesday, June 8, 2010

Teach Your Android The Arabic Language :D

Earlier this year I've upgraded my HTC Magic to use Android 1.6 instead of Android 1.5. One of the disadvantages of that process was losing Arabic support on my phone.

A friend told me about this website..
Arabic Android (https://sites.google.com/a/ut.utm.edu/arabic-android)

Yesterday, I used this site to let my phone read Arabic content (Even if the letters are not connected!!). It's very easy and it took less than 2 minutes.

- I first downloaded "update_fonts_signed.zip" from the downloads section.
- Then, I followed the instructions on their How To page (How to use update_fonts_signed.zip).
You see, two very easy steps, ha! :D

There is another manual way described on the other How to page (How to replace default font). But I went for the easy method.

Well, good luck with your Android ;) Proceed on your own risk if any :D

Friday, February 5, 2010

Vodafone Egypt HTC Magic: Rooting and Upgrade

Hello back! Long time since my previous post about the major pros and cons I encountered with the HTC Magic offered by Vodafone Egypt.

With no long introductions, here is the story of this new post...

A couple of days ago, I took the risk and started the process of rooting and flashing a new Android image to my HTC Magic. There were two major things in my mind then: First, I wanted to upgrade from Android 1.5 (Cupcake) to Android 1.6 (Donut). Second, I wanted to release my phone from the Vodafone Network Lock.

So after all, what did I win? and what did I lose? This won't be a full list.. It's only the major things I experienced during this short period after the upgrade operation :) Again as I said in the previous post, this can differ from one to another (depending on usage and interests)..

Let's start by the loss to keep the good things for a good ending :D
1 - I still couldn't UNLOCK the phone. It looks like I need to obtain an unlock code from Vodafone itself.
2 - I lost the Arabic support. Applications now display Arabic as symbols. However I could still install an "Arabic Keyboard", an application for sending and reading SMS in Arabic "Mirsal" and some other applications that display Arabic very well. (All from Market).

Well, I didn't experience any more troubles (Thanks Allah). I won some things that I really appreciate and making my loss inconsiderable :)
2 - By the first sight, I couldn't wait to try this "speech recognition" feature. You can search by voice instead of typing keywords. Or you can tell the phone to dial someone or some number instead of typing.
3 - Android Market. Yes, now I have the official android Market application. This itself is a big great advantage. Now I can browse, search, download and install more and more applications. One application that I couldn't try before having this "Market" application is the Google Goggles application.

mmm, this is all I wanted to tell you for now. But I believe there are more to enjoy ;)

I still didn't tell you how? Well, before you proceed I've to state this disclaimer: "Please make sure to take your own responsibility and risk before applying or trying anything of the following steps on your phone. If anything went wrong, there is no one to blame but yourself :)"
Okay, I don't like to make a copy/past articles. So follow this link for step by step procedure. btw, it is a good practice to read it all and download everything you'll need before starting.

Good Luck :)

Monday, November 9, 2009

Vodafone Egypt: HTC Magic with Android 1.5

Recently Vodafone Egypt has announced its superiority to bring an Android device into Egypt for its lovely customers ;) This device is the neat HTC Magic in its white suit.
Details of the offer can be found on Vodafone website, including the specs of the phone...

By nature everything has advantages and disadvantages... So let's start by.... mmmm, ok disadvantages first :) Here are the major disadvantages I encountered, it may differ for someone else ;) Even though they are listed as disadvantages, I don't have much blame for this..

  • Hmmm, How will I browse the application store (Android Market)?! I need to download applications from there to my phone.. Well, there should be an application called Market for this purpose. This is the official one by google. Unfortunately, this one is not there.... Don't despair, SlideME is here.. SlideME is a community for Android developers and is an Android Market too.. This phone is packed with SlideME application :)
  • 3G connection and WiFi are really working great.. The problem is, WiFi only works with networks conducted through a router or an access point. Adhoc networks aren't that easy :( I couldn't connect to an Adhoc wireless network at home.. Searching the web, I found a way through.. but it requires me to root my phone!! May be later I'll find an easier way, but it'll stays a limitation till then.
  • I've been told while buying that it is locked for Vodafone network.. I can't testify this fact, I only have a Vodafone SIM card :)
  • You can use bluetooth to connect your mobile to a headset, but not for data transfer.. It's not that bad, you actually get a USB data cable with the phone... You can use it for this purpose, or for debuging your own developed applications on the phone ;)

However, you can overcome some of these disadvantages by giving up your warranty and start doing some hacks to root your device (i.e, gain a root access) which will enable you to install more applications, flash a new Android image to your device, or even more; You're the master then ;) This one itself is a big advantage,
your limits are the hardware.. You can play with the software as you like, even the OS “It's open sourced ;)”

I didn't build an enumerated list for advantages, but this HTC Magic is really doing great.. It's fast performing, it has google apps (gmail, gtalk, maps) installed.. You can use GPS or Wireless Networks for determining location.. Connect to the internet through 3G or a WiFi connection.. Enjoy 3.2MP camera with auto focus and video capture abilities.. Synchronize your contacts, mail and calendar with google account.. Customize it and make it yours.. Download and install applications for free from the Market.. Or even develop your own applications.. Enjoy working with the touch screen.. There is more for this list :)

Really, I'm loving it ;) Check videos on YouTube for more demos :)

Monday, November 2, 2009

Ubuntu Upgrade.. Easy as a Click

Yes... It's just few clicks to upgrade your current version of Ubuntu to the newest version Ubuntu 9.10 which is given the name 'Karmic Koala'

As stated on Engadget.. This new version is featuring a faster graphical boot sequence (no more scary text scrolls), a revamped audio framework that improves sound control across multiple applications, and a new Software Center that visually simplifies the Add/Remove Applications tool. Firefox 3.5 also comes with this upgrade...

Upgrading is really easy. The time it takes just depends on your internet connection. Just open the update manager from the system menu...

Near the top, you'll get a new release notification.. Click the Upgrade button and follow the instructions.. You'll reach soon :)


The coolest thing is you can still use your computer while the upgrade is in progress.. I still had my browser opening many tabs, my chat client is still working showing my buddies, a song is playing...etc You don't have to take your work off for the upgrade.. You will only need to restart when it's done..

Have Ubuntu 9.10? Enjoy... Older version? Go upgrade... Don't? Go get it and enjoy Linux for human beings :)

P.S. I made the upgrade from Ubuntu 9.4

Friday, February 20, 2009

Please do it right...

Hi, I'm here trying to get back to life :) I won't make a long intro, let's start...

Data centric applications are widely used. Maintenance can be a piece of cake or a source of pain. Some people tend to break the rules, doing a nasty design that just works for the moment but fails later. Adding more features or maintaining existing ones brings a lot of headaches like inconsistent data and broken constraints. The problem gets bigger when there is no documentation.

So, please do it right... don't depend on people who come after to review your work and correct it. Keep it clean so they can make further improvements, instead of letting them still trapping bugs.

The following tips, though basic & simple, but IMPORTANT. People doing the maintenance feels them by heart.

  • Enforce Primary Key (PK) and Foreign Key (FK) Constraints:
Heck!! It's an a-b-c database tip. Are there anybody don't enforce PKs?!! Unfortunately, YES. Ignoring PKs and FKs leads to great problems later. It results in inconsistent data. Tables can contain duplicate records, which results in exceptions for queries expecting single value result. Some records may reference non-existing records in other tables, which lead to unexpected results for join queries. Absence of PKs or allowing nulls for them can result in complete records of null values too. Also, absence of FKs can lead to referencing data in wrong tables!!! So, Please do it right and enforce constraints..
  • Don't rely on users to do things right:
Users usually do mistakes. They usually don't understand that simple mistake (like a duplicate record) can make many things fail. They don't understand how will you suffer to overcome their errors, and bring data to a consistent state. That's why you must enforce constraints and data validation on every operation they do. Even you enforce validation on GUI, you should enforce the constraints on the DB objects too. This makes sure your data is consistent and valid. So, Please do it right and don't rely on users..
  • Use the appropriate data types:
For every column in your entire database, pick the data type that best suites the values stored in it. Avoid strings for primary keys. Picking strings for PKs leads to performance deterioration for queries involving operations on the PK like joins and multiple match queries. So, Please do it right and use appropriate data types..
  • Use stored procedures and functions when appropriate:
When there is a common functionality shared among many queries, forms, reports...etc, make use of the stored functions. Some people copy and paste the code as many times as they need it. Any modification later in the functionality has to be applied to all these places, which result in forgetting some places and having them behave differently as they are not updated. Stored procedures and functions saves time as you've to update one place. They also makes it safe as all queries using this functionality will behave the same. So, Please do it right and use stored functions when appropriate..
  • Use the right trigger on the right objects:
Misplacing a trigger results into unexpected functionality as it fires on wrong actions. Also, someone who is maintaining the application would spend much time trying to figure where is this trigger and why it's firing on these actions. So, Please do it right and use triggers correctly..
  • Avoid redundant data:
When designing your database, normalize it and avoid redundant data. Redundant data leads to inconsistency and newbies may get confused, what are the correct sources for the data?!! Replicated tables and redundant columns lead to unexpected behavior for different views of the data. Some queries would update table1 while other queries expect to get the same data from table2!! So, Please do it right and avoid redundant data..
  • Documentation:
Documentation saves much of time when maintaining an application. It help newbies to understand what should be done to fix problems. It helps to understand the structure and design of the application. At least explain the design of the database and describe the contents of each table. Missing the documentation leads to having developers guessing the relations and meaning of different items in the database. These guesses can be wrong, which may lead to wrong decisions. So, Please do it right and document your work..
  • One big query or Many small queries:
I faced some reports where the data were gotten by multiple small queries. One query gets the master data, and other queries computes the details for each record of the master. When these queries are compiled into one big query, the report loaded much faster. This one is a trade off between performance and simplicity of the code. You should pick the right decision on the basis of your application.

Finally, Please do it right.. If you have further tips, add them in the comments.

Thursday, September 18, 2008

I need this baby in a month, send me nine women!!

Don't be tricked by the title, I really don't need a baby in a month! Here is the story...

Yesterday, I dropped by a post on Joel on Software: "Stack Overflow Launches"... It was talking about launching a collaboratively edited question and answer site for programmers called Stack Overflow.

Stack Overflow is not like an ordinary forum, where questions and answers go in the form of a discussion with possibly wrong answers and spams in between! One of the most significant features of Stack Overflow is their voting system, where questions and answers are voted for correctness. Top voted ansewers float over the down voted ones. This helps you getting the desired solution on the top of the page. You can figure more features by visiting Stack Overflow.

"...If you’re generally interested in programming and want to learn something new every day, visit the hot tab frequently."
Intersting... I added Stack Overflow's feed to my RSS Reader. And today, I read this question:
"Under what circumstances - if any - does adding programmers to a team actually speed development of an already late project?"
And it was titled: I need this baby in a month - send me nine women! That's the mystery behind the title. The question discusses one aspect of Software Engineering during the management of the project. Answers showed important considerations when attaching new programmers to running projects. For instance:
The proposed individuals to be added to the project must have:
  • At least a reasonable understanding of the problem domain of the project
  • Be proficient in the language of the project and the specific technologies that they would use for the tasks they would be given
  • Their proficiency must /not/ be much less or much greater than the weakest or strongest existing member respectively. Weak members will drain your existing staff with tertiary problems while a new person who is too strong will disrupt the team with how everything they have done and are doing is wrong.
  • Have good communication skills
  • Be highly motivated (e.g. be able to work independently without prodding)
You can read the full answer here...
I experienced some of the points in the answer. Indeed, it takes long time to understand the code base, conventions, problem domain...etc of a running project, which can make a great waste of resources and time!!

Other answers mention The Mythical Man-Month. Which is:
a book on software project management by Fred Brooks, whose central theme is that "Adding manpower to a late software project makes it later." This idea is known as Brooks's law.
Follow the links above through the post, and enjoy! :)

Sunday, August 17, 2008

TopCoder & KawigiEdit

Yesterday, I was on an SRM on TopCoder… It is more than one year long since the preceding SRM… I just got the notification email of the SRM, I remembered the past days of Algorithm Competitions and thought… Why do not I participate? It’s Saturday and I am free :-)

15 Minutes before the coding, I’ve no ready environment!! But my friend Ahmed Mounir could help… He sent me an Editor Plug-in for TopCoder’s Arena and the instructions to install it…

That was about me!! So what about TopCoder and KawigiEdit?! Just go on…

TopCoder is a web site providing online algorithm competitions. You compete with people all over the world on time based competitions to solve some problems. It gets you experience and improve your coding skills and the way you think. TopCoder’s Arena is the place where you code, register, challenge and compete with other people on SRMs.

Not only Time Based Algorithm Competitions (known as SRM “Single Round Match”), but also Design and Software Development and Assembly competitions exist. But I only tried the Algorithm competitions. You can get more info from www.TopCoder.com “Just do it & Hit the link :-)”

Okay, as you still patient till this line :-D … let’s move to KawigiEdit…

KawigiEdit is an Editor installed as a Plug-in on TopCoder’s Arena. It has more features and more helpful than the standard editor of the Arena. It comes with templates that generate the structure of your code… You will need to fill in the implementation of the required function. It can also run the test cases for you. You may also save the file locally & access it using another IDE… I did so to use my more friendly IDE, Eclipse…

This is the link to download the Editor… and another for the documentation. Kawigi’s main page is here… As a quick guidance, download the editor, and do the instructions under “Installing KawigiEdit” in the documentation.

Want my advice? Give TopCoder competitions a try… You will never regret –In Shaa’ Allah- Yesterday, Egypt was ranked 30 over the world… Today, I found it in the 29th place. And there are a little more than 150 members from Egypt… You can make it better, Can you?

Monday, May 26, 2008

VerveEarth - Surf the web by geoghraphy

Checking my email today...
My eyes stopped on that subject "Amr Kabardy's Blog, Egypt & VerveEarth"!! What is this?

I opened it to find:
Amr,
Your blog
Amr Kabardy's Blog caught our attention. I'm the founder of a recently launched startup for bloggers. We are searching the internet for the world's blogs by geography, and we found yours for Egypt. I would like to invite you to our site which....etc
WOW! So, What is that site? Here we go...

VerveEarth.. is a new idea for surfing the web. You surf the web according to the geographical locations. You brows content via browsing and interactive map of the world; You can check what is going around in your region; You can check what are people blogging about in some region; You can share with friends; You can keep an eye on your favorites; You can register and link your blog, it may get more traffic to your blog :) ...and so on.

Give it a look, it still in the beta! but the idea looks interesting... Now, you see pages linked to their locations around the world :)

Here is the link: www.VerveEarth.com and the FAQ
And this is a link to my destination on VerveEarth :D
Have fun :)

Tuesday, May 6, 2008

Bibliotheca Alexandrina - Behind Closed Doors

Here is the story!

As we are approaching graduation in about 1 month In Shaa' Allah, Some companies are interviewing and hiring. Some companies are announcing themselves. Some companies are showing up in the market, taking the cover off their projects, attracting fresh minds to work with them :)

Here we go... The last Sunday -May 4, 2008- ICT department of Bibliotheca Alexandrina (BA) made a tour for my class... A tour Behind the Closed Doors of BA... A tour to reveal their projects... A tour to show up the stuff they work on... A tour to express what makes them busy... A tour that attract us to work for BA... So, after this great tour, what did we see? Here are some about their projects:

Virtual Immersive Science & Technology Applications (VISTA)
Well, It's a Virtual Reality applications, taking you inside the model, giving you the sense you are there in a real world... Using a special glasses, you can see 3D objects on 4 projector screens... By visualization of models, VISTA can be helpful with many fields of science. For example:
  • VISTA can help in the study of the effect of wind on the Sphinx using a 3D simulation that shows which areas of the Sphinx are most affected by the wind.
  • VISTA can help in Architecture too, a model of the BA is built. You can navigate throw it, even inside the building, emphasizing every single detail on walls, floors...etc
  • VISTA can help in Chemistry. Studying how atoms move, joint and split inside on the state of chemical atoms.
Check here VISTA website for more information, Demos, VISTA Projects...etc

Internet Archive
Hey, Web pages on the Internet are being modified, updated, removed and added frequently. Consider how would it be annoying if you want to go back to some page you've already read, but unfortunately the page is removed or modified so you can't get the desired info. With Internet Archiving, this problem can be solved. BA is proud to have on of the two copies of the Internet Archive allover the world. Personally, I found an older version of my homepage using their URL search.

Well, You can check the Internet Archive here.

Hmmm, I don't wanna make it long for you, I'm just talking briefly about two more projects.

Universal Networking Language (UNL)
The idea is that it would be much helpful if anyone can read any book in his preferred language -even the book is already written in another language- So, what about translation from language to another. It can be awful and hard. Consider that you want to translate 5 books in 5 different languages to the other 4 languages!! You'll have to run the translation process 20 times!! Hah, that's too much. Here came the concept; By using a UNL syntax each book is transfered once into the UNL syntax and then using a UNL compiler, the desired translated version of the book is output. Well, this seems easier. The UNL is describing semantics and not syntax of different languages.

Check here for more information.

Digital Asset Repository (DAR)
What is the DAR? I quoted the answer for you...
The Digital Assets Repository (DAR) is a system developed by ISIS to create and maintain the Bibliotheca Alexandrina's digital collections. DAR acts as a repository for all types of digital material (obtained from the Library or acquired from other sources), preserving and archiving digital media, and providing public access to digitized collections through web-based search and browsing facilities.
More information about DAR is here.


This is not all what we saw. We've been to the servers rooms, digitization rooms...etc But the post is getting too long :)
Wanna know more! Go here to the ISIS (International School Information Science) website, it will tell you what you need to know :-) All these projects are part of the ISIS work.

Note: All links on this post are last accessed on May 6, 2008

Thursday, March 6, 2008

ANT

Are you creating large projects? Do you see the building process it complicated? Do you have to repeat many steps each time you build your project? Have you thought of a way to do this in one step? Apache Ant (or simply called Ant) can do this for you.

So what is Ant? I quoted this definitions for you:
"Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles." [http://ant.apache.org/ accessed on March 6, 2008]
"Apache Ant is a software tool for automating software build processes. It is similar to make but is written in the Java language, requires the Java platform, and is best suited to building Java projects." [http://en.wikipedia.org/wiki/Apache_Ant accessed on March 6, 2008]

If you are using Eclipse, then you already have an Ant plugin installed with your Eclipse. Ant is based on an XML build file. Each Ant build file contains some targets and each target encapsulates one or more tasks. Ant has some built in tasks like javac, jar, exec... etc and you can also extend it using Java classes creating your own custom tasks.

Well, this post won't be a tutorial on how to use Ant or the structure of an Ant build file; But I am going to tell you about my experience with Ant, so you can see how powerful is it.

During my internship at Easy Dialog on summer 2007, I was asked -as a training- to create an Ant custom task that inserts the project build information (project name, build date, time, user name...etc) into a database. So, I defined a custom task and created a Java class that takes the information and store them into the database through JDBC. So, whenever this custom task is called by Ant during build, the project build info is stored in the database.

Another time while working in my graduation project, we needed to create a Signed Applet. To create the signed applet, we've to do many steps: Build the applet classes, Export the applet into a Jar file, and signing the Jar file using jarsigner tool. Fortunately, there is a built in Ant task for signing a Jar file. So, I created an Ant build file that contained three targets:
  1. A target for compiling the source files and getting the class files.
  2. A target for archiving the .class files into a Jar file. This target depends on the compilation target.
  3. A target for signing the Jar file, which depends on the second target.
With the third target set as the default one in the Ant build file, and using Eclipse, I can get the signed Jar file from the source code by just one button click! Do you see how easy is this? :)

If you want to learn more about Ant, just follow these links [accessed on March 6, 2008]:

Wednesday, February 27, 2008

Make3D: Convert your image into 3d model

Today, While I was browsing my RSS reader... I stopped when my eyes picked this title "Make3D: Turn a 2D Picture Into a 3D Model". I followed the link to be impressed by what I saw.

Make3D is a service provided by Stanford University. Make3D takes a single two-dimensional image, process it, and creates a "fly around" three-dimensional model. You can then view the three-dimensional model and feel the depths of the pixels in the image.
"The service is based on an algorithm created by Stanford students Andrew Ng, Ashutosh Saxena and Min Sun that won the best paper award at the 3D recognition and reconstruction workshop at the International Conference on Computer Vision in Rio de Janeiro in October 2007." [Make3D: Turn a 2D Picture Into a 3D Model, accessed on: Feb 27, 2008]
Make3D uses powerful machine learning techniques, to learn the relation between small image patches and their depth and orientation. This allows it to model 3-d structures such as slopes of mountains or branches of trees. [Make3D home page, accessed on Feb 27, 2008]

I created and account and gave it a try. Result of my trial doesn't look so good but they have other models in the Gallery which look so good. Here is my try:

I uploaded this...
and I got this 3D model...


Just follow this link to Make3D home page, and you will find other links to the information you may need. You can view their publications in this area of 3D image construction; You can download their code; You can navigate to the FAQ for how it works and other questions; You can browse their Gallery; You can create an account and upload your images to get their 3D model; ...etc

Before I end this post, I would like to highlight that one of the graduation projects this year in class 2008, Computer and Systems Engineering Department, Alexandria University is working in this area -3D image construction- let's hope them the best of luck and wish we can see something impressive by the end of this semester.

Tuesday, February 12, 2008

RTMP: Unrelaible Service on the top of Reliable Service

After completing the networks course in the previous semester; And while working in my the graduation project, I read about RTMP (Real-Time Messaging Protocol); a proprietary protocol developed by Adobe Systems for streaming audio, video and data over the Internet, between a flash player and a server (Usually, Adobe's Flash Media Server).

As you see from the title; RTMP provides Unreliable service by working on the top of a Reliable service. The difference between reliable and unreliable service is the reliable one grantees transferring all sent data correctly and in order to the destination; while the unreliable don't make these grantees.

A reliable service can be built on the top of unreliable service, by the use of ACKs "Acknowledgments" and retransmissions. We already implemented this during the semester to build a file transfer -which is reliable- service on the top of UDP -which is unreliable protocol.

Usually multimedia or interactive real-time application requires an unreliable service, because reliable services adds more overhead due to the use of ACKs and retransmissions. Real-Time multimedia applications can tolerate some data loss and will continue to operate correctly (e.g. while streaming a video over the internet, some video frames can be lost and you still can see the video without sensing any mess).

RTMP approach:

So, Real-Time Multimedia applications usually built on the top of UDP. However, the RTMP which is used for multimedia streaming is built on the top of TCP. TCP is a reliable protocol and ensures that all data are sent correctly and in order. TCP adds overhead and consumes more bandwidth and can cause packets to be sent late, which is unacceptable for real-time multimedia application. So, RTMP requires to implement unreliability for being used with real-time multimedia application.

As we can build a reliable service on the top of unreliable service, RTMP came with the inverse idea. It built its unreliable service on the top of the reliable service provided by the TCP. To support the streaming of media data over TCP, the amount of data being sent must be dynamically adjusted in response to network bandwidth and congestion. RTMP is designed to adjust the amount of video and audio being transmitted by dropping audio messages and video frames in response to inadequate network bandwidth.

RTMP uses buffers to buffer streams for transmission. Data streams are never dropped, because they may contain some control information and dropping them can cause the application to work improperly. Audio and video streams are buffered separately on the server. Audio streams are allowed to accumulate in the buffer until a predefined threshold; when this threshold is reached, the buffer is freed and audio streams are allowed to start accumulating again. For the video streams, only one frame is buffered. If another frame reached before sending the buffered one, the old frame is dropped and the new one is buffered till sending it. This ensures that clients won’t receive partial frames.