The key to establishing good communication and thus achieving something is the ability to ask good questions. There are two basic types of questions that you could ask: open-ended and closed ended questions. While closed-ended questions are the “bad” ones in this context we’ll concentrate on open-ended ones.
The point of an open-ended question is to make a person think before answering. To do this start with eight words:
- What
- Which
- How
- Who
- When
- Where
- Why
- If
Look at your child! What questions do they ask?
Open-ended questions can be however as harmful as closed-ended, so you need to use a lot of “softeners”:
“Just out of curiosity…”
“By the way…”
“Just offhand…”
“In your view…”
“In your opinion…”
“Normally…”
“Approximately…”
loading...
loading...
that software developers’ skills improve over time!
A study from North Carolina State University showed that the knowledge and skills of programmers improve over time and that older programmers know as much (or more) than their younger peers when it comes to recent software platforms.
I guess they make every kind of research these days.
loading...
loading...
Many people work in teams these days. We hear it all the time that everything happens in teams. You will never find work if you admit to HR that you don’t like teamwork.
But is it really such a good thing to work in groups?
A recent research study published 11th of April 2013 on Science Daily says that Individual Donation Amounts Drop When Givers Are in Groups. This research has numerous applications as there is some physiological mechanism behind such behavior.
Numerous studies have also provided evidence that people are less likely to help when in groups, a phenomenon known as the “bystander effect“. In December of 2012 the New York Post published images of a man about to be killed by a train while several bystanders did little to help him.
In general, “bystander effect” is believed to happen because as the number of bystanders increases, any given bystander is less likely to notice the situation, interpret the incident as a problem, and less likely to assume responsibility for taking action.[Meyers, David G. (2010). Social Psychology (10th Ed). New York: McGraw- Hill.]
So, how can it be related to work in groups?
The first step required for a bystander to intervene is that they notice the situation at all. When you are working in a group there are some rules you need to follow. These rules are f.ex. don’t stare at people, help people when asked, talk to people, eat lunch with them, ask for help instead of trying to figure out every little problem by yourself and so on. So, how does it help you to concentrate and be innovative? If there is one complex task that a team needs to do, it usually gets divided in small parts so that the whole team can work together. How likely is it that one of the team members notices a bigger problem when he/she is not involved in another critical part of the system?
Once a situation has been noticed, in order for a bystander to intervene they must interpret the incident as an emergency. Regardless of what kind of team you are working at there may be all equivalently skillful people, or more often, some people are experts in some fields others in other fields. As the situation usually needs to be looked from different angles to be interpreted otherwise how likely is it to happen in a team of partially skillful people? Recall f.ex. how penicillin was discovered by Fleming. Would it be possible if he was working in a team?
Diffusion of responsibility is a sociopsychological phenomenon whereby a person is less likely to take responsibility for action or inaction when others are present. This is especially an issue in Agile teamwork techniques where “everybody are responsible for everything” in theory and no one is responsible for anything in practice.
Words are words, but do you know any successful innovative firms where people work entirely in teams?
loading...
loading...
void setActive( int index )
{
int i=0;
BOOST_FOREACH( Item & iibi, ItemsList)
{
if ( ! iibi.count )
{
continue;
}
if ( index == i )
{
iibi->setAlpha(1.0f);
}
else
{
iibi->setAlpha(0.5f);
}
++i;
}
}
loading...
loading...
There are two possible ways to create a blog, one simple and one more difficult.
1) Simple: Go to wordpress.com and create an account there. Happy blogging!
2) Difficult: Go to wordpress.org and download the WordPress package and install it on your server of choice. Happy blogging!
loading...
loading...
Using LocalDate with Blaze rule engine can be not so obvious sometimes, so here’s an example of a rule that calculates a period interval of 5 months:
if(true)
then {
fromDate is some LocalDate initially LocalDate.newInstance(2010,9,1);
toDate is some LocalDate;
toDate = fromDate.plusMonth(5).dayOfMonth().withMaximumValue();
}
loading...
loading...
We’ve earlier written a post about Recipe for a high-quality “equals” method. This is harder to get right in the case of inheritance.

As it says here the contract of the equals method in Object specifies that equals must implement an equivalence relation on non-null objects:
- It is reflexive: for any non-null value x, the expression x.equals(x) should return true.
- It is symmetric: for any non-null values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
- It is transitive: for any non-null values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
- It is consistent: for any non-null values x and y, multiple invocations of x.equals(y) should consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
- For any non-null value x, x.equals(null) should return false.
Consider two classes: A and B that extends class A.
public class A {
}
public class B extends A {
}
Now, if we have two objects of type B with different values from class A, then these two objects can not be equal. That means that we cannot not to take into consideration equals method from class A when writing an equals method for class B:
public class A {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
@Override
public boolean equals(Object obj) {
if(obj == null) {
return false;
}
if(!(obj instanceof A)) {
return false;
}
A other = (A)obj;
return Objects.equals(this.id, other.id);
}
}
public class B extends A {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), id);
}
@Override
public boolean equals(Object obj) {
if(obj == null) {
return false;
}
if(!(obj instanceof B)) {
return false;
}
B other = (B)obj;
return super.equals(obj)
&& Objects.equals(this.id, other.id);
}
}
We added super.hashCode() in hashCode method and super.equals(obj) in equals in order to implement the right equality check.
A good thing in this design will be to make class A abstract then there won’t be logic problems when comparing A and B like this:
A.equals(B)
B.equals(A)
loading...
loading...
There are many ways to implement a physics based explosion. With Bullet Physics there is such thing as btPairCachingGhostObject. Another option is to use contactTest queries. Here’s a discussion thread about these methods.
In our game we’ve used much simpler method: inserting a physics sphere with double radius and then removing it from the scene after 100 milliseconds. This gives necessary impulse to all overlapping our sphere objects without any additional calculations.
loading...
loading...
We’ve recently had major performance issues while testing the game. Debug information has shown that it was the graphics that was taking from 60 and up to 300 milliseconds per second to redraw all nodes. One of the issues that was discovered in analysis is that terrain ISceneNode had automatic culling EAC_OFF:
terrainNode->setAutomaticCulling( EAC_OFF );
It means that all triangles were rendered even if they were not visible. Several thousands triangles.
To fix it we remove the line code above which leaves us with default culling method, in Irrlicht it’s EAC_BOX. Enabling automatic culling introduces a new bug. Terrain around the player is not visible anymore:
Recall, that EAC_BOX culling mode culls objects outside the frustum bounding box. The frustum box is as deep as the view frustum (distance from the far to the near plane), and is as wide as the view frustum (the height and width of the view frustum at the far plane).
So, if you are experiencing such strange behavior, then the first thing you need to think about is: Are all the bounding boxes correct? Call the following function on scene nodes to check bounding boxes:
setDebugDataVisible(irr::scene::EDS_BBOX)
In our case we had a triangle mesh that was created as follows:
SMesh *mesh = new SMesh(); builder.makeIrrMesh(*mesh);
Default bounding boxes looked like this:
Recalculation of bounding boxes needs to take place after the mesh is created (and remember to do it on mesh, not mesh buffer!)
SMesh *mesh = new SMesh(); builder.makeIrrMesh(*mesh); mesh->recalculateBoundingBox();
The result is as follows:
loading...
loading...
Current project
Recent Comments
Blog Archives
Tags
asp.net aurora bash beta bombardment boomer boost brann brannbil bregnetunet bug bullet physics bullshit c++ cairo certification code communication compile container Dev Fallout: New Vegas file format game Game review gentoo glsl graphics howto Java linux mvc opengl performance predicate programming research shader std terrain test texture tip Visual Studio






