1461154846-068229ef-4a57-4d2f-8418-efa72f397202

1. A nozzle plate of an inkjet printhead, comprising:
a substrate including a plurality of nozzles; and
a plurality of first grooves formed on a surface of the substrate around the nozzles,
wherein second grooves are connected to the first grooves, respectively, and formed along both end portions of the first grooves in a direction parallel to the direction in which nozzles are arranged.
2. The nozzle plate of claim 1, wherein inner walls of the first and second grooves are coated with a hydrophilic material, and an outer surface of the substrate is coated with a hydrophobic material except the first and second grooves.
3. The nozzle plate of claim 1, wherein inner walls of the nozzles are coated with a hydrophobic material.
4. The nozzle plate of claim 1, wherein the first and second grooves are formed using a wet etching process or a dry etching process.
5. A method of removing ink remaining on the surface of the nozzle plate of the inkjet printhead according to claim 1, the method comprising:
collecting ink remaining on the surface of the nozzle plate in the first groove formed around the nozzle; and
draining ink from the first groove toward the second groove due to capillary attraction.
6. The method of claim 5, further comprising wiping the surface of the nozzle plate using a wiper to facilitate the collecting of ink remaining on the surface of the nozzle plate in the first groove formed around the nozzle.
7. The method of claim 5, further comprising applying a negative pressure to the nozzle plate or inclining the nozzle plate after the collecting of ink remaining on the surface of the nozzle plate in the first groove formed around the nozzle.
8. A nozzle plate of an inkjet printhead, comprising:
a substrate including a plurality of nozzles; and
a plurality of first grooves formed on a surface of the substrate around the nozzles,
wherein a width of the first groove increases towards both end portions of the first groove and away from the corresponding nozzle.
9. A nozzle plate of an inkjet printhead, comprising:
a substrate including a plurality of nozzles; and
a plurality of first grooves formed on a surface of the substrate around the nozzles,

wherein the width of the first groove decreases towards both end portions of the first groove and away from the corresponding nozzle.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method of discovering by a first device services provided by a second device that is in a physical proximity of the first device, before establishing a connection between the first device and the second device, the method comprising:
receiving a first 802.11x Layer 2 wireless advertisement message, wherein the message includes a plurality of service information elements, and wherein at least a first of the service information elements comprises information related to a first service provided by the second device and a second of the service information elements comprises information related to a second service provided by the second device, and wherein the first service is different from the second service, and wherein at least a portion of each of the first and second service information elements is shortened, and wherein the first message is received prior to establishing a connection between the first device and the second device suitable for providing the first and second services;
extracting at least the first and second shortened service information elements from the received message;
determining that additional information related to the first service is desired;
sending a request message to the second device for additional information related to the first service;
receiving a second message from the second device, wherein the second message comprises additional information related to the first service;
determining if the first service is desired; and
establishing a connection between the first device and the second device, if the first service is desired.
2. The method of claim 1, wherein the wireless advertisement message is received by the first device or by a device in communication with the first device.
3. The method of claim 1, further comprising:
providing, to a user of the first device, on a human perceptible medium, information related to the first and second services provided by the second device.
4. The method of claim 1, wherein the proximity of the first device is defined at least partially by a radio range of the first device.
5. The method of claim 1, further comprising:
determining whether the second device is within the proximity of the first device, the proximity of the first device being limited to a region smaller than a region defined by a radio range of the first device;
wherein the connection is established if the second device is within the proximity of the first device.
6. The method of claim 1, wherein the wireless advertisement message comprises an 802.11 beacon message.
7. A computer-readable medium storing computer-executable instructions for performing steps comprising:
receiving, by a first device and from a second device, a first 802.11x Layer 2 wireless advertisement message, wherein the message includes a plurality of service information elements, and wherein at least a first of the service information elements comprises information related to a first service provided by the second device and a second of the service information elements comprises information related to a second service provided by the second device, and wherein the first service is different from the second service, and wherein at least a portion of each of the first and second service information elements is shortened, and wherein the first message is received prior to establishing a connection between the first device and the second device suitable for providing the first and second services, the second device being in a physical proximity of the first device;
extracting at least the first and second shortened service information elements from the received message;
determining that additional information related to the first service is desired;
sending a request message to the second device for additional information related to the first service;
receiving a second message from the second device, wherein the second message comprises additional information related to the first service;
determining if the first service is desired; and
establishing a connection between the first device and the second device, if the first service is desired.
8. The computer-readable medium of claim 7, wherein the wireless advertisement message is received by the first device or by a device in communication with the first device.
9. The computer-readable medium of claim 7, further comprising:
providing, to a user of the first device, on a human perceptible medium, information related to the first and second services provided by the second device.
10. The computer-readable medium of claim 7, wherein the proximity of the first device is defined at least partially by a radio range of the first device.
11. The computer-readable medium of claim 7, further comprising:
determining whether the second device is within the proximity of the first device, the proximity of the first device being limited to a region smaller than a region defined by a radio range of the first device;
wherein the connection is established if the second device is within the proximity of the first device.
12. The computer-readable medium of claim 7, wherein the wireless advertisement message comprises an 802.11 beacon message.
13. A computer-readable medium storing computer-executable instructions for performing steps comprising:
sending, to a first device, by a second device, a first 802.11x Layer 2 wireless message, wherein the message includes a plurality of service information elements, and wherein at least a first of the service information elements comprises information related to a first service provided by the second device and a second of the service information elements comprises information related to a second service provided by the second device, and wherein the first service is different from the second service, and wherein at least a portion of each of the first and second service information elements is shortened, and wherein the first message is sent prior to establishing a connection between the first device and the second device suitable for providing the first and second services, the second device being in a physical proximity of the first device;
extracting, by the first device, at least the first and second shortened service information elements from the message received;
determining, by the first device, that additional information related to the first service is desire;
receiving, by the second device, a request message for additional information related to the first service;
sending, to the first device, by the second device, a second message, wherein the second message comprises additional information related to the first service;
determining, by the first device, if the first service is desired; and
establishing a connection between the first device and the second device, if the first service is desired.
14. The computer-readable medium of claim 13, wherein the wireless message is sent by a device in communication with the second device.
15. The computer-readable medium of claim 13, wherein the wireless message is sent as at least a portion of an 802.11x beacon message.
16. The computer-readable medium of claim 13, wherein the proximity of the first device is defined at least partially by a radio range of the first device.
17. The computer-readable medium of claim 13, wherein a portion of the first service information element is hashed.
18. The computer-readable medium of claim 13, wherein the first message is sent to the first device in response to a request from the first device.
19. The computer-readable medium of claim 13, wherein the first wireless message is an advertisement message.
20. The method of claim 1, wherein one or more of the service information elements comprises a sequence number, and wherein the sequence number reflects a change in the service provided by the second device.

1461154837-6e515495-a929-479d-ab0f-1eca897a0d97

1. A method of automatically facilitating a meeting, comprising:
detecting a meeting request at a server, the meeting request coming from a first set of client devices;
detecting at the server an acceptance of the meeting request from a second set of client devices;
receiving at the server identifying information from the first and second sets of client devices;
receiving at the server geo-location coordinates from the first and second sets of client devices;
computing a map centroid of said geo-location coordinates;
selecting a meeting place within a defined distance from the map centroid;
providing turn-by-turn directions to the first and second sets of client devices to said meeting place; and
receiving updated geo-location coordinates of the client devices and using this information to update the map centroid and meeting place.
2. The method of claim 1, further comprising:
using preference data to generate a list of possible meeting places within a predetermined distance of the centroid.
3. The method of claim 2, wherein the preference data is not available to be shared among the client devices.
4. The method of claim 2, wherein the preference data relates to one or more of maximum travel time, maximum travel distance, departure time, arrival time, venue type preference, social preference, or dietary preference.
5. The method of claim 4, wherein if a travel time is greater than a limit the centroid is incrementally displaced towards a client device.
6. The method of claim 2, wherein if a preference cannot be accommodated for a given centroid, the centroid is incrementally displaced.
7. The method of claim 2, wherein if the list contains fewer than a predetermined number of possible meeting places, the distance from the centroid is increased.
8. The method of claim 2, wherein the preference data is matched to data received from a places database.
9. The method of claim 2, further comprising:
automatically selecting a meeting place from the list;
generating turn-by-turn directions to the meeting place that are specific to each of said client devices; and
providing said turn-by-turn directions to said client devices.
10. The method of claim 2, further comprising:
polling the client devices to select a meeting place from the list;
generating turn-by-turn directions to the meeting place that are specific to each of said client devices; and
providing said turn-by-turn directions to said client devices.
11. The method of claim 1, further comprising:
determining if the client devices are within a predetermined distance to one another and if it is determined that they are, determining if a barrier exists between a client device and the meeting place and if there is, selecting a new meeting place nearby to which there is no barrier.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. An apparatus for generating video data derived from the execution of a computer program, the apparatus having first and second modes of operation;
wherein, in the first mode of operation, the apparatus is operable to execute a computer program comprising a plurality of components, wherein the execution of each component is conducted in a sequence of execution frames, the apparatus being further operable in said first mode of operation to record video data comprising a sequence of video data frames corresponding to the sequence of execution frames; and
wherein, in the second mode of operation, the apparatus is operable to process video data which have been recorded during the previous execution of a computer program, in order to allow a user to obtain a visualization of the execution of that computer program, and wherein, in the second mode of operation, the apparatus is further operable to allow a user, at any frame of said sequence of video data frames, to change the mode of operation of the apparatus to the first mode of operation and to obtain, from said video data, the state of the corresponding execution frame of the computer program, the apparatus further comprising:
means operable to allow a user to modify said video data by a step selected from the group consisting of at least one of adding an item to the frame, deleting an item from the frame, and changing the state of one or more items comprised in the frame, such that, in the first mode of execution, the apparatus is then operable to execute the computer program starting from the modified frame using the modified data, and to record video data resulting from the execution of the computer program.
2. An apparatus as claimed in claim 1, wherein the video data comprise re-execution data.
3. An apparatus as claimed in claim 1, wherein the video data comprise information about the initial state of the program components at the start of the execution sequence, together with a stored time line of interactions communications which took place during the execution sequence between program components.
4. An apparatus as claimed in claim 1, wherein the apparatus comprises execution environment generation means configured to generate a deterministic execution environment for conducting the execution of said computer program.
5. An apparatus as claimed in claim 1, wherein the apparatus comprises an execution environment generation means configured to generate an execution environment operable such that the execution of the components of the computer program is carried out in a plurality of sequential frames of execution, wherein the execution environment is further operable to: i) allow communication between one of said components and another of said components in different frames of execution; and ii) prevent communication between one of said components and another of said components in the same frame of execution.
6. An apparatus as claimed in claim 5, wherein the execution environment is operable to only allow communication between components in adjacent frames of execution.
7. An apparatus as claimed in claim 5, wherein said communication between components includes at least one of sending a message to another component and reading data from another component.
8. An apparatus as claimed in claim 5, wherein said communication between components includes communications that are processed by said execution environment in a pre-determined order.
9. An apparatus as claimed in claim 1, wherein at least one component is an object.
10. An apparatus as claimed in claim 1, wherein the execution is conducted in an execution environment which is distributed over multiple machines.
11. An apparatus as claimed in claim 1, wherein the execution is conducted in an execution environment which is distributed over a plurality of parallel processors.
12. An apparatus as claimed in claim 1, wherein the apparatus comprises an execution environment operable such that the execution of at least one component of a computer program is carried out in a plurality of sequential frames of execution, the execution environment being further operable to process communications between components of the computer program in a predetermined order.
13. A non-transitory computer readable medium encoded with a computer program which, when loaded into a computer, causes the computer to perform as an apparatus as claimed in any one of claims 1 to 12.
14. A method for generating video data derived from the execution of a computer program, the method comprising:
i) executing one or more components of a computer program in an execution environment operable such that the execution of each component is conducted in a sequence of execution frames;
ii) during said execution, recording video data corresponding to said sequence of execution frames, wherein said video data are sufficient to allow the state of any frame of execution to be recreated;
iii) obtaining a desired sequence of re-execution frames from said video data;
iv) executing the sequence of re-execution frames obtained in step iii) in said execution environment;
v) pausing the execution of said sequence of re-execution frames at a given frame to obtain a candidate frame;
vi) modifying the state of said candidate frame by a step selected from the group consisting of at least one of adding an item to the frame, deleting an item from the frame, and changing the state of one or more items comprised in the frame, to obtain a modified sequence of re-execution frames; and
vii) executing the computer program using data of the modified sequence of re-execution frames and recording video data resulting from the execution of the computer program.
15. A method as claimed in claim 14, further comprising the step of obtaining a visualization of the changing state of said sequence of execution frames.
16. A method as claimed in claim 14, wherein the execution environment is further operable to: i) allow communication between one of said components and another of said components in different execution frames; and ii) prevent communication between one of said components and another of said components in the same execution frame.
17. A non-transitory computer readable medium encoded with a computer program which, when loaded into a computer, causes the computer to perform the method as claimed in claim 14.
18. A method for generating video data derived from the execution of a computer program, the method comprising:
i) obtaining a desired sequence of re-execution frames from video data recorded during the previous execution of a computer program comprising one or more components;
ii) executing said sequence of re-execution frames in an execution environment operable such that the execution of each component is conducted in a sequence of execution frames;
iii) pausing the execution of said sequence of re-execution frames at a given frame to obtain a candidate frame having a given state;
iv) modifying the state of said candidate frame by a step selected from the group consisting of at least one of adding an item to the frame, deleting an item from the frame, and changing the state of one or more items comprised in the frame, to obtain a modified sequence of re-execution frames; and
v) executing the computer program using data of the modified sequence of re-execution frames and recording video data resulting from the execution of the computer program.
19. A method as claimed in claim 18, further comprising the step of obtaining a visualization of the changing state of said sequence of re-execution frames.
20. A method as claimed in claim 18, wherein the execution environment is further operable to: i) allow communication between one of said components and another of said components in different re-execution frames; and ii) prevent communication between one of said components and another of said components in the same re-execution frame.
21. A non-transitory computer readable medium encoded with a computer program which, when loaded into a computer, causes the computer to perform the method as claimed in claim 18.
22. An apparatus for generating video data derived from the execution of a computer program, the apparatus comprising:
i) an execution environment generation module configured to generate an execution environment operable to execute one or more components of a computer program such that the execution of each component is conducted in a sequence of execution frames;
ii) a recording device operable to record video data corresponding to a sequence of execution frames being executed by said execution environment, wherein said video data are sufficient to allow the state of any frame of execution to be recreated, and wherein said apparatus is operable to obtain a desired sequence of re-execution frames from said video data, said sequence of re-execution frames being for execution in said execution environment; and
iii) a frame state modifier operable, following an interruption of the execution of a sequence of re-execution frames by said execution environment, to allow modification of the state of a candidate re-execution frame by a step selected from the group consisting of at least one of adding an item to the frame, deleting an item from the frame, and changing the state of one or more items comprised in the frame, to obtain a modified sequence of re-execution frames for execution by said execution environment.
23. An apparatus as claimed in claim 22, wherein the execution environment generation module is configured to generate an execution environment operable such that the execution of the components of the computer program is carried out in a plurality of sequential frames of execution, wherein the execution environment is further operable to: i) allow communication between one of said components and another of said components in different frames of execution; and ii) prevent communication between one of said components and another of said components in the same frame of execution.
24. A non-transitory computer readable medium encoded with a computer program which, when loaded into a computer, causes the computer to perform as an apparatus as claimed in either of claim 22 or 23.