text:
Program Introspection
- Shader
- Objects
- Compilation
- Introspection
- The core language
- Variable types
- Built-in variables
- Interface blocks
- Shader stages:
- Other shading languages
Program Introspection is a mechanism for taking a program object and querying information about it, so as to be able to interface and interact with it. For example, if there is a uniform, you may need to query its location so that you can set its value.
The introspection APIs will often make a single "variable" definition in GLSL appear as though it were multiple variables. This is done for variables that are not basic types or arrays of basic types (note that in GLSL, "basic types" include vector and matrix types).
For example, consider the following:
struct A_Struct
vec4 first;
vec2 second;
vec2 third[3];
uniform A_Struct unif;
The struct itself cannot be queried via the introspection API; the struct is just a prototype, an aggregate type definition. The variable unif is a uniform, of type `A_Struct`.
However, if you try to get the uniform location, or any other property, of unif, you will be unable to do so. As far as the introspection API is concerned, there is no unif. Because the introspection API is built around basic types, struct aggregates of basic type are not directly visible.
Instead, each sub-element of the struct that is a basic type is visible. So there is a uniform named unif.first. There is a uniform named unif.second. And so forth.
This rule is applied recursively. Consider the following:
struct Inner
vec2 inOne;
vec4 inTwo;
struct Outer
vec4 first;
Inner data;
vec2 second;
vec2 third[3];
uniform Outer unif;
The uniforms generated from this are as follows: unif.first, unif.data.inOne, unif.data.inTwo, etc. There is no unif.data variable as far as the introspection API is concerned.
Arrays work differently, depending on whether they are arrays of basic types or arrays of aggregates (structs or arrays are aggregates. Arrays of arrays requires either GL 4.3 or the ARB_arrays_of_arrays extension).
An array of basic type represents a single resource:
struct Aggregate
vec2 main;
vec2 sec[3];
uniform vec3 anArray[7];
uniform Aggregate unif;
anArray[0] is a single resource of type vec3, which has an array size of 7. There is no resource named anArray[3]; just for index 0. Similarly, unif.sec[0] is a single resource of type vec2, which has an array size of 3.
Note that the array index can be removed in these cases. Thus the query-by-name APIs will accept either anArray or anArray[0]. But if you query the name, you will always get the "[0]" version.
Arrays of aggregates (structs or, if OpenGL 4.3 or ARB_arrays_of_arrays is available other arrays) are more complicated. They work like structs, such that each individual array element is taken as a separate resource with a distinct name. Consider:
struct Aggregate
vec2 main;
vec2 sec[3];
uniform Aggregate unifArray[5];
There is no uniform named unifArray. However, there is a uniform named unifArray[0].main. There is one named unifArray[2].sec[0], which is an array of basic types. There are five of each of these. As before, the bottom-level array can be clipped off: unifArray[2].sec is equivalent to unifArray[2].sec[0].
These rules are applied recursively up the hierarchy.
Interface block arrays
Interface Blocks can be arrayed. Arrays of interface blocks require the specification of an instance name:
uniform BlockName
} instanceName[3];
In the fully linked program, this code will create three separate interface blocks. They are named based on the block name, so the three blocks will be named BlockName[0], BlockName[1], and BlockName[2].
Interface block member naming
Interface blocks can have effects on the names of their members. If the interface block has an instance name, then the member name will be prefixed by the block name (not the instance name).
uniform BlockName
int mem;
uniform BlockName2
int mem;
} instanceName2;
The above code will create two uniforms, each of which is in its own separate block. The name of the first is "mem", in both GLSL and OpenGL's introspection API. The name of the second is "BlockName2.mem" in the introspection API, but the GLSL shader will call it "instanceName2.mem".
The reason for this is that blocks can be shared between shader stages. They are connected by their block name; it is perfectly valid to link two shaders that use blocks with the same block name (and member definitions), but with different instance names. This is commonly used when passing data between the various Vertex Processing shader stages. So while within a particular shader stage only one instance name applies, at the program level multiple instance names could apply to the same block. Therefore the block name, the name that is constant across shader stages, is used instead.
Note that this naming applies to all interface block types. So variables declared in input and output blocks are also decorated as such.
Interface blocks declared as arrays work in the exact same way. This means:
uniform BlockName3
int mem;
} instanceName3[4];
This definition will create a single member named "BlockName3.min". The reason this array of four blocks only counts as having one variable is because each of the four blocks uses the same internal definition. There is nothing that could be queried from BlockName3[1] that could not be queried from BlockName3[0].
Shader storage blocks
|Core in version
|Core since version
|Core ARB extension
The array rules work slightly differently for shader storage block members. They have the concept of a "top-level array".
When looking at the direct members of a storage block, the first array index on such a variable is considered a "top-level array." This array is treated specially, and it has a special size field (separate from the array size) in the query API. Top-level arrays are considered a single resource, so you do not access the individual elements of a top-level array with an array index.
Consider this:
buffer SSBlock
vec2 first[10];
vec3 double_dim[2][5];
vec4 triple_dim[5][4][8];
first[0] is a top-level array, with a type of vec2 and a top-level array size of 10. There is no resource named SSBlock.first[3].
double_dim[0][0] is a top-level array, with a top-level array size of 2. But it also has a regular array size of size 5, with a type of vec3. So there is only one resource; there is no double_dim[0][3] and so forth, just the base resource.
triple_dim[0][0][0] is a top-level array, with a top-level array size of 5. It also has a regular array size of 8. However, there is another resource named triple_dim[0][1][0]. And two more at that. All four of those resources are top-level arrays.
In total, the above shader storage block definition has 6 member resources, 4 of which are derived from triple_dim.
With SS-Blocks, the regular array index comes from the last array index, while the top-level index comes from the first. And the top-level takes priority, so if there is only one array index, it is the top-level array index.
Old style
The APIs in this section represent an older interface to program information. If OpenGL 4.3 or ARB_program_interface_query is available, you should use those APIs. Be advised that the new APIs are the only way to query the following information:
- Shader storage block information, as well as the buffer variables stored in them.
- Fragment shader output variable information (besides getting the location/index from a known name).
- Transform Feedback out variable and buffer association information.
- Inputs/Outputs between shader stages in separable programs.
If a program has a Vertex Shader, vertex shader inputs, aka Vertex Attributes, can be queried. Vertex attributes can be active or inactive. Attributes that are unused are inactive; they do not have a binding. The number of active attributes in a program can be retrieved with glGetProgramiv with GL_ACTIVE_ATTRIBUTES.
To retrieve information about an attribute, call this function:
void glGetActiveAttrib( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, char *name );
The index is a number on the half-open range [0, GL_ACTIVE_ATTRIBUTES); it represents a particular active attribute. name will be filled in with the name of the attribute; bufSize is the size of this character array. If length is not NULL, it will be filled in with the number of characters written to name. The size will be filled with the number of elements in the attribute array, if the attribute is an array type. Otherwise, it will be set to 1. The type will be set to the OpenGL enumeration for the GLSL type of the attribute.
To get the attribute location (the one used by glVertexAttribPointer, not the index field used above), we use this function:
GLint glGetAttribLocation( GLuint program, const char *name );
If name is not an active attribute in program, the function will return -1.
Fragment Outputs
Fragment color numbers and indices can be queried with these functions:
GLint glGetFragDataLocation(GLuint program, const char * name); GLint glGetFragDataIndex(GLuint program, const char * name);
Note that you must provide a name for these functions. Unlike with attributes, this API cannot be used to enumerate the names and properties of fragment shader outputs. You must know what the names of the locations are.
Uniforms and blocks
Active uniforms are uniforms that the shader compiler/linker has determined are in active use by the executable code. Uniforms that are not active cannot be queried.
All uniforms, whether in uniform blocks or not, are assigned an index when the program is linked. This index is not the same as a uniform location or a uniform block index.
You can enumerate all of the active uniforms by using glGetProgram with GL_ACTIVE_UNIFORMS. Thus, all active uniform indices will have indices less than this value. You can then loop over this range.
However, you can also get uniform indices from string names of the uniforms. This is done with this function:
void glGetUniformIndices(GLuint program, GLsizei uniformCount, const char ** uniformNames, GLuint *uniformIndices);
This will cause the array uniformIndices, which is of size uniformCount to be filled with the indices for the strings in the uniformNames list (also of size uniformCount); If a uniform name in the string list doesn't correspond to the name of an active uniform, then the corresponding index in uniformIndices will be GL_INVALID_INDEX.
Once you have an index, you can query the name of the uniform with this function (assuming you don't know it):
void glGetActiveUniformName( GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, char *uniformName);
This function stores the name in the uniformName buffer, which is of size bufSize bytes. The actual length of uniformName is stored in length (unless length is NULL, which is allowed).
General information about uniforms can be queried with this function, which can retrieve information for multiple uniforms at once:
void glGetActiveUniformsiv( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params );
The uniformIndices array is a list of uniform indices uniformCount in length. These are the uniforms that the user is asking to acquire. pname is an enum that determines what information to query for the uniforms. params are the values that get returned; it is an array uniformCount in length. One value for each uniform index is generated.
The possibilities for pname are:
- GL_UNIFORM_TYPE: Retrieves the GLenum for the uniform's type.
- GL_UNIFORM_SIZE: Retrieves the size of the uniform. For arrays, this is the length of the array1. For non-arrays, this is 1.
- GL_UNIFORM_NAME_LENGTH: The length of that uniform's name.
- GL_UNIFORM_BLOCK_INDEX: The uniform block index for this uniform, which can be used to query information about this block. If this uniform is not in a block, the value will be -1.
- GL_UNIFORM_OFFSET: The byte offset into the beginning of the uniform block for this uniform. If the uniform is not in a block, the value will be -1.
- GL_UNIFORM_ARRAY_STRIDE: The byte stride for elements of the array, for uniforms in a uniform block. For non-array uniforms in a block, this value is 0. For uniforms not in a block, the value will be -1.
- GL_UNIFORM_MATRIX_STRIDE: The byte stride for columns of a column-major matrix or rows for a row-major matrix, for uniforms in a uniform block. For non-matrix uniforms in a block, this value is 0. For uniforms not in a block, the value will be -1.
- GL_UNIFORM_IS_ROW_MAJOR: GL_TRUE if the matrix is row-major and the uniform is in a block. GL_FALSE is returned if the uniform is column-major, the uniform is not in a block (all non-block matrices are column-major), or simply not a matrix type.
- GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: If the uniform defines an atomic counter, then this value will be the index of the buffer that this counter is associated with. Otherwise, it will be -1.
An older function, superseded by glGetActiveUniformName and glGetActiveUniformsiv also exists:
void glGetActiveUniform( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, char *name );
This retrieves the name as in glGetActiveUniformName, but it also retrieves GL_UNIFORM_TYPE in type, GL_UNIFORM_SIZE in size, and GL_UNIFORM_NAME_LENGTH in length.
The length of the longest uniform name in a program can be queried with GL_ACTIVE_UNIFORM_MAX_LENGTH through glGetProgramiv. You can use this along with GL_ACTIVE_UNIFORMS to allocate an array of strings that will be sufficiently large enough to hold the string names for a program's uniforms.
Uniform blocks
The above APIs can query information about uniforms inside or outside of a block, but getting information about the uniform block itself, requires a different set of APIs.
Each active uniform block has an index. As with the uniform API, you can query this in two ways. You can iterate over the active uniform blocks by calling glGetProgram(GL_ACTIVE_UNIFORM_BLOCKS) to get the limit to iterate over. Or you can get the index for a uniform block by name with this function:
GLuint glGetUniformBlockIndex( GLuint program, const GLchar *name );
With the index, properties about the block as a while can be queried. The numerical properties can be queried with this function:
void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
pname must be one of these:
- GL_UNIFORM_BLOCK_BINDING: The current block binding, as set either within the shader or from glUniformBlockBinding.
- GL_UNIFORM_BLOCK_DATA_SIZE: The buffer object storage size needed for this block.
- GL_UNIFORM_BLOCK_NAME_LENGTH: The length of this block's name.
- GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: The number of active uniforms within this block.
- GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: params will be filled in with the uniform indices of all uniforms that are stored in this block. It will receive GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS number of uniforms.
- GL_UNIFORM_BLOCK_REFERENCED_BY_*: GL_FALSE if the uniform block is not referenced by an active * shader, where * is the particular shader stage in question. It can be VERTEX_SHADER, FRAGMENT_SHADER, or GEOMETRY_SHADER. If GL 4.0/ARB_tessellation_shader, then it can also be TESS_CONTROL_SHADER or TESS_EVALUATION_SHADER. If GL 4.3/ARB_compute_shader, then COMPUTE_SHADER is also possible.
The name of a block can be queried with this function:
void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
You can use the GL_UNIFORM_BLOCK_NAME_LENGTH query to get how much space you should reserve.
|Core in version
|Core since version
|Core ARB extension
Because the list of subroutine resources (of all kinds) are broken down by shader stage, all functions that query information about them take a shadertype parameter in addition to the program object to query from. The shadertype is the shader stage enumerator name for the stage to query information about.
Each active subroutine (a subroutine function which can be used with a subroutine uniform that itself is active) has an index. There are two ways to get the index for a particular subroutine function. If you have the name of a subroutine, you can query the index with this function:
If name does not name an active subroutine function, then GL_INVALID_INDEX will be returned. Otherwise, it will be the index of the subroutine function.
To iterate through the list of all subroutine functions, you can query the total number of subroutines. This is done via this function:
To query the number of active subroutine functions, pname must be GL_ACTIVE_SUBROUTINES. This stores the number of active subroutine functions as a single integer in values.
To get the name of a subroutine function from an index, pass the index to this function:
bufsize is the total number of bytes that name points to; OpenGL will not write more than this number of bytes. If length is not NULL, the function will write the number of characters written into name.
There is no way to query the length of the name for a specific subroutine function (at least, not with this API. You must use the query API for that). However, you can query the largest subroutine function name used by a shader stage. This is done with glGetProgramStage, using the GL_ACTIVE_SUBROUTINE_MAX_LENGTH enumerator.
The name is the only information that can be queried about a subroutine function directly.
Like regular uniforms, subroutine uniforms have both a location and an index. The location is used when actually selecting which subroutine to use for that uniform, while the index is only used to query information about that uniform.
To iterate through the number of subroutine uniforms for a stage and query information about them, you must first get the number of subroutine uniform indices. This uses glGetProgramStage with GL_ACTIVE_SUBROUTINE_UNIFORMS. The valid indices range from 0 to that value minus one.
Armed with a subroutine uniform index, one can query general information about the subroutine uniform with this function:
pname defines what information is to be set into values:
- GL_NUM_COMPATIBLE_SUBROUTINES: The number of subroutine functions that can be used with this uniform.
- GL_COMPATIBLE_SUBROUTINES: This returns an array of indices for each of the subroutine functions that can be used with this uniform. values must be at least GL_NUM_COMPATIBLE_SUBROUTINES entries in size.
- GL_UNIFORM_SIZE: The number of entries in the subroutine uniform. Subroutine uniforms can be in arrays, so this is the count of array elements. If the subroutine uniform is not an array,
- GL_UNIFORM_NAME_LENGTH: The length of the uniform's name.
To get the subroutine uniform's name, call this function:
The subroutine uniform location is used to know how to assign a subroutine function index to the subroutine uniform when it comes time to render with the shader.
Regular uniform variables are assigned locations arbitrarily. Subroutine uniforms are a bit different. The number of subroutine uniform locations assigned to a particular shader stage can be determined by calling glGetProgramStage with GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS. All subroutine uniform locations less than that number (and >= 0) are active subroutine uniform locations. This is required by the specification.
Because subroutine uniforms can be arrays, there can be more subroutine uniform locations than there are subroutine uniform indices. Each subroutine uniform only counts as one for the index list, but arrayed subroutine uniforms take up multiple locations.
To get a subroutine uniform's location given the name, use this function:
If name names an arrayed subroutine uniform, then the location refers to X consecutive locations starting from the returned location, where X is the array size declared in the shader. If the subroutine uniform is not active, this function will return -1.
Atomic counters
|Core in version
|Core since version
|Core ARB extension
Information about Atomic Counters can be queried via the following APIs. Atomic counter variables are opaque types as well as uniforms. As such, most of the information about atomic counters can be queried with the uniform interface.
What cannot be queried is the information about buffer object bindings and offsets into those buffers. Thus, OpenGL provides a special API just for querying the storage parameter information from a program.
Each atomic counter variable must have a buffer binding. The querying interface looks at buffer bindings, not variables. So if four variables all use the same binding index (with different offsets), then interface will only show 1 buffer binding.
To enumerate all of the active buffer bindings in a program, use glGetProgram(GL_ACTIVE_ATOMIC_COUNTER_BUFFERS). To query information about each binding, use this function:
void glGetActiveAtomicCounterBufferiv(Gluint program, GLuint bufferIndex, GLenum pname, GLint *params)
bufferIndex is a number on the half-open range from 0 to the number of active atomic counter buffers, which represents a specific buffer binding. pname is the specific data to query for this atomic counter. It can take the following values, which define what values are stored into params:
- GL_ATOMIC_COUNTER_BUFFER_BINDING: The atomic counter buffer binding index for this buffer.
- GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: The minimum size (implementation-dependent) of the buffer region that must be bound by the user. That is, when the user uses glBindBufferRange (or glBindBufferBase), the bound range must be at least this large.
- GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS and GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: The first enum returns the number of active atomic counter variables used by this binding point. The second enum will fill params with uniform indices for those atomic counter variables. The user must pass an array big enough to store GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS indices.
- GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_*: GL_FALSE if the atomic counter buffer is not referenced by an active * shader, where * is the particular shader stage in question. The stage can be VERTEX_SHADER, FRAGMENT_SHADER, GEOMETRY_SHADER, TESS_CONTROL_SHADER, or TESS_EVALUATION_SHADER. If GL 4.3/ARB_compute_shader is available, then COMPUTE_SHADER is also possible.
Interface query
|Core in version
|Core since version
|Core ARB extension
This new interface provides a uniform mechanism for querying just about everything from a program. At least, you can query everything that external OpenGL code can interface with. You can't query information about number of functions (unless they're subroutines) or global variables or things like that. But uniforms, inputs/outputs, etc? All of those are made available through this consistent interface.
These APIs rely on some new concepts. Each linked program provides a number of interfaces, where each interface represents a set of active resources of some kind. An interface is a conceptual grouping. "Uniforms" are an interface in a program. Each individual active uniform in a program is a resource.
The idea is to take all of the various different functions for introspecting programs and put them in a single interface that is extensible without adding new functions.
An interface represents a particular collection of resources that can be queried from a program. Interfaces are identified by an enumerator. The available interfaces are:
- GL_UNIFORM: The set of active uniforms in a program. This includes uniforms located in uniform blocks.
- GL_UNIFORM_BLOCK: The set of active uniform blocks in a program. These resources describe the blocks themselves, not the specific variables within them. Though they do store a list of said uniforms.
- GL_ATOMIC_COUNTER_BUFFER: The set of active atomic counter buffers in a program. This describes the buffer bindings, not the actual atomic variables. Those are uniforms.
- GL_PROGRAM_INPUT: The set of active user-defined inputs to the first shader stage in this program. If the first stage is a Vertex Shader, then this is the list of active attributes. If the program only contains a Compute Shader, then there are no user-defined inputs.
- GL_PROGRAM_OUTPUT: The set of active user-defined outputs from the final shader stage in this program. If the final stage is a Fragment Shader, then this represents the fragment outputs that get written to individual color buffers. If the program only contains a Compute Shader, then there are no user-defined outputs.
- GL_TRANSFORM_FEEDBACK_VARYING: The set of active outputs from the last Vertex Processing shader stage in the program; these variables are eligible for Transform Feedback capture.
- GL_TRANSFORM_FEEDBACK_BUFFER: Requires OpenGL 4.4 or ARB_enhanced_layouts. Like GL_ATOMIC_COUNTER_BUFFER, this describes the arrangement of buffers used by a shader for transform feedback. The variables themselves are described by GL_TRANSFORM_FEEDBACK_VARYING.
- GL_BUFFER_VARIABLE: The set of active buffer variables in the program. These are all of the variables stored within shader storage blocks.
- GL_SHADER_STORAGE_BLOCK: The set of active shader storage blocks. Much like the interface for uniform blocks, these resources describe the blocks themselves, not the specific variables within them.
- GL_*_SUBROUTINE: The set of active subroutines in the program. The "*" represents the shader stage to query from; unlike other interfaces, this only queries about specific stages. The "*" can be:
- TESS_CONTROL: Requires OpenGL 4.0 or ARB_tessellation_shader
- TESS_EVALUATION: Requires OpenGL 4.0 or ARB_tessellation_shader
- COMPUTE: Requires OpenGL 4.3 or ARB_compute_shader
- GL_*_SUBROUTINE_UNIFORM: The set of active subroutine uniforms in the program. Subroutine uniforms behave differently from regular uniforms; they cannot be queried via the GL_UNIFORM interface. As before, the "*" represents the shader stage to query from; unlike other interfaces, this only queries about specific stages.
While the main purpose of the interfaces are to allow you to query information about the resources within those interfaces, there is some per-interface information that is important. This information is usually an aggregate of all of the resources in the interface, such as maximum name length and such. The most important per-interface information is the number of resources within that interface for a program.
Per-interface information can be fetched via this function:
void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint * params);
The programInterface is one of the interfaces, as defined above. pname is the particular data you want to query, and it gets written into params. The possible pname values that can be queried from an interface are:
- The number of active resources of that interface type.
- The length of the longest string name among all resources of that interface type. This is useful for pre-allocating buffers if you are fetching names; you can always allocate the maximum length. As with all OpenGL string length APIs, the length includes the null-terminator. GL_ATOMIC_COUNTER_BUFFER and GL_TRANSFORM_FEEDBACK_BUFFER are unnamed, so you cannot use this pname with that interface.
- The largest number of active variables among all resources in this interface. This should only be queried for interfaces whose resources that contain active variables. Namely, GL_UNIFORM_BLOCK, GL_SHADER_STORAGE_BLOCK, GL_TRANSFORM_FEEDBACK_BUFFER, and GL_ATOMIC_COUNTER_BUFFER; all others will return 0. Thus, if you use GL_UNIFORM_BLOCK with this param, you are asking for the maximum number of active variables that any active uniform block in the program has. Again, this is useful for preallocating buffers and so forth.
- The largest number of compatible subroutines among all subroutine variables for that shader stage. This can only be used with the GL_*_SUBROUTINE interfaces.
Resource indices
Active resources within an interface are conceptually stored in a contiguous, unbroken array. Each active resource has a unique, zero-based index that references that resource, and each interface for a program maintains a separate array of indices for its resource. Therefore, a specific index within an interface uniquely identifies a resource.
You can iterate through the resources in an interface by querying the number of resources in that interface via glGetProgramInterfaceiv(GL_ACTIVE_RESOURCES). For interfaces who's resources have specific string names, you can also query the index by name:
GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const char * name);
If the resource named by name is not an active resource, GL_INVALID_INDEX is returned.
Some interfaces have unnamed resources, like GL_ATOMIC_COUNTER_BUFFER; these resources therefore cannot be queried by name. If you want the counter buffer resource associated with a particular atomic counter uniform variable, query for the GL_UNIFORM that references the buffer, then query its GL_ATOMIC_COUNTER_BUFFER_INDEX property.
Resource properties
Once an index for an active resource has been acquired, properties from that active resource can be queried. This is done via calls to this function:
void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const Glenum * props, GLsizei count, GLsizei * length, GLint * params);
This function can retrieve multiple properties (though all from the same resource) into a buffer all at once. Most properties will only write one value to params, but some will write several (in all cases, the length can be queried).
The sheer volume of information that can be queried from this interface is massive. It is all documented on glGetProgramResource's reference page, including the list of which interfaces support which properties. So there is no need to repeat it here.
There are some properties that are notable in that they cannot be queried from the older APIs or that they use different names:
- GL_NUM_ACTIVE_VARIABLES and GL_ACTIVE_VARIABLES
- For resources that contain other resources (uniform/shader storage blocks and atomic counter buffers), this query is used to return a list of the active variables that they contain. The particular interface to use these indices with depends on what is being queried. If GL_UNIFORM_BLOCK or GL_ATOMIC_COUNTER_BUFFER is used, then the indices are indices into the GL_UNIFORM interface. If GL_SHADER_STORAGE_BLOCK is used, then they are indices into the GL_BUFFER_VARIABLE interface. If GL_TRANSFORM_FEEDBACK_BUFFER is used, then they are indices in the GL_TRANSFORM_FEEDBACK_VARYING interface.
- These are used to detect which shader stages use the variable. All of the variable interfaces (except GL_TRANSFORM_FEEDBACK_VARYING and the subroutine uniforms), can detect where they come from.
There is one property that cannot be queried from the above function: the resource's name. That must be queried with this function:
GLuint glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, char * name);
Names can only be queried for interfaces who's resources are named. This means not GL_ATOMIC_COUNTER_BUFFER or GL_TRANSFORM_FEEDBACK_BUFFER, as these only describe the buffer bindings for these concepts, not the variables themselves.
While the above interface is exceedingly comprehensive, it is less than convenient for accessing certain commonly-used information. Specifically, the GL_LOCATION and GL_LOCATION_INDEX fields. These fields have special APIs that mimic functions like glGetAttribLocation or glGetFragDataIndex:
GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const char * name); GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const char * name);
These functions are equivalent to calling glGetProgramResourceIndex with name, and if it returns a valid index, calling glGetProgramResource with the appropriate field. The programInterface parameter must match with what is allowed for querying those parameters with glGetProgramResource. So the LocationIndex can only be used with the GL_PROGRAM_OUTPUT interface.
This system is rather complex. So here is some example code for doing common tasks.
Iteration over all non-block uniform variables, fetching their names, types, and locations:
GLint numUniforms = 0;
glGetProgramInterfaceiv(prog, GL_UNIFORM, GL_ACTIVE_RESOURCES, &numUniforms);
const GLenum properties[4] = {GL_BLOCK_INDEX, GL_TYPE, GL_NAME_LENGTH, GL_LOCATION};
for(int unif = 0; unif < numUniforms; ++unif)
GLint values[4];
glGetProgramResourceiv(prog, GL_UNIFORM, unif, 4, properties, 4, NULL, values);
// Skip any uniforms that are in a block.
if(values[0] != -1)
// Get the name. Must use a std::vector rather than a std::string for C++03 standards issues.
// C++11 would let you use a std::string directly.
std::vector<char> nameData(values[2]);
glGetProgramResourceName(prog, GL_UNIFORM, unif, nameData.size(), NULL, &nameData[0]);
std::string name(nameData.begin(), nameData.end() - 1);
Iteration over all uniforms within each uniform block.
GLint numBlocks = 0;
glGetProgramInterfaceiv(prog, GL_UNIFORM_BLOCK, GL_ACTIVE_RESOURCES, &numBlocks);
const GLenum blockProperties[1] = {GL_NUM_ACTIVE_VARIABLES};
const GLenum activeUnifProp[1] = {GL_ACTIVE_VARIABLES};
const GLenum unifProperties[3] = {GL_NAME_LENGTH, GL_TYPE, GL_LOCATION};
for(int blockIx = 0; blockIx < numBlocks; ++blockIx)
GLint numActiveUnifs = 0;
glGetProgramResourceiv(prog, GL_UNIFORM_BLOCK, blockIx, 1, blockProperties, 1, NULL, &numActiveUnifs);
std::vector<GLint> blockUnifs(numActiveUnifs);
glGetProgramResourceiv(prog, GL_UNIFORM_BLOCK, blockIx, 1, activeUnifProp, numActiveUnifs, NULL, &blockUnifs[0]);
for(int unifIx = 0; unifIx < numActiveUnifs; ++unifIx)
GLint values[3];
glGetProgramResourceiv(prog, GL_UNIFORM, blockUnifs[unifIx], 3, unifProperties, 3, NULL, values);
// Get the name. Must use a std::vector rather than a std::string for C++03 standards issues.
// C++11 would let you use a std::string directly.
std::vector<char> nameData(values[0]);
glGetProgramResourceName(prog, GL_UNIFORM, blockUnifs[unifIx], nameData.size(), NULL, &nameData[0]);
std::string name(nameData.begin(), nameData.end() - 1);
- Category:Core API Ref Shader Program Query All program introspection API functions.


text:
As you know that images are very important for web designer to create a nice web page. But images are not very friendly with search engines such as Google, Yahoo… Search engines can not read the pictures very well. Within thism post, we would like to sum up all important guidelines from Google to make pictures more friendly with Google and other search engines.
With image search, just as with web search, Google's goal is to provide the best and most relevant search results to Google users. Following the best practices listed below (as well as Google usual webmaster guidelines) will increase the likelihood that your images will be returned in those search results.
Don't embed text inside images
Search engines can't read text embedded in images. If you want search engines to understand your content, keep it in regular HTML.
Tell us as much as you can about the image
Give your images detailed, informative filenames
The filename can give Google clues about the subject matter of the image. Try to make your filename a good description of the subject matter of the image. For example, my-new-black-kitten.jpg is a lot more informative than IMG00023.JPG. Descriptive filenames can also be useful to users: If we're unable to find suitable text in the page on which we found the image, we'll use the filename as the image's snippet in our search results.
Create great alt text
The alt attribute is used to describe the contents of an image file. It's important for several reasons:
- It provides Google with useful information about the subject matter of the image. We use this information to help determine the best image to return for a user's query.
- Many people-for example, users with visual impairments, or people using screen readers or who have low-bandwidth connections-may not be able to see images on web pages. Descriptive alt text provides these users with important information.
Not so good:

To be avoided

Filling alt attributes with keywords ("keyword stuffing") results in a negative user experience, and may cause your site to be perceived as spam. Instead, focus on creating useful, information-rich content that uses keywords appropriately and in context. We recommend testing your content by using a text-only browser such as Lynx.
Anchor text
External anchor text (the text pages use to link to your site) reflects how other people view your pages. While typically webmasters can't control how other sites link to theirs, you can make sure that anchor text you use within your own site is useful, descriptive, and relevant. This improves the user experience and helps the user understand the link's destination. For example, you might link to a page of vacation photos like this: Photos of our June 2008 trip to Ireland.
Provide good context for your image
The page the image is on, and the content around the image (including any captions or image titles), provide search engines with important information about the subject matter of your image. For example, if you have a picture of a polar bear on a page about home-grown tomatoes, you'll be sending a confused message to the search engines about the subject matter of polarbear.jpg.
Wherever possible, it's a good idea to make sure that images are placed near the relevant text. In addition, we recommend providing good, descriptive titles and captions for your images.
Think about the best ways to protect your images
Because images are often copied by users, Google often finds multiple copies of the same image online. We use many different signals to identify the original source of the image, and you can help by providing us with as much information as you can. In addition, the information you give about an image tells us about its content and subject matter.
Webmasters are often concerned about the unauthorized use of their images. If you prevent users from using your images on their site, or linking to your images, you'll prevent people from using your bandwidth, but you are also limiting the potential audience for your images and reducing their discoverability by search engines.
One solution is to allow other people to use your images, but require attribution and a link back to your own site. There are several ways you can do this. For example, you can:
- Make your images available under a license that requires attribution, such as a Creative Commons license that requires attribution.
- Provide a HTML snippet that other people can use to embed your image on their page while providing attribution. This snippet can include both the link to the image and a link to the source page on your site.
Similarly, some people add copyright text, watermarks, or other information to their images. This kind of information won't impact your image's performance in search results, and does help photographers claim credit for their work and deter unknown usage. However, if a feature such as watermarking reduces the user-perceived quality of your image or your image's thumbnail, users may click it less often in search results.
If you don't want search engines to crawl your images, we recommend using a robots.txt file to block access to your images.
Create a great user experience
Great image content is an excellent way to build traffic to your site. We recommend that when publishing images, you think carefully about creating the best user experience you can.
- Good-quality photos appeal to users more than blurry, unclear images. In addition, other webmasters are much more likely to link to a good-quality image, which can increase visits to your site. Crisp, sharp images will also appear better in the thumbnail versions we display in our search results, and may therefore be more likely to be clicked on by users.
- Even if your image appears on several pages on your site, consider creating a standalone landing page for each image, where you can gather all its related information. If you do this, be sure to provide unique information—such as descriptive titles and captions—on each page. You could also enable comments, discussions, or ratings for each picture.
- Not all users scroll to the bottom of a page, so consider putting your images high up on the page where it can be immediately seen.
- Consider structuring your directories so that similar images are saved together. For example, you might have one directory for thumbnails and another for full-size images; or you could create separate directories for each category of images (for example, you could create separate directories for Hawaii, Ghana, and Ireland under your Travel directory). If your site contains adult images, we recommend storing these in one or more directories separate from the rest of the images on your site.
- Specify a width and height for all images. A web browser can begin to render a page even before images are downloaded, provided that it knows the dimensions to wrap non-replaceable elements around. Specifying these dimensions can speed up page loading and improve the user experience.
With image search, just as with web search, our goal is to provide the best and most relevant search results to our users. Following the best practices listed above will increase the likelihood that your images will be returned in those search results.

subset: commoncrawl


text: Can I get a Peloton… Can I get a Peloton for the quarantine?— Jake Spurlock (@whyisjake) March 16, 2020Share this:FacebookTwitterRedditLike this:Like Loading... Published by Jake Spurlock Jake is a geek, designer, HTML+CSS lover. Taker of photos, and sometimes skiing and biking... He spends his time day dreaming new WordPress themes and camping with the Boy Scouts. For some random posts, check out the link blog. View all posts by Jake Spurlock


text:
Whether searching for your dream home, apartment hunting, relocating, or in need of corporate housing, Housing Helpers can help. Our unique approach combines a diverse selection of properties and housing solutions with the friendly professional service we're known for. The result is all of your relocation needs solved with one call to Housing Helpers.
HOUSING HELPERS is a full service real estate company, apartment locator, corporate housing provider, and relocation company offering a diverse selection of properties for sale and for rent in Colorado and Nevada. We can also serve your relocation needs throughout the country with our network of affiliates. We're much more than an online database, we're relocation professionals that will work hard to find your dream home. Since 1987, Housing Helpers has made home finding fast and easy for clients across Colorado including Boulder, Longmont, Louisville CO, Broomfield, Denver, Golden, Fort Collins, Colorado Springs and all of the suburbs in between. We're also experts in Las Vegas, Nevada.
CONTACT US - Browse properties on our website, call (303)545-6000 or stop by one of our office locations in Boulder Colorado, Denver CO, and Las Vegas Nevada.
WHAT TYPES OF PROPERTIES WE CAN HELP YOU FIND - Our free rental locator can help you locate rentals, apartments for rent, condos, lofts, town houses, and homes for rent. Our corporate housing team can help with temporary housing including furnished apartments, executive homes, short term rentals, vacation rentals, extended stays, and corporate apartments. Our real estate agents can help you buy or sell a home, search real estate listings, condos, land, investment properties, and homes for sale.
Cities We Serve


text:
WASHINGTON — The gunman who killed 12 people in last year's rampage at Washington's Navy Yard lied so convincingly to Veterans Affairs doctors before the shootings that they concluded he had no mental health issues despite serious problems and encounters with police during the same period, according to a review by The Associated Press of his confidential medical files.
Just weeks before the shootings, a doctor treating him for insomnia noted that the patient worked for the Defense Department but wrote hauntingly "no problem there."
The AP obtained more than 100 pages of treatment and disability claims evaluation records for Aaron Alexis, spanning more than two years. They show Alexis complaining of minor physical ailments, including foot and knee injuries, slight hearing loss and later insomnia, but resolutely denying any mental health issues. He directly denied having suicidal or homicidal thoughts when government doctors asked him about it just three weeks before the shootings.
In a bizarre incident in Newport, R.I., Alexis told police on Aug. 7 that disembodied voices were harassing him at his hotel using a microwave machine to prevent him from sleeping. After police reported the incident to the Navy, his employer, a defense contracting company, pulled his access to classified material for two days after his mental health problems became evident but restored it quickly and never told Navy officials it had done so.
Just 16 days later, after Alexis told a VA emergency room doctor in Providence that he couldn't sleep, the doctor wrote that his speech and thoughts seemed "clear and focused" and noted that he "denies flashbacks, denies recent stress."
The medical records said Alexis, 34, was found sleeping in the VA waiting room in Providence on Aug. 23 while waiting to see a doctor. During that visit he was prescribed 50 milligrams of trazodone, an antidepressant and anti-anxiety medication that in such low doses can be used to treat insomnia.
"Denies any pain except discomfort rt (right) temple," a nurse wrote on Aug. 23. "Pt (patient) taking no medications including any otc (over-the-counter) medications."
An attending doctor provided additional details, saying Alexis suffered from fatigue after sleeping only two or three hours every night over the past three weeks.
"Speech and thoughts clear and focused. Denies flashbacks. Denies recent stress. Denies drugs, cocaine, heroin, caffeine product, depression, anxiety, chest pain, sob (shortness of breath), nightmares. He denies taking nap during the day. Denies SI (suicidal ideation) or HI (homicidal ideation)," the doctor wrote.
"He works in the Defense Department, no problem there," the doctor added.
The medical records showed that Alexis answered "no" when asked, "Do you have anything that could be considered a weapon?" The VA told the AP that was a standard question it asks veterans whom it treats in a triage setting.
Five days later, on Aug. 28, Alexis visited a VA medical facility in Washington, again complaining of sleeplessness: "Patient presents to ER with c/o (case of) awakening each morning about 4 a.m. like clockwork and he cannot figure out why this is happening."
He answered "no" when asked whether he was having feelings of hopelessness for the present and the future. Another doctor that night described the examination as "unremarkable." The VA gave him 10 more tablets of trazodone and sent him home just before 9 p.m.
Alexis, a defense contractor and former Navy reservist, went on a deadly shooting rampage at the Navy Yard on Sept. 16, spraying bullets in a hallway and firing on workers from a balcony. He died in a gunbattle with police.
He had purchased the shotgun he used two days before the shooting from a gun shop in Virginia. Alexis had been involved in at least two earlier shooting-related incidents, in 2004 when he was arrested in Seattle and charged with malicious mischief for shooting the tires on a construction worker's vehicle and in 2010 when he was arrested in Fort Worth, Texas, for firing a rifle into a neighbor's apartment.
No charges were filed in those two cases, but it was not immediately clear whether Alexis was answering honestly on Aug. 23 when he was asked whether he still had any weapons. The FBI told the AP it found no weapons when it searched the hotel where Alexis had been staying after the shootings.
Before the Navy Yard shootings, Alexis left behind a note that FBI agents recovered saying he had been targeted by ultra-low frequency radio waves for the previous three months — the period that covered his visits to the VA medical facilities when he denied he was experiencing any stress or violent thoughts.
Sidney Matthew, a lawyer representing the family of one of the shooting victims, told the AP it's possible that Alexis was evasive with his doctors but expressed skepticism that physicians adequately questioned Alexis about why he wasn't sleeping.
"There doesn't appear to be very much curiosity about what the ideology of the insomnia is," said Matthew, who represents the family of Mary Frances DeLorenzo Knight in a federal lawsuit. The lawsuit claims the VA failed to treat Alexis' mental illness.
Matthew noted that Alexis aggressively confronted a family at Norfolk (Va.) International Airport on Aug. 4, just days before his encounter with police on Aug. 7 that was so bizarre that police contacted the Navy about their concerns. Alexis' family also had concerns about his mental health during the period.
If doctors were perplexed about the cause of a patient's problem, there are limits as to how far they can investigate. The executive director of the National Center for Veteran Studies, Dr. Craig Bryan, said conducting an online search of a patient would be time-consuming and unlikely to help. That's particularly the case for a doctor working in an emergency room setting treating a condition as common as insomnia, he said. With few exceptions, it would be illegal to contact others, such as family, friends or an employer to search for clues, Bryan said.
Other experts agreed. "In an emergency setting, a patient with insomnia who does not report stressors or substance use, who denies suicidal or homicidal thoughts and who otherwise does not have urgent psychiatric or medical issues would typically be referred for further, full evaluation of the insomnia in a nonemergency setting," said Dr. William E. Narrow, acting director of quality improvement for the American Psychiatric Association.
The AP obtained 114 pages of Alexis' medical records under the Freedom of Information Act after requesting them a few weeks after the shootings. It is unusual for the government to disclose anyone's medical files, but the Veterans Affairs Department agreed that the public interest in the mass killing outweighed Alexis' privacy rights in keeping his treatment records secret after his death. In the records the AP obtained, the government withheld the names of all the doctors and others who treated Alexis to protect their privacy.
Congress and the Pentagon are investigating the shootings, including whether faulty security clearance procedures allowed him to get and maintain his job. Some lawmakers have said Alexis fell through the cracks at the VA and should have been treated by mental health professionals, but they have stopped short of specifying what government doctors should have done differently.
The medical records also describe Alexis' efforts to qualify for disability payments because of ringing in his ears and orthopedic problems. In February 2011, almost immediately after Alexis received an honorable discharge from the Navy, he complained about tinnitus, which he said was "annoying and can be distracting." He said it began in 2009 when he was still serving in the Navy. An audiologist in Dallas determined that his hearing in both ears was "within normal limits" and said any hearing loss or tinnitus probably didn't occur when he was serving in the military.
In October 2011, Alexis filed another disability claim for what he said was a broken right foot he suffered when he fell down stairs in 2009, causing him mild to moderate pain daily. The Navy alleged in a nonjudicial punishment in July 2009 that Alexis was drunk when he leaped off stairs and suffered a broken ankle, but Alexis appealed the disciplinary action and it was removed from his record six months later because there was insufficient evidence he had been intoxicated. Alexis also complained to the VA about a spine problem and conditions with his knee and shoulder. An examiner concluded that Alexis had a degenerative disc in his back and less movement than normal in his shoulder and knee.
The government granted him a 20 percent disability rating for orthopedic issues in December 2011. He was awarded an additional 10 percent for tinnitus and received $395 in monthly benefits retroactive to his leaving the Navy, or about $4,740.


text:
Craig Sonner, the legal counsel for George Zimmerman says the shooting of Trayvon Martin wasn't racially motivated.
ill be honest truthfully im baffled at the fact that the police dont at least arrest him at this point. if not for the act itself then do it at least to protect him. from the only thing ive seen its clear that nobody knows all the facts. but i think the question of whether or not what he did was legal or not should really come down the court room. i haven't heard if it was even legal for him to be carrying the gun in the first place. i don't really know. if the answer is no then what was he doing with one in the first place. if the answer is yes then let him explain himself in front a jury and let the people decide if what he did was wrong. secondly if the answer was no did he have a concealment license that allowed him to carry that weapon. if the answer was no then he clearly broke some rules and arrest him for overstepping that if nothing else. you hear all this talk of eye for an eye or stand your ground law but i don't see how bringing a gun to a person who was unarmed was right. however being that i don't have all the facts of what actually happened i cant say that anything for or against it.
it is obvious that the man who chose to be known as John has a good reason for that request, he is obviously not telling the truth as the two women who came forward clearly stated that it was to dark to see anything clearly, even when they were outside, they couldn't even tell if zimmerman's nose was bleeding, how could "john" tell what color sweater trayvon or zimmerman was wearing
The shooting may not have been racially motivated, but Zimmerman's stalking of Trayvon Martin most certainly was, and as the instigating incident, that 'colors' the whole incident. In Florida, if you want to kill someone, you don't have to go through the trouble of hiring a contract killer, or devise a complicated plot to make their death appear accidental. All you have to do is pick a fight with them, as in the case of Jason Rosenbloom, or stalk them and confront them, as in the Treyvon Martin case. Florida – giving killers a pass since 2006.
Hello Anderson, as a virgin twitter this may be the last. As a grandmother to a beautiful Grandson, our prayers go out to Trayvon's parents and his family. I hope the Grand Jury indictment will put the shooter away for the rest of his natural life. And, a revision of the Stand Your Ground Law should bear the name of Trayvon Martin as in "Amber" alert. After reading the unfolding of the 911 Calls, it seems that some of zimmerman's statements were either concocted while pursuing Trayvon, in which case premeditation, or it could be that the 911 Calls were fabricated, and perhaps portions of the resident's statements may have been doctored by the Dept. to suit zimmerman and the sandford police personnel. Citizen's right to bear arms should be limited in cases like home intrusions; carried on the street only by law enforcement officers or similar profession. I hope Mr. and Mrs. Martin find comfort in knowing that Heaven has just welcomed their Angel Trayvon. God Bless the Martin Family and God bless you Anderson.
Im so sorry for that child! He had a long life ahed of him and it was cut short because of Zimmerman's bigotry!
I want to know why the Trayvon's school has not spoken up about this? He was going to school. He did have a principal and teachers that could talk about who trayvon was. I want to know more about Trayvon other than he was 17 and liked scittles and tea. We see pictures of him in his football uniform but no other person other than his parents are speaking up about who he was. He must of had friends that can talk about him. I just want a bigger picture of who this precious person was.
Stand your Ground means if Trayvon had approach Simmerman that he had the right but Zimmerman approach Trayvon and did not identify hisself as the watchman for the aptments complex where he was working. Did the aptment manager hand out letters to the people that stayed out there about all the break end & let them know that there was was a watchman that was patroning the area & if the watchman own a gun, Thats is something that management should ask if you have anyone doing that job.If they see someone identify themself when them approach a person bec people are getting rob & kill by people & that was dangerest. It wasnt after midnight when this happen people work & kids still be out &p to at less 10p. I cant see that the leader in Sanford went to school to get the education that they got & think this is ok. have they given Zimmerman a drug , alcohol, & retrieve his gun. the answer is no bec it should have been done from day one. this is the sorriest investigation I ever scene or heard of. Clean up Sanford get all new leaders to protect the people in Sanford or this kind of killing will cotinue lets get some JUSTICE for TRAYVON and other vitim that have been kill in Sanford Fl & nothing have been done. Sanford resident stand ur ground bec the Leaders in Sanford wont stand them for you. Wake up Sanford Gget the old ones out & put new ones in that have family & has feeling when you lose someone for no reason. Fight & stand ur ground
I have a qustion on the Trayvon Martin shooting. How many times did Trayvon walk thru this neighborhood and no one thought he was doing something or acting suspious?
I am appalled that this man is not in jail. He shot an unarmed teenager?!? If this is not racial profiling I do not kow what is.....
Is this guy really a lawyer?
What kind of two-bit attorney is this guy, that not only has he not listened to the 911 tapes, he hasn't discussed anything pertaining to that night or the tapes with his client, wow what a joke.
that lawyer is suspicious to me........sneakie answers and hesitating....seems like he talked about nothing with his client.
W0W! Just wow...this lawyer is unbelievable. He is either playing dumb or is. I could really go off but will refrain.
Re: Trayvon Martin
Wearing a hoodie played a major factor in a death of Trayvon Martin. I think his parents are responsible for not educating their child about not to dress up like a gang members.
If a white teenage girl wear a short shirt and top and walk alone at night in a ghetto neighborhood, the chance that she gets into trouble is almost %100. I am sorry for the kid!
With Florida's law stand your ground, why is no one defending Trayvon's right to stand his ground from an armed agresser on a dark and rainy night. This man was told by the police to sand down but he made up his mind to attack the child.
For being his lawyer, he sure doesn't know much about the case.
What racist? This guy is just a Neighborhood Watch "GUN SLINGER", who stalks his victims, even when law-in-enforcement advised him not to do so. This type of thing could happen to any kid who lives near someone with Zimmerman's overly zealous "Wanna B Cop" attitude. Zimmerman took this upon himself and therefore must suffer the consequences of his actions.
March 23,


text:
Washington Navy Yard Birth Injury Lawyers and District of Columbia Birth Injury Attorneys
How can a birth injury lawyer help victims of birth injuries to secure necessary compensation for damages?
Washington Navy Yard District of Columbia Birth injury Lawyers.
Birth injuries in Washington Navy Yard are the concern of every expectant parent and unfortunately a reality to many, when something goes wrong during, or shortly after birth. There are many common types of birth injuries and some may be temporary, resolving quickly with low-to-no residual damage. Other birth injuries are permanent and can last a lifetime, negatively affecting many aspects of a child's life, and impacting family finances that are necessary for specialized care and around the clock treatment. Birth injury may not present itself until a child is in their formative years and symptoms begin to appear.
Washington Navy Yard Birth Injury Malpractice Attorneys.
Birth injury malpractice can create a lifetime of serious complications that render individuals and families with heavy physical, emotional, and financial burdens. When an injury can be tracked back to the care of professional nurses, or doctors who make mistakes before, during and after the delivery of an infant, it is imperative to speak to a birth injury malpractice attorney who can have experts review the records, and exam the child to ascertain the extent of the physical damages and any residual effects an injury may have caused.
Necessary damages.
Even though a birth injury may leave a child with a permanent disability, and parents with sustained physical, emotional, and financial stressors, a birth injury lawsuit may be necessary to assist with this burden. When medical negligence can be proven in accordance with state standards of medical care, compensation may be available to cover compensatory damages that include economic damages for:
- Past and future medical expenses,
- Healthcare costs including occupational therapy, behavior counseling, specialized education, in-home healthcare, modified vehicles, and housing situations,
- Lost wages for time away from work to care for child,
And non-economic damages for:
- Pain and suffering,
- Emotional pain and anxiety,
- Loss of companionship,
- Loss of enjoyment of life.
In some cases punitive damages are awarded when a defendant's actions are found to be intentional, and harmful, punitive damages may be awarded to punish them as a means to deter future similar acts. Certain states have capitations on the highest dollar amount that can be awarded.
Legal questions For Washington Navy YardBirth Injury Lawyers.
State laws mandate the way victims can approach legal action against birth injuries, and over what period of time they have to institute the action against health care providers and their insurers. Families of an injured child should familiarize themselves with the particulars involved in legal action. They need to find a Washington Navy Yard birth injury lawyer who can facilitate the answers to questions that include:
- How long do birth injury victims have to file a legal action?
- What are the state capitations on damages for birth injury lawsuits?
- What is the legal precedence relevant to the particular birth injury claimed in the legal action?
- What are court rulings and expert board opinions as to awards?
Finding a Washington Navy Yard birth injury lawyer is important to get the help you need contact a District of Columbia birth injury attorney now at USAttorneys.com or by calling 1-800-672-3103.
District of Columbia Birth Injury Negligence Lawyers.
Birth injuries are severe injuries that happen during the labor and delivery of a child, or perhaps at some point in the prenatal care provided by a medical professional that manifests in injury at birth such as:
- Gestational diabetes – Elevated levels of glucose during pregnancy, could cause large birth weight, hypoglycemia, and stillbirth of the baby.
- Cervical cerclage – A cervical stitch to support a weak cervix and allow a mother to carry to term.
- Group B Strep – Bacteria present in the genital tract that can cause serious illness in newborns called Group B Strep disease.
- Preeclampsia – High blood pressure that can cause damage to organs, and health risks to both mother and child.
- Problems with placenta – Placenta supplies nutrients to the fetus, and transfers oxygen and blood between the mother and child. Placental problems can cause severe birth injuries, or death of the child. One of the most common issues is placental abruption.
Finding a Washington Navy Yard District of Columbia birth injury law firm will help you get compensation you deserve. Contact a Washington Navy Yard birth injury attorney near me by visiting USAttorneys.com or call 1-800-672-3103 to speak to a District of Columbia birth injury attorney today.
Elements of Washington Navy Yard birth injury negligence.
Building a case for a birth injury will be contingent on the type of birth injury and resultant damages, and how they will impact the future of the child and their caretakers. Birth injury negligence is predicated on four elements including:
- Duty – When a doctor and a patient establish a professional relationship, the doctor has a responsibility to provide a duty of care relevant to current medical practice standards in each medical field.
- Breach of duty – Doctors take the Hippocratic Oath that obliges them to provide the best treatment possible to patients. If they do not fulfill that duty they are in breach of that relationship.
- Birth Injury – Injury, or causation of actual harm caused to a patient by a health care provider, including actual cause and proximate cause. The harm must be directly related to the doctor's failed duty of care with resultant injury.
- Damages – Consist of the monetary compensation for the harm caused by a doctor's negligence. In order for a birth injury malpractice case to stand up in court, the injury or harm caused must be able to be remedied by money.
When building a winning strategy for a birth injury malpractice case, all the elements of negligence must be proven. It is also important for medical experts to review medical records and provide independent examination of the child that was injured at birth.
Contact a Washington Navy Yard birth injury malpractice lawyer by visiting USAttorneys.com or call 1-800-672-3103 to speak to a District of Columbia birth injury attorney today.
Expert birth injury medical testimony.
- Independent medical testimony outlines what adequate care at the level of the acceptable medical standards of care for a certain health care problem looks like. Delivery of this dialogue is best undertaken in lay terms of the general public that makes up a jury.
- Expert medical witnesses must be licensed to practice medicine in the state and adequately qualified in the same specialty as the medical professional being sued.
- States have their own specific set of guidelines to govern the choice of medical experts, sharing the basic assumption that a medical witness carry the same professional qualifications as the defendant. In a suit against a nurse, nurses are usually required to testify on the appropriate standard of care. Cases against obstetricians will normally involve independent obstetrician witnesses.
- Some states require a medical health care panel made up of a specific number of experts in the field of medicine that includes the type of birth injury stated in the claim against a health care provider.
Finding a Washington Navy Yard birth injury lawyer is important to get the help you need and the compensation you and your child deserve contact a District of Columbia birth injury lawyer today at USAttorneys.com or by calling 1-800-672-3103.
Statutory restrictions.
- There are some District of Columbia birth injury laws that make it difficult for families and injured patients to file birth injury malpractice lawsuits, including birth injury cases.
- A notice of intent is required in some states before a formal legal action can be initiated against a health care provider, giving a named defendant an opportunity to respond to the victim's allegations surrounding the injury and breach in duty of care.
- Sometimes pre-trial screening panels are utilized in an attempt to settle out of court and free up valuable court time for cases that cannot be settled between parties.
- There has been an increase across the states of pre-trial malpractice screening panels made up of expert attorneys, medical professionals, and former judges. They review birth injury malpractice cases before they are filed, then form and offer an opinion on the facts at issue, saving hours of time in trial.
- Some states allow birth injury malpractice screening panel findings as evidence at trial.
Finding a District of Columbia birth injury attorney is crucial to getting the help you need and the compensation you deserve.
Types of birth injuries.
Bell's Palsy – Bell's palsy is a common name given to temporary forms of facial paralysis, in which the facial nerve loses the ability to transmit electrical signals from the brain to the face. At least 90% of facial nerve paralysis cases resolve spontaneously over a matter of months. Unfortunately, cranial nerve injuries are often the result of birth injury malpractice, especially when birth-assistive devices, including forceps, are used during delivery.
Cerebral Palsy – Cerebral palsy comes in different forms to describe neuromuscular disorders equally, but each cerebral palsy disorder is caused by brain damage, or the abnormal development of brain tissue, and each case is marked by some motor impairment and can impact the way a person moves. They may include:
- Spastic cerebral palsy
- Dyskinetic cerebral palsy
- Ataxic cerebral palsy
All types of cerebral palsy have neuromuscular disorder as a primary problem, but associated symptoms can include difficulty speaking, breathing, or maintaining control of one's bladder and bowels. The totality of these conditions requires intensive healthcare personnel to care for the needs of the brain injured child.
Secondary learning disabilities including intellectual impairment, sensory disabilities and associative conditions may require specialized teachers and therapists. Unlike other neurological disorders, cerebral palsy conditions are not progressive, according to the National Institute of Neurological Disorders and Stroke. That means the brain damage, or malformation, causing a child's symptoms does not get worse over time, but a child's symptoms can change, getting more or less pronounced as they age.
Shoulder dystocia – Shoulder dystocia is a rare birth injury that occurs when one, or both shoulders of an infant become stuck in the mother's pelvis during delivery. While the majority of injuries caused by shoulder dystocia will heal within 6 to 12 months with no long-term complications, there is a risk for permanent disability, or even death in the most severe cases.
Cephalohematoma – Cephalohematoma is usually a minor complication of delivery where blood collects underneath the periosteum, not underneath the skull bones. There is little risk, if any, that this form of hemorrhage could come to affect brain tissue.
Hydrocephalus – The medical condition that researchers call hydrocephalus is often known as "water on the brain" but they really have too much cerebrospinal fluid in their brains. Some babies are born with "congenital" forms of hydrocephalus. Other children develop the condition due to possible physical trauma at the time of birth.
Jaundice and kernicterus – Kernicterus is an extreme form of jaundice, the common newborn condition that turns a baby yellow. While jaundice usually goes away on its own, kernicterus can cause permanent brain damage, along with severe neurological disorders. Jaundice may be a complication of mismanaged pediatric care and are the result of medical negligence.
Wrongful death – Washington Navy Yard birth injury attorneys can answer victim's questions when doctors fail to uphold their professional standards, and tragic mistakes are made leading to personal harm. Not every child's death is the result of a birth injury, but some fatal injuries and medical conditions are caused and/or exacerbated by incompetent obstetricians, nurses, and midwives.
Traumatic brain damage – Traumatic birth injuries are most common in difficult and long labors. Uterine contractions can force a child's head to strike at the mother's pelvis repeatedly. With the infant's skull still developing, brain damage is a frequent result.
Skull fracture birth injuries – Skull fractures are most common during difficult deliveries, especially after an extended (or very long) labor. Long deliveries increase the risk for a skull fracture because the infant's head is put under extreme stress and forceful contractions for extended periods of time.
Preeclampsia – Doctors define preeclampsia as high blood pressure in pregnant women who have never experienced high blood pressure before. The condition constricts blood vessels, which means less blood is able to reach a mother's internal organs. That can lead to organ failure in very severe cases, but it also decreases the amount of blood that is able to reach the fetus.
Premature delivery – In some cases traumatic accidents can come to impact the course of a mother's pregnancy. The major risk after a car accident, or fall is premature birth.
Birth asphyxia – Birth, or perinatal, asphyxia happens when an infant's brain and organs fail to receive sufficient amounts of oxygen around birth, according to the doctors at Johns Hopkins University. Oxygen deprivation can be fatal, or lead to permanent muscular and cognitive impairments.
Find a Washington Navy Yard Birth Injury Lawyer.
There are many forms of birth injuries that are not listed above, and it is a prudent decision to hire a Washington Navy Yard birth injury attorney who can assist in building a strong case against a professional health care provider that causes a birth injury due to acts of medical negligence. A Washington Navy Yard birth injury lawyer will be able to represent victims in court, objectively speak for them against an insurance company's legal team and take steps toward a fair monetary award.
If you or someone you know needs a Washington Navy Yard birth injury lawyer visit USAttorneys.com or call 1-800-672-3103 to speak to a District of Columbia birth injury attorney today.


text:
Analysts to Apple: Bend your knee to Wall Street
Apple needs to start making nice with Wall Street, analysts said Thursday as investors hammered the company's stock.
The sell-off put Apple a hair's-breadth away from losing its status as the world's most valuable company. At Thursday's close, it was worth $423 billion, just 1.6 percent more than No. 2 Exxon Mobil Corp.
The plunge was set off by Apple's quarterly earnings report late Wednesday, which suggested the company's nearly decade-long growth spurt is slowing drastically.
The stock ended down $63.51 or 12 percent, at $450.50. It last traded that low a year ago. It was the biggest one-day percentage drop in the stock since Sept. 29, 2008, when two Wall Street brokerages downgraded the stock because of the recession. In dollar terms, it was the largest ever single-day change in the stock.
Should Apple try to win back the investors who are fleeing? No, analysts say. Investors who bought the stock on the way up will be chasing the next hot stock. The company needs to make itself appealing to a new crop of people who've never considered the stock, analysts say, by doing what Wall Street wants and doling out more of its massive cash pile in the form of more generous dividends and stock buybacks.
Apple's profits for the October-December quarter were flat compared with the year before. It still managed to grow revenue 18 percent from the year before, but the cost of starting up production lines for multiple new products like the iPhone 5 and iPad Mini meant that less revenue flowed to the bottom line. The company's gross profit margin in the recent quarter was 38.6 percent compared with 44.7 percent a year earlier.
Of even more concern to investors: Apple's forecast sales growth for the current quarter is around 7 percent compared with a year ago —far from the 50-percent-plus rate it's often hit in recent years.
Apple usually lowballs its forecasts, but Chief Financial Officer Peter Oppenheimer indicated the company will provide more realistic figures from now on.
To be sure, Apple products haven't lost their appeal. Apple CEO Tim Cook said the company couldn't make enough iPhones, iPads and iMacs in the holiday quarter to satisfy demand. The problem is rather that Apple hasn't launched a revolutionary new product since the iPad in 2010.
It's a lot to ask that a company reinvent consumer electronics every few years, but Apple did it three times in a decade with the launch of the iPod, iPhone and iPad. In doing so, the company left investors with the expectation of perpetually zooming growth.
Now, Apple looks quite different. It's still massively profitable, but its growth is moderate, making it similar to companies like IBM Corp. and Microsoft Corp.
"The company is at a bit of a crossroads," said Nomura Securities analyst Stuart Jeffrey. "It's gone from launching big hit products where they didn't have to look at the competitive landscape — they just did their own thing — and the growth meant they didn't have to focus on the whims of Wall Street."
The problem, Jeffrey said, is that Apple hasn't adjusted to this reality and worked to find new constituencies among investors. Those who invest in fast-growing companies or chase rising stocks have abandoned the company. Apple doesn't do enough to attract other investor types: value investors who seek out the stocks of undervalued companies with steady, predictable profits, and income investors who look for stocks with generous dividends and low risk.
Analyst Brian White at Topeka Capital Markets said the lack of interest from value-oriented investors means Apple lacks a safety net when there's disappointing news, like Wednesday's earnings report. When other companies' stocks fall, value investors tend to swoop in, putting a floor under the stock and dampening volatility.
"No one wants to pay anything for (Apple) because you can't get the value investor to back it up," White said.
Apple sits on a cash pile of $137 billion, which currently earns about 1 percent annual interest. It's a hoard that frustrates many company-watchers, and analysts are virtually unanimous in their opinion that Apple should be putting it to better use.
Apple has taken steps in the right direction, as far as Wall Street is concerned. Last year, it instituted a quarterly dividend of $2.65 per share, a generous sum compared with most technology companies. But it's paltry when measured against companies with similar cash reserves. It has also started using cash to buy back shares — another way to reward investors.
But analysts say the company should be doing more. Jeffrey calculates that Apple will generate about another $103 billion over three years, but has only committed to returning $45 billion of this $240 billion in cash to shareholders.
"The company needs to change strategically in a number of ways... including in looking after shareholders," Jeffrey said.
A higher dividend would appeal to value and income investors, and buybacks would reduce the number of shares outstanding, which in turn would get the company's earnings per share growing again.
White has been one of the biggest Apple cheerleaders on Wall Street. He drew attention in April for setting a $1,111 price target for Apple's stock when the shares were trading around $600.
White backed away from his old price target on Thursday. He said he still believes the company is worth that much, but he has realized he's too far in front of the pack. Investors aren't going to give the company the credit it deserves, in his opinion.
"It's tough for people to get their head around. I can't be a visionary forever," White said.
His new price target: $888. Eight is a lucky number in China, and three eights are extra lucky.
"Look, Apple needs a little luck here," White said.


text:
We are looking for resultado del powerball de la florida to try our luck ourselves and become a lucky one. Each of us wants to experience his own happiness and win a couple of millions, maybe a couple of tens or even hundreds of millions of dollars. We know that with powerball we can do it. Here are some recent major gains: in 2013, one of the lottery participants won 590 million dollars, and in 2017 the winnings amounted to 758.7 million dollars. The largest jackpot was raffled off in 2016 between three lottery participants and the winning amount was 1.5 billion dollars. This became possible, among other things, thanks to the resultado del powerball de la florida.
How to play and resultado del powerball de la florida.
Powerball is the most beloved lottery. To play it, you have to make three simple steps:
Step 1 – Buy a ticket. Tickets are sold in 44 states.
Step 2 – Wait for the draw and check your ticket. Prize drawing takes place every Wednesday and every Saturday.
Step 3 – Get a win. You can get a win by contacting the point of issue of prizes.
Run these three steps you can as resultado del powerball de la florida.
How to win in powerball?
Lucky seekers come up with a variety of strategies to win Jack Pot. Someone buys a lot of tickets at once, someone buys one ticket, but before every draw of prizes. And someone buys tickets for the money left after buying the products.
But know – the creator of the game will always remain in the win, and you luck can bypass. Both the confirmation and the refutation of this is the resultado del powerball de la florida.
All the exhaustive information can be obtained on the official lottery website.
Buy tickets you can on the official lottery website or on special sites selling tickets to the powerball lottery.


text:
At Best Brains of Keller we specialize in teaching students ages 3 to 14 Math, English, Abacus and General Knowledge. Our innovative teachers and staff help children reach their full potential.
Our teaching methodology is non-repetitive and aims to challenge students by introducing new concepts and skills each week. Our comprehensive program is one of a kind and instruction in Math, English, Abacus and General Knowledge can all be found under one roof.


text:
Gallery - iOS7Back to Gallery
All of our wallpapers are compatible with iPhone 5c, iPhone 5 & iPod Touch 5. When you are using parallax "perspective zoon: On", wallpaper size must be 744x1392. When the perspective zoom is off the wallpaper size must be 640x1136.
View iPhone 5 wallpapers with similar tags:


text:
Thursday, December 10, 2009
A Day in the Life of a Neurosurgeon – SERIOUSLY?
34 comments:
Thank you for this post!ReplyDelete
I loved my neurosurgery rotation, but the lifestyle seemed completely untenable for me. Your days sound exciting and cool, and I know the surgeries are cool. But I'm the kind of person who needs more control over my life than that.
Kudos to you for keeping it up!
I cannot imagine what you're going through, and the last paragraph broke my heart. Don't give up on medicine.ReplyDelete
Do you need a vacation? An SSRI?
I think everybody on the planet needs an SSRI. In my view, God created man to wake, hunt the bear, kill the bear, eat the bear then go back to sleep. I don't think man (or woman) was created to deal with PTA meetings and traffic, let alone what you describe above.
Welcome to MiM, guest poster, and I hope we hear from you again. Fabulous post!
- AnonymousDecember 10, 2009 at 10:04 AM
Thank you so much for this post. I really feel the despiration of your last paragraph.ReplyDelete
That was me almost 30 years ago (not neurosurgery, but intensely "over-everythinged")and every now and then, I feel bad about cutting and running for research. Your post brings back full force all of the reasons for my decision.
I know that you were writing this at the end of a long, terrible/wonderful day and you were tired and frustrated, but if you really feel like this most days: in my opinion, a career modification is in order before you miss your entire life in the service of others. You can still serve, you just need to do it in a way that allows time for yourself and your family.
Best of luck and I'm pulling for you. And crying a little for you too.
Wow, thank you for sharing this. It sounds like you're a great doctor and I really admire people like you. I don't know if I could give so much of myself to my work without ending up on the psych ward. I really hope you find a way to strike a balance in your life in a way that makes you happy.ReplyDelete
Nothing in your post says "lazy." One thing that I tell med students is, "Do what you love. You'll be able to find a situtation that works for you." I hope I am not misleading them. I do think that's true in many specialities. There are more part-time options, job-sharing...do you have other options/practices in the area that could give you better job/life satisfaction?ReplyDelete
I think of dr.whoo on this blog who was in a practice/job she was miserable in and has now found so much more happiness and balance in her new one.
Also think it is healthy to look at other jobs and options. Regularly.
Best of luck, gcs.
I am in awe over all that you do and how well you do it. But, wow, I think it's just too much for anyone...certainly for me...and maybe for you, too. Sounds like you need a different partner, for starters. Seems that you are always the giver and your partner is always the taker. There must be neurosurgery practices with more balance (more partners? better partners?). Best of luck to you and hope you will join us, not just as a guest, on this blog! We can all use the support.ReplyDelete
Thanks for the support, everyone - it comes at a much needed time. Anonymous is right, I wrote this at the end of an unexpectedly long, stressful day. December is my worst month, with the holidays added on top of everything else. Maybe I do need a seasonal SSRI during the winter months. I've thought about that before.ReplyDelete
I also do need a vacation - haven't had one for 5 months (when I had my carpal tunnel repaired). Not every day is quite this bad, although some are worse. I do love neurosurgery, and the patients are very rewarding. My 3 partners can be vexing, but as neurosurgeons go, 2 of them are very good to work with. The third I could do without. Certainly there are no better options in the area. It's impossible to do neurosurgery part time - I've seen it tried.
Thank God for an amazing husband who is totally understanding and Type B!
KC, I've said the same thing to my students. I still believe that's true, even in surgical specialties. I'd love to see more women go into neurosurgery despite my post - maybe we could soften the "I can't believe you're asking for help, you lazy slacker" mentality if there were more of us.
Eight years of days like this, fighting the system, have made me get tired and whiny sometimes. Thanks for bearing with me.
I'm just a resident and maybe partner politics precludes this, but it seems to me that you could really benefit from a PA or two (I really hope this schedule isn't with a PA -- if it is, for starters, get him/her doing discharge summaries and H&Ps!) I understand that a lot of the mentality/culture of neurosurgery is control, but if there is one thing that I've learned from being a mom in medicine--help is vital and good, reliable help is often the key to survival.ReplyDelete
gcs15 ~ Great, great post. I so totally "feel" you. You strike me as very hard working and responsible and not a lazy slacker at all. It is just the way we are conditioned in medical/surgical training. "Call me if you need help...but don't call me." Sounds like one of your partners is a gem. I have had recent experience with that. As KC mentioned, I recently underwent a major move and job change. We even moved to a place I swore never to live, and life is so. much. better. At the very least, get thee a vacation!! No break in over 5 months (and no, recovery from surgery does not count!) :)ReplyDelete
God, I am hurting for you. And feeling every bit of your agony, remembering my residency. Not nearly as bad as a neurosurgoen, but still. I agree - love medicine. And find time for your family. Create something new. For yourself and everyone around you.ReplyDelete
Thanks for sharing, especially your honesty about how hard it can be (holidays or not, the day you described would take it out of anyone). My thoughts will remain with you.ReplyDelete
Thank you for sharing GCS15. Neurosurgery, especially caring for acute stroke/ trauma patients is a calling. What you do is amazing. I am struggling too. It is a fight to preserve time away from the hospital. You are not alone my friend.ReplyDelete
- AnonymousDecember 12, 2009 at 10:08 AM
Just curious, how much do you make for this kind of day, Maybe 700K+ every year. That maybe you can call it quits in 15 yearsReplyDelete
- AnonymousDecember 12, 2009 at 7:17 PM
Your last paragraph is heartbreaking. I cried a lot during residency but soldiered on because of the promised light at the end of the tunnel. It sounds like you are sacrificing a lot for your job. I feel for you and hope it gets better. Hugs....ReplyDelete
I just wanted to say thank you. I know you wrote this back at Christmas, but I got on here searching for any moms in surgery. I'm a 3rd year med student and I want to go into a surgical career and I want to have a family. It is important for me to see that it can be done. How are you this spring? Did you get a PA, or a low dose SSRI, or maybe get rid of that one partner, lol? I hope this finds you well. Thank you again for your post, for being a female in Neurosurgery, and for all you do for people!ReplyDelete
- AnonymousSeptember 26, 2010 at 10:09 PM
Do you ever wonder why your child needs all this medication to cope? You seem to be a great mother to your patients. No doubt about that. But who is mothering your son? At the end of the day, it doesn't matter how many patients you save. What matters the most is that your son gets the love and attention he needs. And he isn't getting that. You are clearly an excellent doctor. But pay attention to your guilt. It is telling you something true.ReplyDelete
- AnonymousDecember 11, 2010 at 5:07 PM
To GCS15:ReplyDelete
What are the pros and cons of being a neurosurgeon?
- AnonymousFebruary 12, 2011 at 1:37 AM
I had two brain surgeries and wonder how much concentration a surgeon puts into one patient during the op with so much stuff going through their minds.ReplyDelete
I discovered that I'm not a good multitasker. All the medical research indicates that the human brain unlike a computer cannot multi-task so why are all the companies requiring it?
- AnonymousMay 12, 2011 at 11:04 AM
Thanks for this really honest post. I need as much informaton as I can get before starting medical school. I feel motivated to become a neurosurgeon, but keep looking for reasons to not do it. I know it's hard. I had a practical question: When you operate until 4 AM, do you still have to wake up at 6 AM the next day and have a full day?ReplyDelete
- AnonymousJuly 6, 2011 at 9:26 AM
Hi, im a 14 year old high school student, and to be a neurosurgeon has been my dream since i was very young, and reading your post has been such an insipiration, but it all seems soo confusing and i know i have a long way to go,all your abbrevations are very confusing..but thank you..now i ahve much of an idea of what im going to be doing so i can get mentally prepared for it..ReplyDelete
- AnonymousOctober 2, 2011 at 12:35 PM
Thank you for your post. I am a vascular surgeon who was expecting the "light at the end of the tunnel" and isn't findng it. I feel that I have given up so much and there is no end in sight. My days all seem to be like the one you described.ReplyDelete
How did you get past this? I am hopeful it can be done given your "balance" post
- AnonymousOctober 12, 2011 at 10:40 AM
Bless you for trying so hard with your life.ReplyDelete
I hope you will find a way to count yourself amongst those who need your love, and find more balance in your life.
True heart
- AnonymousJanuary 30, 2012 at 10:02 PM
Be thankful. You have incredible job stability. You will never have difficulty paying your mortgage or putting food on the table. You are very well respected in the community for your profession and you are rewarded handsomely for the hours you put in. Contrast that with scores of people who struggle to do all of the above and you may see things in a different perspective.ReplyDelete
- AnonymousMarch 1, 2012 at 8:38 PM
Looks just like the schedule--in terms of time management and attending to critical life and death situations and vital communications--of a life support specialist (RT). Of course, because nobody knows what RTs do, they get little exposure (or the appropriate compensation.) The doctor leaves before 6:30 which leaves RTs to deal with the families, calling doctors, weaning patients off life support,making sure patients don't die on the life support,etc.ReplyDelete
- AnonymousMarch 1, 2012 at 9:57 PM
Totally overrated. I watched a neurosurgery in person. The doctor has a screen to see exactly where he/she is going with the instruments. About 30% of neurosurgery patients will die. The fascination with neurosurgery is the belief that some people have the power of life and death. Only God can save lives. We are all tools to accomplish this. Nurses,doctors, life support specialists, speech language pathologists, physical therapy and occupational therapy make it all possible. I am tire of the idolatrous blasphemy of people who think one medical profession is "the best". It is just the messiah complex as far as I am concerned. It is good to see a woman as a surgeon. Too many go into OBGyn and pediatrics. Besides, given the fact that most surgeons are arrogant,elitist,pompous,despotic, contemptible gits, I have serious reservations about their motivations. If their heart is in the right place, I am happy for them. It is usually just for money, power and prestige--all ego manifestations. To those who are genuinely humble, kind and caring, my hat goes off to them. They are the people who make medicine worthwhile.ReplyDelete
I, for one, really appreciate that you shared this. I'm a pre-med student and I've been thinking about neurosurgery for about a year and really looking into it (what I thought was) really in-depth. But nothing quite has summed up the actual work in reality like this post has. All that being said, we'll see how far I make it since I live for a good challenge ;)ReplyDelete
Great post but think about the feeling after helping someone in need. Think about the lives that you have saved. I would imagine being able to do all these thinks will help you realize that you missed being with your family for a great cause(helping people and saving their lives) That is why I want to be a Neurosurgeon!!!ReplyDelete
This is an amazing post. You are saving lives, and you're job is what i aspire to be. You're a loving mother, have children and working in such an amazing and rewarding field! It breaks my heart that you are feeling overwhelmed, but you are an amazing person and are doing so much. I just hope one day I could be were you are..ReplyDelete
Thank you very much for your wonderful and encouraging post !! Your truly a strong and wonderful person , women like you give us women such great hopes and encouragements . I really want to become trauma surgeon in future :) , I would really love to become a surgeon and a mother at the same time . Your all really helpful for us women who wants to become surgeons in near future . Please post more articles about managing both career and family life , we all support every women in this medical career and also never give up your dreams .Thank you and have a nice day ahead :) .ReplyDelete
Thank you so much for this post. I am a first year medical student who is interested in neurosurgery. You just gave me a glimpse of what my day would/will be like. Your schedule should scare me but for some odd reason it doesn't. In the past, I have dedicated 12+ hours a day performing job duties that I did not enjoy so I figured maybe, just maybe, I would be happy dedicating such hours to a field that I love. I am currently looking for opportunities to experience the daily activities of a neurosurgeon in order to finalize my future career path and I am grateful because you helped paved the way for women such as myself. Please do not give up. Others appreciate your hard work and dedication. Your patients appreciate you even if they do not verbalize or show it.ReplyDelete
Thank you so much for this post. I am a first year medical student who is interested in neurosurgery. You just gave me a glimpse of what my day would/will be like. Your schedule should scare me but for some odd reason it doesn't. In the past, I have dedicated 12+ hours a day performing job duties that I did not enjoy so I figured maybe, just maybe, I would be happy dedicating such hours to a field that I love. I am currently looking for opportunities to experience the daily activities of a neurosurgeon in order to finalize my future career path and I am grateful because you helped paved the way for women such as myself. Please do not give up. Others appreciate your hard work and dedication. Your patients appreciate you even if they do not verbalize or show it.ReplyDelete
Wonderful post, I wasn't expecting the last paragraph, I thought it would end on a high note but it didn't. As a first year medical school student I commend you for the dedication you have put into your profession. You have inspired me in more ways than one.ReplyDelete
gcs15, i apologize if this is inappropriate, but i could really use your advice and wisdom.ReplyDelete
i am a neurosurgery resident who is on the brink of leaving. it's just certain life & family circumstances that have led to this crossroads. i found your post and just wanted to ask you a few things about your experience, tell you a little bit about mine, and get your insight and advice. it feels like a chasm i have to cross and your words would really mean a lot to me.
it doesn't seem like there's a good way to contact writers on this blog, hence posting a reply to your post, trying to get your attention. please let me know what would be easiest for you in terms of chatting or emailing outside this forum (would rather the details of my story not be public yet). alternatively, you can contact me at firstname.lastname@example.com.
thank you so much,
Hi there, what a sad ending... It is making me rethink all my life choices, really. I'm a high school student whose dream is to become a neurosurgeon. This year I'm going to have to chose between living the med life or the physics life. I am so unsure, mostly because I would like to have lived a full life, if you know what I mean, and perhaps start a family around my mid-30s. If you have some piece of advise I would love to hear!!ReplyDelete
Keep strong, one is never to late to change his path. Actually my biology teacher used to be in the investigative field but quit and started teaching so she could have more time with her family.
Thank you for this amazing post