- Some notes for old PODBOT 2.5 waypointers
If you are familiar with making waypoints for PODBot 2.5, you won't need to read the following two sections that are meant as
an introduction for people who are new to waypointing.
However, make sure you have a close look at the new console commands and
the new waypoint menu - there have been loads of changes there!
Most of the waypointing is done via the menu now, and almost all console commands have disappeared entirely. You will not be able
to use your old configs/binds with this editor (but You can find new binds examples in
Waypoints - Useful keys binding section). But you will love all the new features
and possibilities!
Note On Compatibility:
PODBot MM can still interpret all PODBot waypoint files from earlier versions up to 2.5, but the code for camp waypoints
has been corrected. If you use an older waypoint set with this dll, your bots will look at strange directions when camping.
In order to have them look exactly where you want them to look, you must replace these old camp waypoints by new ones.
There is a very useful console command pb wp telport camp which will teleport You to the next
camp waypoint from th ewaypoint list - so You won't need to walk on the whole map to find them.
New Button Code:
On maps with buttons, you may have to tweak the (formerly useless) button flags again.
You can now avoid bots ringing doorbells or doing other silly stuff with unimportant buttons (you just need to remove
the button flag from the waypoint), but you can have them go through button-triggered doors without problems now!
- Waypoints, what are they ?
Unlike humans, bots cannot see a map and analyze what they see. If you see a building with a door, you can walk straight
to the door, open it and enter the building.
Bots cannot do this without help! They can see and fight enemies or react if they are being attacked. These ways of behaviour work
without any external help. But in order to find their way around the map and to safely navigate through all ways and passages,
they do need some help. They need something that tells them where they can go and where they can't. They need something that
shows them where a ladder is located or where the mission goal (escape zone/hostages/bomb spot) is. This is done by means
of waypoints. You can imagine waypoints a bit like those flags on a ski run. Each waypoint marks a point where bots can go.
If two of them are connected with each other, a bot can go from one point to the other and back. So what you do when you waypoint
a map is basically place a whole net of points in the map and connect them in a way that bots can proceed from one point
to the other. All points must be placed in areas that are accessible for players, and if you want your bots to navigate smoothly
and safely, you must also keep an eye on the connections. If connections go through walls or over a deep ravine, your bots will
bump into walls or fall to their death.
There are several waypoint types that can be used to indicate map goals, rescue zones, nice camp spots, ladders etc. There are
different types of connections too, one-way or two-way connections and jump connections that will make a bot jump from point
A to B instead of walking or running there. We will come back to this later.
Besides, you don't have to worry about every little detail. The editor that comes with this bot version will do lots
of the work for you, and besides, it's graphical and easy to use (no programming/coding skills or anything required). You may
very well discover that making waypoints can be fun, especially when you see bots roam through the entire map without
problems - and you made it possible!.
- What do waypoints look like in the game ?
When you are playing a normal game on a waypointed map, the waypoints will of course be invisible so that they don't
distract or annoy you in any way.
When waypointing is activated (see: How can I access the waypoint editor?, Below for instructions on how to do that), you will
see waypoints as vertical bars about as high as a standing player. The colour of normal waypoints is green, but you may also
see waypoints in white, purple, red, blue and cyan. These colours indicate special waypoints, some of which have already been
mentioned in the last paragraph. If you see waypoints that are much smaller than the other ones, they are crouch waypoints.
They will force bots to crouch when approaching them. Such waypoints are needed to lead bots through vents or any other
low and narrow passages.
Connections between waypoints are marked as horizontal lines leading from the centre of one waypoint to the other. They, too, exist
in different colours. You may see yellow, white, red and teal lines. Don't worry if all these different colours sound confusing right
now - it's actually very easy, but of course it helps a lot if you see some waypoints on the screen.
Now you know what waypoints and connections are, what they are for and what they look like, you may want to enter the editing mode
and see for yourself.
- How can I access the waypoint editor ?
The waypoint editor is not a separate program, it is included in the bot dll (or .so, if you are using linux).To open it, create
a LAN\Listen Server game, select the map you want to waypoint and start the game as usual. As soon
as you are in the map, you can activate the editing mode from the console by typing pb wpmenu or
if you have bound a key for it, simply by pressing that key.
- Adding waypoints
Adding a waypoint is really easy. Just walk to the position where you want a waypoint to be inserted, bring up your waypoint menu:
This is the main Waypoint Menu.
To add a waypoint, simply select "1. Add." A new menu will appear,
the "Add Waypoint" menu. All waypoint types described below can be
added by using this menu.
The "Add Waypoint" menu.
Once you have selected a waypoint type from the "Add Waypoint" menu, you will
hear a sound, and the selected waypoint will appear in the map, at the exact position where you stood when you pressed the key.
NOTE:
If you are standing while selecting a waypoint, a standing waypoint will be inserted. All bots will run or walk towards this
waypoint normally.
If you want bots to crouch when approaching a particular position, crouch down when inserting the waypoint. You will notice that
the waypoint you just added is only about half as high as normally. As you inserted it when you were crouched down, it
automatically carries a "Crouch" flag (see: Types Of Waypoints). Bots will now crouch
automatically when trying to reach this waypoint.
Now that you know the basic method used to add a waypoint, let's have a closer look at the waypoint types that exist.
- Types of Waypoints
Normal waypoints
Normal waypoints are the points you need in order to make bots walk through the map. They are used
for navigation only and will not trigger any particular behaviour. You can add a Normal waypoint
by selecting "1. Normal" from
the "Add waypoint" menu. The colour of Normal waypoints
is green, as you can see in the picture below.
A Crouched Normal waypoint (left) and a Normal waypoint (right)
Terrorist Important waypoints
This type of waypoints can be navigated just as a Normal waypoint by all bots, but it has
one additional function. It marks strategically important points for a Terrorist team. Adding a Terrorist
Important point in a room will tell Terrorist bots to go to the room and check it frequently. You can add this type
of waypoint by selecting "2. T Important" from
the "Add Waypoint" menu.
The colour of Terrorist Important waypoints is red, as you can see in the picture below.
A Crouched Terrorist Important waypoint (left) and a Normal Terrorist
Important (right)
IMPORTANT:
The use of Terrorist Important points depends on the map type!
Wherever the Terrorist team is the "defending" team (i.e. on As_ Cs_ type maps), Terrorist
Important points should be placed at key positions around the hostage area or VIP escape zone. For example, if the hostages
are inside a building, Terrorist Important points should be added behind each entrance to
the building. Doing so will make the Terrorists check all entrances frequently and guard them. Do not place
Terrorist Important points far away on the other side of the map. After all, you don't want
the Terrorists to abandon the hostages and rush planlessly through the map, now, do you? With the VIP escape zone, the same
strategy applies, Make Terrorists guard the key routes to the escape zone by using
Terrorist Important waypoints.
You DON'T need to place Terrorist Important points directly
at the hostages.
Terrorists will check on hostages anyway.
On maps where the Terrorist team is "offensive" (i.e. De_ and Es_ type maps),
Terrorist Important waypoints should not be overused. The "offensive" team will try
to reach the map goal waypoint anyway. The only useful function you can use important waypoints for is to make particular routes
more attractive for the bots. For example, if there is a longer and more complicated, but safer and more surprising route
to the map goal, bots may tend to underuse it a little. In such cases, placing one or two
Terrorist Important waypoints along this route can help.
Counter-Terrorist Important waypoints
The function of this waypoint type is exactly the same as the Terrorist Important waypoint
described above.The only difference is that a Counter-Terrorists Important waypoint obviously
marks strategically important places for the Counter-Terrorist (CT) team. You can add this
type of waypoint by selecting "3. CT Importanat" from
the "Add Waypoint" menu. The colour of Counter-Terrorist
Important waypoints is blue, as you can see in the picture below.
Two Counter-Terrorists important waypoints, normal (right) and crouched (left)
IMPORTANT:
As with the other team specific waypoints, Counter-Terrorist Important waypoints should also be placed
according to the map type. On maps where the Counter-Terrorist team is forced to move out and reach a certain goal - either hostages
to rescue or a VIP escape zone to reach safely. Counter-Terrorist Important points can be useful to make
a particular route more attractive. You DON'T need to place Counter-Terrorist Important points near
a map goal (hostages on CS_ maps, VIP escape zone(s) on As_ maps), Counter-Terrorist bots will go there anyway. It's the most important
point for them, and adding several other important waypoints right next to it doesn't yield any benefit.
On maps where the Counter-Terrosist team is in a defensive role (i.e. on De_ maps and Es_ maps), place
Counter-Terrorist Important points at key positions around the bomb/escape zone(s) in order to make
Counter-Terrorist bots defend all possible routes to the Terrorists map goal.
Ladder waypoints
Ladder waypoints are only used for waypointing ladders, as you possibly guessed. To enable your bots
to use a ladder, simply walk up to the ladder until you get "stuck" on it (you will see your crosshair grow wider once you are
on the ladder). Now place one Ladder waypoint at the bottom of the ladder. Then climb up the ladder
until you are almost completely over the edge. Place a second waypoint here and make sure that the two ladder waypoints are connected,
(This should have happened automatically if the Ladder waypoints aren't too far away from each other,
if not you can create a connection manually), That's all! You can add this type of waypoint by selecting
"4. Ladder " from the "Add Waypoint"
menu. The colour of Ladder waypoints is pink, as you can see in the picture below.
A waypointed Ladder, one Ladder waypoint at the bottom, the other near the top
Some general hints and notes concerning ladder waypoints:
- Waypoint ladders AFTER you waypointed the areas above and below them! If you waypoint ladders first, all waypoints in reach of
a ladder waypoint will be connected with it and have their radii reduced to zero automatically!
- It doesn't matter whether you place the top or the bottom Ladder waypoint first.
- If the ladder is very long, you can place additional Ladder waypoints between the bottom
and the top end.
- The bottom waypoint will automatically get connected with the nearest waypoint, independent of current AutoPath Max Distance
settings.
- The top waypoint will usually get a connection towards it automatically, but you will have to add a connection leading
away from it manually.
- Ladder waypoints will always have a radius of zero, and this shouldn't be changed!
Rescue waypoints
Rescue waypoints are only needed on Cs_ type maps (hostage rescue scenarios). They mark the zone
where the Counter-Terrosist team must bring the hostages, the rescue zone. Place one of these waypoint inside each rescue zone
there is. If there is only one, you only need one Rescue waypoint. Placing more points in one rescue
zone is unnecessary bulk and will rather cause problems than improve anything.
A Counter-Terrorist bot that has succeeded in "activating" the hostages will determine the position of the nearest rescue
point and lead the hostages there. When the bot has reached the rescue point, it will check if the hostages are really rescued
and after max time about 5 seconds turn back to return to combat. Badly placed rescue points may lead to bots turning around before
the hostages have really reached the rescue zone. As a consequence, the hostages will be left standing a few inches away from
the rescue zone while the bot considers its mission as completed and turns back to fight, ignoring the deserted hostages.
That's why you are advised to place a rescue waypoint well inside a rescue zone, not at its edges!
In the editor, rescue points will be displayed in bright white (see below). Their radius is set to zero by default and shouldn't
be changed. All bots can use this waypoint type for Normal navigation as well. You can add this
type of waypoint by selecting "5. Rescue " from the
"Add Waypoint" menu. The colour of Rescue waypoints
is white, as you can see in the picture below.
A Rescue point. You can also make this point Crouched, of course.
Camp waypoints
As the name suggests, Camp waypoints are used to mark good sniper spots. They can be navigated
by all bots. However, whether a bot may camp there or not is determined by the flag you can add to the camp waypoint. You can
make Camp waypoints team specific or leave them "open" to any team.
The colour of Normal Camp waypoints is cyan. Terrorist specific camp waypoints have a reddish hue,
Counter-Terrorist specific ones are a bit blueish, as you can see in the pictures below.
Two Normal Camp waypoints, Standing (left) and Crouched (right).
Team specific Camp waypoints:
Two Terrorists Specific points to the left and Two Counter-Terrorists Specific points to the right.
Although there are two entries in the "Add Waypoint" menu
("Camp start" and "Camp end"),
the Camp waypoint is in fact only one point. However, it carries two "markers" that
tell a camping bot where to look while camping. When you are camping yourself, you will monitor a certain area. If you wanted to
define this area, you could describe it as an angle. This angle would be specified by two lines going out from your position: One
that marks the left edge and another one for the right edge. The monitored area would be between these two lines. The mentioned
"markers" fulfill exactly this function. They are displayed as more or less horizontal beams going out from the top of
a Camp waypoint. The Camp start marker is yellow,
the Camp end marker orange, as you can see in the picture below.
A Crouched Normal Camp waypoint with Camp start (right, yellow) and Camp end
(left, orange) markers.
When a bot approaches the depicted Camp waypoint, it will turn to face the direction of
the Camp start marker (the yellow beam to the left) first. Then it will scan the area
between this marker and the Camp end marker (orange beam to the right) by changing every few seconds
the direction it is facing from one to the other. An enemy moving outside the two markers may escape the bot's attention, unless
it hears the enemy coming. In the piture above, both markers are pointing to the same height. However, you can also specify different
heights for each marker. This is very useful for making bots monitor a ramp, a slope, a stairway or other uneven surfaces.
So far, so good. But how to set a working camp waypoint? Follow these steps:
- Go to the exact position where you want bots to camp (of course, a dark corner or similar locations are best suited
for camping, but whom do I tell this? )
- If you want bots to stand while they are camping, remain standing upright. If you want them to crouch while camping
(more precise aiming!), crouch yourself while adding the point
- Point your crosshair at the exact direction and height where you want your bots to start looking.
- Bring up the "Add Waypoint" menu and select "
6. Camp start". The Camp waypoint itself will now be placed at your current position,
and you will see the two marker beams going out from it. The Camp start marker will already be
pointed at the direction you specified, the Camp end marker will still need some adjustment.
- Now point your crosshair at the exact direction and height where you want your bots to end their monitoring.
- Once again, open the "Add Waypoint" menu, but now select "7. Camp end". You will see that the Camp end marker will now
be pointed at the direction you specified.
That's it! Unless you want to make your Camp waypoint team specific or add another flag (see:
Waypoint Flags section), you are done! In fact, it sounds much more complicated than it actually is.
Some quick notes and hints about Camp waypoints:
- You can alter Camp start and Camp end markers as often
as you want. As soon as you are near an existing Camp waypoint (i.e. as soon as its waypoint
stats are shown in the upper left corner of your HUD), Bring up the "Add Waypoint"
menu and selecting "6. Camp start" or
"7. Camp end" will NOT add a new waypoint.
Instead, it will readjust the Camp start and/or Camp end
marker(s) of the nearby Camp waypoint to the new direction you specified.
- Thus, if you want to place two Camp waypoints closely together, make sure that the waypoint stats of
the first one have disappeared from your HUD before you set the second one. If the stats of the first waypoint are still visible,
you will accidentally modify the Camp start and Camp end
markers of that waypoint instead of inserting a new point.
- Don't place Camp waypoints in strategically irrelevant areas, or you will see bots having
a situation totally unimportant areas while their team mates are under heavy attack.
- Provide the "defending" team with some nice sniper spots near the map goal! In general, if you make team-specific
Camp waypoints, make more for the defending team than for the attacking team.
Map Goal waypoints
This waypoint type obviously indicates the Map Goal.
On an As_ map, the Map Goal waypoint tells the bots where the VIP escape zone is. Make sure
the escape zone symbol is visible on your HUD when you place a map goal waypoint there. Otherwise the VIP may end up reaching
the point and running away again just like you would do with Rescue waypoints.
On a Cs_ map, the Map Goal waypoint marks the position of the hostages. It is
NOT necessary to place one Map Goal waypoint per hostage.
Unless the hostages are standing really far away from each other, one point per hostage group will perfectly do.
On a De_ map, the Map Goal waypoint marks the bomb spots. It must be placed somewhere inside
the bomb zone, i.e. the bomb icon must be blinking on your HUD when you place such a waypoint. In contrast to Cs_ maps, on De_ maps
it makes sense to set various goal waypoints in one bomb zone. This will enable bots to choose from several spots to plant the bomb
and make them less predictable.
NOTE:
Bots will always crouch down while planting the bomb. While it is perfectly possible to make the
Map Goal waypoint crouched, but this is not necessary if you want to make sure that your bots
crouch to plant the bomb, they will do so anyway.
Finally, on Es_ maps, the Map Goal waypoint marks the escape zone for the Terrorists. You can
follow the same rules as for As_ maps.
Now you may wonder how to determine the exact function of a the Map Goal waypoint. Don't worry,
this is entirely map specific, you don't have to do anything about it. All bots of both participating teams will automatically
know what the the Map Goal is, they only need the point to guide them there. You can add this
type of waypoint by selecting "8. Goal" from the
"Add Waypoint" menu. The colour of Goal waypoints
is purple, as you can see in the picture below.
The purple waypoint on the marked spot is the Map Goal, in this case
a bomb spot.
Jump Connections
Jump is not actually a waypoint but a connection between waypoints. (see: Waypoint Connections)
So now we've seen what type of waypoints the bots use, we can see how we can string these waypoints together to make a gaint
web to cover the map with
- The Radius
The Radius of a waypoint is indicated by means of horizontal blue beams that go out in all
directions from the position of a waypoint. Viewed from above, the beams form a pattern that is like the spokes of a bycyle wheel
or the like the petals of a flower. The photo below was taken from above, we are looking down onto a waypoint, and you can see
the colour of a Radius is Blue, as you can see in the picture below.
A Normal waypoint and its Radius indicators viewed from above.
These Radius indicators are a great means to see how big the radius of a waypoint actually is, it ends
exactly where the beams end.
What does the Radius actually do? It tells the bots how exactly they must navigate around the waypoint
in question. If a bot walks past a row of waypoints with big radii, it will know that super-exact navigation is not required. If the radii
are small, the bot will stick strictly to the waypoints.
Thus, in open areas big radii help to make bot navigation natural - you wouldn't want to see a bot run across a wide courtyard as if it was
following an incredibly thin, straight line painted onto the ground, now, would you? It looks much more natural if the bot takes advantage
of the space he has around him.
However, in narrow corridors and doorways or on bridges, the situation is different, too big radii would make bots too careless, they would
bump into walls or even fall off a bridge because they think they can walk anywhere inside that big radius!
That's why choosing appropriate waypoint radii is so important. As a general rule, keep the radii big in open areas and make them small
in narrow passages. Read the following section to learn how:
Setting or Changing the Radius:
The good news first: You don't have to set every single Radius manually, the editor will do much of
the work for you! It will automatically calculate the Radius of a waypoint depending on the area around it.
If the editor detects higher (~more than knee-high) obstacles like walls nearby, it will automatically adjust the Radius to reach up to the wall, not further. However, the maximum Radius is limited to
96 units. This means that even on a totally open plain, where the nearest obstacle is hundreds of distance units away, the
Radius will not exceed 96.
Now you might wonder "Well, if the editor does all this for me, why would I change radii by hand?" The answer is simple,the editor
helps, but it isn't perfect, it cannot detect all kinds of obstacles (I can't go too much into detail here because all this is pretty much
map-related). Anyway, you will see places where the radius cuts into an obstacle - it could be a very thin pillar, a fence, or even
a solid-looking car that's parked in the streets... as I said, it depends on how the mapper built these elements.
Another problem is not with walls, but with holes and cliffs, If there is no high obstacle, the editor will regard an area as clear and set
a big radius, it doesn't care if right next to the waypoint there's a yawning abyss where bots will fall to death!
So these are areas where you will have to keep a watchful eye on your radii and if necessary, change them by hand. In narrow corridors
and especially around narrow doorways, you will see that even a small radius calculated by the editor doesn't make the bots navigate
precisely enough. In such places, I strongly recommend lowering the radius to zero.
In order to change the radius of a waypoint, bring up the main menu and select
"3. Set Radius". The following menu will appear:
The Radius menu with all options between 0 and 112.
Simply select an option by pressing the corresponding key, and the radius of the currently active waypoint will be changed to
the selected value. You will quickly get a feeling for these numbers if you play around with them a bit.
Waypoints with fixed radii
Note:
Some waypoint types will always have, and require, a radius of zero. The radii of thes waypoint types
should NOT be changed! The types with fixed radii are: Ladder,
Rescue, Camp (no matter if team specific or not) and
Map Goal.
- Connecting Waypoints
Waypoints alone aren't sufficient to make bots move the way you want. They must be connected with other waypoints in order to let
bots reach their goal. By default, connections up to a certain distance will be made automatically.
You can select the automatic connection distance (AutoPath Max Distance, APMD) by bringing up the main menu and selecting
"9. Options".
The Waypoint Options menu - page 1.
Now select the entry "6. AutoPath Max Distance". The following sub-menu will appear:
The APMD (AutoPath Max Distance) menu.
Select the desired distance from this menu. After selecting a distance, connections up to that distance will be drawn automatically,
of course, you can also add and remove connections manually.
However, this needs a little bit more explanation, and it's better to explain if you know the different connection types.
So let's first have a look at these - afterwards you can read how to add and remove such connections by hand.
Two-way (bidirectional) connections
The vast majority of all connections in a waypoint set will be bidirectional. Obviously, these
connections enable bots to walk both from point A to point B and back from point B to point A. The colour
of bidirectional paths is yellow, as you can see in the picture below.
A 2-Way connection between the two depicted waypoints.
One-way connections
One-way connections enable bots to walk from point A to point B, but not vice versa. They can be useful
to make bots drop down a wall or a high crate, but prevent them from attempting to get up. Of course, there may be more places at which a
1-way connection can make sense, but that depends on the map.
In game, 1-way connections will be visible from 2 waypoints, their start and their end waypoint. In order
to show you the direction of 1-way connection, it will be shown in different colours depending on from which
perspective you view it. Let's say you have a 1-way connection from point 1 to point 2. In this case,
when you are standing at point 1, you will see the outgoing 1-way connection displayed in white as you
can see in the picture below.
An Outgoing 1-Way connection,
(A connection that leads FROM where i am standing TO the point in the background, but not back from it).
The picture below shows the same two waypoints and the same connection, but this time I took the screenshot while I was standing near
the second waypoint.The incoming 1-way connection displayed in teal as you can see in the picture below.
An Incoming 1-Way connection
(A connection that leads FROM the point in the background TO the point where i'm standing).
The fact that 1-way connection are shown from both involved points is a great feature. It makes
spotting errors very easy and saves you the trouble of running around to check if there is a connection TO the point where you are
standing.
Jump connections
Jump connections are a bit special as they cannot be drawn like any other connection. But that's not all,
apart from that, Jump connections can also be
one-way or two-way connections.
To make matters even more complex, their 2-way version can come in two flavours: A "pure" two-way jump connection,
i.e. a Jump connection from A to B and another Jump connection back from B
to A or a "mixed" two way connection, with a Jump connection leading from A to B and a regular
one-way connection back from B to A. The latter version will be very rare, though. Now once again, this sounds more complicted than it
actually is.
The Jump connection horizontal line displayed in red(Outgoing Jump connection), viewed from the waypoints
where the bots will start their jump can be seen in the picture below.
An Outgoing Jump connection, it will make bots jump to the waypoint in
the background.
Here is the same connection viewed from the waypoint where bots will land after their jump. As you can see, it is shown as a
incoming 1-way connection (displayed in teal). From this side, you cannot tell whether this incoming
connection is a Jump connection or a 1-way outgoing connection. Given
the fact that there's a gap where bots can fall down, it had better be a
Jump connection...
An Incoming Jump connection, bots start their jump at the waypoint in the background
and land here - hopefully.
Now look at the pprevious screenshot, I could add a regular 1-way connection back to the waypoint in
the background. (I know it wouldn't make sense at this spot, but let's just pretend there were no gap between the waypoints.)
After making this connection, the connection line would turn into a Two-way connection when viewed from
the position shown in the screenshot. It will show you that there's a way to get TO the waypoint in the background and back FROM it.
At the same time, you will know that bots will walk back to the waypoint in the background. Why?
Because a "pure" 2-way Jump connection shows as a red line from both sides. If i added a jump back
from the point where I took the screenshot to the point in the background, the connection would show as a red line, no matter from which of
the two waypoints I look at it. This will tell you that bots will jump between the two waypoints, no matter in which direction they are
following the connection.
- Adding / Removing connections manually and Special Cases
Now you know the most important things about connections in general and the different types of connections. You also know how to adjust
automatic connection lengths and how to add a jump connection by hand. But how do you add or remove a connection by hand?
In older PODBot versions, you could add and remove connections by means of console commands. You will be glad to hear that PODBot MM uses
a much more comfortable method to accomplish this. You simply aim at the desired waypoint and select the action to perform from the
on-screen menu!
Here's how it works (Look at the screenshot below), let's pretend we wanted to delete the connection from the waypoint where we're
standing to the left waypoint near the wall, aim at the waypoint with your crosshair. As soon as the waypoint is selected, it will become
bigger, and a little blue cross will appear on top of it.
NOTE 1:
This only works if you are standing near a waypoint and aiming at another one! If you are standing in a waypointless area, you won't be
able to use this function because it needs two selected waypoints (The one where you are standing and the one you are aiming at).
NOTE 2:
You can override whatever APMD value with manual connections, but there's a limit of 500 units.
The left waypoint is selected, although the crosshair isn't exactly on it.
Note how big is its width in comparison to the other, unselected waypoint! Besides, you can see the blue cross on top.
You will see that the crosshair doesn't have to be exactly on the waypoint, it's usually enough if you aim somewhere near the point.
Sometimes you will even have to aim a little bit away from the waypoint in order to activate it. Simply move your crosshair around
the waypoint until you see that it gets bigger and has the blue cross on top of it. Leave the crosshair where it is and perform whatever
action you want to perform.
If you have problems activating a waypoint, you can also try changing your position a bit, Walk a step forward or to the side, aim at
the desired waypoint from a slightly different angle. You will get a feeling for it quickly!
The following picture demonstrates some of the peculiarities of this aiming system, especially over longer distances. The crosshair is
actually nearer to the right camp waypoint in the background,
but nonetheless, the left one is selected!
Despite the crosshair being nearer to the right waypoint, the left one is
selected!
In the screenshot below, I stood at the exact same position and aimed until I had the right waypoint activated. As you can see that
the crosshair is off to the right quite a bit. But you can also see how well the activated waypoint is visible even from such a large
distance. Normally it would be even slightly thinner than the left waypoint, as it is a little further away. But here it is nice
and fat, easy to tell apart from unselected waypoints.
Now aiming at the right waypoint, the crosshair is a bit off, but the waypoint
is selected.
Now you know how to activate a waypoint by aiming at it. In order to add a connection now, bring up the main menu and select
"6. Add Path". The following sub-menu will appear:
The "Add Path" menu where you can select which type of connection to add.
Well, this is almost self-explanatory, Select the connection type you want to add, and it will be drawn. You have read about the available
connection types above, so this should be no problem.
"Outgoing path" means a 1-way connection going from your current
position to the waypoint you're aiming at.
"Incoming path" means the opposite, a 1-way connection coming
towards
your position from the waypoint you're aiming at.
"Bi-directional (Both ways)" means obivously a
Two-way connection
Note: Jump connections can only be drawn by performing the jump, that's why this connection type is not
available in this menu.
Removing connection manually is even easier, but works slightly different because you don't have to choose what to remove. Just aim at
a waypoint and select "6. Delete Path" from the waypointing menu.
If there is a 1-way connection (Incoming or Outgoing) between the waypoint
where you are standing and the waypoint you are aiming at, it will be deleted.
If there is a 2-way connection between the two waypoints, selecting "
6. Delete Path" will first delete the connection that leads from your position to the other waypoint. Thus, a 1-way connection from the waypoint you are aiming at back to your own position will remain. Simply hit "6. Delete Path" again, and it will disappear.
Special cases: Adding connections with the waypoint cache function
In some cases, especially with Ladder waypoints, you may run into serious problems to aim at a waypoint.
Let's say you want to connect two Ladder waypoints.  In such a case, simply bring up the waypointing menu and select
"9. Options".
The Waypoint Options menu - page 1.
Select "7. Cache this Waypoint". You will see a message on your HUD: "Waypoint #node
has been put into memory", where "node" is the number of the waypoint you're standing at.
Note:
As soon as a waypoint has been put into the cache, all manual connection adding/removing actions will affect the cached waypoint, no matter
how far you are away! So be careful with this function. If you put a waypoint into the cache, then walk to the other side of the map and
manually add a connection somewhere, the connection will lead to the cached waypoint, even if this means going through the entire map and
thick walls!
But back to the example: You are still standing at the lower ladder waypoint and have just cached it. Now you can climb up to
the upper ladder waypoint and add a 2-way connection. This new
2-way connection will automatically be made between your current position (the upper ladder waypoint)
and the cached waypoint (in this case, the lower ladder waypoint).
In order to clear the cache, simply walk to any point in the map where there is no waypoint nearby. Then, select "7. Cache this Waypoint" again. You will see a HUD message: "Cache cleared! (no waypoint nearby)".
Now the cache is empty, and you can continue working just like before.
You can also move some cached waypoint to the position You are standing at. Just from the same Options menu (page 1) You need to select 8
- Move cached waypoint here.
HINT:
As it was mentioned, this function can cause errors if you don't pay attention to what you are doing. Therefore, I recommend clearing
the cache immediately as soon as you don't need it anymore.
- Waypoint Flags
Waypoint flags are anything that makes a waypoint "behave" in a special way and serve for more (or different) things than mere
navigation purposes.
Flags can be divided into two categories, and if you wanted to invent some nice names for these categories, you could call them exclusive
and cumulative flags.
What does that mean?
Well, exclusive flags are flags that exclude each other - a waypoint carries EITHER one flag OR another, but never two at the same time.
Such a flag will change the type of a waypoint. For example, if you have a Normal waypoint and add
a "6. Rescue" flag to it, the waypoint will turn into a Rescue
waypoint, with all its functions. It cannot be a Normal waypoint AND a
Rescue waypoint at the same time.
The following flags are exclusive: Map Goal, Ladder, Rescue, Camp and Team Specific (CT or T)*. Adding one of these flags to any waypoint will turn it into the selected waypoint type.
Note:
Team Specific is really a special case, because with Camp waypoints, it's cumulative - but with all others,
it's exclusive.
Cumulative flags are flags that don't exclude each other, i.e. a waypoint can carry one of these flags AND a another one at the same
time. For example, a waypoint can be Team Specific (CT or T) AND carry a
Button flag at the same time. It can mark a strategically important position for one of the teams
and at the same time tell all bots to push a nearby button.
The following flags are cumulative: Button, Lift, Crouch and
No Hostage and Team Specific (CT or T)
*.Adding one of these flags to any waypoint will also mark it into the selected waypoint type including what type it was before.
Note:
Team Specific is only cumulative when applied to Camp waypoints.
Bring up the main menu and select "4. Set Flags ".
The following sub-menu will appear:
The Waypoint Flags menu.
The following list will show the effects of each flag in detail:
Use Button (cumulative)
This flag will tell bots that they need to push a nearby button every time they come past the flagged waypoint. You can add this flag to
any waypoint type. This flag is not necessary for button-triggered doors, because bots that are about to go through a closed button-triggered
door will "see" that their path is blocked and automatically look for the button that opens the door.
However, there might be situations where the bots can't detect an obstacle in their path but still need to push a button in order to reach
their goal. Imagine a deadly laser beam that can be temporally deactivated with a button, for example. Bots won't be able to detect the
laser beam as an obstacle and thus ignore the button and die. But if you add a button flag to the waypoint next to the deactivator button,
all bots will be forced to push the button before they continue.The Use Button is shown as a little green cross
near the top of a waypoint as you can see in the picture below.
This Normal waypoint is marked with a Button Flag.
Lift (cumulative)
You won't be too surprised to read that a Lift flag is used to enable bots to use lifts. Lift flags must be applied to the waypoint
inside an elevator shaft. Imagine a normal elevator that can move between ground level and 1st floor. You will have one waypoint inside
the elevator cabin at ground level, and another one you added inside the elevator cabin when you were at the 1st floor. Both waypoints
will be connected to each other. If there were no connection, bots wouldn't know that one possible path to get from one storey to the
other leads through the elevator. Now the problem is that bots are supposed to hit the button, walk into the elevator, stand still until
they have reached the other storey and walk out of the elevator. This is where the Lift flags are needed: They tell your bots to hold
their position until the elevator has reached the other storey.
Lift flags are visualized like use_button flag, but instead green color You can see the same in pink color.
This Normal waypoint is marked with a Lift Flag.
Crouch (cumulative)
Adding this flag to a waypoint will not change the waypoint type (e.g. Normal, Goal, Ladder etc.), but it will make the selected waypoint a Crouched waypoint.
You will see the effect when you look at the waypoint to which you applied the flag. I.e. It will be smaller, just as if you had made it a
Crouched waypoint in the first place.
However, it's recommended placing Crouched waypoints the normal way instead of adding a Crouch flag to standing waypoints. It's taking two
steps where only one step is necessary, and besides, if you add the Crouch flag to a standing waypoint, the waypoint will float in the air
several inches above the ground.
Map Goal (exclusive)
This flag will turn any waypoint into a Map Goal waypoint. It can be quite useful if you waypointed
the area around the map goal with Normal waypoints and then realized that you would rather have
a Map Goal waypoint in place of one of the Normal waypoints. Instead of
deleting the Normal waypoint and inserting a Map Goal waypoint, you
can just use this flag.
Ladder (exclusive)
A Ladder flag will obviously turn the waypoint it's applied to into a
Ladder waypoint. If you accidentally added a Normal waypoint where
there should be a Ladder waypoint (for example when jumping to a ladder), this flag can come
in handy.
Rescue (exclusive)
Forgot to add a Rescue waypoint in the rescue zone? There are already so many waypoint around that you
don't want to add yet another one? Well, this flag will turn any waypoint into a Rescue waypoint.
Also handy when your Rescue waypoint isn't far enough in the rescue zone that bot's only rescue half
the hostages and run back to the enemies with the hostages tagging along. Just make your previous Rescue
waypoint into a Normal and change another Normal deeper in the zone to
a Rescue.
Camp (exclusive)
This flag will turn any waypoint into a Camp waypoint. Right after adding the flag, however, this
freshly made Camp waypoint will not have its Camp start and
Camp end markers correctly set. You must do so manually by selecting
"6. Camp start" and
"7. Camp end" from the "1. Add" menu,
just as you'd do with any Camp waypoint.
No Hostage (cumulative)
This flag is only needed on CS-maps, but there it's absolutely important! It will block a waypoint
for a CT bot that's leading hostages towards the rescue zone. By using this flag you can prevent bots from
choosing paths where the hostages cannot follow them (up a ladder or through a narrow vent, for example). The "8. No Hostage" flag must be applied to the first waypoint that should
NOT be reached with hostages. In order to make it easier for you to keep an overview over which
point are blocked and which aren't,
the No Hostage is shown as a little red cross near the top of a waypoint as you can see in
the picture below.
This Normal waypoint carries a No Hostage Flag. Counter-Terrorists bots with
hostages won't be able to use it.
Team Specific (cumulative with Camp waypoints, else exclusive)
Upon selecting this flag, you will be prompted with a sub-menu where you can choose for which of the two teams the waypoint will
be specific.
This menu will appear when you select the flag "Team Specific".
When applied to Normal, Ladder, Rescue
or Map Goal waypoints, this flag will turn the waypoint into a Team Specific one. A
Counter-Terrorist Important waypoint if you selected
"2. Counter-Terrorists" and a Terrorist Important
one if you selected "1. Terrorists".
With CT and T Important points, you can use this flag to change the team
the waypoint is associated with. For example, you can use it to turn a CT Important waypoint into
a T Important one. If you select the third option,
"3. Both Teams", you can turn any CT or
T Important waypoint into a Normal waypoint.
With Camp waypoints, however, this flag works a bit differently. You can add it to any
Camp waypoint to turn it into a Team Specific Camp waypoint. Only bots of the associated team will be
allowed to camp there. Of course, you can also change a Team Specific Camp waypoint back to a normal Camp
waypoint by selecting the third option"3. Both Teams".
- Waypoint Data Strored
The Waypoint Editor shows some useful for waypointers and bot coders information about the data which is stored in pwf (main waypoint file)
and pxp (experience data file). As You could already see at examples above it shows at the top the full information about the current waypoint
(You are in its radius right now) and a bit below the basic information (index number, radius and origin) about the cached waypoint
(if You stored some waypoint in the cache - to use it later to add/delete some paths to it) and at the bottom is the basic information
(also index number, radius and origin) about the waypoint You are just facing at. Of course - if You didn't cache any waypoint or You are
currently facing no waypoint at all, there will be only the data displayed of the waypoint You are in its radius right that moment.
Experience data shows some additional information about the waypoint (if it's already collected). DWP (the most Danger Waypoint) for CWP
(Current Waypoint) / EXP (collected expierience damage value for the current Waypoint). If DWP is -1 that means there is no any danger waypoint
for the current waypoint and there is no any data collected for it (basically that means the bot was never attacked in that place).
If there is something different than -1, then You can also expect the graphical representation of showing the danger direction for
the bot - it's a line (red for Ts and/or blue for CTs) leading from the current waypoint to the most danger waypoint for it
(separatelly for each team).
HDWP (the waypoint number with the Highest Damage value collected) / HD (highest damage value collected for the most Highest Damage Waypoint)
- basically it means the most danger waypoint number with its damage value collected. That data is collected separatelly for each team, so
that's why You have two lines of that data (one for CTs and one for Ts).
Once a while the experience data is recalculated to take away the half of each of values (if the overflow for some of them is about
to happen).
Here is an example of the data You can see.
Showing the data of current, cached and faced waypoint
Note how it's shown the direction to the most danger waypoint for the current waypoint.
- Waypoint Debugging
pb debuggoal
Waypoint debugging is a way to send the bots to specific waypoints to see how well they will navigate to them. To debug your
waypoints add one bot to you map when you are waypointing. You then issue this command in the console to direct the bot to navigate
to the specified waypoint.
pb debuggoal waypoint#
Here is an example of using this command. "pb debuggoal 66"
Setting the debuggoal waypoint to waypoint 66
Bot navigating to waypoint 66
This command is also on the waypoint Options menu - page 2.
The Waypoint Options menu - page 2.
That makes it easier to set the debug waypoint. Instead of going to the console and typing "pb debuggoal 66
to direct the bot to go to waypoint 66 you can bind a key like
this:
bind "i" "pb wpmenu;menuselect 9;menuselect 9;menuselect 1"
An then all you have to do is point to the waypoint you want the bot to navigate to and press the key in your bind. Key "i" for this
example.
To cancel the debuggoal waypoint select the waypointing options menu 9 page 2 "Debuggoal off"
So there you go, that covers everything you need to know about waypoints, paths connections, radii, waypoint flags, in order
to waypoint a map and some nice little tips and tricks you can use. But there's one more thing you need to read before you start
making a name for yourself in the world of waypointing, the next part contains some breifing on the common errors new waypointers make
as well as some more tips and tricks to help you become a pro waypointer faster, like using bindings instead of menu's.
So click on 'Waypoints - Common errors' and get into it!
|
|


External version of Map module to support new Google Map v2 sdk
Obtain map API key from google. You can find instructions here: https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key
Testing device needs to have Google Play installed. Otherwise map won't work. Add this to tiapp.xml - replace "API KEY HERE" with your API key.
To access this module from JavaScript, you would do the following:
var map = require('ti.map');
View the change log for this module.
Documentation is in yml files.
Please direct all questions, feedback, and concerns to<EMAIL_ADDRESS>Hieu Pham
Copyright(c) 2013 by Appcelerator, Inc. All Rights Reserved. Please see the LICENSE file included in the distribution for further details.


Enter an array of points:
[ {"x":5,"y":5}, {"x":395,"y":5}, {"x":395,"y":195}, {"x":5,"y":195} ]
Submit


| TaskPlanner::TaskPlanner |
( |
| ) |
|
Constructor for class.
- Parameters
-
- Returns
- None
| TaskPlanner::TaskPlanner |
( |
std::istream & |
inputStream, |
|
|
std::ostream & |
outputStream |
|
) |
| |
Constructor for class with input/output stream arguments.
- Parameters
-
| inputStream | Input Stream object |
| outputStream | Output Stream object |
- Returns
- None
| TaskPlanner::~TaskPlanner |
( |
| ) |
|
Destructor for class.
- Parameters
-
- Returns
- None
| int TaskPlanner::goToStorage |
( |
| ) |
|
Calls service to move Tiago to Toy Storage Location.
- Parameters
-
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but storage not reachable, 1 when storage is reached
| int TaskPlanner::goToToy |
( |
| ) |
|
Calls service to move Tiago Base to Toy position.
- Parameters
-
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but position not reachable, 1 when position is reached
| void TaskPlanner::initializeServiceClients |
( |
| ) |
|
|
virtual |
Function to initialize Service Clients.
- Parameters
-
- Returns
- None
Reimplemented from ROSModule.
| int TaskPlanner::lookForToy |
( |
int |
toyID | ) |
|
Calls service to look for ArUco markers on toys.
- Parameters
-
| toyID | ID of the ArUco marker to be searched |
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but toy not visible, 1 when toy visible
| int TaskPlanner::moveToPose |
( |
geometry_msgs::PoseStamped |
pose | ) |
|
Calls service to move Tiago Base to given position.
- Parameters
-
| pose | The goal position robot is to be moved to |
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but position not reachable, 1 when position is reached
| int TaskPlanner::pickUpToy |
( |
| ) |
|
Calls service to pickup Toy.
- Parameters
-
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but toy could not be picked up, 1 when toy is successfully picked up
| int TaskPlanner::search |
( |
geometry_msgs::PoseStamped |
searchPose | ) |
|
search operation for scanning the area for ArUco markers
- Parameters
-
| searchPose | Pose of the next location to go to loook for toy |
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but position not reachable, 1 when position is reached
| void TaskPlanner::shutdownRobot |
( |
| ) |
|
Shuts down ROS nodes.
- Parameters
-
- Returns
- None
| int TaskPlanner::storeToy |
( |
| ) |
|
Calls service to store toy in storage.
- Parameters
-
- Returns
- Int with function execution status. -1 for call failure, 0 when call is successful but toy could not be placed, 1 when toy is successfully placed in storage
| int TaskPlanner::taskPlanner |
( |
| ) |
|
Main method which switches from the current task to the next one based on feedback from the robot.
- Parameters
-
- Returns
- None
The documentation for this class was generated from the following file:


10 Things That Are Luckily Vanishing in the Modern World
There are many kinds of discrimination in our society and we aren’t able to change everything at once. But, some things have changed, or at least are in the process of changing. And this change is how we know that we have the power.
We at Bright Side would like to reinforce your optimism and faith in the future. Humanity could gradually change its attitude toward disabled people, race, women, and could even make changes in the fashion industry.
1. Women can be good wives and mothers and still work on the same level with men.
2. People with tattoos are not criminals, they get them because they like them.
3. No more fashion standards, because we recognize all shapes and body sizes.
4. Only you can decide when all the important things should happen in your life.
5. A disability is no longer a reason to stare and point a finger at someone.
6. Color is just color no matter whether it’s skin or something else.
7. The household is not just a female business anymore.
8.
9. No one is too old or too young to be a professional.
10. Children should play not work.
Do you believe that it’s possible to eliminate discrimination in our society? Have you ever experienced this cruel injustice? You can share your opinion and stories in the comments.
Illustrated by Inna Grevtseva for BrightSide.me


The transaction ID space in Berkeley DB is 2^31, or 2 billion entries. It is possible that some environments may need to be aware of this limitation. Consider an application performing 600 transactions a second for 15 hours a day. The transaction ID space will run out in roughly 66 days:
2^31 / (600 * 15 * 60 * 60) = 66
Doing only 100 transactions a second exhausts the transaction ID space in roughly one year.
The transaction ID space is reset each time recovery is run. If you reach the end of your transaction ID space, shut down your applications and restart them after running recovery. The most recently allocated transaction ID is the st_last_txnid value in the transaction statistics information, and is displayed by the db_stat utility.


AES Encrypt / Decrypt
Key size (in bits):
128
192
256
Secret key:
Plaintext:
Encrypted text:
Clear
Encrypt
Decrypt


Barrio Queen owners sell Paradise Valley luxury home
by Phoenix Business Journal staffThe owners of the Barrio Queen chain of restaurants found a buyer for their luxury home in Paradise Valley.
Steven Rosenfield and Linda Nash , who own scores of restaurants in several states, including the Barrio Queen chain around Phoenix, were asking $3.595 million for the property at 6434 E. Jackrabbit Road.
It sold in November for $3.2 million, according to Maricopa County records, to Lange 2014 Revocable Trust, in the name of Dennis and Cynthia Lange .
The sale comes several months after Rosenfield and Nash purchased another luxury home in Paradise Valley for $6.1 million .


I can't remember where I first heard of ayahuasca. By the time I tried it for the first time, I thought of it as a substance that one did not deal with lightly. My first time taking it, while not bad, definitely confirmed this feeling. I had tried mushrooms, acid, 2CB, and morning glory seeds by the time I tried ayahuasca, but it was definitely in a different league from those.
A friend of mine mentioned that he and a two other mutual acquaintances were planning on taking it, so I asked if I could join in. They said it was okay, and so one night about a week later we met at his house. We brewed up the ayahuasca on his stove, it might have been around 40 to 50 grams each of Syrian Rue and Mimosa Hostilis, along with some vitamin C pills.
It took a long time to get the tea brewed up. We didn't actually drink it until around 1:30 in the morning. By this point we had moved down to my friend's basement. Being one of the heavier members of the group, I got one of the larger glasses. It tasted absolutely disgusting, like mud but with a sickly, acidic aftertaste that probably came from the vitamin C. We drank very slowly. Two of our party threw up. I wasn't one of them, though I did get pretty sick to my stomach. Hearing the others vomit made me very uncomfortable. I remember staggering to the bathroom and staring into the mirror, which was already distorting noticeably.
Things started off pretty rough. The walls were moving, and one of them appeared particularly sinister, to the point that I became convinced that it was trying to kill me. I kept hearing the sounds of my friends vomiting over and over in my head. When I closed my eyes my visual field was covered by an oriental rug pattern, and from there I embarked on a brief fantasy about the Arabian Nights. When I opened my eyes a few minutes later, I was feeling much better.
At this point I realized that the bucket of vomit could be a kitten if it wanted to, and that this made things alright. I started thinking of everything, including inanimate objects, as having its own will, which it could exercise freely. I befriended the wall that had previously appeared threatening, and another wall perpendicular to it. At this point I realized that my hands wanted to be beautiful, beautiful fish, and so I allowed them to be. Then I went upstairs and called another friend of mine, and left a message on his phone telling him that my hands were beautiful, beautiful fish.
I got an intense feeling of ego death as I returned to the basement. I simply wasn't me anymore. In one of my most vivid visions, I realized that I was a nineteenth century English schoolgirl. Time slowed down noticeably, such that I would look at my watch after what had felt like nearly an hour, and find that only five or ten minutes had passed. I saw cloudy gray wisps on the walls that resolved into elaborate geometric patterns. At one point I became obsessed with remembering the name another friend (unrelated to this experience) had kept repeating while tripping on mushrooms about a year earlier. When I finally remembered it, I yelled it out triumphantly, frightening and annoying my compatriots.
I started coming down a bit before five in the morning, and staggered home a little after five. Even at this point I was still getting visuals as strong as a moderate acid trip, particularly light trails. The act of walking had become very complicated and difficult. By the time I got home the visuals had tapered off a bit, but when I got to sleep at around six AM I was still feeling far from normal.
The experience wasn't exactly good or bad, as a whole, but rather really, really strange. It is as of this time still the hardest I have ever tripped.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


| Research |
Research
Focus is on knowledge and information management over large scale. The research covers 3 main areas:
- How to capture information over large scale (the Web, the Social Web, distributed organisational archives, mobile devices, drones, sensors, etc.)
- How to use the captured information (e.g. for knowledge management, business intelligence, customer analysis, management of large scale events via social media, etc.)
- How to communicate the information (to final users, problem owners, etc.)
Research areas covered are knowledge and information management, Web technologies, human computer interaction, search technologies and natural language processing.
Prof Ciravegna’s research income since 2006 tops £8.5 million, of which about 15% directly from industry (e.g., Rolls-Royce plc, Football Whispers, JustGiving, etc.)
|
| Grants |
Current grants
- Early detection of Papilloedema and Diabetic Retinopathy, Innovate UK, 11/2018 to 09/2019, £58,611, as Co-PI
- SETA: An open, sustainable, ubiquitous data and service ecosystem for efficient, effective, safe, resilient mobility in metropolitan areas, EC H2020, 02/2016 to 01/2019, £970,000, as PI
Previous grants
- Crowdsourcing for Observations from Satellites, Euopean Space Agency France, 02/2015 to 03/2016, £85,360, as PI
- Sustained Process Excellence through Embedding of Analytics and Knowledge Management into Process Chains, Innovate UK, 10/2014 to 03/2016, £95,350, as Co-PI
- ReDites: Real Time, Detection, Tracking, Monitoring and Interpretation of Events in Social Media, EPSRC, 07/2013 to 07/2014, £51,398, as PI
- WeSenseIT: Citizen Observatories of Water, EC FP7, 10/2012 to 09/2016, £817,196, as PI
- Time to change! Using the transition from school to university to promote healthy lifestyle habits in young people, MRC, 04/2012 to 12/2014, £330,463, as Co-PI
- The BIG Energy Upgrade, European Regional Development Fund, 07/2010 to 03/2014, £865,090, as Co-PI
- Siloet, Rolls Royce PLC, 03/2010 to 12/2013, £140,000, as PI
- Samulet, Rolls Royce PLC, 11/2009 to 12/2013, £100,000, as PI
- TRIDS: Tracking Real-time Intelligence in Data Streams, Innovate UK, 07/2011 to 12/2011, £49,184, as PI
- SEALS: Semantic Evaluation At Large Scale, EC FP7, 06/2009 to 06/2012, £251,236, as PI
- SmartProducts: Proactive Knowledge for Smart Products, EC FP7, 02/2009 to 01/2012, £554,594, as PI
- Rolls Royce, Rolls Royce PLC, 10/2008 to 06/2009, £91,349, as PI
- weKnowIt: Emerging, Collective Intelligence for personal, organisational and social use, EUROPEAN COMMISSION - FP6/FP7, 04/2008 to 03/2011, £607,521, as PI
- Archaeotools: Data mining, facetted classification and E-archaeology, University of York, 09/2007 to 08/2009, £146,591, as PI
- MultiMATCH: Multilingual/Multimedia Access to Cultural Heritage, EC FP7, 05/2006 to 10/2008, £237,101, as Co-PI
- ARMADILLO: Information Mining in Distributive Research Datasets in the Arts and Humanities, AHRC (AHRC), 10/2005 to 10/2007, £35,856, as PI
- X-Media: Knowledge Sharing and Reuse Across Media, EC FP7, 03/2006 to 02/2010, £1,431,822, as PI
- IPAS: Integrated Products and Services, Department of Trade and Industry, 04/2005 to 09/2008, £222,225, as PI
- Collaboration with Environmental Agency, Environment Agency, 04/2005 to 05/2006, £20,000, as PI
- Abraxas: Automating Ontology Learning for the Semantic Web, EPSRC, 10/2004 to 01/2007, £164,614, as Co-PI
- Dot.Kom: Designing adaptive infOrmation exTraction from text for KnOwledge Management, EC FP6, 10/2002 to 03/2005, £447,455, as PI
|


Options
Set calendar preferences.
Calendar display
Change your calendar's view.
|
|
Priority events
Define event priorities and priority colors. Calendar will color days with the defined priority color for the highest event priority on that day.
Event types
|
|
|
|
|
|
Colors


| Name: | {{checklist.name}} |
| Description: | {{checklist.desc}} |
| Background Color: |
|
| Text Color: | |
| Date Created: | {{checklist.dateCreated | date:'short'}} |
| Created By: | {{getUserInfo(checklist.createdBy).name}} |
| Height: | {{checklist.height}} |
| Width: | {{checklist.width}} |


Wording woes: Secularism in CMP? Congress keen, NCP says think again
Sources say the Congress was keen on using "secularism" in the prospective Maharashtra alliance's common minimum programme. But one NCP leader stepped in and offered an alternative, with the Shiv Sena in mind.
HIGHLIGHTS
- Congress, NCP hold meet as govt formation talks continue
- NCP leader suggests avoiding use of word 'secularism' in CMP: Sources
- Congress's Jairam Ramesh, brought in to prepare draft, accepts: Sources
A Nationalist Congress Party (NCP) leader pre-empted a possible point of contention between the Congress and the Shiv Sena on Thursday, when he suggested replacing the word "secularism" with more indirect phrasing in a key document.
The three parties are working to form a government together in Maharashtra, which was placed under President's Rule this month.
Sources say the Congress was keen on using "secularism" in the prospective alliance's common minimum programme (CMP). But at a meeting of Congress and NCP leaders on Wednesday, one NCP leader suggested a wordier alternative: "...will adhere to Preamble of Indian Constitution".
The Preamble, of course, says India is a sovereign, socialist, secular and democratic republic.
Congress leader Jairam Ramesh (far right in the photo above, sitting with a laptop) accepted the suggestion, sources say. He was brought in by his party to help prepare the draft of the CMP.
LIVE BLOG | Get the latest updates from Maharashtra, right here.
Congress leaders left after the meeting. Shiv Sena leader Sanjay Raut was then given a briefing about the draft by NCP leaders. Shiv Sena president Uddhav Thackeray was also informed.
President's Rule was imposed in Maharashtra this month following a prolonged delay in government formation in the wake of an October state election that the Shiv Sena and the BJP won together.
The two former allies fell out bitterly, unable to agree that the chief minister's job should be shared using a rotation policy.
'DECISION ON MAHA GOVT IN 2 DAYS'
Shiv Sena leader Sanjay Raut on Thursday said a final decision on a new Maharashtra government would be taken in two days.
He told reporters there were no plans of any meeting between Shiv Sena chief Uddhav Thackeray and Congress president Sonia Gandhi this week.
ANI quoted Sanjay Raut as saying the process to form a government would be completed before December 1, and that the three parties concerned would hold a meeting in Mumbai.
Inputs from agencies


Use audio for best experience.
■ Start
YoRHa Hacking Menu
Total Stages Cleared:
0
■ Start
■ Restart
HACKING COMPLETE
GAME COMPLETE
■ Restart
GAME OVER
■ Restart


The profile screen in the default theme normally consists of a single main pane, with an additional menu to the left to lead you through the editing options for your own profile. Please note that, because an SMF forum may be customized extensively by its administrator(s), the features and user permissions described here are typical rather than definitive.
To edit your own profile, start by selecting Profile from the main menu or clicking your own username. You can also view (but not edit) other members' profiles by clicking on their names.
-
Information Normally Available to all Members
- Profile Info
-
Settings Normally Available to Profile Owners
- Modify Profile
- Actions
-
Settings Normally Restricted to Admins
- Profile Info
- Modify Profile
- Actions
Information Normally Available to all Members
Profile Info
- This Summary screen is not only there to tell you about others, but also the first screen that you see when editing your own profile.
- Members may choose to hide their email address and/or online status.
- The fields left empty here are not filled in by default, so you should edit your profile if you wish to display this information.
- You can send the profile owner a Personal Message by clicking the Current Status On/Offline Icon or following the link from Additional Information below.
- Show the last posts of this person links to a complete paginated listing of the member's posts.
- Show general statistics for this member links to a screen of statistics about the member's time online and posting activity.
Settings Normally Available to Profile Owners
While the Summary screen is the same as the one shown above and the Show Posts and Show Stats links are effectively duplicates, profile owners are also provided with the tools to customize their own profiles:
Modify Profile
- Account Related Settings enables you to make changes to your display name (your login or username can only be changed by an administrator), preferred language (if the forum administrators have installed alternative language packs), email and password settings.
- Forum Profile Information enables you to enter optional personal details such as gender, birthdate, location, website and instant messenger contact information. It's also where you go to enter your own personal text and signature and select an avatar (personal picture) from a list (if provided by the forum administrators) or link to one of your own on the web.
- Look and Layout Preferences enables you to select your preferred theme (forum skin), time zone and format and other personal choices for layout settings. Note that the currently selected option in the menu pane is highlighted in bold type:
- Notifications and Email enables you to select personal preferences for notifications (emails about new topics/replies) and lists any notifications that you have set up.
- Personal Message Options enables you to set up an ignore list (blacklist) for Personal Messages, to request notification of new PMs by email and to save copies of your outgoing PMs by default.
Actions
- Delete this account does exactly what it says! Yes, there's a confirmation screen, but it really does delete your own account, so be careful...
Settings Normally Restricted to Admins
As well as being able to view/edit any of the details above from other members' profiles, some further options are normally visible to (and executable by) admins only:
Profile Info
- Track User provides a list of IP numbers used by the member, other members who might be in the same IP range and error messages generated/experienced by the member.
- Track IP provides tools for tracking members, messages and errors from any specified IP range.
- Show Permissions lists the board permissions that have been granted to the member and who gave them.
Modify Profile
- Account Related Settings is basically the same screen as shown to profile owners, but with the additional option to assign members to member groups.
- Forum Profile Information is basically the same screen as shown to profile owners, but with the additional option to specify custom titles for members.
Actions
- Ban this user provides tools for banning users, configuring the level of the ban and maintaining a ban list noting the details of any bans in force.
- Delete this account is similar to the screen of the same name available to all members, but the confirmation question is different when it's not your own account that's about to be deleted.


[
applet
] - [
parameter
] - [
examples
] - [
generate code
]
Note:
This section requires JavaScript so if you have if off, this feature will not function.
Choose an example
1. Default version
2. Add Scrolling Text
3. Change text alignment to 'Left'
4. Change color of first line to white
5. Change color of last line to red
<sample code below>
CopyRight © 1999-2002
IonChron, Inc.
Privacy Policy


| aes_position {ggplot2} | R Documentation |
The following aesthetics can be used to specify the position of elements:
x
, y
, xmin
, xmax
, ymin
, ymax
, xend
, yend
.
x
and y
define the locations of points or of positions along a line
or path.
x
, y
and xend
, yend
define the starting and ending points of
segment and curve geometries.
xmin
, xmax
, ymin
and ymax
can be used to specify the position of
annotations and to represent rectangular areas.
Geoms that commonly use these aesthetics: geom_crossbar()
,
geom_curve()
, geom_errorbar()
, geom_line()
, geom_linerange()
,
geom_path()
, geom_point()
, geom_pointrange()
, geom_rect()
,
geom_segment()
See also annotate()
for placing annotations.
# Generate data: means and standard errors of means for prices # for each type of cut dmod <- lm(price ~ cut, data = diamonds) cut <- unique(diamonds$cut) cuts_df <- data.frame( cut, predict(dmod, data.frame(cut), se = TRUE)[c("fit", "se.fit")] ) ggplot(cuts_df) + aes( x = cut, y = fit, ymin = fit - se.fit, ymax = fit + se.fit, colour = cut ) + geom_pointrange() # Using annotate p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() p p + annotate( "rect", xmin = 2, xmax = 3.5, ymin = 2, ymax = 25, fill = "dark grey", alpha = .5 ) # Geom_segment examples p + geom_segment( aes(x = 2, y = 15, xend = 2, yend = 25), arrow = arrow(length = unit(0.5, "cm")) ) p + geom_segment( aes(x = 2, y = 15, xend = 3, yend = 15), arrow = arrow(length = unit(0.5, "cm")) ) p + geom_segment( aes(x = 5, y = 30, xend = 3.5, yend = 25), arrow = arrow(length = unit(0.5, "cm")) ) # You can also use geom_segment() to recreate plot(type = "h") # from base R: counts <- as.data.frame(table(x = rpois(100, 5))) counts$x <- as.numeric(as.character(counts$x)) with(counts, plot(x, Freq, type = "h", lwd = 10)) ggplot(counts, aes(x = x, y = Freq)) + geom_segment(aes(yend = 0, xend = x), size = 10)


GIRL
Pharrell Williams
March 3, 2014
Girl is the second studio album by American recording artist and record producer Pharrell Williams. The album was released on March 3, 2014, through Williams' label i Am Other and Columbia Records.
{{item.no}}
{{item.name}}
{{item.duration}}


Digital Deck is a mobile technology tool for collecting and integrating data that supports fisheries harvest accountability, traceability, collaborative research, spatial planning, and monitoring. The tool was designed to meet the expressed needs of community fishing organizations across the United States working to address common challenges. Digital Deck provides real-time access to catch information so users can more effectively participate in fisheries and business management.
Tap Here to Install the application (iphone)


pollen IgE protein allergens patients ./. Lantana using allergen camara bands histamine major spots {border-style identified kDa peptide novo proteins px;} search #ffffff;} analysis gel reactive sequencing specific spot release showed (Fig. significant individual peptides LC/() mass sera TLP acid allergenic allergic extract total ELISA Identification MASCOT buffer correlation grains homology patient reactivity species study used India blot database described different patients’ respiratory Immunol assay control electrophoresis hospital identify performed sensitive sequence allergy health molecular observed plant positive px; region {font-family CAA. CN, Group Res SOB Saha compared containing data diseases followed font-size group identification isoforms linear presence reported similar weight years °C. (GE ATP Actin Allergy Clin Fig. India. Mass USA) allergenicity collected derived double; hospitalization immunoblot immunoproteomic incubated min negative previously proteome proteomics regression resolved showing similarity single terms thaumatin-like CP, Flex GP, Histamine Med Mol Nicotiana Ole PS, Pandey Sci Singh Total according allergens. approach asthma atopic beta border-color border-width causing cells characterization city clinical components considered corresponding diluted generated having high highly impact isoelectric membrane no: pooled range revealed sequenced serum solid; subunit suburban supernatant survey. unique {font-style {font-weight < <. (Sigma) (pH .e− AC, AI, AR, Agric Allerg Bhattacharya Clinical Food Gupta III MS-BLAST Patients Phosphate Protein Proteome SDS–PAGE Sircar Solanum a). admission antibody approach. approximately article band based blood bold c). cell cluster comparison courier; cross-reactivity crude difference elevated em; employing expression following immunotherapy laser level like matrix minor mixed pellet present pt;} recognized respectively. responsible sensitization separated sera, sera. spectra spectrometric spectrometry statistical structure values various wheal


Showing {{filteredEvents.length}} of {{conferences.length}} events
Loading events...
No events found. Create a new event or request access to an existing event to get started!
{{event.completedRegistrationCount}} Registered


Bookmarks
Favourites
- FB
- YT
- Twitter
- AWS
- Azure
- DevOps
- App Center
- App Store Connect
- Google Play
- MAGIQ Corp. Docs
- pi
- Coincap
- myGov
- myRMIT
- Canvas
- Allocate+
- MacRumors
- Timer
- ING
- BS
- PBay
MAGIQ
- Async and Await
- net.http api
- XForms deep
- LinkedInMagiq
- XAML
- Documents Portal
- MagiqDocsAPIs
- BUY CORD
- XamarinAPI
- TFS MAC
- rect
- CGRectDivide
- Take a Picture and Save Using Camera App - Xamarin
- Selecting a Gallery Image - Xamarin
- PLUGIN I should have used@!
- Connectivity Plugin for Xamarin Cross-platform
- Simplifying Events with Commanding | Xamarin Blog
- Picking a Photo from the Picture Library DEPENDENCY
- JS reading
- Promise POLYFILL
- ExtJS Tutorial Pages
- Ext JS Course Pages
- Data Package | Ext JS 6.0.2
- MAKE MAGiq folder
- Swagger Cloud Dev
- ExtJS Layout Examples
- cust0Docs
- localProd
- HPE MicroServer G10 GEN10 AMD Opteron X3216 16GB 4-Bay LFF NHP 870208-371 for $815.00 at PCLAN online store
- EDITOR Conf
Other
- MC Server
- SomaFM Player
- Habitica
- KAT
- Scrambler
- RC
- CPL
- TV Guide
- PS3 Firmwire
- Nandos - Peri Uni
- SpeedCube
- Algorithms
- wallhaven
- VS4MAC
- Sencha Offline
- zucc.drink()
- READ: async sencha
- DeveloperApple
- step 6
- LOGOS
- Visual Studio 2019 for Mac – Release Notes | Microsoft Docs
- DRAG DROP UPLOAD
-<PHONE_NUMBER>821.pdf
- BACKLOG
- Xamarin.iOS Universal Links - Xamarin Help
- AWSSDK.Extensions.NETCore.Setup <IP_ADDRESS>
- 62 Eton Street, Preston VIC 3072 - Townhouse For Rent - $450 | Domain
- Track your items - Australia Post
Bookmarks Menu
Reading List
- Share authentication cookies among ASP.NET apps
- What is the difference between ToArray and ToList? – Oleg Karasik's blog
- Async/Await - Best Practices in Asynchronous Programming
- Xamarin.Forms - using Custom Renderer to customize the back button icon and text in Navigation Bar
- Visual Studio 2019 for Mac version 8.1 is now available (and a Preview for 8.2) | The Visual Studio Blog
- My Terminal Setup: iTerm2 + Zsh 🔥 - DEV Community 👩💻👨💻
- 64-bit version of your Xamarin Native or Xamarin Forms Android App
- NuGet Gallery | dotnet-try 1.0.19266.1
- https://streamlineicons.com/ux/
- Create your first pipeline - Azure Pipelines | Microsoft Docs
- Generating and Compiling Source Code from a CodeDOM Graph | Microsoft Docs
- Using the CodeDOM | Microsoft Docs
- Code Contracts
- Creating a Java application to access a Derby database
- Let us improve that Xamarin Forms startup experience - Mark's Blog
- Introduction to Continuous Integration with Xamarin - Xamarin | Microsoft Docs
- Language Integrated Query (LINQ)
- Query Syntax and Method Syntax in LINQ (C#)
- infoRouter Demo Portal
- MAX PC EXPERTS
- Bitcoin Data Science (Pt. 1): HODL Waves
- Kaleidoscope (software)
- Binding Path - Xamarin | Microsoft Docs
- Jack Della | World Cube Association
- SECRET XTIANS CHORDS by Unknown Mortal Orchestra @ Ultimate-Guitar.Com
- Extreme Wealth And Casual Cruelty
- Arizer Extreme Q
- BTC Markets - Buy Bitcoins | Bitcoin Exchange
- Study Organiser
- Bethany Wragg
- Sign in - Google Accounts
- The brain on LSD revealed: first scans show how the drug affects the brain
MONDAY
- miserlou - Google Search
- Audio Authority 9A60 VGA to Comonent Video Converter
- New manegermen promotion massage in 517 Camberwell Rd Camberwell
- COOL hoodies
- Barefoot Steps - Barefoot Investor
Food
- Steak With Green Peppercorn Sauce Recipe - Taste.com.au
- Flask Web Development with Python Tutorial - 6 - Mapping Multiple URLs - YouTube
- Diet Calculator
- calorie calc
- Body Fat Calculator
RMIT
- 2017 important dates for higher education students - RMIT University
- Bret Victor The Future of Programming - YouTube
- From RMIT to Google: Hugh Williams on careers in computer science - RMIT University
- Learn CSS in 12 Minutes - YouTube
- RMIT Programming Club - RMIT University
- CSIT
- WP Aido
- timetabling
**TODO*&^%$#
- STS
- flight to mexico - Google Search
- Certified Approved USBsockets.com.au | Charges Any Device
- TrippyStore.com - Grateful Dead - Psychedelic Bear - Tapestry
- All Tapestries - Page 1
- Sam Harris On Progressivism, Torture, Religion & Foreign Policy - YouTube
- Punished Shitposting with #JonTron - YouTube
- Eclipses visible in Melbourne, Victoria, Australia
- Dash 4: Now Available! - Kapeli Blog
- Personal safety intervention orders | Victoria Legal Aid
- Learn CSS in 12 Minutes - YouTube
- Register for Anonymous VPN Services | PIA Services
- MAC ON PC
- How to Keep Good Posture When In Front of a Computer | Ririan Project
- Leader Community ePaper
- OpenVPN configuration for Raspberry PI - Knowledgebase - ibVPN
- How to set up a VPN (Private Internet Access) in Raspberry Pi | ./notes
- How to run a command automatically at system boot in Raspberry Pi (Linux) | ./notes
- How to Find an Internship (with Pictures) - wikiHow
- r/KGATLW Tabs - Google Sheets
Guitar
- Beginners Course
- Barefoot Steps - Barefoot Investor
Bing
WEDNESDAY
- Yoga Timetable
- Joel Chan


Time saved, this video: 0s
Time saved, all time: 0s
The video speeds up when the volume is in the red area. Click on the meter below to set the silence threshold.
Samples of silence needed before speeding up.
The speed the non-silent video will be played at.
The speed the silent video will be played at.


languages support
- Kotlin support.
file watcher
- filewatcher: Listen for filesystem changes.
monitor
- crash: CRaSH remote shell integration.
- metrics: application metrics from the excellent metrics library.
- micrometer: Micrometer vendor-neutral application metrics facade.
utils
-
banner: prints out ascii char art at startup.
-
commons-email: Email supports via Apache Commons Email.
-
hibernate validator: bean validation.
-
scanner: scan the application class-path and register
routes
,modules
,services
andapplications
.
web services
sitemap
- sitemap: automatically generates
sitemap.xml
file.
job scheduling
- quartz: advanced job scheduling via {{quartz}}.
full text search
- elastic search: enterprise full text search via Elastic Search.


This is my entry for the @blocktrades contest. Thanks @anomadsoul and thanks @blocktrades for the sponsorship.
I’ve been on steemit almost 10 months. It becomes my daily routine to publish posts mostly everyday since I joined. I’m not sure the exact number of posts I’ve been published but it’s more than 3 times a week even the STEEM price is going to the ground.
I like to engage new people on steemit. From the stats @dailychina published everyday, I’m always one of the top 20 most active CN members daily.
I’m not only part of multiple communities and also creator of some communities.
@team-cn: This is a CN community for newbies. Created by @honoru, @softmetal and myself back in April 2018. This community introduces newbies to the CN community and also provides some guidances to them. It’s currently most active community in #CN and have more than 50 active members even the steem price is so low. For more detail about this community, feel free to check this post: Introduction of @team-cn.
@cn-curation: This is a CN curation project created by founders of @team-cn(@ericet, @honoru and @softmetal) and @htliao. The purpose of this project is to select 2 most undervalued posts from #cn, summarize it and recommand it to CN members. Each time an article is selected, @team-cn will sponsor the Steem Basic Income (SBI) membership for the author. Since SBI provides life-time upvotes, it encourages the author to keep posting high quality articles.
@cn-activity: We are trying hard for our members to stay engaged with others. So @honoru and I decided to create a new project which aims to select some easy contests for members to join. It’s been created for 3 weeks and I do see a lot of engagements!
I cannot say my post is top quality but I would say it’s made with effort, time, and dedication. For instance, this post Steemworld.org 回购SBD功能
This post gives you step-by-step guide to explain you how we can convert SBD to STEEM via steemworld.org “Convert SBD” function. This is not the same as the internal market.
It also explains why it’s good to use it (arbitrary opportunity and reduce debt ratio) and what’s the risk.
I spent time to read the steem whitepaper and did some researches to find an alternative way for regular steemians to convert SBD themselves. It’s made with effort, time, and dedication.
I have a reputation of 64 and I have more than 4000SP now. Because I have faith in STEEM, so I invest some money every month and powering up.
I’m a very good candidate of this contest. Please thoughtful considering my entry even most of my posts are written in Chinese.
原帖：CONTEST: The Blocktrades Scholarship | Win support for a full month
@blocktrades（50w SP） 准备挑选8名steemit用户，每名每周会得到2次来自blocktrades的点赞，并且持续1个月。（12月份开始）
参加这个活动需要有以下几个要求：
- 过去2个月（10月份和11月份）至少每周发帖3次。
- 过去2个月（10月份和11月份）至少有60个留言。
- 你是某个社区的活跃份子。
- 你的文章很优秀，并且花了很多时间精力来写。
- 声望必须高于50（不能依靠买赞达到）
如果符合这些要求怎么参加呢？
- 从11月15号到11月23号发的帖子里面挑选一篇参与这次的活动。
- 像我这篇帖子一样，发篇帖子解释为什么选你。
- 帖子里必须有你挑选的帖子。这篇帖子将作为获选的最主要因素。
- 转发原帖
- 使用标签 #blocktradescontest
- 文章标题：The blocktrades contest | 你挑选的帖子的标题
什么时候截止：
11月28日 23:59 PST
Posted from my blog with SteemPress : http://ericet.vornix.blog/2018/11/24/the-blocktrades-contest-steemworld-org-%e5%9b%9e%e8%b4%adsbd%e5%8a%9f%e8%83%bd/
This page is synchronized from the post: The blocktrades contest | Steemworld.org 回购SBD功能


Select the time interval to see information about airplanes that departure from Zurique Airport since April 01
icao24
Departure time
Departure Airport
Arrival time
Arrival Airport
Call Sign


{% extends "base.html" %} {% block title %}
Medieval catalogues > SECULAR INSTITUTIONS: Hospitals, Towns, and the Professions > London, Chancery of Duchy of Lancaster > Bequest by John Scarle, 22 April 1403
{% endif %}1 identified entry found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


--- layout: post authors: ["Greg Wilson"] title: What Does Victory Look Like? date: 2013-05-26 time: "10:00:00" favorite: true tags: ["Community"] ---
A lot of changes are happening to science as I write this. Crowdsourcing, open reviews, citeable data, new ways to measure contributions, automatically tracking the provenance of every calculation—each has emerged from its chrysalis and is just waiting for its wings to dry so that it can take flight.
Our job is to give scientists the skills they need to nurture these ideas. For the last post in this series, I'd therefore like to talk about what victory will look like—i.e., how scientists' lives will be different if and when the things we teach become as routine as doing statistics. My vision is simple:
Scientists won't submit, publish, and download papers. They will fork and merge projects.
The single most important thing we teach scientists is version control. We tell them it's for record-keeping, but it's also the underpinning for a style of work that open source developers think of as normal, and the rest of the world finds extraordinary. Do you like my code? Do you think you can improve on it? Great! Fork my repository, build your stuff on top of mine, and then give me your improvements to merge into the master copy so that the next person has an even better starting point. Firefox and Wikipedia are two proofs among many that this can scale to thousands upon thousands of contributors. There's no reason it couldn't be the "new normal" for science once version control and a few other things are routine parts of scientific life.
What exactly are those "other things"? The first is task automation: everything someone might have to re-do must be captured in a re-runnable way. This can be a shell script, a Makefile, a snippet of Python or R, or something as yet undevised. What matters is that without this, people have to invest hours or weeks of forensic investigation before they can use someone else's work, which in practice means they won't.
The second thing is comprehensive testing. This isn't just a special case of task automation, although tests that aren't automated might as well not exist as far as people forking a piece of work are concerned. It isn't primarily about ensuring that software is doing what it's supposed to, either. Instead, as we teach people in our bootcamps, the primary purpose of testing is to define what the author thinks "correct" actually means. If you tell me that the eigenvalues of a matrix are close to zero, I don't know what you actually mean, any more than I know what you mean if you say that the heights and weights of a sample population are strongly correlated. If your tests check that all the eigenvalues are less than 0.0001, on the other hand, we now have something concrete to agree or disagree about.
And yes, it's often hard to test scientific code, and it's also often not even appropriate—just think of the twenty lines of R that turn a bunch of CSV files into a line graph. But that brings us to the third of our "other things", which includes things like structured program design and data management. For lack of a better name, I'll call it computational tidiness; as with task automation, it's what allows other people to pick up a piece of work and build on it without superhuman effort. It's also what allows people to review work: if they can't find things easily, or make sense of them, they won't bother.
We teach the Unix shell, Python (or R), Git, xUnit testing libraries, SQL, regular expressions, and sundry other things because big ideas aren't meaningful in the abstract. Along the way we hope to convey a deeper understanding of seven big ideas that I believe can only come from getting your hands dirty:
If, ten years from now, the average scientist understands these as well as she understands significance, correlation coefficients, and p-values, I for one will think that we've won.


---
layout: new
title: Health Checks—Your First Line of Defense
excerpt: Monitor Your AWS Infrastructure & Services with Checks That Auto Scale with You
cover: https://s3-us-west-1.amazonaws.com/opsee-public-images/twitter-try-dev.jpg
---
Health Checks: Your First Line of Defense
Monitor Your AWS Infrastructure & Services with Checks That Auto Scale with You
Opsee discovers your AWS infrastructure and services, instantly reacts to changes in your environment, and creates health checks for you.


As humans, we all share two common goals: relationships and the emotional need to feel genuinely loved. When the latter is achieved, the quality of the former significantly increases. Therefore, in observance of Valentine’s Day (or Single Awareness Day), I thought it would be appropriate to discuss about relationships – how to seek and maintain a healthy relationship.
Before we begin, if you have not read The Five Love Languages: The Secret to Love That Lasts by Dr. Gary Chapman, then you need to check out his amazing work. With over thirty-five years of his personal life experiences and marriage counseling, Dr. Chapman demonstrates simple and practical ways for couples to effectively communicate love.
The object of love is not getting something you want but doing something for the well-being of the one you love.
Dr. Chapman argues that in order to maintain a full love tank, we need to learn how to speak our lover’s primary love language even if it is something we are not accustomed to while growing up.
I will briefly summarize each of the five love languages from his Love Language series: words of affirmation, quality time, receiving gifts, acts of service, and physical touch. Then I will offer my own personal advice for those who are currently in a committed relationship or seeking a significant other to enjoy life with.
The Five Love Languages
Words of Affirmation – If your lover’s primary love language is words of affirmation, you need to use encouraging, kind, and humble words when speaking with her in order to affirm your love. Let her know regularly how much you appreciate her. This does not mean that you tell her “I am grateful for you” every day – it is not as meaningful. Instead, tell her something you specifically appreciate about her each time. Additionally, set a goal to give her a sweet compliment each week and be sure to keep a record of the compliments, so you will not duplicate them. Brownie points if you compliment her in the presence of her parents or friends, letting everyone know how proud you are of her. Look for her strengths and accomplishments and tell her how much you appreciate them. Finally, a hand-written love letter never goes out of style. Always keep in mind: Words are important!
Quality Time – If your lover’s primary love language is quality time, plan an activity for both of you to enjoy together and make sure to give him your full attention. The central aspect of quality time is togetherness, not proximity. As such, you are genuinely spending focused time with each other. When he shares his thoughts, feelings, experiences, and desires, give him your undivided attention while he is talking — maintain eye contact and do not do something else at the same time. Additionally, observe his body language and ask for clarification to make sure you completely comprehend his thoughts and feelings. Finally, refrain from interrupting his ideas, jumping to conclusions, stating your own opinions, dismissing his feelings, or hurling accusations. Understand him.
Receiving Gifts – If your lover’s primary love language is receiving gifts, it is important to note that the gift itself is a visual symbol of love. A gift is a tangible object she can hold in her hand, and it lets her know that you must be thinking of her to give her a gift. A gift does not have to cost money; a handmade original can be as valuable and meaningful. Carefully pay attention to things that she likes or expresses excitement over. You can also ask her family and friends what she might like as a gift. Keep a record of the gift ideas, and you will get quite a list. Finally, you can also offer the gift of your presence at any event she enjoys and make every effort to be there with her. It is also important to note that physical presence in the time of crisis is the most powerful gift you can give her.
Acts of Service – If your lover’s primary love language is acts of service, keep in mind that actions speak louder than words. As such, you can express your love by fulfilling all of the requests she has made of you. It is important to note that acts of service are to be expressions of love, not slave driving. If her requests for acts of service come across as demands, nags, or put-downs, let her know and share with her the revised wording that would be less offensive to you. It is also important to note that acts of service must be freely and selflessly given. Do not keep tabs of all the things you have done for her and expect her to owe you anything in return. Periodically ask her what you could do to make her day easier or occasionally do things for her without being asked.
 It is important to note that not all touches are equally satisfying. Since he knows best what he perceives as a loving touch, he is your best instructor, of course. As such, communicate with him and be sensitive to his needs and desires since he is the one you are seeking to love.
Discover Your Love Language
For a more in-depth discussion of the five primary love languages, kindly check out Dr. Chapman’s Love Language series. Discovering and learning your lover’s primary love language is essential if you are to keep his or her emotional love tank full.
If we are to develop an intimate relationship, we need to know each other’s desires. If we wish to love each other, we need to know what the other person wants.
Some may know their primary love languages instantaneously. If you are unsure, you can click on this LINK to discover your primary love language. Your love language may or may not fluctuate throughout your lifetime, so always make sure to communicate to your lover what fills your love tank.
Another way you can discover your primary love language is through your gestures towards your lover. Perhaps, what you are doing for your lover or even to other people around you is what you wish to receive in return. So what is your primary love language? What makes your heart sing?
Treasure Your Relationship
By learning to speak your lover’s primary love language, you will be able to become an effective communicator of love, and thus strengthen your foundation of emotional intimacy. This does not mean that you can completely neglect the other love languages, as they are all still essential in maintaining a healthy relationship.
We all have a burning desire for connectivity and belonging. When we feel genuinely loved, respected, and appreciated, we naturally seek to reciprocate. A vital element of a positive and healthy relationship is good communication, and one of the most crucial communication skills is active listening.
My Final Message
If you are struggling to find the one, do not give up hope.  Know your worth and never settle for less because you are precious and you deserve to be loved and respected and appreciated.
Do not feel pressured to chase the timeline set by others; they probably have their own timeline. By rushing to be in a committed relationship just because the majority of your peers are in relationships, you are clouding your judgment of good and worthy potential partner.
Rather, take a step back and go at your own pace – go on many dates to discover whom you share a burning chemistry with. Be with someone who will inspire you to be a better version of yourself and wholeheartedly support your dreams and goals.
At the heart of mankind’s existence is the desire to be intimate and to be loved by another.
On the other hand, if you are in a committed relationship, it is all bliss and butterflies for about a year or two.  It may simply be the time to strengthen the foundation of your relationship and work through problems and grow together as a couple. Love requires effective communication, sacrifice, time, and effort.
However, if the relationship is toxic and negatively impact you emotionally, physically, or psychologically, please leave. You deserve life’s greatest happiness, and it can only be found in good relationships.
All in all, the key to a long-lasting, healthy relationship is to continuously communicate, be selfless, and express our love in our partner’s primary love language.
P.S. I have a PDF copy of one of Dr. Chapman’s Love Language series, and I would be more than happy to share it with you.
I hope you enjoyed my blog.


Image
Welcome to KbDoc ! Documentation and examples for typography, including global settings, headings, body text, lists, and more.
Image with Caption
Images in Bootstrap are made responsive with .img-fluid
. max-width: 100%;
and height: auto;
are applied to the image so that it scales with the parent element.

This is the image caption text.

Image Magnify
We designed KbDoc for the readers, optimizing not for page views or engagement — but reading. And it turns out that context is a vital part of learning.

Images Shapes
Easily create images in different shapes with adding one class to the  tag.

<img src="..."