Applications communicate with users through a "user interface." The system needs a way of grouping the user-interface components together. For this reason, most applications will have a GenPrimary object. This object serves as the top-level object in the user interface tree.
GenPrimaryClass
is a subclass of
GenDisplayClass
. The GenDisplay object, like the GenPrimary object, manages other pieces of the user interface (menus, triggers, text objects, etc.). Furthermore, the GenDisplay object is a great boon to applications that need to perform several tasks at once (as, for example, a word processor which can have several files open at once). An application can have several GenDisplay objects, all of them children of a GenDisplayGroup object. Collectively, displays and primaries are called
windows
. All windows have certain functionality in common; that functionality can vary according to the specific UI.
The Document Control objects can be set to create GenDisplay objects when files are opened and to attach them automatically to a GenDisplayGroup. This enormously simplifies managing multiple documents. See the Documents chapter for information on the Document Control objects.
These objects are very simple to use. In particular, the GenPrimary is very easy to declare and use. Although all applications use the GenPrimary, many will not need the GenDisplay. However, because
GenPrimaryClass
is a subclass of
GenDisplayClass
, this chapter begins with an overview of
GenDisplayClass
, then continues with a full discussion of
GenPrimaryClass
, and concludes with advanced information about
GenDisplayClass
. Before reading this chapter, you should be familiar with the use and creation of generic user interface objects.
1 A First Look at GenDisplay
1.1 GenDisplay Object Structure
1.2 Minimizing and Maximizing
2 Using the GenPrimary
3 Using Multiple Displays
3.1 GenDisplayGroup
3.2 GenDisplayControl
3.3 Using GenDisplayClass Objects
Not all applications will need to use GenDisplay objects. However, almost all applications will have a GenPrimary object. Since
GenPrimaryClass
is a subclass of
GenDisplayClass
, programmers should be acquainted with
GenDisplayClass
.
This section describes the data fields of
GenDisplayClass
and certain useful messages. It does not have all the information you will need to create these objects. If you will be using GenDisplay objects in your application, you will have to read Using Multiple Displays
.
The GenDisplay object is a subclass of
GenClass
and therefore inherits all the data fields and attributes of that class. It has few data fields that are set by the application; these fields are listed in Instance Data of GenDisplayClass
.
Code Display 4-1 Instance Data of GenDisplayClass
/* There are only two instance fields specifically defined for GenDisplayClass. * Also, an instance field for GenClass, GI_attrs, has different defaults in * GenDisplayClass. */
/* GDI_attributes is a one-byte field for attributes flags. There is only one flag * defined for this field, namely GDA_USER_DISMISSABLE, which is on by default. */ @instance GenDisplayAttrs GDI_attributes = GDA_USER_DISMISSABLE;
/* The GenDisplay object has a datum for an optr to a document object. If a * Document Control is used to create display objects, it will associate each * display with a document object; each will have an optr to the other. */ @instance optr GDI_document;
/* The default setting of GI_attrs is different in GenDisplayClass than it is in * GenClass: */ @default GI_attrs = (@default | GA_TARGETABLE | GA_KBD_SEARCH_PATH);
/* The following hints specify whether the display should be minimized or * maximized when it is built, and its appearance when minimized. */ @vardata void HINT_DISPLAY_MINIMIZED_ON_STARTUP; @vardata void HINT_DISPLAY_NOT_MINIMIZED_ON_STARTUP; @vardata void HINT_DISPLAY_MAXIMIZED_ON_STARTUP; @vardata void HINT_DISPLAY_NOT_MAXIMIZED_ON_STARTUP; @vardata void HINT_DISPLAY_USE_APPLICATION_MONIKER_WHEN_MINIMIZED;
/* The following hints and attributes indicate whether the user should be able to * minimize, maximize, or resize the window. */ @vardata void ATTR_GEN_DISPLAY_NOT_MINIMIZABLE; @vardata void ATTR_GEN_DISPLAY_NOT_MAXIMIZABLE; @vardata void HINT_DISPLAY_NOT_RESIZABLE;
/* ATTR_GEN_DISPLAY_NOT_RESTORABLE indicates that the user should not be able to * de-maximize the display once it is maximized. */ @vardata void ATTR_GEN_DISPLAY_NOT_RESTORABLE;
/* ATTR_GEN_DISPLAY_TRAVELING_OBJECTS is the ChunkHandle of a list of "traveling * objects;" these objects are made the children of whichever GenDisplay is on top * in a given display region (see Traveling Objects).*/ @vardata ChunkHandle ATTR_GEN_DISPLAY_TRAVELING_OBJECTS;
/* The following hints and attributes specify whether the display's menu bar * appears and whether it appears as a "popped out" floating menu. */ @vardata void HINT_DISPLAY_MENU_BAR_HIDDEN_ON_STARTUP; @vardata void TEMP_GEN_DISPLAY_MENU_BAR_HIDDEN; @vardata void ATTR_GEN_DISPLAY_MENU_BAR_POPPED_OUT; @vardata void HINT_DISPLAY_USE_APPLICATION_MONIKER_WHEN_MENU_BAR_POPPED_OUT;
/* The GenDisplay uses the following vardata fields to store its * minimized/maximized state across a shutdown. You should not access these * fields. If you want to find out if a GenDisplay is minimized or maximized, send * it MSG_GEN_DISPLAY_GET_MINIMIZED or MSG_GEN_DISPLAY_GET_MAXIMIZED. */ @vardata void ATTR_GEN_DISPLAY_MINIMIZED_STATE; @vardata void ATTR_GEN_DISPLAY_MAXIMIZED_STATE;
/* HINT_DISPLAY_DEFAULT_ACTION_IS_NAVIGATE_TO_NEXT_FIELD specifies the default * action for the GenDisplay. */ @vardata void HINT_DISPLAY_DEFAULT_ACTION_IS_NAVIGATE_TO_NEXT_FIELD;
MSG_GEN_DISPLAY_GET_ATTRS, MSG_GEN_DISPLAY_SET_ATTRS
The GenDisplay object has a one-byte record called
GDI_attributes
to store attribute flags. There is only one attribute flag, namely GDA_USER_DISMISSABLE
. If this attribute is set, the user can dismiss a display through the UI (without choosing a command in the application). Details of this depend on the specific UI; for example, in OSF/Motif, the user could dismiss a display by double-clicking the "Control button."
GenDisplayAttrs MSG_GEN_DISPLAY_GET_ATTRS();
This message retrieves the GDI
_attributes
field from the destination object.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object.
Return: A
GenDisplayAttrs
record. The only flag defined is GDA_USER_DISMISSABLE.
Interception: This message is not normally intercepted.
void MSG_GEN_DISPLAY_SET_ATTRS( GenDisplayAttrs attrs);
This message changes the
GenDisplayAttrs
field of the destination object.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Parameters:
attrs
Field of
GenDisplayAttrs
flags. There is only one flag defined, namely GDA_USER_DISMISSABLE.
Interception: This message is not normally intercepted.
Applications often use the Document Control objects to manage files. With this mechanism, every file is associated with a document object. Often, each file will have its own GenDisplay object as well. In this case, GDI
_document
will contain an optr to the GenDocument object associated with this GenDisplay. For more information on this, see Using Multiple Displays
. The Document Control objects create and destroy the GenDisplays automatically, and set this field accordingly. The GenDisplay object uses this field only when the display is closed; see Closing GenDisplays
. To retrieve the value of this field, send MSG_GEN_DISPLAY_GET_DOCUMENT to the display (see Messages sent to GenDisplays
).
MSG_GEN_DISPLAY_SET_MINIMIZED, MSG_GEN_DISPLAY_SET_NOT_MINIMIZED, MSG_GEN_DISPLAY_GET_MINIMIZED, MSG_GEN_DISPLAY_SET_MAXIMIZED, MSG_GEN_DISPLAY_SET_NOT_MAXIMIZED, MSG_GEN_DISPLAY_GET_MAXIMIZED, HINT_DISPLAY_MINIMIZED_ON_STARTUP, HINT_DISPLAY_NOT_MINIMIZED_ON_STARTUP, HINT_DISPLAY_MAXIMIZED_ON_STARTUP, HINT_DISPLAY_NOT_MAXIMIZED_ON_STARTUP, ATTR_GEN_DISPLAY_NOT_MINIMIZABLE, HINT_DISPLAY_NOT_MAXIMIZABLE, ATTR_GEN_DISPLAY_NOT_RESTORABLE, HINT_DISPLAY_DEFAULT_ACTION_IS_NAVIGATE_TO_NEXT_FIELD
Windows (i.e. displays and "primary" windows) can be resized by the user. How resizing is done depends on the specific UI; for example, in OSF/Motif, a user resizes a window by dragging its edge. Most specific UIs also allow the user to "minimize" or "maximize" a window. When a window is maximized, it is expanded to fill all available space; that is, a primary window will fill the screen, while a GenDisplay will fill the display area. Windows can also be "minimized." A window's behavior when it is minimized depends on the specific UI. For example, in OSF/Motif, a minimized Primary is displayed as an icon at the bottom of the screen; a minimized Display is removed from the display area, but stays in the display control's display list.
Most of the mechanics of minimizing and maximizing windows is taken care of by the specific UI. For example, OSF/Motif provides minimize and maximize buttons on all Displays and Primaries which do not specifically disable the functionality. However, an application can send messages to Primary and Display objects to change their minimized/maximized state, or to find out what the current state is.
If you do not wish to have a window be minimizable, you can set the vardata flag ATTR_GEN_DISPLAY_NOT_MINIMIZABLE. Similarly, if you do not wish the window to be maximizable, you can set the flag ATTR_GEN_DISPLAY_NOT_MAXIMIZABLE. These instruct the specific UI not to provide the controls for minimizing and maximizing.
You can find out whether a window is currently minimized by sending it MSG_GEN_DISPLAY_GET_MINIMIZED. Similarly, you can find out whether the window is maximized by sending MSG_GEN_DISPLAY_GET_MAXIMIZED.
If a GenDisplay or GenPrimary has the vardata
HINT_DISPLAY_MINIMIZED_ON_STARTUP
, the object will be created in its minimized state. Similarly, if you set HINT_DISPLAY_NOT_MINIMIZED_ON_STARTUP, the display will be created in its non-minimized form. If you set HINT_DISPLAY_MAXIMIZED_ON_STARTUP, the specific UI will create the object in its maximized state; correspondingly, if you set HINT_DISPLAY_NOT_MAXIMIZED_ON_STARTUP, the specific UI will create the display in a non-maximized state. As with all hints, the specific UI may ignore these directives. If you set conflicting hints (for example, both
HINT_DISPLAY_MINIMIZED_ON_STARTUP
and HINT_DISPLAY_MAXIMIZED_ON_STARTUP), the results are undefined.
Most displays which can be maximized can also be "restored"; that is, a control is provided which de-maximizes the object, restoring it to the size it was before it was maximized. If the object has the attribute ATTR_GEN_DISPLAY_NOT_RESTORABLE, this control will not be provided; once a display is maximized, the user will not be able to un-maximize it. This hint is generally set only for GenDisplay objects that are maximized on startup.
If you do not want a user to be able to resize a GenDisplay or GenPrimary, set the vardata HINT_DISPLAY_NOT_RESIZABLE. The specific UI will not provide the means for the user to resize the window. This hint will not prevent the user from minimizing or maximizing the display.
If you want the user to be able to navigate from GenDisplays using TAB navigation, add
HINT_DISPLAY_DEFAULT_ACTION_IS_NAVIGATE_TO_NEXT_FIELD
to the object's instance data.
void MSG_GEN_DISPLAY_SET_MINIMIZED();
This message instructs a display or primary object to minimize itself. The result depends on the specific UI. Primary windows are usually iconified; display windows might be iconified or temporarily removed. If the window is already minimized, the message has no effect.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Interception: You should not change the behavior of this message. You may intercept this message to find out when a window is being minimized; however, you should make sure to pass this message on to the superclass.
void MSG_GEN_DISPLAY_SET_MAXIMIZED();
This message instructs a display or primary object to maximize itself. If the window is already maximized, the message has no effect.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Interception: You should not change the behavior of this message. You may intercept this message to find out when a window is being maximized; however, you should make sure to pass this message on to the superclass.
void MSG_GEN_DISPLAY_SET_NOT_MINIMIZED();
This message instructs a display or primary object to de-minimize itself. It will generally be restored to its position and configuration as of the time it was minimized. If the window is not minimized, the message has no effect.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Interception: You should not change the behavior of this message. You may intercept this message to find out when a window is being de-minimized; however, you should make sure to pass this message on to the superclass.
void MSG_GEN_DISPLAY_SET_NOT_MAXIMIZED();
This message instructs a display or primary object to de-maximize itself. It will generally be restored to its position and configuration as of the time it was maximized. If the window is not maximized, the message has no effect.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Interception: You should not change the behavior of this message. You may intercept this message to find out when a window is being de-maximized; however, you should make sure to pass this message on to the superclass.
Boolean MSG_GEN_DISPLAY_GET_MINIMIZED();
This message indicates whether the recipient is minimized.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Return: Returns true (i.e. non-zero) if recipient is minimized; otherwise, it returns false (i.e. zero).
Interception: You should not intercept this message.
Boolean MSG_GEN_DISPLAY_GET_MAXIMIZED();
This message indicates whether the recipient is maximized.
Source: Unrestricted.
Destination: Any GenDisplay or GenPrimary object
.
Return: Returns true (i.e. non-zero) if recipient is maximized; otherwise, it returns false (i.e. zero).
Interception: You should not intercept this message.
MSG_GEN_PRIMARY_GET_LONG_TERM_MONIKER, MSG_GEN_PRIMARY_USE_LONG_TERM_MONIKER, MSG_GEN_PRIMARY_REPLACE_LONG_TERM_MONIKER, HINT_PRIMARY_FULL_SCREEN, HINT_PRIMARY_NO_FILE_MENU, HINT_PRIMARY_NO_EXPRESS_MENU, HINT_PRIMARY_OPEN_ICON_BOUNDS, HINT_PRIMARY_NO_HELP_BUTTON
Almost every application will have a single GenPrimary object. GEOS uses the GenPrimary to create and manage the primary window of an application. A few applications may have several GenPrimary objects; a very few will have no GenPrimary at all. (Applications with no GenPrimary generally do not have any user interface; they often are intended to work with other applications, communicating via streams.)
The structure of the GenPrimary object is almost the same as that of GenDisplay. The instance data definitions for
GenPrimaryClass
are shown in Instance data for GenPrimaryClass
below.
Code Display 4-2 Instance data for GenPrimaryClass
/* There is only one instance field specifically defined for GenPrimaryClass. */
/* A GenPrimary object can have a long moniker, which is displayed at the top of * the window. The moniker is stored in a chunk in the object block containing the * GenPrimary; the attribute GPI_longTermMoniker contains the handle of this * chunk. The long-term moniker is described below.*/ @instance ChunkHandle GPI_longTermMoniker;
/* GenPrimaryClass also modifies the default GI_attrs settings. */ @default GI_attrs = @default | GA_TARGETABLE;
/* HINT_PRIMARY_FULL_SCREEN indicates that the primary object should be sized to * fill a large portion of the screen. If this hint is not present, the Primary * will be just large enough to accommodate its children.*/ @vardata void HINT_PRIMARY_FULL_SCREEN;
/* Ordinarily, every Primary window is created with a File menu. You can suppress * this by including HINT_PRIMARY_NO_FILE_MENU. */ @vardata void HINT_PRIMARY_NO_FILE_MENU;
/* Also by default, any launched Primary window gets added to the Express Menu. If * you wish to suppress this behavior, add HINT_PRIMARY_NO_EXPRESS_MENU. */ @vardata void HINT_PRIMARY_NO_EXPRESS_MENU;
/* If a primary object is minimizable, the location of the minimized primary is * stored in the vardata field HHINT_PRIMARY_OPEN_ICON_BOUNDS. */ @vardata Rectangle HINT_PRIMARY_OPEN_ICON_BOUNDS
/* By default, all primary windows have a "help" button; when the user clicks on * it, the window's help text is brought up. If you don't want the primary to * provide help text, you can use the hint HINT_PRIMARY_NO_HELP_BUTTON. */ @vardata void HINT_PRIMARY_NO_HELP_BUTTON;
When a Primary window is created, it is usually sized to contain all of its components. However, you can suggest that it be sized to fill almost all the screen by setting the hint
HINT_PRIMARY_FULL_SCREEN
. This hint says that the Primary should be sized to fill a large portion of the screen, though not all of it. (For example, OSF/Motif sets the Primary to fill the whole screen except for a narrow space for icons at the bottom.) If this hint is not present, the Primary will be just large enough to accommodate its children.
A GenPrimary normally creates a File menu within its menu bar. To suppress creation of this file menu, add
HINT_PRIMARY_NO_FILE_MENU
. GenPrimarys, by default, are also added to the list of active applications within the system's express menu. Add
HINT_PRIMARY_NO_EXPRESS_MENU
if you wish to avoid adding the launched GenPrimary to the express menu.
When a Primary is minimized, it is displayed as an icon with a caption beneath it. The icon and caption will be taken from the Primary's moniker list (GI
_visMoniker
). If the Primary lacks either a text moniker or a graphic moniker, the missing moniker will be read from the Application object's GI
_visMoniker
field. Most applications will not set GI
_visMoniker
in the Primary object, since it would usually mean duplicating the monikers already in the Application object. However, some applications will set this (e.g. because they have several Primary objects and want each one to have a different icon when minimized).
When the Primary is expanded from a minimized state, its minimized location is stored in the hint HINT_PRIMARY_OPEN_ICON_BOUNDS. The next time the Primary is minimized, it will be returned to that location.
GPI_longTermMoniker
contains a secondary moniker for the Primary object. This moniker is displayed along with the Primary moniker, in a way which depends on the specific UI. (In OSF/Motif, the Primary's text monikers are shown in its title bar: first the text moniker from GI
_visMoniker
, then a dash, then the moniker from
GPI_longTermMoniker
.) If the GenPrimary has a GenDisplayGroup as a child, the GenDisplayGroup will automatically set this field to contain the moniker of the top-most GenDisplay. The application can override this by sending the Primary MSG_GEN_PRIMARY_USE_LONG_TERM_MONIKER, described below.
Most Primary objects will have help text; under most specific UIs, the Primary will have a "help" button to bring up this text. If you don't want to provide help text, you should set the hint
HINT_PRIMARY_NO_HELP_BUTTON
.
ChunkHandle MSG_GEN_PRIMARY_GET_LONG_TERM_MONIKER();
Use this message to find out the moniker of a GenPrimary object. The message returns the chunk handle of the moniker; the moniker is in the same block as the GenPrimary object.
Source: Unrestricted.
Destination: GenPrimary.
Return: Returns the chunk handle of the primary's long-term moniker. The chunk is in the same object block as the GenPrimary.
Interception: This message is not ordinarily intercepted.
void MSG_GEN_PRIMARY_USE_LONG_TERM_MONIKER( ChunkHandle moniker); /* must be in same object block as * primary */
This message instructs a primary window to change its long-term moniker. The new long-term moniker must already be in a chunk in the same object block as the Primary. The chunk containing the obsolete long-term moniker will not be freed; you must do this manually.
Source: Unrestricted.
Destination: GenPrimary.
Parameters: moniker ChunkHandle of chunk in same object block as the GenPrimary. The chunk should contain the new long-term moniker.
Interception: This message is not ordinarily intercepted.
void MSG_GEN_PRIMARY_REPLACE_LONG_TERM_MONIKER(@stack VisUpdateMode updateMode, word height, word width, word length, VisMonikerDataType dataType, VisMonikerSourceType sourceType, dword source);
This message is used to replace a primary's long term moniker with a new one. This message's arguments are precisely like those to the message
MSG_GEN_REPLACE_VIS_MONIKER
. Note that a long term moniker is ordinarily a simple text string. For more information, see the GenClass chapter.
Source: Unrestricted.
Destination: GenPrimary.
Parameters: The parameters are the same as those for
MSG_GEN_REPLACE_VIS_MONIKER
.
Return: Returns the chunk handle of the new long-term moniker. The moniker will be allocated in the Primary's object block.
Interception: This message is not ordinarily intercepted.
Many applications will need to have several similar user interface areas. For example, a word processor might have several documents open at once; each of these would need its own text area. GEOS provides a facility for this.
An application can have several GenDisplay objects, each of which must be a child of a GenDisplayGroup object. The user can then switch back and forth between the displays using the GenDisplayControl (which is usually a child of a "Window" menu). The switching is transparent to the application.
If the application uses one display for each document, it should use the Document Control objects to create the displays. The Document Control can automatically duplicate a resource containing a generic object tree headed by a GenDisplay and make that GenDisplay a child of the GenDisplayGroup each time a document is opened or created. For details, see the Documents Objects chapter.
If an application uses GenDisplay objects, it must have a GenDisplayGroup object. This object makes sure there is space in the GenPrimary for the displays.
The GenDisplayGroup must be either a child of the GenPrimary (in which case the specific UI will decide where to put the display area) or a child of a
GenInteraction
which is a child of the GenPrimary (if the application wants the display area in a specific part of the GenPrimary). The GenDisplayGroup should be run by the UI thread.
GenDisplayGroupClass
has no instance data which may be set or examined by the application. However,
GenDisplayGroupClass
is a subclass of
GenClass
, and inherits all of its instance data. When you declare a GenDisplayGroup, you may specify its
GenClass
instance data normally; you may also include any of the hints described in the following sections.
HINT_DISPLAY_GROUP_SEPARATE_MENUS, HINT_DISPLAY_GROUP_ARRANGE_TILED, HINT_DISPLAY_GROUP_FULL_SIZED_ON_STARTUP, HINT_DISPLAY_GROUP_OVERLAPPING_ON_STARTUP, HINT_DISPLAY_GROUP_FULL_SIZED_IF_TRANSPARENT_DOC_CTRL_MODE, HINT_DISPLAY_GROUP_TILE_HORIZONTALLY, HINT_DISPLAY_GROUP_TILE_VERTICALLY, HINT_DISPLAY_GROUP_SIZE_INDEPENDENTLY_OF_DISPLAYS
GenDisplayGroupClass is a subclass of GenClass. Other than vardata, this class adds no other instance data. There are several hints defined for
GenDisplayGroupClass
. Most of these hints specify how displays should be arranged on startup.
Code Display 4-3 GenDisplayGroup Instance Data
/* GenDisplayGroupClass adds no instance fields. It does modify the default * GI_attrs settings, however. */ @default GI_attrs = @default | GA_TARGETABLE;
/* This hint allows each GenDisplay to contain its own menu bar. */ @vardata void HINT_DISPLAY_GROUP_SEPARATE_MENUS;
/* These hints specify how a GenDisplayGroup will arrange its GenDisplays. */ @vardata void HINT_DISPLAY_GROUP_ARRANGE_TILED; @vardata void HINT_DISPLAY_GROUP_FULL_SIZED_ON_STARTUP; @vardata void HINT_DISPLAY_GROUP_OVERLAPPING_ON_STARTUP; @vardata void HINT_DISPLAY_GROUP_FULL_SIZED_IF_TRANSPARENT_DOC_CTRL_MODE; @vardata void HINT_DISPLAY_GROUP_TILE_HORIZONTALLY; @vardata void HINT_DISPLAY_GROUP_TILE_VERTICALLY; @vardata void HINT_DISPLAY_GROUP_SIZE_INDEPENDENTLY_OF_DISPLAYS;
/* These attributes affect the availability of overlapping and * full-sized states. */ @vardata void ATTR_GEN_DISPLAY_GROUP_NO_FULL_SIZED; @vardata void ATTR_GEN_DISPLAY_GROUP_NO_OVERLAPPING; @vardata void ATTR_GEN_DISPLAY_OVERLAPPING_STATE;
In some specific UIs (such as OSF/Motif), menus which are children of a GenDisplay object may appear in two ways: they may be drawn on the Primary's menu bar (the default in OSF/Motif), or they may appear in a menu bar on the display itself. HINT_DISPLAY_GROUP_SEPARATE_MENUS indicates that each display should be given its own menu bar (if the specific UI permits this).
There are several hints which specify how the displays should be configured when the GenDisplayGroup is built.
HINT_DISPLAY_GROUP_FULL_SIZED_ON_STARTUP indicates that the GenDisplayGroup should be in full-size mode on startup; that is, all of its children should be maximized.
HINT_DISPLAY_GROUP_OVERLAPPING_ON_STARTUP indicates that the GenDisplayGroup should be in overlapping mode on startup; that is, its children should be non-maximized.
HINT_DISPLAY_GROUP_FULL_SIZED_IF_TRANSPARENT_DOC_CTRL_MODE
forces a GenDisplayGroup to start full-sized if the application is in "transparent document control" mode, which is set by the user level of the application. This hint overrides
HINT_DISPLAY_GROUP_OVERLAPPING_ON_STARTUP
, if present.
HINT_DISPLAY_GROUP_ARRANGE_TILED indicates that the GenDisplayGroup should be in overlapping mode on startup, and further that the displays should be tiled; that is, they should be non-maximized and arranged in a non-overlapping way to fill the display area.
You can specify a preference for how the displays should be tiled by setting HINT_DISPLAY_GROUP_TILE_HORIZONTALLY or HINT_DISPLAY_GROUP_TILE_VERTICALLY . HINT_DISPLAY_GROUP_TILE_HORIZONTALLY indicates that you want tiled displays to be arranged horizontally, with each display tall enough to fill the display area. Similarly, HINT_DISPLAY_GROUP_TILE_VERTICALLY indicates that you want tiled displays to be arranged vertically, with each display wide enough to fill the display area. If both hints are set, the result varies depending on the specific UI.
HINT_DISPLAY_GROUP_SIZE_INDEPENDENTLY_OF_DISPLAYS
sizes a GenDisplayGroup by what its parent wants rather than what any of its children GenDisplays want. This may improve geometry performance in a complex GenPrimary/GenDisplay combination.
MSG_GEN_DISPLAY_GROUP_SET_OVERLAPPING, MSG_GEN_DISPLAY_GROUP_SET_FULL_SIZED, MSG_GEN_DISPLAY_GROUP_GET_FULL_SIZED, MSG_GEN_DISPLAY_GROUP_TILE_DISPLAYS, ATTR_GEN_DISPLAY_GROUP_NO_FULL_SIZED, ATTR_GEN_DISPLAY_GROUP_NO_OVERLAPPING, ATTR_GEN_DISPLAY_GROUP_OVERLAPPING_STATE
The GenDisplayGroup can be in "full-sized" or "overlapping" mode. If the GenDisplayGroup is in "full-size" mode, all of its children are maximized (except any displays which are set "non-maximizable"). If it is not in full-sized mode, it is said to be in "overlapping" mode; that is, none of its children are maximized. When a user maximizes any display which belongs to a GenDisplayGroup, the GenDisplayGroup automatically goes into "full-size" mode and maximizes all of its children.
If you include ATTR_GEN_DISPLAY_GROUP_NO_FULL_SIZED, the GenDisplayControl will not be able to go into full-size mode; it will always be in overlapping mode. Similarly, if set ATTR_GEN_DISPLAY_GROUP_NO_OVERLAPPING , the GenDisplayControl will not be able to go into overlapping mode; it will always be in full-sized mode, and all displays will always be maximized. Naturally, you may not include both of these attributes at once; if you do, results are undefined.
Messages are provided which switch the GenDisplayGroup into one or another of these modes. You might not need to use any of these messages. If you use a GenDisplayControl object, the user will be able to switch from overlapping to full-size and also to tile the displays by using that object. However, you can also send the following messages directly.
You can set a GenDisplayGroup to full-sized mode by sending it the message MSG_GEN_DISPLAY_GROUP_SET_FULL_SIZED. This message causes the GenDisplayGroup to maximize every one of its children. Children which cannot be maximized will be unaffected. The window layering and focus/target settings are not changed.
You can set a GenDisplayGroup to overlapping mode by sending it the message MSG_GEN_DISPLAY_GROUP_SET_OVERLAPPING. This message causes a GenDisplayGroup object to de-maximize all of its children. Children which are not restorable will be unaffected. The window layering and focus/target settings are not changed.
You can find out whether a GenDisplayGroup object is in full-sized mode by sending it
MSG_GEN_DISPLAY_GROUP_GET_FULL_SIZED
. If the GenDisplayGroup is in full-sized mode, this message will return
true
.
You can also put a GenDisplayGroup into "tiled" mode. This is a special case of overlapping mode. When a GenDisplayGroup is put in tiled mode, it first puts itself in overlapping mode. It then attempts to arrange and resize its display children so they fill the display area without overlapping. To put a GenDisplayGroup into tiled mode, send it the message
MSG_GEN_DISPLAY_GROUP_TILE_DISPLAYS
.
The GenDisplayGroup keeps track of its overlapping state across shutdowns. It does this by setting ATTR_GEN_DISPLAY_GROUP_OVERLAPPING_STATE. Applications may not set or change this attribute directly.
void MSG_GEN_DISPLAY_GROUP_SET_FULL_SIZED();
This message instructs a GenDisplayGroup to put itself in "full-sized" mode; that is, all of its maximizable children will be maximized. This message is ignored if the GenDisplayGroup has the vardata attribute ATTR_GEN_DISPLAY_GROUP_NO_FULL_SIZED.
Source: Unrestricted.
Destination: GenDisplayGroup.
Interception: Not generally intercepted.
void MSG_GEN_DISPLAY_GROUP_SET_OVERLAPPING();
This message instructs a GenDisplayGroup to put itself in "overlapping" mode. This message is ignored if the GenDisplayGroup has the vardata attribute ATTR_GEN_DISPLAY_GROUP_NO_OVERLAPPING.
Source: Unrestricted.
Destination: GenDisplayGroup.
Interception: Not generally intercepted.
Boolean MSG_GEN_DISPLAY_GROUP_GET_FULL_SIZED();
This message finds out whether a GenDisplayGroup is in "full-sized" mode.
Source: Unrestricted.
Destination: GenDisplayGroup.
Return: Returns true (i.e. non-zero) if the GenDisplayGroup is in full-sized mode; otherwise, it returns false (i.e. zero).
Interception: Not generally intercepted.
void MSG_GEN_DISPLAY_GROUP_TILE_DISPLAYS;
This message instructs a GenDisplayGroup to put itself in "tiled" mode. That is, it should first put itself in "overlapping" mode; it should then arrange and resize the displays so they fill the display area without overlapping. The message is ignored if the GenDisplayGroup has the vardata attribute ATTR_GEN_DISPLAY_GROUP_NO_OVERLAPPING.
Source: Unrestricted.
Destination: GenDisplayGroup.
Interception: Not generally intercepted.
MSG_GEN_DISPLAY_GROUP_SELECT_DISPLAY
Ordinarily, the user switches from one display to another in one of two ways. The user may use the specific UI's way of switching displays (e.g. clicking on the display); or he may use the GenDisplayControl (described below) to switch displays. The application can also force the Display Group to bring a certain display to the top by sending it
MSG_GEN_DISPLAY_GROUP_SELECT_DISPLAY
. However, this is not usually done; applications should generally let the user switch displays with the GenDisplayControl.
void MSG_GEN_DISPLAY_GROUP_SELECT_DISPLAY( word displayNum);
This message instructs a display group to select a certain display, bringing it to the top and making it the focus. Applications should not ordinarily need to send this.
Source: Usually GenDisplayControl or its associated objects; however, any object can send this.
Destination: GenDisplayGroup.
Parameters: displayNum The display to select. This is an integer specifying the position of the desired display among the GenDisplayGroup's children; that is, its first child is number zero, its next child is number one, and so on.
Interception: This message is not ordinarily intercepted.
Tips: You can find a display's position number by sending
MSG_GEN_FIND_CHILD
to the GenDisplayGroup, passing the optr of the desired display. See the GenClass chapter.
The GenDisplayGroup object does half the job of managing display objects: it creates a space for the displays and manages them as its children. However, the display group does very little interaction with the user. Instead, the user works mainly with the GenDisplayControl object.
The GenDisplayControl is usually a child of a "Window" GenInteraction, which is itself a child of the primary.
GenDisplayControlClass
is a subclass of
GenControlClass
, and it has all the functionality of that class. For more information, see the GenControlClass chapter.
GenDisplayControlClass
is based very closely on
GenControlClass
. The differences between it and
GenControlClass
are shown below in Instance Data of GenDisplayControlClass
.
Code Display 4-4 Instance Data of GenDisplayControlClass
/* GDCII_attrs is a byte-length flag field. There is currently only one flag, * namely GDCA_MAXIMIZED_NAME_ON_PRIMARY; this specifies that if the active * display is maximized, its name should be shown as the primary's long-term * moniker. */ @instance GenDisplayControlAttributes GDCII_attrs = (GDCA_MAXIMIZED_NAME_ON_PRIMARY);
@default GI_states = @default | GS_ENABLED; @default GCI_output = {TO_APP_TARGET};
typedef WordFlags GDCFeatures; #define GDCF_OVERLAPPING_MAXIMIZED 0x0004 #define GDCF_TILE 0x0002 #define GDCF_DISPLAY_LIST 0x0001
typedef WordFlags GDCToolboxFeatures; #define GDCTF_OVERLAPPING_MAXIMIZED 0x0004 #define GDCTF_TILE 0x0002 #define GDCTF_DISPLAY_LIST 0x0001
#define GDC_DEFAULT_FEATURES (GDCF_OVERLAPPING_MAXIMIZED | GDCF_TILE | GDCF_DISPLAY_LIST)
#define GDC_DEFAULT_TOOLBOX_FEATURES (GDCF_DISPLAY_LIST)
/* A GenDisplayControl also features a single hint which affects the display of * the features list. */ @vardata void HINT_DISPLAY_CONTROL_NO_FEATURES_IF_TRANSPARENT_DOC_CTRL_MODE;
The GDCII
_attrs
field contains a set of
GenDisplayControlAttributes
. There is currently only one flag defined among these attributes:
GDCA_MAXIMIZED_NAME_ON_PRIMARY
HINT_DISPLAY_CONTROL_NO_FEATURES_IF_TRANSPARENT_DOC_CTRL_MODE
suppresses display of the features list if the application is running in "transparent document control" mode, as selected by the user level of the application.
All GenDisplay objects must be children of a GenDisplayGroup object. GenDisplay objects can be created in several ways: an application can declare them in its code; it can instantiate them at run-time and make them children of the GenDisplayGroup; or, if the application uses the Document Control objects, it can have the Document Control create a new display automatically whenever a document is opened. (For details about using a Document Control to create GenDisplay objects, see the Documents Objects chapter.)
MSG_GEN_DISPLAY_CLOSE
Most specific UIs provide a way for the user to close windows. For example, OSF/Motif lets a user close a window by double-clicking the control button. When the user uses the specific UI's close mechanism, the Display or Primary is sent MSG_GEN_DISPLAY_CLOSE.
GenDisplayClass
does only one thing when it receives MSG_GEN_DISPLAY_CLOSE: it sends MSG_GEN_DOCUMENT_CLOSE to the document specified by GDI
_document
. The
GenDisplayClass
handler for MSG_GEN_DISPLAY_CLOSE does not, in fact, destroy the display. If the display is linked to a GenDocument, the GenDocument will respond to MSG_GEN_DOCUMENT_CLOSE by closing the application and removing the GenDisplay. Otherwise, you will have to remove the GenDisplay yourself by writing a handler for MSG_GEN_DISPLAY_CLOSE.
The
GenPrimaryClass
handler for MSG_GEN_DISPLAY_CLOSE closes the application. If you want to add to or replace this behavior, you may have your Primary subclass this message.
void MSG_GEN_DISPLAY_CLOSE();
This message is sent to a Display to close it. The system sends it when the user uses the specific UI's way of closing a window. The
GenDisplayClass
handler does nothing but send a MSG_GEN_DOCUMENT_CLOSE to the Document object specified in GDI
_document
. The
GenPrimaryClass
handler closes the application.
Source: Unrestricted.
Destination: GenDisplay.
Interception: If the Display is not associated with a GenDocument, you will need to subclass this message for it to have any effect at all. If the display is associated with a GenDocument object, you should probably subclass your Document object's
MSG_GEN_DOCUMENT_CLOSE
instead. Primary objects may subclass this message if they want to alter or replace the default behavior (of closing the application).
ATTR_GEN_DISPLAY_MENU_BAR_POPPED_OUT
Some objects contain the ability to "pop out" of their sub-group locations and become floating dialog boxes.The menu bar of a GenDisplay is one such GenInteraction. If the menu bar of a GenDisplay is currently in the "popped-out" state, it will contain the vardata entry ATTR_GEN_DISPLAY_MENU_BAR_POPPED_OUT.
MSG_GEN_DISPLAY_UPDATE_FROM_DOCUMENT, MSG_GEN_DISPLAY_GET_DOCUMENT
Many of the messages which can be sent to GenDisplay objects have already been discussed above in A First Look at GenDisplay . However, there are a few messages which are ordinarily sent to Displays but not to Primaries. These messages are discussed here.
GenDisplay objects often work in close conjunction with the Document Control objects. It is common for every open document to have its own GenDisplay object as well as its own GenDocument. The two objects work in conjunction, sending messages back and forth to communicate. You can send or intercept these messages yourself to add functionality.
When the document object changes in certain significant ways, the Display has to be brought into accord with it. For example, if the name of the file changes, the GenDisplay's moniker will have to be changed to reflect this. Whenever a significant change takes place, the Document Control objects send a MSG_GEN_DISPLAY_UPDATE_FROM_DOCUMENT to the appropriate Display. The Display then requests all necessary information from the GenDocument and makes any necessary changes to its own instance data. You can force this updating by sending the message directly to the Display. You can also subclass this message if you want to add special updating behavior; however, you should be sure to pass this message to the superclass' handler.
You can find out which Document object is associated with a given Display by sending
MSG_GEN_DISPLAY_GET_DOCUMENT
to the Display. The message will return an optr to the corresponding Document object.
void MSG_GEN_DISPLAY_UPDATE_FROM_DOCUMENT();
This message instructs a GenDisplay to update its instance data from its associated GenDocument object (if any). This message is ordinarily sent by the Document Control objects.
Source: Unrestricted--ordinarily sent only by Document Control objects.
Destination:
GenDisplay.
Interception: Normally not intercepted. If you subclass this message to add special updating behavior, be sure to end with an @callsuper.
optr MSG_GEN_DISPLAY_GET_DOCUMENT();
This message returns the optr of the GenDocument associated with a given GenDisplay. This is equal to the value of the GenDisplay's GDI
_document
field.
Source: Unrestricted--ordinarily sent only by Document Control objects.
Destination:
GenDisplay.
Interception: Normally not intercepted.
ATTR_GEN_DISPLAY_TRAVELLING_OBJECTS
If you use multiple GenDisplay objects, it is sometimes useful to set up a group of "traveling objects." Traveling objects are children of whichever display is active. When a different GenDisplay is brought to the top, all traveling objects will be set "not usable" and removed from the Generic tree. They will then be added as children of the new top display and set "usable." (Any children of the traveling objects will naturally move with them.) Traveling objects are most commonly Toolbox Interactions, but they can be any kind of generic object.
Traveling objects can only be used under certain circumstances. Every display must belong to its own object block, and all of these object blocks must be copies of the same original. This is because the traveling objects are added as children to a specified chunk in whichever object block contains the new top display. If you want to use traveling objects, you should declare a special "template" object block which contains a GenDisplay and its children. Whenever you need to create a GenDisplay, you should duplicate this object block. The traveling objects should be in another resource altogether. If you use the Document Control objects to create displays, the objects will use this technique, duplicating an object block for each new display; this will let you use traveling objects.
Every traveling object is indicated by a
TravelingObjectReference
structure (see TravelingObjectReference
). To attach traveling objects to the active display, create a chunk which contains a list of
TravelingObjectReference
structures; this chunk must be in the same object block as the active display. Then set the Display's ATTR_GEN_DISPLAY_TRAVELING_OBJECTS to the ChunkHandle of the list. The list will automatically be moved to the block of the active display whenever the traveling objects are moved.
Code Display 4-5 TravelingObjectReference
typedef struct { optr TIR_travelingObject; /* optr to traveling object whose * reference this is */
ChunkHandle TIR_parent; /* Chunk Handle of object in Display's * block that will be the parent of this * object */
word TIR_compChildFlags; /* CompChildFlags to use when * adding the traveling object */ } TravelingObjectReference;
The TravelingObjectReference structure has the following three fields:
_travelingObject
_parent
_compChildFlags
CompChildFlags
which will be used when attaching this object to its new parent.


Please change your browser in order to use A3Playerstats
We built A3Playerstats using the latest technology which improves the look of the site, increases the speed of the site, and gives you a better experience with new features and functions. Unfortunately, your browser does not support these technologies.
I can't change my browser
- Ask your system administrator to install another browser if you cannot install browsers yourself.
- If you can't change your browser because of compatibility issues, think about installing a second browser for utilization of this site and keep the old one for compatibility.


We kicked off the first week of Digital Fabrication and Engineering with group challenges.
The first challenge: Make the tallest structure soley made up of newspaper and tape that can withstand the force of a small fan on low power standing a few feet away.
Me and my partner attempted to make a structure with a stable base but ultimately failed as it was not
very tall or able to withstand the force of the fan even at its lowest setting.
The second challenge was to make something out of straws and 18 inches of tape. This particular structure had to stop a golf ball from bouncing
out after being dropped out of midair at a controlled height.
Only three straws were allowed to actually come into contact with the ground. My group decided to make a contraption that, if all went according to plan, would act as a triangular shaped box of some sorts.
Once again, my group failed.
Below are Pictures:
Continue to Week 2


---
layout: default
title: Color Treatment
---
Important Safety InformationColor Treatment
Here we use color to strike a visual balance between the website's interface and the risk information. The consistency in color means the risk information is not completely separated from the benefit information. The balance also means the color treatment does not negatively influence "readers’ perceptions of the relative importance".


List of all members.
Detailed Description
Definition at line 11 of file _burst.py.
Constructor & Destructor Documentation
Constructor. Any message fields that are implicitly/explicitly
set to None will be assigned a default value. The recommend
use is keyword arguments as this is more robust to future message
changes. You cannot mix in-order arguments and keyword arguments.
The available fields are:
header,end,channels,dishes
:param args: complete set of field values, in .msg order
:param kwds: use keyword arguments corresponding to message field names
to set specific fields.
Definition at line 48 of file _burst.py.
Member Function Documentation
unpack serialized message in str into this message instance
:param str: byte array of serialized message, ``str``
Definition at line 124 of file _burst.py.
unpack serialized message in str into this message instance using numpy for array types
:param str: byte array of serialized message, ``str``
:param numpy: numpy python module
Definition at line 239 of file _burst.py.
serialize message into buffer
:param buff: buffer, ``StringIO``
Definition at line 85 of file _burst.py.
serialize message with numpy array types into buffer
:param buff: buffer, ``StringIO``
:param numpy: numpy python module
Definition at line 199 of file _burst.py.
Member Data Documentation
Initial value:"""# Burst message
Header header
time end
int8[] channels
neuro_recv/dish_state[] dishes
================================================================================
MSG: std_msgs/Header
# Standard metadata for higher-level stamped data types.
# This is generally used to communicate timestamped data
# in a particular coordinate frame.
#
# sequence ID: consecutively increasing ID
uint32 seq
#Two-integer timestamp that is expressed as:
# * stamp.secs: seconds (stamp_secs) since epoch
# * stamp.nsecs: nanoseconds since stamp_secs
# time-handling sugar is provided by the client library
time stamp
#Frame this data is associated with
# 0: no frame
# 1: global frame
string frame_id
================================================================================
MSG: neuro_recv/dish_state
# Dish state message
Header header
float64[60] samples
bool last_dish
"""
Definition at line 15 of file _burst.py.
The documentation for this class was generated from the following file:


[viewBag] title = "Backend (PHP) Developer" url = "/for-individuals/jobs/backend-php-developer-berlin-2016-fulltime" layout = "hr-page" is_hidden = 0 navigation_hidden = 0 robot_index = "index" robot_follow = "follow" ==
Start: September 2016 - Office: Berlin - fulltime
Kiron Open Higher Education (gGmbH) is a non-profit organization founded in 2015 with a mission to remove the barriers refugees face in accessing higher education. Through an innovative model of blended learning, Kiron offers tailor-made curricula of MOOCs (Massive Open Online Courses) through renowned educational platforms like coursera and edx so that refugees can start studying, regardless of their asylum status. Courses are mostly provided in English, completely free of charge for the students and all accessible via our learning platform Kiron Campus.
Through strong partnerships with accredited universities worldwide, students have the opportunity to finish their program with a regular bachelor’s degree. Today, a team of 40 employees receives further support from about 400 volunteers worldwide and a competence pool consisting of experts from relevant fields, such as professors, psychologists and business specialists.
Your opportunities and responsibilities at Kiron:.
Contribute to the mobile-first single page web applications being built.
Responsibility for feature development in the Kiron Platforms.
Work with the rest of the developer team and others to find lightweight solutions.
Take responsibility for the features and services you are building.
Your set of skills:
You possess a strong background in PHP and a familiarity with modern frontend javascript.
frameworks. We currently use React and Redux, with a split backend using Sails.js and
Laravel PHP.
You understand the architecture of a single page web application.
You have experience working with 3rd party open source tools which integrate into a custom
stack. We currently use Discourse, LimeSurvey and Metabase, for example.
You are a team player and value open communication.
Your English skills should be excellent, basic German is a plus.
Our offer:
The experience to lead a highly committed, international and interdisciplinary (volunteer)
team.
The atmosphere of an innovative and fast-growing social startup with several stakeholders
(refugees, corporations, NGOs, higher education and public sector institutions).
Regular team building as well as representative events, mentoring, trainings and workshops.
The opportunity to design the vision of Kiron through your own creative thinking and ambition.
A competitive salary within the social sector.
Flexible working hours (incl. Home Office) at our Berlin location.
Ready to join our mission? Apply now!
We are looking forward to your application via e-mail with the subject “DEV + your name” including cover letter, CV and availability in English in a single PDF file.
The job does not fit your profile? Kiron is currently recruiting many different positions, and many volunteering / internship opportunities. More at www.kiron.ngo.
Julia Mehr
Kiron Open Higher Education gGmbH
Palais am Festungsgraben
Am Festungsgraben 1
10117 Berlin
recruiting@kiron.ngo


We're coming soon.
Our website is under construction. We'll be here soon with our new awesome site, subscribe to be notified.
Days
Hours
Mins
Secs


Introduction to Docker
Oanh Nguyen<EMAIL_ADDRESS>/ oanhnn.github.io
Cargo Transport Pre-1960
Solution: Intermodal Shipping Container
docker.io
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application
Source: docker.io
Hypervisor vs Docker Container
| Hypervisor | Docker |
| Hypervisor | Docker |
| Runs operating systems | Runs processes |
| Heavyweight isolated virtual machines | Lightweight kernel namespaces [*] |
| VMs start via a full boot-up process | Very fast namespace + process creation [**] |
| Platform-oriented solution | Service-oriented solution |
| Optimized for generality | Optimized for minimalism and speed |
FROM ubuntu
MAINTAINER Victor Vieux<EMAIL_ADDRESS>LABEL Description="start the foobar executable"
# Apt update
RUN apt-get update
RUN apt-get install -y inotify-tools
# Install Nginx and OpenSSH
RUN nginx openssh-server
RUN bash -c "./somescript.sh"
# Install Nodejs, bla bla ....
FROM node:510
MAINTAINER Van-Duyet Le<EMAIL_ADDRESS># replace this with your application's default port
EXPOSE 8888
$ docker build -t nodejs-app .
$ docker run -it --rm --name ahihi nodejs-app
Slide: Docker Ecosystem on Azure
- Docker homepage: https://www.docker.com
- Docker slides: http://saveto.co/t/docker
- Why docker? https://why-docker.talk.duyetdev.com


| Drug | Resistance | Supporting Mutations |
|---|---|---|
| Isoniazid | S | |
| Rifampicin | R | rpoB (1.0 p.Asp435Val) |
| Ethambutol | S | |
| Pyrazinamide | S | |
| Streptomycin | S | |
| Ethionamide | S | |
| Fluoroquinolones | S | |
| Amikacin | S | |
| Capreomycin | S | |
| Kanamycin | S | |
| Para-aminosalicylic acid | S | |
| Linezolid | S | |
| Cycloserine | S | |
| Delaminid | S | |
| Clofazimine | S | |
| Bedaquiline | S | |
| Aminoglycosides | S |


Game State
These effect allow to modify the game state by chaning flags and
variables.
We can find the following effects in this group:
-
Activate: Activate the selected flag.
-
Deactivate: Deactivate the selected flag.
-
Set Value: Set the specified value on the selected variable.
-
Increment var: Increase in the selected units the chosen
variable.
-
Decrement var: Decrement in the selected unit the chosen
variable.


We're always adding new features for Pro users, so check this list often or follow us on Twitter.


2 references to ScriptCommand
System.Management.Automation (2)
engine\runtime\Operations\MiscOps.cs (1)
161
(cmd is
ScriptCommand
|| cmd is PSScriptCmdlet);
engine\ScriptCommandProcessor.cs (1)
102
ScriptCommand
scriptCommand = new ScriptCommand { CommandInfo = this.CommandInfo };


Specify the Submit method/behavior:
Without Ajax
With Ajax
Contact Us
Please fill out the fields below.
Firstname *
Lastname *
Email *
Please specify your need *
Request quotation
Request order status
Request copy of an invoice
Other
File
Message *
*
These fields are required.


Honzi
/
Bookmarks
/Recommendations
Recommendations
Type
Year
2 Fast 2 Furious
Film
2003
ABBA
Music
1972
Age of Mythology: The Titans
Computer Game
2003
Aidyn Chronicles: The First Mage
Nintendo 64 Game
2001
Airplane!
Film
1980
Almost Heroes
Film
1998
American Dad!
TV
2005
Aphex Twin
Music
1985
Armageddon
Film
1998
Banjo-Kazooie
Nintendo 64 Game
1998
Banjo-Tooie
Nintendo 64 Game
2000
BattleBots
TV
2015
Boards of Canada
Music
1986
Bomberman 64
Nintendo 64 Game
1997
Bomberman Hero
Nintendo 64 Game
1998
Bones
TV
2005
Calvin and Hobbes
Comic
1985
Children of Men
Film
2006
Chowder
TV
2007
Cloud Atlas
Film
2012
Codename: Kids Next Door
TV
2002
Command & Conquer
Nintendo 64 Game
1999
Command & Conquer: Tiberian Sun
Computer Game
1999
Community
TV
2009
Constantine
Film
2005
Contact
Film
1997
Cookie Clicker
Computer Game
2013
Courage the Cowardly Dog
TV
1999
Creeper World 3: Arc Eternal
Computer Game
2013
Cruis'n USA
Nintendo 64 Game
1996
Dante's Peak
Film
1997
Dark City
Film
1998
Deep Impact
Film
1998
Dexter's Laboratory
TV
1996
Diablo II: Lord of Destruction
Computer Game
2001
Diddy Kong Racing
Nintendo 64 Game
1997
Dragon Ball Z
TV
1989
Dungeon Siege II
Computer Game
2005
Dungeons & Dragons
Tabletop RPG
1974
Ed, Edd n Eddy
TV
1999
Eiffel 65
Music
1997
Enya
Music
1980
Escape from New York
Film
1981
Eternal Sunshine of the Spotless Mind
Film
2004
EVE Online
Computer Game
2003
Family Guy
TV
1999
Fantastic Beasts and Where to Find Them
Film
2016
Firefox
Web Browser
2002
Flower
Computer Game
2009
Freezepop
Music
1999
Futurama
TV
1999
Garry's Mod
Computer Game
2006
Gauntlet Legends
Nintendo 64 Game
1999
Gex: Enter the Gecko
Nintendo 64 Game
1998
Git
Version Control
2005
GitHub
Code/Site Hosting
2008
Gladiator
Film
2000
Half-Life 2
Computer Game
2004
Half-Life 2: Episode 1
Computer Game
2006
Half-Life 2: Episode 2
Computer Game
2007
Half-Life 2: Lost Coast
Computer Game
2005
Harry Potter and the Philosopher's Stone
Film
2001
Harry Potter and the Chamber of Secrets
Film
2002
Harry Potter and the Prisoner of Azkaban
Film
2004
Harry Potter and the Goblet of Fire
Film
2005
Harry Potter and the Order of the Phoenix
Film
2007
Harry Potter and the Deathly Hallows – Part 1
Film
2010
Harry Potter and the Deathly Hallows – Part 2
Film
2011
Hearthstone
Computer Game
2014
Hey Arnold!
TV
1996
Hitman: Blood Money
Computer Game
2006
Hitman 2: Silent Assassin
Computer Game
2002
Holes
Film
2003
Home Alone 2: Lost in New York
Film
1992
House
TV
2004
It's Always Sunny in Philadelphia
TV
2005
Journey to the West: Conquering the Demons
Film
2013
Jumanji
Film
1995
Jurassic Park
Film
1993
Koyaanisqatsi
Music
1982
Krtek
TV
1956
Ladytron
Music
1999
Lemony Snicket's A Series of Unfortunate Events
Film
2004
Life Is Strange
Computer Game
2015
Lode Runner: The Legend Returns
Computer Game
1994
Logical Journey of the Zoombinis
Computer Game
1996
Mafia
Computer Game
2002
Marble Blast Gold
Computer Game
2002
Mario Kart 64
Nintendo 64 Game
1997
Mario Party 2
Nintendo 64 Game
2000
M*A*S*H
TV
1972
Matilda
Film
1996
Minecraft
Computer Game
2011
Mischief Makers
Nintendo 64 Game
1997
Monty Python and the Holy Grail
Film
1975
Monty Python's Life of Brian
Film
1979
Mr. Bean
TV
1990
Neverending Nightmares
Computer Game
2014
Ocean's Eleven
Film
2001
Outlast
Computer Game
2013
Paper Mario
Nintendo 64 Game
2001
Path of Exile
Computer Game
2013
Pilotwings 64
Nintendo 64 Game
1996
Pirates of the Caribbean: The Curse of the Black Pearl
Film
2003
Pirates of the Caribbean: Dead Man's Chest
Film
2006
Pirates of the Caribbean: At World's End
Film
2007
Pirates of the Caribbean: On Stranger Tides
Film
2011
Pirates of the Caribbean: Dead Men Tell No Tales
Film
2017
Planescape: Torment
Computer Game
1999
Portal 2
Computer Game
2011
Powaqqatsi
Music
1988
Rabbits
TV
2002
Rammstein
Music
1994
Rat Race
Film
2001
Rick and Morty
TV
2013
Road Rash 64
Nintendo 64 Game
1999
Rivers, Roads & Rails
Board Game
1984
Robin Hood: Legend of Sherwood
Computer Game
2002
Rocket Power
TV
1999
RollerCoaster Tycoon 2
Computer Game
2002
Röyksopp
Music
1998
Rumo & His Miraculous Adventures
Book
2003
RuneScape
Computer Game
2001
Scary Movie 3
Film
2003
Scrubs
TV
2001
Secret Agent
Computer Game
1992
Shaolin Soccer
Film
2001
Shaun of the Dead
Film
2004
Silent Hill
Film
2006
SimCity 2000
Computer Game
1993
SimCity 3000
Computer Game
1999
Simpsonovi
TV
1989
South Park
TV
1997
Spiral Knights
Computer Game
2011
SpongeBob SquarePants
TV
1999
StarCraft: Brood War
Computer Game
1998
Star Trek: Deep Space Nine
TV
1993
Star Trek: Enterprise
TV
2001
Star Trek: The Next Generation
TV
1987
Star Trek: Voyager
TV
1995
Stronghold
Computer Game
2001
Super Mario 64
Nintendo 64 Game
1996
Super Smash Bros.
Nintendo 64 Game
1999
Team Fortress 2
Computer Game
2007
The 13 1/2 Lives of Captain Bluebear
Book
1999
The Adventures of Tintin
Comic
1929
The Alchemaster's Apprentice
Book
2007
The Amazing World of Gumball
TV
2011
The Beach Boys
Music
1961
The Birthday Massacre
Music
1999
The Chronicles of Riddick
Film
2004
The City of Dreaming Books
Book
2004
The Core
Film
2003
The Elder Scrolls IV: Oblivion
Computer Game
2006
The Emperor's New School
TV
2006
The Fifth Element
Film
1997
The God of Cookery
Film
1996
The Great Escape
Film
1963
The Grim Adventures of Billy & Mandy
TV
2003
The Hitchhiker's Guide to the Galaxy
Film
2005
The IT Crowd
TV
2006
The Legend of Zelda: Majora's Mask
Nintendo 64 Game
2000
The Legend of Zelda: Ocarina of Time
Nintendo 64 Game
1998
The Lord of the Rings: The Fellowship of the Ring
Film
2001
The Lord of the Rings: The Two Towers
Film
2002
The Lord of the Rings: The Return of the King
Film
2003
The Matrix
Film
1999
The Matrix Reloaded
Film
2003
The Matrix Revolutions
Film
2003
The Mummy
Film
1999
The Mummy Returns
Film
2001
The Office
TV
2005
The Shining
Film
1980
The Stanley Parable
Computer Game
2013
The Stanley Parable Demo
Computer Game
2013
The Walking Dead: Season One
Computer Game
2012
The Walking Dead: Season Two
Computer Game
2013
The Walking Dead: A New Frontier
Computer Game
2016
The Wild Thornberrys
TV
1998
The Wolf Among Us
Computer Game
2014
Thief
Computer Game
2014
Titanic
Film
1997
Tron: Legacy
Film
2010
Twister
Film
1996
uBlock Origin
Web Content Filter
2014
Ubuntu
Operating System
2004
Under the Tuscan Sun
Film
2003
Unreal Tournament 2004
Computer Game
2004
Warlords II
Computer Game
1993
Warzone 2100
Computer Game
2004
What We Do in the Shadows
Film
2014
Where's Waldo?
Book
1987
Wikipedia
Knowledge
2001
World of Warcraft
Computer Game
2004
YouTube
at 360p
Videos, Music, Streaming
2005


This Website collects some Personal Data from its Users.
Personal Data: Cookies; Usage Data
Personal Data: email address; first name; last name; User ID
Personal Data: email address; Usage Data; username
Personal Data: Cookies; Usage Data
Personal Data: various types of Data
Personal Data: Approximate location permission (continuous); Camera permission; Microphone permission
Personal Data: Usage Data; various types of Data as specified in the privacy policy of the service
Personal Data: Cookies; Usage Data
Personal Data: Cookies; Usage Data
Personal Data: geographic position
Personal Data: email address; various types of Data as specified in the privacy policy of the service
Personal Data: date of birth; email address; password; picture; profile picture; User ID; username; various types of Data
Personal Data: city; country; date of birth; email address; gender; geographic position; picture; province; state; username
Personal Data: Cookies; Usage Data
The Owner may use the Personal and Usage Data collected through this Website to create or update User profiles. This type of Data processing allows the Owner to evaluate User choices, preferences and behaviour for the purposes outlined in the respective section of this document.
User profiles can also be created through the use of automated tools like algorithms, which can also be provided by third parties. To find out more, about the profiling activities performed, Users can check the relevant sections of this document.
The User always has a right to object to this kind of profiling activity. To find out more about the User's rights and how to exercise them, the User is invited to consult the section of this document outlining the rights of the User.
Automated decision-making means that a decision which is likely to have legal effects or similarly significant effects on the User, is taken solely by technological means, without any human intervention.
This Website may use the User's Personal Data to make decisions entirely or partially based on automated processes according to the purposes outlined in this document.
This Website adopts automated decision-making processes as far as necessary to enter into or perform a contract between User and Owner, or on the basis of the User’s explicit consent, where such consent is required by the law.
Automated decisions are made by technological means – mostly based on algorithms subject to predefined criteria – which may also be provided by third parties.
The rationale behind the automated decision making is:
As a consequence, Users subject to such processing, are entitled to exercise specific rights aimed at preventing or otherwise limiting the potential effects of the automated decisions taken.
In particular, Users have the right to:
The Personal Data collected are used to provide the User with services or to sell goods, including payment and possible delivery.
The Personal Data collected to complete the payment may include the credit card, the bank account used for the transfer, or any other means of payment envisaged. The kind of Data collected by this Website depends on the payment system used.
Sharpe Dezine. Dokweg 29 B, 1976 CA IJmuiden, The Netherlands
Owner contact email: help@projectvoyeur.com


☰
Tracks
Artists
Genres
Albums
Your Playlists:
No Playlist Found. Please Create New Playlists.
Add New Playlist
Add Playlist
×
Playlist Name:
Playlist Description:
Add
Edit Playlist
×
Playlist Name:
Playlist Description:
Add
Add To Playlist
×
Playlist Name:
Tracks:
Add


---
layout: page
title: "About"
description: "What is this blog for."
header-img: "img/blog_logo-blank_1600x500.jpg"
unknown-img: "img/unknown.png"
---
What this blog is intended for...
This is a blog about Telia Operator Service Platform Opaali – specifically about its programming interface the Opaali API.
There will be example code snippets and blog posts explaining the code. There will also be a couple of full applications in source code form for you to use as almost drop-in replacements for some of the existing Content Gateway installations.
Who are we?
Although this blog and the accompanying source code is maintained by the Content Gateway to Opaali migration team, this is not part of the official Opaali product offering from Telia. During the migration period the migration team will update the blog and code irregularly. What happens after the migration has completed and the migration team will have disbanded – we don't know yet. The usual disclaimers apply ("Any opinions expressed here are those of the writer's and not..., you know"). The content of this GitHub repository comes AS IS with no guarantee from Telia whatsoever.
Who are the People writing here:
{% for a in site.data.authors %}
{% if a.name != "unknown" %}
{{a.name}}
{{a.longbio}}
{% endif %}
{% endfor %}


QuickDemos/WebDemo/style.css
Document
I'm a pinepple tag!"
I'm a pineapple tag!"
one
two
three
order
doesn't
matter


We put in our passion and dedication towards providing our clients with customized Web & Software Development services to cater to their individual requirements.
Our web developing team handles Search Engine Optimization at its best so your websites always stay in the top of the search results.
We are providing fully functional software for your company with no risk of iteration failures & Maximize Profits.
We provide corporate branding with all sorts of advertisements, brochures, business cards and logo designing for your company.
We help our clients to Build online web experience which relish them to generate more sales.


Getting contacted by a debt collector can rank among one of the worst experiences of everyday life. And it happens over a billion times each year in the United States, according to industry estimates. Debt collection has become a complex global industry, reliant on strong-arm tactics including harassing phone calls and threats that are often illegal. The coercion runs along a spectrum from moral persuasion to threats of violence, and increasingly involves institutions such as the courts and law enforcement. Given the complexity of debt collection laws and regulations that vary from state to state, there are hundreds of ways a debt collector can engage in illegal practices. It’s important to know your rights and to record abusive and illegal practices. In many cases, your debt can be erased (due to collectors’ misconduct) or reduced. In some cases, you might even have the right to sue for damages.
Debt collectors count on you to not do your homework.  Our current economic downturn only amplifies the problem. Most people have less money and more debt. Debt collectors themselves are making less money per account (it’s highly labor intensive with collectors making contact with only about fifteen out of two hundred or more targets), causing more aggressive and increasingly illegal tactics. Even if collectors do not engage in activities and techniques that are technically illegal, they are likely to use intentionally deceptive practices.
In this chapter we briefly describe some of the laws around debt collection, the different ways debt is collected, who is hurt most by the debt collection industry, and what people can do to protect themselves, their families, and their communities. While this chapter can’t tell you everything you need to know to handle your specific situation, it provides a basic outline of how the debt collection industry works and points you to resources that can help you fight this system that wants you to fail.
What Is a Collection Agency and Why Are They Calling You?
A collection agency often works on behalf of an original creditor (OC). An OC can be a department store, a credit card company, or a hospital—basically wherever you open a line of credit. When bills go unpaid, the OC contracts with collection agencies or third-party debt collectors to collect the debt. Some collection agencies take a commission of every debt they collect on behalf of the OC, while other agencies lease or buy your debt outright from the OC after a period of non-payment. But the collection agency doesn’t pay full price. In fact, it will almost certainly pay much less, usually 2–25% of the debt’s face value. So if you owe $1,000, the collection agency might pay $150 for the right to collect that $1,000 from you. They then attempt to collect the full $1,000, and more if fees are attached, making a hefty profit in the end.
In short, the collection agency is essentially buying the right to take a gamble on your debt—debt that the OC may have already charged off. But they aren’t just buying your debt. They are buying the debts of hundreds, even thousands, of people like you at a time. For their gamble to pay off, they need to convince only a small minority of consumers—through legal means or otherwise—to pay. The collection agency might also tack on additional late fees and interest all while harassing you by phone and by mail to collect.
The debt collection machine
The debt collection industry—also known as “accounts receivable management,” or ARM for short—is financed by Wall Street and closely tied to credit card issuers and other lenders such as collection companies, offshore call centers, big law firms, and debt speculators. Each year, over three hundred thousand debt collectors amass more than $50 billion in debt, profiting over $10 billion total. The collection industry has expanded significantly in recent years, shadowing the rise of consumer credit. From 2000 until the end of 2010, commercial banks doubled the total amount of consumer loans. Should consumers default, the debt collection industry is ready. The number of U.S. consumers subject to third-party debt collectors has doubled since 2000. Ten years ago, debt collectors pursued one in fourteen people in the United States; today, it’s one in seven. This includes many people who fell victim to illness, scams, divorce, or unemployment—even death. “Dead people are the newest frontier in debt collecting, and one of the healthiest parts of the industry,” the New York Times reported in 2009. Collection agencies like DCM Services are taking advantage of improved database technology to track down the kin of deceased debtors and pressure them to pay, even though they are not legally obligated to assume the debt of a spouse, sibling, or parent.
Credit card debt and other small loans are bought and sold like other debt obligations, e.g., mortgages and student loans, as part of big portfolios. The biggest are managed by the largest debt buyers. The largest collection agency, NCO Group, is owned by the nation’s biggest bank, JPMorgan Chase. JPMorgan Chase and other big banks supply enormous lines of credit to the leading debt buyers in order to “generate cash flow.” Creditors profit at your expense on multiple levels, creating a dependent and exploitative relationship.
Today, debt collectors increasingly rely on the civil court system and local law enforcement to secure legal judgments to garnish wages, freeze bank accounts, and seize property. According to a report by the National Consumer Law Center, “Often, the grab extends to people who have already repaid or never owed the debts—parents, children, people with similar names, victims of identity theft. Harassment, threats, and even jail become tools of the collection trade.” Hundreds of district attorneys across the country have partnered with collectors in what amounts to a government-sponsored shakedown, lending out their official letterhead to give the impression that failure to pay up could lead to criminal charges. The collectors charge extra fees on top of the original payment, which typically go back to the DA’s office.
How a collection agency thinks
It is key to understand how collection agencies think if you want to know how to best engage with them. First, it is usually pointless to go back and contact the original creditor. The OC almost certainly has an agreement with the collection agency that prevents them from negotiating directly with you.  Many collection agency workers’ pay is tied to a monthly quota of how many debts they collect, and it’s common for collectors to employ more aggressive and illegal tactics toward the end of the month. Because they work on monthly commission, individual collectors are also most likely to pursue the people with the largest debts and the people who seem most likely to pay. Collectors usually start with a relatively low base pay and, at larger agencies, their bonus is usually 2% of the overall debt they collected, giving them an incentive to collect more debt by any means necessary.
Remember that you are the most important variable to a collection agent. To quote one message board familiar with their tactics,
It is your fears, your fantasies . . . your partial understanding of the truth that empowers the third-party debt collectors and each of these is a weapon to be used against you. . . . By carefully stating half-truths and letting your imagination run away the third-party debt collector can bend your mind so that it sees what truths the third-party debt collector wants it to see.
There are two common types of collection agencies: letter writers—who write letters directing you back to the OC to make your payment—and just plain “collection agencies”—who require you to pay them directly so they can get their commission from the OC or make back the money they’ve already paid to buy your debt. Both must include a mini-Miranda (a required statement from the collectors stating they’re collecting a debt and any information gathered will be used to collect that debt) in their letters or read aloud during their phone calls. If they do not, you may have grounds to sue.
If your first contact with a collection agency is over the phone, the mini-Miranda warning should sound something like this:
Hello, I am [name of collector]. I am [or “this office is”] a debt collector representing [creditor]. Information obtained during the course of this call will be used for the purpose of collecting the debt.
If your first contact with the collection agency is via mail, the mini-Miranda should look something like this:
This correspondence is an attempt to collect a debt. Any information obtained will be used for that purpose. Unless within thirty days of your receipt of this notice, you notify us that you dispute the validity of this debt, it will be assumed to be correct. If you notify this office within thirty days that you dispute the validity of the debt, we will obtain verification of the debt or a copy of the judgment. If you request it within thirty days, we will provide you with the name and address of the original creditor (if different from the current creditor).
Do not ignore the call or letter. The biggest mistake people make when they get letters or calls from debt collection agencies is to ignore them and hope they will go away. Because you have thirty days to contest the debt, you must act immediately. If you ignore the contact, you are by default agreeing that the debt is legitimate. If it is legal in your state, you can record your conversations and create a log of how often they contact you. If you are uncertain about your state’s laws, consulting a lawyer would be wise.
Regardless of whether the debt is “legitimate” or not:
-
Write a letter
to the office of the collection agency or attorney and state that
you (a) dispute the bill, and that (b) you want a full accounting
of the monies claimed to be owed (validation of debts). The Fair
Debt Collection Practices Act of 1996 (FDCPA) requires they contact the original creditor to secure full
account detail. Without a confirmed accounting of this debt, they
cannot return to the collection process.
- In responding to a call, advise the collector that (a) you are disputing the debt and that you are doing so in writing to their offices, and that (b) you do not want to receive a call from this agency at your place of work and that they can only contact at your home (or on your cell phone if you don’t have a home telephone) between the hours of X and Y.
There’s a chance that you may not hear back. Remember, the collection agency is most likely to pursue the people they think are most likely to pay. You may have to continue to write to them, and even threaten to sue. (See Appendix D for sample letters.)
Some Important Things to Know
The Consumer Financial Protection Bureau
Over the past year, the newly established Consumer Financial Protection Bureau (CFPB) has set their sights on the debt collection industry. They will oversee three types of debt collectors: companies buying debt that other companies have given up on collecting, collectors going after debt on behalf of an original creditor, and companies litigating to collect debt. The CFPB supervises 175 of the 4,500 companies officially classified as debt collectors. Although those companies take in about 63% of the industry’s account receipts, they represent a small percentage of the industry itself. The bureau’s rules only cover companies that have over $10 million in annual receipts, leaving smaller companies virtually free from these regulations. Because these larger companies tend to work with larger creditors (who have stricter requirements), they are often not the ones consumers have to worry about. The CFPB is also looking to regulate collectors who use social media sites to track down and harass debtors. There isn’t much information on the CFPB because it is so new, but debtors of all stripes should be aware of the organization and keep up to date with its development.
Statute of limitations on debt
In every state there is a statute of limitations (SOL) for outstanding debts—a limit on the number of years in which a creditor may attempt to pursue payment. (It should be noted, however, that federal student loans, child support obligations, and income taxes in certain states like California do not have a statute of limitations.) Each state is different, so you should check. Kentucky and Ohio have extremely long periods (fifteen years for written debt agreements) while Mississippi and North Carolina have much shorter periods (three years for written debt agreements). In most states, however, debt collectors can still attempt to collect debt after the SOL expires. Even after it expires, courts may award judgments against you if you fail to raise the SOL as a defense. Ordinarily it is up to the person being sued to point out that the SOL has expired. If there is a dispute about which state’s laws apply, you can be sure that the collection agency will argue for the state with the longer period.
When does the SOL clock start?
The SOL clock starts running on the date of the last activity of your account. This is often the date of your last payment but—and this is key—it may also be the date when you entered into a payment agreement or simply acknowledged liability for the debt. This is why it is important to always contest liability. If your debt is beyond the SOL you can contest the debt on these grounds and, should you want to play offense, you can also attempt to set up the collection agency for an FDCPA violation and hit them with a lawsuit.
Know your FDCPA violations
Even if your debt falls within the SOL, there is a good chance the debt collector will engage in abusive or deceptive practices that are illegal under the FDCPA, but it is up to you to know your rights, be vigilant, and document any violations. Violations are grounds for dismissing debt and related lawsuits.  Third party collectors, debt buyers, and law firms must comply with the FDCPA, but in-house collectors, or creditors who are trying to collect their own debts, do not have to follow the FDCPA.
Some common FDCPA violations
There are countless ways collectors violate the FDCPA and the longer
you engage with a debt collector or agency (while continuing to
dispute the debt), the greater the chance you will catch them in the
act. Unfortunately (or fortunately if you’re a debt collector) only
a small fraction of violations go reported. You do not need a lawyer
to contest debt obligations or report FDCPA violations; you can take
action on your own and even win damages. If you decide to sue a
collector, you must do so within one year from the date the law was
violated. If you win, you could
win up to $1,000
on top of any wages or reimbursements.
Due to lax regulations and a lack of will to enforce them, debt
collectors routinely break the law by verbally abusing and
threatening debtors. Some debt collectors have
“embedded” themselves in hospitals, pretending to be hospital employees and approaching people when
they’re at their most vulnerable. Jessica Silver-Greenberg writes,
“To patients, the debt collectors may look indistinguishable from
hospital employees, may demand they pay outstanding bills and may
discourage them from seeking emergency care at all, even using
scripts like those in collection boiler rooms.”
Debt collectors also call pretending to be police officers and claim that they have a warrant to arrest a debtor if they don’t pay up. Collectors will often continually harass people for debts that they don’t owe, have already paid, or have already been dismissed in court. Collectors frequently target the wrong person, mistaking one person for someone else with the same or similar name. Debt collectors will lie and say that they are calling on behalf of debt relief agencies, learn all about a debtor’s situation, and collect all of their personal information and then use it against them. Collectors have been known to illegally call employers and inform them of employees’ debts. In the most extreme cases, debt collectors have made disturbing threats to seriously harm debtors and their families. Although illegal, these tactics are widespread.
Even debt collectors who follow the law can legally mislead you or
trick you in other ways. Credit card companies have started
data-mining cardholder’s purchases and using software to create
psychological profiles of them. These profiles are then used by debt
collectors to psychologically manipulate debtors to pay more than
they have to, including artificial late fees that would otherwise
have been waived. This tactic, although manipulative and immoral, is
completely legal. After using a
psychological profile
to swindle one debtor out of an additional $2,000, debt collector
Rudy Santana explained, “It’s all about getting inside their heads
and understanding what they need to hear.”
Debt buyers also contract with specialized collection law firms to
collect on debts. In recent years, these firms have swamped small
claims and other state courts, filing “mass-produced” lawsuits,
mirroring reckless practices in the mortgage market, such as
“robo-signing.” Despite the fact that these suits typically lack
proper documentation, most result in judgments, as the proceedings
are skewed against debtors. If consumers are lucky enough to be
properly “served,” or notified of the lawsuits filed against them,
many of them will not even have access to civil courts due to the
forced arbitration clauses in millions of credit card and other
consumer loan contracts. These lawsuits pay little regard to
accuracy. Noach Dear, a civil court judge in Brooklyn who has
presided over as many as one hundred credit card lawsuit cases in
one day, estimates that “roughly 90 percent of the credit card
lawsuits are flawed and
can’t prove the person owes the debt.”
Not all hope is lost, though. If you suspect you’ve fallen victim to
“robo-signing,” you can do a few things to fight back. First, you or
an attorney should read the complaint and supporting documents
carefully for any omissions, errors, or deceptions that could help
you win. If your state requires debt buyers to be licensed, check
whether the debt buyer is licensed. Suing without a license may
constitute a violation of the FDCPA. You should also check to see if
the plaintiff’s name is the same party mentioned in the supporting
documents and if they have proof of the underlying contract. Often a
contract is not even attached to the complaint and, if it is, it’s
often photocopied and illegible. Carefully scrutinize the affidavit
and make sure the affiant (the person who swears to the affidavit)
has not been charged with malpractice before your case.  The burden of
proof is with the affiant and the collectors, so make sure they can
prove they know your case front to back. If they don’t, you may be
able to
have the case dropped.
Know Your Rights
With all of this in mind, it’s important to know what debt collectors legally can and can’t do. Below is a basic list to help protect you:
- A debt collector can only call a third party once about you unless it believes the third party gave it false information the first time.
- Contacting you before 8:00 a.m. or after 9:00 p.m. is illegal.
- You must tell a collector not to contact you at work or by phone by sending them a cease and desist letter (see Appendix D, sample letter #2). You must send this certified mail and keep a copy for yourself so you have proof of receipt. If the collection agency contacts you again, other than to advise you of their intent to take action, then they are violating the FDCPA.
- It is your right not to speak with debt collectors; however, that doesn’t cancel the debt.
- A debt collector cannot sell a debt to another collection agency knowing that it has expired (see SOL) or is in dispute.
- A debt collector may try to lead you to believe that you have no grounds for requesting a “validation of debt” (see Appendix D, sample letter #1).
- A debt collector may try to represent themselves as an attorney or law firm even if they are actually not an attorney or law firm. Regardless, collection attorneys have to follow the FDCPA just like collection agencies.
- If a debt collector sends an initial notice advising you of your right to a validation of debt, then they cannot demand payment within the next thirty days.
-
A collector cannot call your job and tell your HR department that
they need your work information (wages, schedule) unless a valid
suit was filed by them and tried in a court of law with a judgment
in their favor. Until this happens (if it happens), they cannot
contact your HR department or place of work, even if they claim to
be looking for information to sue you. It is legal, however, for
credit rating agencies to buy your personal data (employment and
salary records) and
sell it to debt collectors.
- It is not unheard of for debt collectors to use fake case numbers and fake lawyers to scare an alleged debtor into paying. This is in clear violation of the FDCPA.
- The mini-Miranda (see above) should be on each and every communication you get from a debt collector.
- A collector is not allowed to reveal information about the envelope’s contents on the outside of the envelope for others to see. Words such as “past due” or “collections” are in clear violation of the FDCPA.
- A debt collector cannot impersonate a law officer or claim they can throw you in jail for not paying your alleged debt.
The Social Impact of the Collection Industry
Hopefully you don’t ever see a lawsuit, but if you do, you should know what you can expect and its implications on you and society at large. Plaintiffs file lawsuits because they assume: (1) the vast majority of consumers will not show up or contest lawsuits, and (2) a majority of judges will award a default judgment in the vast majority of cases, based often on inaccurate documents. It is best that you do not ignore the lawsuit and educate yourself. Unfortunately, due to intimidation and illegal tactics, collectors and creditors often force debtors into the criminal justice system. These practices most directly affect working-class people and people of color, and they contribute to and sustain what is today known as the prison-industrial complex.
On debt row
In 1983, the U.S. Supreme Court made it illegal for indigent people to be imprisoned for failing to pay their debts. Yet to this day, people are locked up for being in debt. In 2009, for example, Minnesota courts issued 845 arrest warrants against debtors, half who owed less than $3,500 and one who owed only $85. After serving time, they are burdened with legal financial obligations (LFOs). LFOs are fines, fees, and other costs associated with a criminal sentence, such as supervision fees if on probation, administrative fees, “pay to stay” fees, and prison fees. LFOs pile up quickly, causing debtors to waive legal counsel because of those costs, which increases the likelihood of re-incarceration. This leads to a cycle of debt and imprisonment that many people are unable to escape.
Fees often begin even before one reaches the courthouse. The people sued—often low-income, elderly, or disabled people—frequently do not receive notice and are not aware of court proceedings. If they are notified, many people cannot defend themselves even though some of these lawsuits are filed without having proof of any debt owed. At least thirteen states, for example, authorize or mandate charging indigent individuals “defender fees”—sometimes thousands of dollars—for exercising their right to counsel. Due to no money for adequate legal representation, language barriers, and sheer intimidation, debtors routinely lose court judgments. Between January 2006 and July 2008 alone, the top twenty-six debt buyers won more than $1 billion in judgments against New York City residents—mostly from low-income communities and communities of color—and only about 1% of those sued by creditors had legal counsel. In some cases, courts seem to actively seek to punish members of marginalized groups. According to the American Civil Liberties Union, “in Washington [State], Hispanic defendants generally receive higher LFOs than white defendants convicted of similar offenses.” Anyone can be sued, but those with fewer resources—disproportionately, people of color—are most likely to be ensnared in a cycle of debt and prison.
Wage Garnishment and Work
Debts can also be collected through wage garnishment, which basically means that your employer withholds some of your wages if ordered to do so by a court or the government. The amount that can be seized depends on your “disposable income,” or the amount left after legally required deductions are made (such as taxes and employee retirement systems). It is important that you check how much of your wages can be garnished based on your income so you don’t end up in any more financial trouble. Although Title III of the Consumer Credit Protection Act (CCPA) forbids any employer from firing you because of any one debt, you can be fired if your wages need to be garnished for two or more debts. If your employer commits any Title III violations, you may have grounds for reinstatement to your job, payment of back wages, and a restoration of the garnished amount. Wage garnishment laws can differ from state to state, so it’s best to look up what your state does and does not allow. If a state’s garnishment law differs from Title III of the federal wage garnishment law, your employer must observe the law that requires the smaller garnishment amount. For specific information on how much your wages can be garnished, it’s best to contact the Federal Trade Commission, the CFPB, or your state’s attorney general.
If you’ve had a judgment made against you, employers can choose not to hire you if they don’t want to go through the trouble of having to dedicate their resources to fulfilling a court’s order. Your bank may also freeze your account after they receive a garnishment order. If you’ve written checks or have your account tied to electronic payments, those payments may go unpaid. Depending on the bank, they may charge you with having insufficient funds. If your bank account has been frozen, you should seek an attorney right away. You should also tell the bank if your account has funds that are exempt from being frozen or garnished.
Debt collection is not merely a particular job of the collection industry. It is not just an aftershock of a credit transaction gone wrong.  Debt collection is a practice that extends to every level of society, from the courts and credit rating agencies to your workplace, your home, and your community. Debt collection isn’t exclusively the domain of debt collection agencies, either. The federal government, municipalities, employers, and private companies all have the power to collect debt and view you as a means to make more money. Though the individual consequences are severe, debt collection—as a way of punishing and extracting profit from working people—preserves wider racial and economic inequalities, harming millions and undermining the struggle for a more egalitarian society.
Ideas for Collective Action
It remains to be seen how effective and “consumer friendly” the Consumer Financial Protection Bureau will be, but people should not always expect to rely on them or the Federal Trade Commission to solve their problems. There is no cure-all for resisting debt collection. Debt affects people differently and everyone has different experiences. A good first step is to try to educate yourself and your friends on how debt collection works, who the big players are, and what powers you potentially have to resist. Open up that conversation and talk to each other to find solutions together. Ask why you owe anything at all and how you got into the situation you’re in. Are you “just irresponsible” (as debtors have often been told) or are there larger factors at play that have to do with employment, racism, and other forms of exploitation and oppression? Is it a matter of us spending beyond our means or is it about who controls our labor and wages, our value, and our worth?
In addition to sharing information, experiences, and strategies with others, there are two other main ways we can begin to fight back against debt collectors: letter-writing, and lawsuits for violating the FDCPA. Both could be made into mass actions that attempt to overwhelm debt collectors while also helping us reduce our debts. With the right organizational structure, debtors being chased by a common debt collector or debt collection agency can coordinate a well-timed letter-writing campaign to dispute their debts. If many debts with the same collector are disputed, it will disrupt and possibly halt their business. As far as we know, such a collective action has never been tried. But if a collector violates the FDCPA (which won’t be hard to find out), a class-action lawsuit could be organized.
Resources
Websites
- Carreon and Associates
- The Consumerist
- Debtorboards
- Fighting Collection Agency Debt
- National Consumer Law Center
- Written Off America
Articles
- Jude Chao, “How to Report Collection Agency Abuse,” eHow.
- “Debt Collection FAQS: A Guide for Consumers,” National Association of Consumer Advocates.
- “Debt Collection Info Packet,” NEDAP, 2006.
- Alex Henderson, “‘Am I Going to Have to Kill You?’: The Horrific Ways Abusive Debt Collectors Threaten and Harass Their Victims,” AlterNet, April 17, 2011.
- Lynnette Khalfani-Cox, “How to Handle Rude and Abusive Debt Collectors,” AARP, January 16, 2012.
- “Know Your Rights When You Owe a Debt,” National Association of Consumer Advocates.
- Patrick Lunsford, “Debt Collectors Pursuing More than 14 Percent of Americans,” Inside ARM, February 29, 2012.
- Chris Morran, “Debt Collectors Real & Fake: Top List of Most-Blocked Phone Numbers,” The Consumerist, August 6, 2012.
- Chris Morran, “4 Things Debt Collectors Won’t Tell You,” The Consumerist, October 18, 2011.
- “Predatory Lending Practices,” National Association of Consumer Advocates.
- Yves Smith, “How to Beat Vulture Debt Collectors,” Naked Capitalism, August 16, 2012.
References
- Alderman, Richard M. “The Fair Debt Collection Practices Act Meets Arbitration: Non-Parties and Arbitration.” Loyola Consumer Law Review 24, no. 4 (2012): 586–614.
- American Civil Liberties Union. “In for a Penny: The Rise of America’s New Debtors’ Prisons.” October 2010.
- Bannon, Alicia, Mitali Nagrecha, and Rebekah Diller. “Criminal Justice Debt: A Barrier to Reentry.” Brennan Center for Justice, 2010.
- Board of Governors of the Federal Reserve System. “Consumer Loans, All Commercial Banks.” Federal Reserve Bank of St. Louis, 2013.
- Debt Consolidation Care. “Debt Settlement Letters and Sample Letters on Debt and Credit.” Accessed March 25, 2013.
- Dougherty, Carter. “Debt Collectors Posing as Facebook Friends Spur Watchdogs.” Bloomberg, January 24, 2013.
- Duhigg, Charles. “What Does Your Credit-Card Company Know about You?” New York Times, May 12, 2009.
- Eidelman, Stephanie. “Large Debt Collectors Now under Thumb of CFPB.” Forbes, October 24, 2012.
- Federal Reserve Bank of New York. “Quarterly Report on Household Debt and Credit.” November 2012.
- Federal Trade Commission. “As a Result of FTC Action, Two Defendants in Abusive Debt Collection Case Are Banned from the Industry, Will Surrender Assets.” March 15, 2012.
- Federal Trade Commission. “Debt Collection FAQs: A Guide for Consumers.” February 2009.
- Holland, Peter A. “Defending Junk-Debt-Buyer Lawsuits.” Clearinghouse Review Journal of Poverty Law and Policy 46, no. 1–2 (2012): 12–24.
- Irby, LaToya. “State-by-State List of Statute of Limitations on Debt.” About.com. Accessed March 25, 2013.
- Jurgens, Rick, and Robert J. Hobbs. “The Debt Machine: How the Collection Industry Hounds Consumers and Overwhelms Courts.” National Consumer Law Center, July 2010.
- Legal Aid Society, Neighborhood Economic Development Advocacy Project, MFY Legal Services, and Urban Justice Center. “Debt Deception: How Debt Buyers Abuse the Legal System to Prey on Lower-Income New Yorkers.” May 2010.
- Professional Recovery Personnel. “The Psychology of Collections.” Accessed March 25, 2013.
- Sahr, Patrick. “Debt and Its Discontents: The Depressing World of Collections, Part One.” Naked Capitalism, August 27, 2012.
- Serres, Chris, and Glenn Howatt. “In Jail for Being in Debt.” Minneapolis Star Tribune, March 17, 2011.
- Silver-Greenberg, Jessica. “Debt Collector Is Faulted for Tough Tactics in Hospital.” New York Times, April 24, 2012.
- Silver-Greenberg, Jessica. “For the Families of Some Debtors, Death Offers No Respite.” Wall Street Journal, December 3, 2011.
- Silver-Greenberg, Jessica. “In Prosecutors, Debt Collectors Find a Partner.” New York Times, September 16, 2012.
- Silver-Greenberg, Jessica. “Problems Riddle Moves to Collect Credit Card Debt.” New York Times, August 12, 2012.
- Streitfeld, David. “You’re Dead? That Won’t Stop the Debt Collector.” New York Times, March 4, 2009.
- Sullivan, Bob. “Your Employer May Share Your Salary, and Equifax Might Sell That Data.” NBCNews.com, January 30, 2013.
- “Understanding Collection Agencies.” Debtor Boards, October 14, 2005.
- U.S. Department of Labor. “Wages and Hours Worked: Wage Garnishment.” Employment Law Guide, September 2009.
- U.S. Government Accountability Office. Credit Cards: Fair Debt Collection Practices Act Could Better Reflect the Evolving Debt Collection Marketplace and Use of Technology. Washington, DC: GPO, 2009.
- White, Martha C. “CFPB Takes on Debt Collectors with New Oversight.” Time, November 1, 2012.


Troy Campbell
Troy Campbell is an undergraduate at UCSD studying computer science interested in second language acquisition
This is my first HCI project! Exciting!
CSE 170/COGS 120 Projects
- Waiting in Line
- Needfinding
- Prototyping
- ...
Personal Projects
- The German Shepherd Project
- Les Chats Qui Mangent du Fromage
- Où Sont Les Bergers Allemands?


Item 8.11.1.e.
Using the data from the student group, calculate the probability that two separate students are sent to the principal’s office for separate offences for the following: Two Hispanic/Latinx students not suspended One Black/African-American student suspended and one White student suspended One White student not suspended and one Other student suspendedin-context