Methods summary
public
|
|
public
associative_array
|
#
abuseReports( string $id, integer $start = 0, integer $limit = 500, string $since = null )
Get all email addresses that complained about a campaign sent to a list
Get all email addresses that complained about a campaign sent to a list
Parameters
- $id
string $id
- $start
integer $start
- $limit
integer $limit
- $since
string $since
Returns
associative_array the total of all reports and the specific reports reports this page - total int
the total number of matching abuse reports - data array structs for the actual
data for each reports, including: - date string date/time the abuse report was
received and processed - email string the email address that reported abuse -
campaign_id string the unique id for the campaign that report was made against -
type string an internal type generally specifying the orginating mail provider -
may not be useful outside of filling report views
|
public
array
|
#
activity( string $id )
Access up to the previous 180 days of daily detailed aggregated activity
stats for a given list. Does not include AutoResponder activity.
Access up to the previous 180 days of daily detailed aggregated activity
stats for a given list. Does not include AutoResponder activity.
Parameters
Returns
array of structs containing daily values, each containing:
|
public
associative_array
|
#
batchSubscribe( string $id, array $batch, boolean $double_optin = true, boolean $update_existing = false, boolean $replace_interests = true )
Subscribe a batch of email addresses to a list at once. If you are using a
serialized version of the API, we strongly suggest that you only run this method
as a POST request, and not a GET request. Maximum batch
sizes vary based on the amount of data in each record, though you should cap
them at 5k - 10k records, depending on your experience. These calls are also
long, so be sure you increase your timeout values.
Subscribe a batch of email addresses to a list at once. If you are using a
serialized version of the API, we strongly suggest that you only run this method
as a POST request, and not a GET request. Maximum batch
sizes vary based on the amount of data in each record, though you should cap
them at 5k - 10k records, depending on your experience. These calls are also
long, so be sure you increase your timeout values.
Parameters
- $id
string $id
- $batch
array $batch - email associative_array a struct with one of the following keys -
failing to provide anything will produce an error relating to the email address.
Provide multiples and we'll use the first we see in this same order. - email
string an email address - euid string the unique id for an email address (not
list related) - the email "id" returned from listMemberInfo, Webhooks,
Campaigns, etc. - leid string the list email id (previously called web_id) for a
list-member-info type call. this doesn't change when the email address changes -
email_type string for the email type option (html or text) - merge_vars
associative_array data for the various list specific and special merge vars
documented in lists/subscribe
- $double_optin
boolean $double_optin
- $update_existing
boolean $update_existing
- $replace_interests
boolean $replace_interests
Returns
associative_array struct of result counts and associated data - add_count int Number of email
addresses that were successfully added - adds array array of structs for each
add - email string the email address added - euid string the email unique id -
leid string the list member's truly unique id - update_count int Number of email
addresses that were successfully updated - updates array array of structs for
each update - email string the email address added - euid string the email
unique id - leid string the list member's truly unique id - error_count int
Number of email addresses that failed during addition/updating - errors array
array of error structs including: - email string whatever was passed in the
batch record's email parameter - email string the email address added - euid
string the email unique id - leid string the list member's truly unique id -
code int the error code - error string the full error message - row
associative_array the row from the batch that caused the error
|
public
array
|
#
batchUnsubscribe( string $id, array $batch, boolean $delete_member = false, boolean $send_goodbye = true, boolean $send_notify = false )
Unsubscribe a batch of email addresses from a list
Unsubscribe a batch of email addresses from a list
Parameters
- $id
string $id
- $batch
array $batch - email string an email address - euid string the unique id for an email
address (not list related) - the email "id" returned from listMemberInfo,
Webhooks, Campaigns, etc. - leid string the list email id (previously called
web_id) for a list-member-info type call. this doesn't change when the email
address changes
- $delete_member
boolean $delete_member
- $send_goodbye
boolean $send_goodbye
- $send_notify
boolean $send_notify
Returns
array Array of structs containing results and any errors that occurred - success_count
int Number of email addresses that were successfully removed - error_count int
Number of email addresses that failed during addition/updating - of array
structs contain error details including: - errors array array of error structs
including: - email string whatever was passed in the batch record's email
parameter - email string the email address added - euid string the email unique
id - leid string the list member's truly unique id - code int the error code -
error string the full error message
|
public
associative_array
|
#
clients( string $id )
Retrieve the clients that the list's subscribers have been tagged as being
used based on user agents seen. Made possible by user-agent-string.info
Retrieve the clients that the list's subscribers have been tagged as being
used based on user agents seen. Made possible by user-agent-string.info
Parameters
Returns
associative_array the desktop and mobile user agents in use on the list - desktop
associative_array desktop user agents and percentages - penetration double the
percent of desktop clients in use - clients array array of structs for each
client including: - client string the common name for the client - icon string a
url to an image representing this client - percent string percent of list using
the client - members string total members using the client - mobile
associative_array mobile user agents and percentages - penetration double the
percent of mobile clients in use - clients array array of structs for each
client including: - client string the common name for the client - icon string a
url to an image representing this client - percent string percent of list using
the client - members string total members using the client
|
public
array
|
#
growthHistory( string $id = null )
Access the Growth History by Month in aggregate or for a given list.
Access the Growth History by Month in aggregate or for a given list.
Parameters
Returns
array array of structs containing months and growth data - month string The Year and
Month in question using YYYY-MM format - existing int number of existing
subscribers to start the month - imports int number of subscribers imported
during the month - optins int number of subscribers who opted-in during the
month
|
public
array
|
#
interestGroupings( string $id, boolean $counts = false )
Get the list of interest groupings for a given list, including the label,
form information, and included groups for each
Get the list of interest groupings for a given list, including the label,
form information, and included groups for each
Parameters
- $id
string $id
- $counts
boolean $counts
Returns
array array of structs of the interest groupings for the list - id int The id for the
Grouping - name string Name for the Interest groups - form_field string Gives
the type of interest group: checkbox,radio,select - groups array Array structs
of the grouping options (interest groups) including: - bit string the bit value
- not really anything to be done with this - name string the name of the group -
display_order string the display order of the group, if set - subscribers int
total number of subscribers who have this group if "counts" is true. otherwise
empty
|
public
associative_array
|
#
interestGroupAdd( string $id, string $group_name, integer $grouping_id = null )
Add a single Interest Group - if interest groups for the List are not yet
enabled, adding the first group will automatically turn them on.
Add a single Interest Group - if interest groups for the List are not yet
enabled, adding the first group will automatically turn them on.
Parameters
- $id
string $id
- $group_name
string $group_name
- $grouping_id
integer $grouping_id
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
interestGroupDel( string $id, string $group_name, integer $grouping_id = null )
Delete a single Interest Group - if the last group for a list is deleted,
this will also turn groups for the list off.
Delete a single Interest Group - if the last group for a list is deleted,
this will also turn groups for the list off.
Parameters
- $id
string $id
- $group_name
string $group_name
- $grouping_id
integer $grouping_id
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
interestGroupUpdate( string $id, string $old_name, string $new_name, integer $grouping_id = null )
Change the name of an Interest Group
Change the name of an Interest Group
Parameters
- $id
string $id
- $old_name
string $old_name
- $new_name
string $new_name
- $grouping_id
integer $grouping_id
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
interestGroupingAdd( string $id, string $name, string $type, array $groups )
Add a new Interest Grouping - if interest groups for the List are not yet
enabled, adding the first grouping will automatically turn them on.
Add a new Interest Grouping - if interest groups for the List are not yet
enabled, adding the first grouping will automatically turn them on.
Parameters
- $id
string $id
- $name
string $name
- $type
string $type
- $groups
array $groups
Returns
associative_array with a single entry: - id int the new grouping id if the request succeeds,
otherwise an error will be thrown
|
public
associative_array
|
#
interestGroupingDel( integer $grouping_id )
Delete an existing Interest Grouping - this will permanently delete all
contained interest groups and will remove those selections from all list
members
Delete an existing Interest Grouping - this will permanently delete all
contained interest groups and will remove those selections from all list
members
Parameters
- $grouping_id
integer $grouping_id
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
interestGroupingUpdate( integer $grouping_id, string $name, string $value )
Update an existing Interest Grouping
Update an existing Interest Grouping
Parameters
- $grouping_id
integer $grouping_id
- $name
string $name
- $value
string $value
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
array
|
#
locations( string $id )
Retrieve the locations (countries) that the list's subscribers have been
tagged to based on geocoding their IP address
Retrieve the locations (countries) that the list's subscribers have been
tagged to based on geocoding their IP address
Parameters
Returns
array array of locations - country string the country name - cc string the ISO 3166 2
digit country code - percent double the percent of subscribers in the country -
total double the total number of subscribers in the country
|
public
associative_array
|
#
memberActivity( string $id, array $emails )
Get the most recent 100 activities for particular list members (open, click,
bounce, unsub, abuse, sent to, etc.)
Get the most recent 100 activities for particular list members (open, click,
bounce, unsub, abuse, sent to, etc.)
Parameters
- $id
string $id
- $emails
array $emails - email string an email address - for new subscribers obviously this
should be used - euid string the unique id for an email address (not list
related) - the email "id" returned from listMemberInfo, Webhooks, Campaigns,
etc. - leid string the list email id (previously called web_id) for a
list-member-info type call. this doesn't change when the email address changes
Returns
associative_array of data and success/error counts - success_count int the number of subscribers
successfully found on the list - error_count int the number of subscribers who
were not found on the list - errors array array of error structs including: -
email string whatever was passed in the email parameter - email string the email
address added - euid string the email unique id - leid string the list member's
truly unique id - error string the error message - code string the error code -
data array an array of structs where each activity record has: - email string
whatever was passed in the email parameter - email string the email address
added - euid string the email unique id - leid string the list member's truly
unique id - activity array an array of structs containing the activity,
including: - action string The action name, one of: open, click, bounce, unsub,
abuse, sent, queued, ecomm, mandrill_send, mandrill_hard_bounce,
mandrill_soft_bounce, mandrill_open, mandrill_click, mandrill_spam,
mandrill_unsub, mandrill_reject - timestamp string The date/time of the action
(GMT) - url string For click actions, the url clicked, otherwise this is empty -
type string If there's extra bounce, unsub, etc data it will show up here. -
campaign_id string The campaign id the action was related to, if it exists -
otherwise empty (ie, direct unsub from list) - campaign_data associative_array
If not deleted, the campaigns/list data for the campaign
|
public
associative_array
|
#
memberInfo( string $id, array $emails )
Get all the information for particular members of a list
Get all the information for particular members of a list
Parameters
- $id
string $id
- $emails
array $emails - email string an email address - for new subscribers obviously this
should be used - euid string the unique id for an email address (not list
related) - the email "id" returned from listMemberInfo, Webhooks, Campaigns,
etc. - leid string the list email id (previously called web_id) for a
list-member-info type call. this doesn't change when the email address changes
Returns
associative_array of data and success/error counts - success_count int the number of subscribers
successfully found on the list - error_count int the number of subscribers who
were not found on the list - errors array array of error structs including: -
email associative_array whatever was passed in the email parameter - email
string the email address added - euid string the email unique id - leid string
the list member's truly unique id - error string the error message - data array
array of structs for each valid list member - id string The unique id (euid) for
this email address on an account - email string The email address associated
with this record - email_type string The type of emails this customer asked to
get: html or text - merges associative_array a struct containing a key for each
merge tags and the data for those tags for this email address, plus: - GROUPINGS
array if Interest groupings are enabled, this will exist with structs for each
grouping: - id int the grouping id - name string the interest group name -
groups array structs for each group in the grouping - name string the group name
- interested bool whether the member has this group selected - status string The
subscription status for this email address, either pending, subscribed,
unsubscribed, or cleaned - ip_signup string IP Address this address signed up
from. This may be blank if single optin is used. - timestamp_signup string The
date/time the double optin was initiated. This may be blank if single optin is
used. - ip_opt string IP Address this address opted in from. - timestamp_opt
string The date/time the optin completed - member_rating int the rating of the
subscriber. This will be 1 - 5 as described here - campaign_id string If the user is unsubscribed and
they unsubscribed from a specific campaign, that campaign_id will be listed,
otherwise this is not returned. - lists array An array of structs for the other
lists this member belongs to - id string the list id - status string the members
status on that list - timestamp string The date/time this email address entered
it's current status - info_changed string The last time this record was changed.
If the record is old enough, this may be blank. - web_id int The Member id used
in our web app, allows you to create a link directly to it - leid int The Member
id used in our web app, allows you to create a link directly to it - list_id
string The list id the for the member record being returned - list_name string
The list name the for the member record being returned - language string if
set/detected, a language code from here - is_gmonkey bool Whether the member is a Golden
Monkey or not. - geo associative_array the geographic information if we have
it. including: - latitude string the latitude - longitude string the longitude -
gmtoff string GMT offset - dstoff string GMT offset during daylight savings (if
DST not observered, will be same as gmtoff) - timezone string the timezone we've
place them in - cc string 2 digit ISO-3166 country code - region string
generally state, province, or similar - clients associative_array the client
we've tracked the address as using with two keys: - name string the common name
of the client - icon_url string a url representing a path to an icon
representing this client - static_segments array structs for each static
segments the member is a part of including: - id int the segment id - name
string the name given to the segment - added string the date the member was
added - notes array structs for each note entered for this member. For each
note: - id int the note id - note string the text entered - created string the
date the note was created - updated string the date the note was last updated -
created_by_name string the name of the user who created the note. This can
change as users update their profile.
|
public
associative_array
|
#
members( string $id, string $status = 'subscribed', associative_array $opts = array() )
Get all of the list members for a list that are of a particular status and
potentially matching a segment. This will cause locking, so don't run multiples
at once. Are you trying to get a dump including lots of merge data or specific
members of a list? If so, checkout the List
Export API
Get all of the list members for a list that are of a particular status and
potentially matching a segment. This will cause locking, so don't run multiples
at once. Are you trying to get a dump including lots of merge data or specific
members of a list? If so, checkout the List
Export API
Parameters
- $id
string $id
- $status
string $status
- $opts
associative_array $opts - start int optional for large data sets, the page number to start at -
defaults to 1st page of data (page 0) - limit int optional for large data sets,
the number of results to return - defaults to 25, upper limit set at 100 -
sort_field string optional the data field to sort by - mergeX (1-30), your
custom merge tags, "email", "rating","last_update_time", or "optin_time" -
invalid fields will be ignored - sort_dir string optional the direct - ASC or
DESC. defaults to ASC (case insensitive) - segment associative_array a properly
formatted segment that works with campaigns/segment-test
Returns
associative_array of the total records matched and limited list member data for this page - total
int the total matching records - data array structs for each member as returned
by member-info
|
public
associative_array
|
#
mergeVarAdd( string $id, string $tag, string $name, array $options = array() )
Add a new merge tag to a given list
Add a new merge tag to a given list
Parameters
- $id
string $id
- $tag
string $tag
- $name
string $name
- $options
array $options - field_type string optional one of: text, number, radio, dropdown,
date, address, phone, url, imageurl, zip, birthday - defaults to text - req
boolean optional indicates whether the field is required - defaults to false -
public boolean optional indicates whether the field is displayed in public -
defaults to true - show boolean optional indicates whether the field is
displayed in the app's list member view - defaults to true - order int The order
this merge tag should be displayed in - this will cause existing values to be
reset so this fits - default_value string optional the default value for the
field. See subscribe() for formatting info. Defaults to blank - max 255 bytes -
helptext string optional the help text to be used with some newer forms.
Defaults to blank - max 255 bytes - choices array optional kind of - an array of
strings to use as the choices for radio and dropdown type fields - dateformat
string optional only valid for birthday and date fields. For birthday type, must
be "MM/DD" (default) or "DD/MM". For date type, must be "MM/DD/YYYY" (default)
or "DD/MM/YYYY". Any other values will be converted to the default. -
phoneformat string optional "US" is the default - any other value will cause
them to be unformatted (international) - defaultcountry string optional the ISO 3166 2 digit character code for the default country.
Defaults to "US". Anything unrecognized will be converted to the default.
Returns
associative_array the full data for the new merge var, just like merge-vars returns - name string
Name/description of the merge field - req bool Denotes whether the field is
required (true) or not (false) - field_type string The "data type" of this merge
var. One of: email, text, number, radio, dropdown, date, address, phone, url,
imageurl - public bool Whether or not this field is visible to list subscribers
- show bool Whether the field is displayed in thelist dashboard - order string
The order this field displays in on forms - default string The default value for
this field - helptext string The helptext for this field - size string The width
of the field to be used - tag string The merge tag that's used for forms and
subscribe() and updateMember() - choices array the options available for radio
and dropdown field types - id int an unchanging id for the merge var
|
public
associative_array
|
#
mergeVarDel( string $id, string $tag )
Delete a merge tag from a given list and all its members. Seriously - the
data is removed from all members as well! Note that on large lists this method
may seem a bit slower than calls you typically make.
Delete a merge tag from a given list and all its members. Seriously - the
data is removed from all members as well! Note that on large lists this method
may seem a bit slower than calls you typically make.
Parameters
- $id
string $id
- $tag
string $tag
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
mergeVarReset( string $id, string $tag )
Completely resets all data stored in a merge var on a list. All data is
removed and this action can not be undone.
Completely resets all data stored in a merge var on a list. All data is
removed and this action can not be undone.
Parameters
- $id
string $id
- $tag
string $tag
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
mergeVarSet( string $id, string $tag, string $value )
Sets a particular merge var to the specified value for every list member.
Only merge var ids 1 - 30 may be modified this way. This is generally a dirty
method unless you're fixing data since you should probably be using
default_values and/or conditional content. as with lists/merge-var-reset(), this
can not be undone.
Sets a particular merge var to the specified value for every list member.
Only merge var ids 1 - 30 may be modified this way. This is generally a dirty
method unless you're fixing data since you should probably be using
default_values and/or conditional content. as with lists/merge-var-reset(), this
can not be undone.
Parameters
- $id
string $id
- $tag
string $tag
- $value
string $value
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
mergeVarUpdate( string $id, string $tag, associative_array $options )
Update most parameters for a merge tag on a given list. You cannot currently
change the merge type
Update most parameters for a merge tag on a given list. You cannot currently
change the merge type
Parameters
- $id
string $id
- $tag
string $tag
- $options
associative_array $options
Returns
associative_array the full data for the new merge var, just like merge-vars returns - name string
Name/description of the merge field - req bool Denotes whether the field is
required (true) or not (false) - field_type string The "data type" of this merge
var. One of: email, text, number, radio, dropdown, date, address, phone, url,
imageurl - public bool Whether or not this field is visible to list subscribers
- show bool Whether the field is displayed in thelist dashboard - order string
The order this field to displays in on forms - default string The default value
for this field - helptext string The helptext for this field - size string The
width of the field to be used - tag string The merge tag that's used for forms
and subscribe() and updateMember() - choices array the options available for
radio and dropdown field types - id int an unchanging id for the merge var
|
public
associative_array
|
#
mergeVars( array $id )
Get the list of merge tags for a given list, including their name, tag, and
required setting
Get the list of merge tags for a given list, including their name, tag, and
required setting
Parameters
Returns
associative_array of data and success/error counts - success_count int the number of subscribers
successfully found on the list - error_count int the number of subscribers who
were not found on the list - data array of structs for the merge tags on each
list - id string the list id - name string the list name - merge_vars array of
structs for each merge var - name string Name of the merge field - req bool
Denotes whether the field is required (true) or not (false) - field_type string
The "data type" of this merge var. One of: email, text, number, radio, dropdown,
date, address, phone, url, imageurl - public bool Whether or not this field is
visible to list subscribers - show bool Whether the list owner has this field
displayed on their list dashboard - order string The order the list owner has
set this field to display in - default string The default value the list owner
has set for this field - helptext string The helptext for this field - size
string The width of the field to be used - tag string The merge tag that's used
for forms and listSubscribe() and listUpdateMember() - choices array For radio
and dropdown field types, an array of the options available - id int an
unchanging id for the merge var - errors array of error structs - id string the
passed list id that failed - code int the resulting error code - msg string the
resulting error message
|
public
associative_array
|
#
staticSegmentAdd( string $id, string $name )
Save a segment against a list for later use. There is no limit to the number
of segments which can be saved. Static Segments are
not tied to any merge data, interest groups, etc. They
essentially allow you to configure an unlimited number of custom segments which
will have standard performance. When using proper segments, Static Segments are
one of the available options for segmentation just as if you used a merge var
(and they can be used with other segmentation options), though performance may
degrade at that point.
Save a segment against a list for later use. There is no limit to the number
of segments which can be saved. Static Segments are
not tied to any merge data, interest groups, etc. They
essentially allow you to configure an unlimited number of custom segments which
will have standard performance. When using proper segments, Static Segments are
one of the available options for segmentation just as if you used a merge var
(and they can be used with other segmentation options), though performance may
degrade at that point.
Parameters
- $id
string $id
- $name
string $name
Returns
associative_array with a single entry: - id int the id of the new segment, otherwise an error will
be thrown.
|
public
associative_array
|
#
staticSegmentDel( string $id, integer $seg_id )
Delete a static segment. Note that this will, of course, remove any member
affiliations with the segment
Delete a static segment. Note that this will, of course, remove any member
affiliations with the segment
Parameters
- $id
string $id
- $seg_id
integer $seg_id
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
staticSegmentMembersAdd( string $id, integer $seg_id, array $batch )
Add list members to a static segment. It is suggested that you limit batch
size to no more than 10,000 addresses per call. Email addresses must exist on
the list in order to be included - this will not
subscribe them to the list!
Add list members to a static segment. It is suggested that you limit batch
size to no more than 10,000 addresses per call. Email addresses must exist on
the list in order to be included - this will not
subscribe them to the list!
Parameters
- $id
string $id
- $seg_id
integer $seg_id
- $batch
array $batch - email associative_array a struct with one of the following keys -
failing to provide anything will produce an error relating to the email address.
Provide multiples and we'll use the first we see in this same order. - email
string an email address - euid string the unique id for an email address (not
list related) - the email "id" returned from listMemberInfo, Webhooks,
Campaigns, etc. - leid string the list email id (previously called web_id) for a
list-member-info type call. this doesn't change when the email address changes
Returns
associative_array an array with the results of the operation - success_count int the total number
of successful updates (will include members already in the segment) - errors
array structs for each error including: - email string whatever was passed in
the email parameter - email string the email address added - euid string the
email unique id - leid string the list member's truly unique id - code string
the error code - error string the full error message
|
public
associative_array
|
#
staticSegmentMembersDel( string $id, integer $seg_id, array $batch )
Remove list members from a static segment. It is suggested that you limit
batch size to no more than 10,000 addresses per call. Email addresses must exist
on the list in order to be removed - this will not
unsubscribe them from the list!
Remove list members from a static segment. It is suggested that you limit
batch size to no more than 10,000 addresses per call. Email addresses must exist
on the list in order to be removed - this will not
unsubscribe them from the list!
Parameters
- $id
string $id
- $seg_id
integer $seg_id
- $batch
array $batch - email associative_array a struct with one of the following keys -
failing to provide anything will produce an error relating to the email address.
Provide multiples and we'll use the first we see in this same order. - email
string an email address - euid string the unique id for an email address (not
list related) - the email "id" returned from listMemberInfo, Webhooks,
Campaigns, etc. - leid string the list email id (previously called web_id) for a
list-member-info type call. this doesn't change when the email address changes
Returns
associative_array an array with the results of the operation - success_count int the total number
of successful removals - error_count int the total number of unsuccessful
removals - errors array structs for each error including: - email string
whatever was passed in the email parameter - email string the email address
added - euid string the email unique id - leid string the list member's truly
unique id - code string the error code - error string the full error message
|
public
associative_array
|
#
staticSegmentReset( string $id, integer $seg_id )
Resets a static segment - removes all members
from the static segment. Note: does not actually affect list member data
Resets a static segment - removes all members
from the static segment. Note: does not actually affect list member data
Parameters
- $id
string $id
- $seg_id
integer $seg_id
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
array
|
#
staticSegments( string $id )
Retrieve all of the Static Segments for a list.
Retrieve all of the Static Segments for a list.
Parameters
Returns
array an of structs with data for each static segment - id int the id of the segment -
name string the name for the segment - member_count int the total number of
subscribed members currently in a segment - created_date string the date/time
the segment was created - last_update string the date/time the segment was last
updated (add or del) - last_reset string the date/time the segment was last
reset (ie had all members cleared from it)
|
public
associative_array
|
#
subscribe( string $id, associative_array $email, associative_array $merge_vars = null, string $email_type = 'html', boolean $double_optin = true, boolean $update_existing = false, boolean $replace_interests = true, boolean $send_welcome = false )
Subscribe the provided email to a list. By default this sends a confirmation
email - you will not see new members until the link contained in it is
clicked!
Subscribe the provided email to a list. By default this sends a confirmation
email - you will not see new members until the link contained in it is
clicked!
Parameters
- $id
string $id
- $email
associative_array $email - email string an email address - for new subscribers obviously this
should be used - euid string the unique id for an email address (not list
related) - the email "id" returned from listMemberInfo, Webhooks, Campaigns,
etc. - leid string the list email id (previously called web_id) for a
list-member-info type call. this doesn't change when the email address changes
- $merge_vars
associative_array $merge_vars - new-email string set this to change the email address. This is
only respected on calls using update_existing or when passed to
listUpdateMember(). - groupings array of Interest Grouping structs. Each should
contain: - id int Grouping "id" from lists/interest-groupings (either this or
name must be present) - this id takes precedence and can't change (unlike the
name) - name string Grouping "name" from lists/interest-groupings (either this
or id must be present) - groups array an array of valid group names for this
grouping. - optin_ip string Set the Opt-in IP field. Abusing this may
cause your account to be suspended. We do validate this and it must
not be a private IP address. - optin_time string Set the Opt-in Time field.
Abusing this may cause your account to be suspended. We do
validate this and it must be a valid date. Use - 24 hour format in
GMT, eg "2013-12-30 20:30:00" to be safe.
Generally, though, anything strtotime() understands we'll understand - http://us2.php.net/strtotime - mc_location associative_array
Set the member's geographic location either by optin_ip or geo data. - latitude
string use the specified latitude (longitude must exist for this to work) -
longitude string use the specified longitude (latitude must exist for this to
work) - anything string if this (or any other key exists here) we'll try to use
the optin ip. NOTE - this will slow down each subscribe call a bit, especially
for lat/lng pairs in sparsely populated areas. Currently our automated
background processes can and will overwrite this based on opens and clicks. -
mc_language string Set the member's language preference. Supported codes are
fully case-sensitive and can be found here. - mc_notes array of structs for managing notes - it may
contain: - note string the note to set. this is required unless you're deleting
a note - id int the note id to operate on. not including this (or using an
invalid id) causes a new note to be added - action string if the "id" key exists
and is valid, an "update" key may be set to "append" (default), "prepend",
"replace", or "delete" to handle how we should update existing notes. "delete",
obviously, will only work with a valid "id" - passing that along with "note" and
an invalid "id" is wrong and will be ignored.
- $email_type
string $email_type
- $double_optin
boolean $double_optin
- $update_existing
boolean $update_existing
- $replace_interests
boolean $replace_interests
- $send_welcome
boolean $send_welcome
Returns
associative_array the ids for this subscriber - email string the email address added - euid string
the email unique id - leid string the list member's truly unique id
|
public
associative_array
|
#
unsubscribe( string $id, associative_array $email, boolean $delete_member = false, boolean $send_goodbye = true, boolean $send_notify = true )
Unsubscribe the given email address from the list
Unsubscribe the given email address from the list
Parameters
- $id
string $id
- $email
associative_array $email - email string an email address - euid string the unique id for an email
address (not list related) - the email "id" returned from listMemberInfo,
Webhooks, Campaigns, etc. - leid string the list email id (previously called
web_id) for a list-member-info type call. this doesn't change when the email
address changes
- $delete_member
boolean $delete_member
- $send_goodbye
boolean $send_goodbye
- $send_notify
boolean $send_notify
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
associative_array
|
#
updateMember( string $id, associative_array $email, array $merge_vars, string $email_type = '', boolean $replace_interests = true )
Edit the email address, merge fields, and interest groups for a list member.
If you are doing a batch update on lots of users, consider using
listBatchSubscribe() with the update_existing and possible replace_interests
parameter.
Edit the email address, merge fields, and interest groups for a list member.
If you are doing a batch update on lots of users, consider using
listBatchSubscribe() with the update_existing and possible replace_interests
parameter.
Parameters
- $id
string $id
- $email
associative_array $email - email string an email address - euid string the unique id for an email
address (not list related) - the email "id" returned from listMemberInfo,
Webhooks, Campaigns, etc. - leid string the list email id (previously called
web_id) for a list-member-info type call. this doesn't change when the email
address changes
- $merge_vars
array $merge_vars
- $email_type
string $email_type
- $replace_interests
boolean $replace_interests
Returns
associative_array the ids for this subscriber - email string the email address added - euid string
the email unique id - leid string the list member's truly unique id
|
public
associative_array
|
#
webhookAdd( string $id, string $url, associative_array $actions = array(), associative_array $sources = array() )
Add a new Webhook URL for the given list
Add a new Webhook URL for the given list
Parameters
- $id
string $id
- $url
string $url
- $actions
associative_array $actions - subscribe bool optional as subscribes occur, defaults to true -
unsubscribe bool optional as subscribes occur, defaults to true - profile bool
optional as profile updates occur, defaults to true - cleaned bool optional as
emails are cleaned from the list, defaults to true - upemail bool optional when
subscribers change their email address, defaults to true - campaign bool option
when a campaign is sent or canceled, defaults to true
- $sources
associative_array $sources - user bool optional user/subscriber initiated actions, defaults to
true - admin bool optional admin actions in our web app, defaults to true - api
bool optional actions that happen via API calls, defaults to false
Returns
associative_array with a single entry: - id int the id of the new webhook, otherwise an error will
be thrown.
|
public
associative_array
|
#
webhookDel( string $id, string $url )
Delete an existing Webhook URL from a given list
Delete an existing Webhook URL from a given list
Parameters
- $id
string $id
- $url
string $url
Returns
associative_array with a single entry: - complete bool whether the call worked. reallistically
this will always be true as errors will be thrown otherwise.
|
public
array
|
#
webhooks( string $id )
Return the Webhooks configured for the given list
Return the Webhooks configured for the given list
Parameters
Returns
array of structs for each webhook - url string the URL for this Webhook - actions
associative_array the possible actions and whether they are enabled - subscribe
bool triggered when subscribes happen - unsubscribe bool triggered when
unsubscribes happen - profile bool triggered when profile updates happen -
cleaned bool triggered when a subscriber is cleaned (bounced) from a list -
upemail bool triggered when a subscriber's email address is changed - campaign
bool triggered when a campaign is sent or canceled - sources associative_array
the possible sources and whether they are enabled - user bool whether
user/subscriber triggered actions are returned - admin bool whether admin
(manual, in-app) triggered actions are returned - api bool whether api triggered
actions are returned
|
public
associative_array
|
#
getList( associative_array $filters = array(), integer $start = 0, integer $limit = 25, string $sort_field = 'created', string $sort_dir = 'DESC' )
Retrieve all of the lists defined for your user account
Retrieve all of the lists defined for your user account
Parameters
- $filters
associative_array $filters - list_id string optional - return a single list using a known list_id.
Accepts multiples separated by commas when not using exact matching - list_name
string optional - only lists that match this name - from_name string optional -
only lists that have a default from name matching this - from_email string
optional - only lists that have a default from email matching this -
from_subject string optional - only lists that have a default from email
matching this - created_before string optional - only show lists that were
created before this date/time - 24 hour format in
GMT, eg "2013-12-30 20:30:00" - created_after
string optional - only show lists that were created since this date/time - 24
hour format in GMT, eg "2013-12-30 20:30:00" -
exact boolean optional - flag for whether to filter on exact values when
filtering, or search within content for filter values - defaults to true
- $start
integer $start
- $limit
integer $limit
- $sort_field
string $sort_field
- $sort_dir
string $sort_dir
Returns
associative_array result of the operation including valid data and any errors - total int the
total number of lists which matched the provided filters - data array structs
for the lists which matched the provided filters, including the following - id
string The list id for this list. This will be used for all other list
management functions. - web_id int The list id used in our web app, allows you
to create a link directly to it - name string The name of the list. -
date_created string The date that this list was created. - email_type_option
boolean Whether or not the List supports multiple formats for emails or just
HTML - use_awesomebar boolean Whether or not campaigns for this list use the
Awesome Bar in archives by default - default_from_name string Default From Name
for campaigns using this list - default_from_email string Default From Email for
campaigns using this list - default_subject string Default Subject Line for
campaigns using this list - default_language string Default Language for this
list's forms - list_rating double An auto-generated activity score for the list
(0 - 5) - subscribe_url_short string Our eepurl shortened version of this list's
subscribe form (will not change) - subscribe_url_long string The full version of
this list's subscribe form (host will vary) - beamer_address string The email
address to use for this list's Email
Beamer - visibility string Whether this list is Public (pub) or Private
(prv). Used internally for projects like Wavelength - stats associative_array various stats and
counts for the list - many of these are cached for at least 5 minutes -
member_count double The number of active members in the given list. -
unsubscribe_count double The number of members who have unsubscribed from the
given list. - cleaned_count double The number of members cleaned from the given
list. - member_count_since_send double The number of active members in the given
list since the last campaign was sent - unsubscribe_count_since_send double The
number of members who have unsubscribed from the given list since the last
campaign was sent - cleaned_count_since_send double The number of members
cleaned from the given list since the last campaign was sent - campaign_count
double The number of campaigns in any status that use this list - grouping_count
double The number of Interest Groupings for this list - group_count double The
number of Interest Groups (regardless of grouping) for this list -
merge_var_count double The number of merge vars for this list (not including the
required EMAIL one) - avg_sub_rate double the average number of subscribe per
month for the list (empty value if we haven't calculated this yet) -
avg_unsub_rate double the average number of unsubscribe per month for the list
(empty value if we haven't calculated this yet) - target_sub_rate double the
target subscription rate for the list to keep it growing (empty value if we
haven't calculated this yet) - open_rate double the average open rate per
campaign for the list (empty value if we haven't calculated this yet) -
click_rate double the average click rate per campaign for the list (empty value
if we haven't calculated this yet) - modules array Any list specific modules
installed for this list (example is SocialPro) - errors array structs of any
errors found while loading lists - usually just from providing invalid list ids
- param string the data that caused the failure - code int the error code -
error int the error message
|


Illinois state police, stranded motorist have near-miss with truck that jackknifed in ice storm
by Travis FedschunThis was about as close a call as you can get.
Two Illinois state troopers and a stranded motorist came within inches of losing their lives last week after a box truck jackknifed on an interstate during an ice storm.
Illinois State Police said on Facebook the incident happened last Tuesday on Interstate 64 near Wayne City, located about 95 miles east of St. Louis.
The two troopers were helping to change a tire on a vehicle on the shoulder when the box truck lost control and started heading toward them and the woman they were assisting.
In the video released by police, the two troopers can be heard yelling "Watch out!" before pulling the woman out of the way.
State police said the woman ended up down in the highway ditch as the truck "literally passed over the top of her" and barely missed the two troopers.
"We just had a box truck slide off the road and hit us," one of the troopers can be heard saying. "I'm OK. One female injured in the ditch."
The two troopers escaped without injury, while the woman was treated and released from a local hospital.
WISCONSIN BUS DRIVER SAVES CHILDREN WANDERING IN SNOW, AS DEADLY ARCTIC AIR MASS GRIPS US
"We were inches away from a different story being told," state police said. "Literally inches."
The driver of the box truck was cited for failure to reduce speed to avoid a crash. State Police said while it was not a Scott’s Law violation because the box truck driver had already moved over to the left lane, he was not showing due caution as he proceeded past the scene.
CLICK HERE FOR THE FOX NEWS APP
The incident, dubbed a "miracle on ice," is another reminder of the need for drivers to move over and slow down when they see vehicles on the shoulder with their lights on, according to state police.
"It is especially important during the snow/ice conditions. As you can see, sometimes it’s a matter of life or death as a stranded motorist," state police said. "It’s not just about us out there, it is people you know and love that we are assisting also."


I am a 20-year old progressing Full-Stack Web Developer, eager to learn new things and connect with people from all over the world.
I started programming thanks to the desire to create immersive and intuitive user experiences, with the aim of revolutionizing the Front-end and showing that anyone can occupy a program without so much technical knowledge.
I decided to start at Microverse, an online programming school, in order to perfect every aspect that the working world requires of a programmer, from technical knowledge (Javascript / Ruby / Rails / MySQL / HTML / CSS / React) to my professional skills (Remote programming / Teamwork / Learning Mindset / Professional projects).
Now, I can easily build idea-based solutions, solve job problems, and give professional advice thanks to my programming experience.
Do you think I am a good option to work with you?
This is a Website based on the Lifestyle web, where you can create and vote articles, and the most voted article will be displayed on the main page of the web.
Built with: Ruby, Rails, HTML, CSS, PostgreSQL...
This is a traditional Tic Tac Toe game built only using Ruby.
Built with: Ruby...
This is a basic Social Media App (think Facebook) where users can befriend other users where the main objective was to build advanced model associations.
Built with: Ruby, Rails, HTML, CSS, Omniauth...
This is a basic HTML & CSS fully responsive landing page based on the web of a Comic Convention.
Built with: HTML, CSS, JavaScript...
This is a library Web-App made with Javascript and Bootstrap 5 where the user can add information about books, delete created books, and edit the status if the user has already read it.
Built with: HTML, CSS, JavaScript...
This is a To-Do List Web-App made with Javascript, Bootstrap 5, and Local Storage where the user can create projects and add tasks to that projects. While creating a new task, the user can add the name of the task, a description, a due date, and a priority. Also, the user can edit the tasks or delete them.
Built with: HTML, CSS, JavaScript...
Mexico City, Mexico
<EMAIL_ADDRESS>+52 55 3472 1805


Whether you are a professional backcountry guide with years of experience or you are just getting started, Guidr is the app for you. Once you have created an account, you can log all of your adventures by date, location, distance, duration, and type. With Guidr, browse a list of all of your previous trips or pull up the details of a particular tip with the click of a button.
Guidr offers our users free, unlimited, full-resolution online photo storage! Just upload your photos, tag them to link them to a particular one of your trips, and then safely delete them from your phone or camera to free up space on your device. Easily access your photos on the go with our app.
If you lead backcountry trips professionally or aspire to, you can use Guidr to showcase your outdoor experience to potential employers. With our resume feature, you can export a PDF complete with all of your previous backcountry experience, and any licenses, organizations, and other affiliations included in your profile.


Economy fine, people getting married, airports full: Union minister
by PTIHighlights
- Union minister of state for railways Suresh Angadi said 'some people' are trying to malign the image of Prime Minister Narendra Modi
- 'Every three years there is fall in demand in economy. It is a cycle. Then the economy picks up also,' he stated
NEW DELHI: Union minister Suresh Angadi on Friday dismissed the opposition's criticism over the state of economy, asserting that "airports and trains are full and people are getting married" and this indicates that the country's economy is "doing fine".
Noting that the economy slows down every three years but it will pick up soon, the minister of state for railways said "some people" are trying to malign the image of Prime Minister Narendra Modi.
"Airports are full, trains are full, people are getting married. Some people are doing this for nothing else but to malign the image of Narendra Modi," Angadi stated during an inspection of the soon to be commissioned Tunda Khurja eastern dedicated freight corridor.
"Every three years there is fall in demand in economy. It is a cycle. Then the economy picks up also," he added.
Opposition parties including the Congress have been criticising the government over the state of the economy and plans to raise the issue in the upcoming Winter Session of the Parliament.


{% extends "oscar/promotions/home.html" %}
{% load recommendations %}
{% load rankings %}
{% block content %}
{{ block.super }}
{% user_recommendations request.user action_type="view" as recommendations %}
{% include "partials/recommendations.html" with recommendations=recommendations name="Recommended for you" %}
{% most_viewed as products %}
{% include "partials/recommendations.html" with recommendations=products name="Most viewed product" %}
{% endblock content %}


The Australian Antarctic Territory
Here's one for the most extreme cyclists
The Australian Antarctic Territory is home to some of nature most majestic sites.
Book now, the AAT is open to tourists between December and March.
Here's one for the most extreme cyclists
The Australian Antarctic Territory is home to some of nature most majestic sites.
Book now, the AAT is open to tourists between December and March.


The 2010 ACCU Conference
My third visit to the annual ACCU Conference at the Oxford Barceló Hotel started in pretty much the same way as the previous two with a late night in the bar catching up with old friends. I also got to associate a few new faces to some of those email addresses that pop up on accu-general. The one person I didn’t expect to keep bumping into at the bar on the first night though was Pete Goodliffe because he was presenting the following day – in the morning…
The conference opened with a keynote by Jeff Sutherland who had also been running a Certified Scrum Master course during the previous two Tutorial days. Fortunately I had seen him speak at JP Morgan in May last year for the ACCU London branch so I took the opportunity to nurse my hangover instead. His argument for Scrum and Hyper-Productivity seemed just as compelling though second time around.
After the much needed morning coffee break I headed off to see Anthony Williams talk about Concurrency in the Real World. Given his pedigree this was a popular session and focused on the new threading features in the upcoming C++ standard. Having followed his blog I was largely familiar with the topic, but it was still useful to get all this straight from the horses mouth in one session. Plus there were a few interesting questions about how all this gels with CPU & I/O bound tasks.
The gremlins that marred lunchtimes last
year seemed to have been laid to rest so I had plenty of time before an early afternoon
session with Guy Bolton King on CouchDB. He started with a little background
about the whole NOSQL movement (Not Only SQL) before moving onto one of the
players – CouchDB. This is a reliable and scalable document
style database written in Erlang. He went into a reasonable amount of depth of
the internal architecture which helped you understand how it achieves its
reliability and at what cost. He then used some simple JSON format documents
and JavaScript Map/Reduce functions to give you a feel for how easily you can
build and query views. There was also enough time to cover replication and
partitioning to give a pretty good overview of how this could slot into the
existing
A spot of afternoon coffee was followed by
a session from Roy Osherove on what makes good teams and team leaders. Once
again, as a follower of his blog it was good to hear him in person. It started
with plenty of personal experience from both the developer and team leader perspectives
to give some useful advice about managing software developers. There were definitely
plenty of nodding heads and agreeable murmurs from the audience. The second
half looked at the tools and techniques used by teams to produce quality
software such as Continuous Integration. Consequently, as a developer, I found
this half of far more interest and a verification that I’m heading in the right
direction. Personally I found the team leading advice somewhat idealistic, but
that probably says far more about the teams I work in than
Thursday morning started with a keynote from James Bach about testing. It’s been an incredibly long time since I’ve worked with dedicated testers and his talk reminded me why they are valuable in their own right. He was at pains to point out that testing is not a stepping stone to development, but a first class activity that requires a different mindset. One memorable quote is that “testers don’t break code – developers do”. He’s a charismatic and energetic speaker which made him a real pleasure to listen to. His opening video was a brilliant segment of “The Towering Inferno” with subtitles for the Steve McQueen/Paul Newman roles to relate to the world of software development. In his blurb he suggested that he’d like to have converted a few programmers to testers by the end of his talk. I’m sure the ACCU audience is a little too hardcore for that, but I certainly felt far more invigorated about testing as a result.
My first session of the day was from Steve Love and I’m not even going to try and repeat the title here. This was another one of Steve’s insightful presentations about good design. He reminds you of all the balls you need to keep juggling such as modularisation, extensibility, generality, flexibility, high cohesion, low coupling etc. to ensure that the software you produce is of a suitably high quality. It’s no mean feat that he managed to cover so much ground within 90 minutes, and with sufficient detail to make the talk coherent. This is one of those bread-and-butter talks that you need to see regularly to remind you what your day job is all about. Oh, and the subliminal elephant images were pretty amusing too.
Some much needed sleep meant that I skipped lunch and went straight into James Coplien’s talk about Lean Architecture and Agile Software Development. I first saw ‘Cope’ speak at the conference a couple of years ago and you’re guaranteed entertainment – most likely through controversy. This time it seems as though the hecklers stayed away as it was somewhat uneventful although still thoroughly enjoyable. A large part of his talk was about representing the user’s mental model in the OO paradigm which still often seems like an enigma when dealing with algorithms and workflows. Also the words Agile and Lean seem to be used interchangeably in some circles so it was very useful to get clearer distinctions of how these terms apply to Architecture.
I finished the day in the comfort of Steve Freeman and Nat Pryce who I had only just seen talking about TDD during a recent ACCU London meet. This session looked at TDD from the opposite end of the spectrum by showing how you can grow a complex product though TDD of system-level tests in a manner similar to designing classes. The premise is to take a slice of key functionality (instead of a bottom-up or top-down approach) and allow the system to grow organically from around that point. This was the most relevant session for me as I’m working on a system incredibly similar to the one used in their example. I was also somewhat chuffed that I managed to collar Steve Freeman afterwards so I could pick his brains further on the subject.
Last year the conference introduced Lightning Talks (short presentations of 5 minutes of whatever topic takes your fancy) on the Thursday and Friday evenings. They reappeared again this year with even more speakers so I guess they were pretty popular. The set of 7 talks on the Thursday contained the usual variety such as “Message Passing Concurrency in C++” from Dominic Robinson to “What Motivates Programmers” by Kevlin Henney. There was even time to squeeze in a couple of last minute entries; of which the most notable was from Tom Gilb to prove that Love can indeed be quantified.
I just about managed to squeeze a coffee in before sitting down to hear Richard Harris talk about floating-point numbers. This is a topic with so much Lore behind it that I felt if anyone could bring order to this chaos it was Baron Muncharris. The session started much as any classroom would with the Teacher laying down the ground rules (no whispering, no chewing gum etc) before embarking on a journey into the various sorts of numbers from simple Integers to Rational and Transcendental etc. Recent graduates probably know all this stuff but for old timers it was an excellent refresher and just what was needed to ensure that you then understood the trade-off’s between the various proposed solutions, such as IEEE 754, Fixed Point, and Arbitrary Precision etc. I certainly feel better equipped to handle this kind of arithmetic in the future.
Michael Stal provided my post-lunch interest with a talk on Architecture Refactoring. After modifying Martin Fowler’s original definition of refactoring so that it could apply to the architecture as well as the code level, he started to introduce some patterns. Perhaps not unsurprisingly many of these had direct influence from the core Gang of Four patterns – but at a higher level – such as introducing a Façade over multiple external services. He also illustrated how the age old pair of Coupling & Cohesion can be applied equally at the package level in larger systems. The rest of the talk covered the differences between refactoring, reengineering, and rewriting; and even though he provided useful examples and a nice comparison chart for the three categories, I still felt the distinction was somewhat academic.
After the break and another cuppa I really wanted to go to the talks about Hadoop and Database Testing. However Kevlin Henney was talking about the Value Object pattern at the same time and this area puzzles me more now that I have switched from C++ to C#. Foolishly I thought I could start in Kevlin’s and then switch to Sven’s Database Testing session at half time. After ten minutes I was so engrossed in the philosophy of what Values are and how the implementation of them differs across languages that I realised I was never going to walk out half way through. Writing code to compare for equivalence seems far harder in C# and Java than in C++ and Kevlin nicely demonstrated all the gnarly bits – including some issues that have been missed by the C# guidelines.
The second set of 9 Lightning Talks were held in the early evening, and once again there was a good turnout, both from speakers and audience alike. I even threw my hat into the ring this time with a homage to the BBC 2 comedy show “Room 101” by berating the continued existence of Visual SourceSafe, Visual C++ 6 and Internet Explorer 6. I was accompanied by far more straight laced affairs such as Rachel Davies short piece on Retrospectives and Dietmar Kuehl with a revised look at the “Law of The Big Three”. Phil Nash, who was originally due to speak with Pete Goodliffe on iPhone Development, also made a last minute appearance to plug the iPad.
Friday evening plays host to the Speaker’s Dinner, where each dinner table has a number of speakers and after each course the guests are forced (would you argue with Giovanni?) to swap tables. This gives us the chance to converse with the speakers on a more personal level, and more importantly to make new friendships with fellow delegates. Naturally there was much discussion surrounding the volcanic activity, not least because so many of the speakers and delegates had flown in from around the world. The dinner naturally spills over into the bar and continues on into the early hours, but sadly there was no Boat Race this year.
The ongoing disruption to flights meant that Dan North never made it to the conference and so Saturday’s keynote became a Mash-Up as four previous speakers each contributed 15 minutes. I snuck in just as Walter Bright was describing C’s worse mistake – namely the whole array debacle. Arrays without knowledge of their size, the use of the nul terminator for strings and the way arrays decay to pointers gave him plenty of ammunition. James Bach was next up with a quick session on Testing Models. Finally Jim Hague repurposed his previous evening’s lightning talk as he now had the extra time needed to fill us in with a little more history on the Devils DP Dictionary and Stan Kelly-Bootle.
I chose to listen to Tony Barrett-Powell in the morning about Coupling – not the TV show – but the dependencies that exist within our code. I was well aware of the concept of coupling but didn’t realise that it had been categorised in so much detail. Tony listed 8 different forms such as Data Coupling, Stamp Coupling, and Control Coupling etc. This was second time this conference that I discovered that there is still much goodness in those old books about Structured Programming. Tony also displayed a chart that showed which forms of coupling ring the biggest alarm bells and those which are less insidious. He then went on to do the same with Cohesion and package-level coupling (Afferent and Efferent Coupling). The second half looked at various problems and techniques that can used to reduce the damaging effects such as the Law of Demeter, Open-Closed Principle and DRY etc. This, like Steve Love’s talk, was one that you could never tire of hearing because it influences you day-to-day.
My final session of the conference was to
be with Roger Orr. His talk was about configuration – from the reasons why you
might want to, to the mechanisms themselves and the obvious pitfalls. I thought
he started with a rather novel approach by taking the C++ one-liner for outputting
“Hello World” and discussing why and how you might choose to configure such a
simple program. One of the techniques was to pass a #define on the compiler
command line which I had never really thought of as a form of configuration
before. He then went on to cover the usual suspects like the process’ command
line, environment variables, Windows registry, database etc with a short list
of pro’s and con’s about each. Roger is always happy to let the audience
contribute which makes a talk like this so incredibly useful; it often feels
more like a workshop.
So this is my third year, has it lost any of the magic yet? Nope – not at all. As I get older I find the late nights in the bar are getting a little more difficult to cope with, but I still daren’t go to bed as I’m afraid I’ll miss out on something important. Even though the number of people I know personally in the ACCU is growing with each conference I still keep finding new people to whittle away the night with – there seems so much to chat about and yet so little time. It’s great that all the presenters are so approachable and many also stay up late in the bar which gives you more time with them. There are always a few special moments and this year, for me, it was being privy to a conversation between Walter Bright, Russel Winder a few others about parallelising compilation in the impending multi-core world. That kind of thing just doesn’t happen in the sort of places where I work…
Chris Oldwood
01 June 2010
Bio
Chris started out as a bedroom coder in the 80s, writing assembler on 8-bit micros. These days it’s C++ and C# on Windows in big plush corporate offices. He is also the commentator for the Godmanchester Gala Day Duck Race. He can be contacted via gort@cix.co.uk.


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import models._ @import uk.gov.hmrc.play.views.html.{helpers => govHelpers} @import views.html.helpers._ @import play.api.Application @import config.ApplicationConfig @(calculationElectionForm: Form[CalculationElectionModel], content: Seq[(String, String, String, String, Option[String], Option[BigDecimal])])(implicit request: Request[_], messages: Messages, application: Application, applicationConfig: ApplicationConfig) @main_template(Messages("calc.calculationElection.pageHeading")) { @Messages("calc.base.back") @errorSummary(calculationElectionForm, "calculation-election")
@Messages("calc.calculationElection.paragraph.one")
@Messages("calc.calculationElection.paragraph.two")
@govHelpers.form(action = controllers.routes.CalculationElectionController.submitCalculationElection) {


Chelsea star Willian makes transfer decision as Barcelona plot fresh move
Willian wants to renew his contract at Stamford Bridge despite Barcelona plotting a fresh move for the Chelsea star.
Brazilian winger Willian has made more than 300 appearances for Premier League giants Chelsea since signing from Anzhi Makhachkala in 2013.
Helping the Blues win two Premier League titles, the Europa League, FA Cup and EFL Cup, Willian has enjoyed substantial success in west London.
With his current contract set to expire next summer, the 31-year-old will be free to talk to other clubs in January and Barcelona are monitoring his situation.
But Goal say the experienced winger is keen to extend his stay at Chelsea, particularly as he is enjoying a revival under club legend Frank Lampard.
Willian has featured in all but one of Chelsea’s Premier League matches so far this season and Lampard admits he wants the Brazilian to put pen to paper on a contract extension.
Advertisement Advertisement
‘The word isn’t ‘no-brainer’ because I can’t get involved in the money, that’s up to the club to do,’ Lampard said earlier in the month.
 I love him at this football club, so there’s my answer.’
Willian, meanwhile, recently revealed that he had the chance to sign for Barcelona last year.
He told DAZN: ‘The only real offer I had to leave Chelsea came from Barcelona last year, after the World Cup. Barca presented an offer to Chelsea but it was rejected.
‘That was the only time I ever had to discuss something like that with my family, but we really love it here [in London]. So there were several factors that helped me stay.’
Chelsea, who are currently third in the Premier League, travel to defending champions Manchester City on Saturday.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Makes 12 mince pies
Dietary
Try this lighter version of mince pies made with filo pastry and fresh apples and pears. Great for mince pie skeptics.
Preheat oven to 180C/160C(fan)/350F/Gas 4. Place a baking tray into oven to heat up. (This will give extra bottom heat to the pies so that the bases cook through and are not soggy.) Grease a 12-hole muffin tin with a little spray oil and set aside.
Put all the mincemeat ingredients into a saucepan over a medium heat. Allow to cook gently, stirring occasionally, for about 10 minutes or until the apples begin to soften. Then remove from the heat and leave the mixture to infuse while you make the pies.
Lay the sheets of filo pastry out on top of each other and cut them in half across the width. Then cut each half in half again to give four stacks of about 12cm/4½in squares of filo. I find scissors really handy to cut these out, but a sharp knife will do. Keep any filo not being worked on under a damp tea towel so that it doesn’t dry out.
Line each hole of the muffin tin with three squares of filo. I like to take a square at a time and press it into the hole, each one slightly staggered from the previous so the resulting pastry case edge looks like a star. Make sure to push the pastry down so it is in the ‘corners’ of each muffin hole.
After lining the tin, you should be left with 12 squares of filo. Which you can reserve under a damp tea towel for now.
Spray each stack in the tin with a little oil and bake in the oven for five minutes until crisp and pale golden. Then, divide the filling evenly among the cases.
Next take the remaining squares of filo, scrunch each one up lightly and place one on top of each pie so that it looks like a scrunched-up tissue. Brush them lightly with beaten egg or melted butter.
Pop in the oven on the heated baking sheet for 8-10 minutes or until the pies are crisp and golden.
Meanwhile, prepare the yogurt for serving. Gently mix together the yogurt, icing sugar and vanilla seeds or extract in a bowl. Cover and set aside in the fridge until ready to use.
Once ready, remove the pies from the oven, dust with a little icing sugar and serve with a dollop of the yogurt, if you like.


{% extends "template.html" %} {% block title %}CONTIGuator web server{% endblock %} {% block menu %} {% endblock %} {% block himg %} {% endblock %} {% block container %}
the submitted genome data will be deleted right after job completion
the provided email may be used to monitor the server usage (and will remain anonymous)


Thousands to paddle out in nationwide protest for the Great Australian Bight
by Monique StClairThousands of Australians are turning out this morning, to take part in a nationwide protest over oil-drilling in the Great Australian Bight.
The movement hopes to preserve the pristine Bight forever, by demanding big oil companies back off from the region.
In various locations around the country this morning, Aussies will participate in ‘paddle-out’ demonstrations.
On the Gold Coast, one such demonstration is taking place at Currumbin Alley at 9.00am.
“We joined a movement of thousands of people throughout Australia and the world demanding Big Oil backs off and preserves the pristine Bight forever.
“Now Equinor wants to re-submit their plans for destruction and we’re not going to let them.
“Join your fellow Gold Coasters for an International Day of Action as people throughout the world say #noXwayequinor
“Together our pressure has delayed Norwegian oil corporation Equinor but now lets save the Bight for good,” the Gold Coast event description reads.
A similar paddle out took place in Burleigh Heads earlier this year.


As a site contributor, Kat wants to easily upload content and view comments
Kat posts her weekly article about the pluses of millenials starting to join the political sphere. 3 hours after publication she realizes that there is a glaring typo that she must fix. Google Docs changed the word "pluses" to "perils." She needs to edit the article without deleting the article and associated comments
Precondition: Kat is a registered user
Postcondition: Article post is updated
One to Many
Many to Many
One to Many


Truant: A student with a large number of absences, usually set by an official standard like a school board or regulatory agency. The descriptions of the following four terms were adapted from [8.12.129].


registration now
Male
Female
I agree to the Terms of Service and Privacy Policy
Submit
Already Registered.
Login


RT @schneems: [Serious] Is there any sane resource for the massive hash inside of Rack that is `env`? List of keys and meaning? Anything?
7/29/2014, 6:52:34 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @schneems: [Serious] Is there any sane resource for the massive hash inside of Rack that is `env`? List of keys and meaning? Anything?
7/29/2014, 6:52:34 PM
Favs: 0
Retweets: 0
link


(c) 2014 Noragh Analytics, Inc.
The Prior's Role
The only job of the prior, or "vice abbot", is to be sure the abbot is doing his job.
The Prior's Behaviors
- The prior periodically verifies the health of the abbot
and, if he is unresponsive, restarts him.
- The prior notifies the administrator if he is unable to carry out this function.
- The prior shuts down if it detects another prior with a higher process ID.


facebook
Get Facebook for Android and browse faster.
Log In
or
Create New Account
Forgotten password?
Help Center


This oat-based muffin is packed with healthy carrots and zucchini and lightly sweetened with raisins and a pinch of sugar. Use a mini muffin tin for smaller portions, and eliminate or cut back on the brown sugar (you can also choose a healthier substitute).
Full list of Ingredients:
Nonstick cooking spray
1 1/4 cups all-purpose flour
1/2 cup packed dark-brown sugar
1/2 teaspoon baking soda
1/2 teaspoon baking powder
1/2 teaspoon ground nutmeg
1/2 teaspoon coarse salt
1 cup old-fashione drolled oats
1/2 cup raisins
3 tablespoons extra- vigrin olive oil
1 large egg
1/3 cup skim milk
Medium carrots, shredded
1 medium ripe banana, mashed
Instructions:
Preheat oven to 400 degrees. Coat a 12-cup muffin pan with cooking spray. In a large bowl, whisk together flour, brown sugar, baking soda, baking powder, nutmeg, and salt until there are no lumps. Stir in oats and raisins. Add oil, egg, milk, carrots, and banana and stir until blended.Fill each muffin cup with 1/4 cup batter. Bake until a toothpick inserted in center of a muffin comes out clean, 23 to 25 minutes. Serve muffins warm or at room temperature.


Veteran Ascalon:
Groot, my comrade, brother of fate... You must go and help him make the Antidote to neutralize the medusa's poison. At this very moment many guards and soldiers are dying because of the poison.


Reference/BangSymbolInternalFunction
Contents |
! internal function
! with a negative integer on the left hand side, calls a k internal function.
-n! bindings are subject to change, if a cover function is provided in the .q or .Q locales use that instead!
these should rarely, if ever, be used, but since it is useful to be able to recognise them when seen in the wild, here is a partial list:
−1!x
see/use hsym
-2!x
see/use attr
−3!x
returns the string representation of x.
strictly this is .Q.s1, but it's better to use .Q.s
−4!x
returns the list of q tokens found in string x (note the q parsing of names with embedded underscores)
q)-4!"select this from that" "select" ," " "this" ," " "from" ," " "that" q)-5!"select this from that" / compare with −5! ? `that () 0b (,`this)!,`this q)-4!"a variable named aa_bb" ,"a" ," " "variable" ," " "named" ," " "aa_bb" q)
−5!x
see/use parse
-6!x
see/use eval
−7!x
see/use hcount
-8!x
return the IPC byte representation of x
q)-8!1 2 3 0x010000001a000000060003000000010000000200000003000000
-9!x
create data from IPC byte representation x
q)-9!-8!1 2 3 1 2 3
don't
−10!x
resolve a type number to an enum vector and check if it's available
q)-10!20h 1b q)ee:`a`b`c q)vv:`ee$`a`a`b q)type vv 20h q)-10!20h 0b
−11!x
streaming execute over file x, used for example in kdb+tick to replay logfiles.
each chunk is read in turn and executed (see value)
if successful the number of chunks executed is returned. If the end of the file is corrupt a 'badtail error is signalled.
see the utilities in rescuelog.q for examples of usage.
−11!(-1;x)
same as −11!x
−11!(n;x)
streaming execute the first n chunks of logfile x, return the number of chunks if successful.
-11!(-2;x)
given a valid logfile, return the number of chunks.
given an invalid logfile, return the number of valid chunks and length of the valid part.
q)logfile:`:good.log / a non-corrupted logfile q)-11!(-2;logfile) 26 q)logfile:`:broken.log / a manually corrupted logfile q)upd:{[x;y]} / define a dummy upd file as components are of the form (`upd;data) q)-11!logfile 'badtail q)-11!(-1;logfile) 'badtail q)hcount logfile 39623j q)-11!(-2;logfile) 26 35634j q)/ 26 valid chunks until position 35634 (out of 39623) q)-11!(26;logfile) 26
-12!x
see/use .Q.host
−13!x
see/use .Q.addr
−14!x
handle " escaping in strings (used to prepare data for csv export)
−15!x
see/use md5
−16!x
return the reference count for a variable
q)-16!a 1 q)a:b:c:d:e:1 2 3 q)-16!a 5
−17!x
flip endian-ness of kdb+ data file x, see notes in Changes in kdb+ v2.6
-18!x
returns compressed IPC byte representation of x, see notes about network compression in Changes in kdb+ v2.6
−19!x
compress a file, see File Compression
−20!0
see/use .Q.gc
−21!x
compression statistics for file x, see File Compression
−22!x
An optimized shortcut to obtain the length of uncompressed serialized x, i.e. count -8!x
q)v:til 100000 q)\t do[5000;-22!v] 1 q)\t do[5000;count -8!v] 226 q)(-22!v)=count -8!v 1b
−23!x
since kdb+ 3.1T 2013.03.04
Maps data into memory without copying.
q)-23!t:select from get`:t/; / previous tricks to force load included .. where i>=0
For a complete list of functions, see the kdb+ Function Reference.


Musician, 36, named as pub-goer who died after car ploughed into smoking area
Stuart McClung, a talented guitarist for band New Town Kings, was killed when a car mounted the pavement outside The Spinnaker Pub in Colchester
by Amber Hicks, Paige Ingram, https://www.facebook.com/dailymirror/A 36-year-old who died after a car ploughed into a pub smoking area has been named by heartbroken friends.
Tributes are being paid to "amazing musician" Stuart McClung, who was pronounced dead at the scene of The Spinnaker Pub along Hythe Quay in Colchester.
Emergency services were called just before 1am on Sunday where they tried in vain to save guitarist Stuart, who played in a popular local band called New Town Kings, reports Essex Live.
A 34-year-old man - named locally as Ian Winter - was also rushed to hospital with life-changing injures, while two others, a 34-year-old woman and a 33-year-old man, named as Carl Joyner, suffered minor injuries.
Have you been affected by the incident? Email<EMAIL_ADDRESS>A 40 year-old man has been arrested on suspicion of murder, causing grievous bodily harm with intent, death by dangerous driving and assault.
In a tribute shared online by fellow musician, Tony Gibsong described Stuart as “an amazing man”.
Another said: "Deepest condolences to the family and friends of New Town Kings' guitarist, Stuart McClung who was killed this weekend. one of the good guys. Rest Easy x."
The New Town Kings band has not yet commented publicly on Stuart's death.
The eight-piece reggae band from Essex has almost 800 subscribers on YouTube.
The band’s modern twist on classic Jamaican music has seen them play with the likes of The Skints, Lucky Chops and US reggae legends The Aggrolites.
The band has played over 500 shows across 10 different countries since their formation in 2006, including the UK, Germany, France, Holland, Croatia, Czech Republic, Austria and Switzerland.
Meanwhile, the pub at the centre of the tragedy has since released a statement on its Facebook page.
It read: "A very massive thank you for all the support we have received today from family, friends and our awesome Spinnaker regulars you have helped Bridget and I get through a very dark day.
"We are devastated that a wonderful talented young man has lost his life through no fault of his own and pass on our condolences to his family, girlfriend and friends.
"We so hope our amazing courageous friend Ian can battle his injuries and come back to us and Carl be strong you were both amazing in the face of such devastation.
"Something early this morning put the Great back in Great Britain for me and that was the amazing professionalism of our emergency services your efforts will never be forgotten.
"We will be closed for some time to rectify the structural and interior damage. Thank you all love Rod and Bridget."
A spokesman for Essex Police said yesterday: "We were called shortly after 12.50am today following reports that a white Nissan Qashqai had crashed into The Spinnaker Public House in Colchester.
"Following the collision Hythe Quay was closed for around seven hours and was reopened at around 9am this morning.
"Tragically a 36 year-old man died at the scene.
"A 34 year-old man has been taken to hospital with life changing injures and two others, a 34 year-old woman and a 33 year-old man, were also taken to hospital with minor injuries.
"A 40 year-old man has been arrested on suspicion of murder, causing Grievous Bodily Harm with intent, death by dangerous driving and assault.
"We would like to speak to any who saw a white Nissan Qashqai in the local area before the incident took place and anyone who was in the pub at the time and has yet to speak to officers."