Eiffel mode note description: "[ Project-wide universal properties. This class is an ancestor to all developer-written classes. ANY may be customized for individual projects or teams. ]" library: "Free implementation of ELKS library" status: "See notice at end of class." legal: "See notice at end of class." date: "$Date: 2013-01-25 11:49:00 -0800 (Fri, 25 Jan 2013) $" revision: "$Revision: 712 $" class ANY feature -- Customization feature -- Access generator: STRING -- Name of current object's generating class -- (base class of the type of which it is a direct instance) external "built_in" ensure generator_not_void: Result /= Void generator_not_empty: not Result.is_empty end generating_type: TYPE [detachable like Current] -- Type of current object -- (type of which it is a direct instance) do Result := {detachable like Current} ensure generating_type_not_void: Result /= Void end feature -- Status report conforms_to (other: ANY): BOOLEAN -- Does type of current object conform to type -- of `other' (as per Eiffel: The Language, chapter 13)? require other_not_void: other /= Void external "built_in" end same_type (other: ANY): BOOLEAN -- Is type of current object identical to type of `other'? require other_not_void: other /= Void external "built_in" ensure definition: Result = (conforms_to (other) and other.conforms_to (Current)) end feature -- Comparison is_equal (other: like Current): BOOLEAN -- Is `other' attached to an object considered -- equal to current object? require other_not_void: other /= Void external "built_in" ensure symmetric: Result implies other ~ Current consistent: standard_is_equal (other) implies Result end frozen standard_is_equal (other: like Current): BOOLEAN -- Is `other' attached to an object of the same type -- as current object, and field-by-field identical to it? require other_not_void: other /= Void external "built_in" ensure same_type: Result implies same_type (other) symmetric: Result implies other.standard_is_equal (Current) end frozen equal (a: detachable ANY; b: like a): BOOLEAN -- Are `a' and `b' either both void or attached -- to objects considered equal? do if a = Void then Result := b = Void else Result := b /= Void and then a.is_equal (b) end ensure definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.is_equal (b)) end frozen standard_equal (a: detachable ANY; b: like a): BOOLEAN -- Are `a' and `b' either both void or attached to -- field-by-field identical objects of the same type? -- Always uses default object comparison criterion. do if a = Void then Result := b = Void else Result := b /= Void and then a.standard_is_equal (b) end ensure definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.standard_is_equal (b)) end frozen is_deep_equal (other: like Current): BOOLEAN -- Are `Current' and `other' attached to isomorphic object structures? require other_not_void: other /= Void external "built_in" ensure shallow_implies_deep: standard_is_equal (other) implies Result same_type: Result implies same_type (other) symmetric: Result implies other.is_deep_equal (Current) end frozen deep_equal (a: detachable ANY; b: like a): BOOLEAN -- Are `a' and `b' either both void -- or attached to isomorphic object structures? do if a = Void then Result := b = Void else Result := b /= Void and then a.is_deep_equal (b) end ensure shallow_implies_deep: standard_equal (a, b) implies Result both_or_none_void: (a = Void) implies (Result = (b = Void)) same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b)) symmetric: Result implies deep_equal (b, a) end feature -- Duplication frozen twin: like Current -- New object equal to `Current' -- `twin' calls `copy'; to change copying/twinning semantics, redefine `copy'. external "built_in" ensure twin_not_void: Result /= Void is_equal: Result ~ Current end copy (other: like Current) -- Update current object using fields of object attached -- to `other', so as to yield equal objects. require other_not_void: other /= Void type_identity: same_type (other) external "built_in" ensure is_equal: Current ~ other end frozen standard_copy (other: like Current) -- Copy every field of `other' onto corresponding field -- of current object. require other_not_void: other /= Void type_identity: same_type (other) external "built_in" ensure is_standard_equal: standard_is_equal (other) end frozen clone (other: detachable ANY): like other -- Void if `other' is void; otherwise new object -- equal to `other' -- -- For non-void `other', `clone' calls `copy'; -- to change copying/cloning semantics, redefine `copy'. obsolete "Use `twin' instead." do if other /= Void then Result := other.twin end ensure equal: Result ~ other end frozen standard_clone (other: detachable ANY): like other -- Void if `other' is void; otherwise new object -- field-by-field identical to `other'. -- Always uses default copying semantics. obsolete "Use `standard_twin' instead." do if other /= Void then Result := other.standard_twin end ensure equal: standard_equal (Result, other) end frozen standard_twin: like Current -- New object field-by-field identical to `other'. -- Always uses default copying semantics. external "built_in" ensure standard_twin_not_void: Result /= Void equal: standard_equal (Result, Current) end frozen deep_twin: like Current -- New object structure recursively duplicated from Current. external "built_in" ensure deep_twin_not_void: Result /= Void deep_equal: deep_equal (Current, Result) end frozen deep_clone (other: detachable ANY): like other -- Void if `other' is void: otherwise, new object structure -- recursively duplicated from the one attached to `other' obsolete "Use `deep_twin' instead." do if other /= Void then Result := other.deep_twin end ensure deep_equal: deep_equal (other, Result) end frozen deep_copy (other: like Current) -- Effect equivalent to that of: -- `copy' (`other' . `deep_twin') require other_not_void: other /= Void do copy (other.deep_twin) ensure deep_equal: deep_equal (Current, other) end feature {NONE} -- Retrieval frozen internal_correct_mismatch -- Called from runtime to perform a proper dynamic dispatch on `correct_mismatch' -- from MISMATCH_CORRECTOR. local l_msg: STRING l_exc: EXCEPTIONS do if attached {MISMATCH_CORRECTOR} Current as l_corrector then l_corrector.correct_mismatch else create l_msg.make_from_string ("Mismatch: ") create l_exc l_msg.append (generating_type.name) l_exc.raise_retrieval_exception (l_msg) end end feature -- Output io: STD_FILES -- Handle to standard file setup once create Result Result.set_output_default ensure io_not_void: Result /= Void end out: STRING -- New string containing terse printable representation -- of current object do Result := tagged_out ensure out_not_void: Result /= Void end frozen tagged_out: STRING -- New string containing terse printable representation -- of current object external "built_in" ensure tagged_out_not_void: Result /= Void end print (o: detachable ANY) -- Write terse external representation of `o' -- on standard output. do if o /= Void then io.put_string (o.out) end end feature -- Platform Operating_environment: OPERATING_ENVIRONMENT -- Objects available from the operating system once create Result ensure operating_environment_not_void: Result /= Void end feature {NONE} -- Initialization default_create -- Process instances of classes with no creation clause. -- (Default: do nothing.) do end feature -- Basic operations default_rescue -- Process exception for routines with no Rescue clause. -- (Default: do nothing.) do end frozen do_nothing -- Execute a null action. do end frozen default: detachable like Current -- Default value of object's type do end frozen default_pointer: POINTER -- Default value of type `POINTER' -- (Avoid the need to write `p'.`default' for -- some `p' of type `POINTER'.) do ensure -- Result = Result.default end frozen as_attached: attached like Current -- Attached version of Current -- (Can be used during transitional period to convert -- non-void-safe classes to void-safe ones.) do Result := Current end invariant reflexive_equality: standard_is_equal (Current) reflexive_conformance: conforms_to (Current) note copyright: "Copyright (c) 1984-2012, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone<PHONE_NUMBER>, Fax<PHONE_NUMBER> Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end MIME types defined: text/x-eiffel. Created by YNH.


Mayuri is University of Maryland's annual premiere Indian Classical Dance Competition. On March 9th, 2013, Mayuri Executive Board hosted its first competition. With more opportunities for showcasing this unique art, Mayuri hopes to expand the interest for Indian Classical dance and provide teams a venue to flourish, learn and compete as dancers, artists, and students. This year marks the 7th anniversary of this national competition, and we couldn't be more excited!
“Mayuri”, or peacock, is a reoccurring symbol within Hindu arts and scriptures, and is the national bird of India. Resembling grace, pride, and beauty, the peacock has been depicted in various forms of the classical dances of India, as the dancer emulates the refinement of one of nature’s greatest creatures. In every aspect of classical Indian dance, the elegance of the peacock is shown through the dancer’s feet, hand gestures, and facial expressions.
Known for its innovative research, academic rigor, renown athletic program, diverse campus life, and beautiful facilities, the University of Maryland is home to over 25,000 undergraduate students and 10,000 graduate students. UMD Moksha and Mayuri Executive Board are very excited to welcome all 8 competing teams to College Park for Mayuri 2019!
The MCC is a primary venues for artistic and cultural performances at the intersection of the arts and the humanities located at Montgomery College, a short twenty minute drive from the University of Maryland. The center will be the new venue for Mayuri this year, and we couldn't be more excited! Directions can be found here
Sankara Nethralaya Ophthalmic Mission (SNOM) Trust, Inc.,a registered non-profit organization in the United States of America, was established in 1988 with the sole purpose of supporting Sankara Nethralaya, a charitable, not-for-profit ophthalmic hospital,in Chennai, India. SNOM Trust consists of a group of like-minded individuals who support the community eye care activities of Sankara Nethralaya.
SNOM Trust raises funds for Sankara Nethralaya by conducting various events and with the support from society at large. Over the years, SNOM Trust has successfully helped raise substantial funds which have provided vision to thousands of underprivileged people in India. Through their fundraising and awareness efforts, SNOM Trust has made world-class eye care available to a large number of indigent people in India.
Interested in Sponsoring? Check out our sponsorship packet here
Director | Class of 2019 | Mathematics
Director | Class of 2019 | Public Health Science
Sponsorship | Class of 2020 | Info Systems
Sponsorship | Class of 2022 | Finance
Sponsorship | Class of 2021 | Physics
Event Operations | Class of 2019 | Bioengineering
Event Operations | Class of 2019 | Computer Science
PR | Class of 2019 | Computer Science
PR | Class of 2021 | Kinesiology
PR | Class of 2019 | Statistics
Tech | Class of 2021 | Computer Science
Tech | Class of 2020 | Computer Science
Hospitality | Class of 2021 | Computer Science
Hospitality | Class of 2019 | Economics
Hospitality | Class of 2021 | Neurobiology
Registration | Class of 2021 | International Business
Registration | Class of 2020 | Computer Science
Mixer | Class of 2019 | Public Health Science
Judging | Class of 2020 | Public Health Science
Mixer | Class of 2021 | Public Health Science
Afterparty | Class of 2019 | Public Health Science
Afterparty | Class of 2020 | Information Systems
Liason | Class of 2020 | Psychology
In the initial email, press requestors should include their publication’s name, a description of the outlet (including its reach/target audience), the type of press coverage they’re seeking (e.g., an interview, or photography privileges), and the name(s) of the reporter(s) they’re seeking press credentials for. All press requests should be submitted at least 10 days prior to the competition


Help us help them 🐶
Our boss gave us money for team-building but we want to donate it to an animal shelter instead. Help us pick one!
123
votes
123
votes
123
votes
About us
Our lives are at risk in these unprecedented times. While the whole world is now focused on protecting humans, there’s very little done to take care of our best friends: animals.
We are a group of colleagues that has gathered some funds
and wants to help them. We would like to donate a considerable amount to an animal shelter but we are not sure which.
Help us to help others by voting on the shelter of your choice. We encourage you to also donate by following the links
available above. Please share this with your friends. During these times everyone should chip in and help.
Thank you ❤


Icon Link
Click the icon to go somewhere new.
Launch app
Icon Link and Message
Add a personal message for your users.
You've got mail!
Launch app
Icon Link and Warn Message
Draw attention to your important action.
Time to wake up!
Launch app
List of Links with Message
Mix and match for your specific needs.
You need to click these buttons!
Deposit money
Report lost card
Launch app
Multiple Link List Rows
Add multiple rows for up to four buttons.


WITNESS LIST Appropriations Committee March 19, 2003-8:00A Budget On: Bass, James (Department of Transportation)


{% extends 'page.html' %}
{% block 'yield' %}
StreetlivesNYC is a map based crowdsourcing site providing information for and from the Homeless population of New York City. Our purpose is to give the community something of its own, a platform for its voice unfiltered by outside agency.
The site can easily be used to quickly create, locate and view description of services, and comment on any aspect of homeless life in NYC, as well as provide warnings on difficulties and dangers faced by the community.
This can be achieved by accessing the site online to search for services or to make a post. We are currently planning to allow users to upload images as well. In the near future we will be introducing the following ways to post: twitter #StreetlivesNYC, Facebook, or sending toll-free SMS or voicemail.
Community guidelines for posting are:
Hate speech will be removed, incorrect location post will be amended.
Over the course of the last City fiscal year (FY 2014), more than 116,000 different homeless men, women, and children slept in the New York City municipal shelter system. This includes nearly 42,000 different homeless New York City children.
Each night thousands of unsheltered homeless people sleep on New York City streets, in the subway system, and in other public spaces. There is no accurate measurement of New York City’s unsheltered homeless population, and recent City surveys significantly underestimate the number of unsheltered homeless New Yorkers.
(source: Coalition for the Homeless)
Streetlives aims to be a platform for community empowerment and self-representation.
A core goal is improving the understanding of and access to relevant services, and as a parallel goal over time StreetlivesNYC intends to use non personal data to advocate for and improve the efficacy of those services. In short, the community's insight over time into what works and what doesn’t is shared with service providers without compromising user privacy.
Whilst our core mission is to provide user generated content, the site's functionality will adapt to and be guided by the community’s need.
We do not assume that we have a right to make choices for the user without listening to their voice. Feedback is gratefully welcomed.
Thank you,
—The Streetlives team.
Outreach ongoing with:


Thiruvananthapuram , commonly known by its former name Trivandrum,is the capital of the Indian state of Kerala. It is the most populous city in Kerala with a population of 957,730 as of 2011.[2] The encompassing urban agglomeration population is around 1.68 million. Located on the west coast of India near the extreme south of the mainland, Thiruvananthapuram is a major information technology hub in Kerala and contributes 55% of the state's software exports as of 2016.[9][10] Referred to by Mahatma Gandhi as the "Evergreen city of India",the city is characterised by its undulating terrain of low coastal hills
Kowdiar Palace in Thiruvananthapuram, Kerala, India was built in 1934 by Maharajah Sree Chithira Thirunal Balarama Varma, on Pallikettu (wedding) of his only sister, Maharani Karthika Thirunal Lakshmi Bayi with Lt. Col. G. V. Raja. After the Constitutional Amendment of 1971, the properties and estates of the royal family were partitioned and divided equally among the branches of the two Travancore Queens, Sethu Lakshmi Bayi and Sethu Parvathi Bayi.
Read MoreThe Padmanabhaswamy temple is a Hindu temple located in Thiruvananthapuram.. The name of the city of Thiruvananthapuram in Malayalam translates to "The City of Lord Ananta",referring to the deity of the Padmanabhaswamy temple. The temple is built in an intricate fusion of the Chera style and the Dravidian style of architecture, featuring high walls, and a 16th-century gopura.
Read MoreThe Veli Tourist Village which lies where the Veli Lake meets the Arabian Sea provides for unique boating and picnicking opportunities. Visitors can hire pedal boats or paddleboats as per their convenience. One can also roam the gardens and have a nice picnic or choose to employ the boats for the entire duration of the trip. The view and feel of the place is extremely unique, considering it is merely 12 kms from thiruvananthapuram.
Read More


Welcome to True Crime Companion!
My name is Christopher Pierson and I blame my grandmother for getting me hooked on True Crime. Whenever I would visit there were two constants playing on the television: The Price is Right & Unsolved Mysteries. While I wouldn’t recommended going back and watching the 14 seasons of Unsolved Mysteries, or any 90’s True Crime programming for that matter, but it spawned an interest in the unknown and/or unsolved that lives on today. The arrival of podcasts and steaming television has shifted the genre away from the repetitive and melodramatic series of days past – bringing on a sort of True Crime renaissance that I’m thoroughly enjoying. However, as a practicing geographer I cannot help but notice the lack of spatial information used to tell these stories (podcasts do a particularly poor job at this). Which brings me to the reason for creating this website… in a weird alternative universe, maybe I would be making a website about The Price is Right instead.
The purpose behind this website is to be create a place where True Crime fans can go to discover the spatial component of cases. The content here is meant to be consumed alongside other True Crime medium – I won’t ever be a great storyteller, but I think I can add a little context to some of the great stories already out there. The fun part of consuming True Crime is coming up with your own theories and because of that my goal is to be as objective as possible. I will try to provide geospatial data that is relevant to different sides of each story.
Each case covered on this website will have a brief introduction to the case, an embedded map, links to some of the most popular coverages of each case, and the ability to download the data for yourself. I encourage you to consume stories from different perspectives and to look beyond what I have provided as I couldn’t possibly cover everything. To avoid publishing private and/or identifying information about those involved in these cases, I use yellow buffers in the map to show the general locations of homes.
All non-basemap geospatial data was created by myself - if you believe some information is incorrect or I am missing important features, please reach out to me via email at<EMAIL_ADDRESS>Maps were created using Mapbox Studio. Icons used in the maps are from the The Noun Project.


HMDA API Documentation
The HMDA Platform API helps to prepare and test your HMDA data by allowing you to calculate rate spread, check a single LAR for formatting errors, generate/validate a check digit, and more.
Data Browser API
The data browser api enables developers to interact with HMDA data. The API will return the data in JSON or CSV.
Note: depending on the query, files might take a while to generate and may not open using conventional spread sheet applications.
Endpoints
Use data-browser-api/view/
for the endpoints below. Each endpoint could be called on nationwide data or on specific states/msamds/counties/ageapplicant. If nationwide
is not specified, state(s) or msamds or counties or ageapplicant must be selected. A call made with the nationwide endpoint will discard any state(s) or msamds if present. For state, use 2 character state name. For msamd use a 5 digit integer. For counties use 5 digit county code.
- Aggregations
The aggregation
endpoint can be used to generated JSON reports.
- CSV
The csv
endpoint can be used to generate CSV reports. The file will be streamed.
- Institutions
The filers
endpoint will show a list of all institutions available.
Filters
Data request could be filtered based on the following parameters. Multiple options are acceptable.
| Variable Name | Options |
|---|---|
| actions_taken | 1,2,3,4,5,6,7,8 |
| construction_methods | 1,2 |
| dwelling_categories | Single Family (1-4 Units):Site-Built Multifamily:Site-Built Single Family (1-4 Units):Manufactured Multifamily:Manufactured |
| ethnicities | Hispanic or Latino Not Hispanic or Latino Joint Ethnicity Not Available Free Form Text Only |
| lien_statuses | 1,2 |
| loan_products | Conventional:First Lien FHA:First Lien VA:First Lien FSA/RHS:First Lien Conventional:Subordinate Lien FHA:Subordinate Lien VA:Subordinate Lien FSA/RHS:Subordinate Lien |
| loan_purposes | 1,2,31,32,4,5 |
| loan_types | 1,2,3,4 |
| races | Asian Native Hawaiian or Other Pacific Islander Free Form Text Only Race Not Available American Indian or Alaska Native Black or African American 2 or more minority races White Joint |
| sexes | Male Female Joint Sex Not Available |
| total_units | 1,2,3,4,5-24,25-49,50-99,100-149,>149 |
Aggregation Example
Example
curl "https://ffiec.cfpb.gov/v2/data-browser-api/view/aggregations?states=MD&years=2018&actions_taken=5,6&races=White,Asian,Joint"
JSON Response
{
"parameters": {
"year": "2018",
"state": "MD",
"actions_taken": "5,6",
"races": "White,Asian,Joint"
},
"aggregations": [
{
"count": 243,
"sum": 9.4325E7,
"actions_taken": "6",
"races": "Joint",
"state": "MD",
"year": "2018"
},
{
"count": 716,
"sum": 2.5435E8,
"actions_taken": "6",
"races": "Asian",
"state": "MD",
"year": "2018"
},
{
"count": 7505,
"sum": 2.323145E9,
"actions_taken": "6",
"races": "White",
"state": "MD",
"year": "2018"
},
{
"count": 165,
"sum": 4.7595E7,
"actions_taken": "5",
"races": "Joint",
"state": "MD",
"year": "2018"
},
{
"count": 679,
"sum": 1.90835E8,
"actions_taken": "5",
"races": "Asian",
"state": "MD",
"year": "2018"
},
{
"count": 5237,
"sum": 1.241115E9,
"actions_taken": "5",
"races": "White",
"state": "MD",
"year": "2018"
}
]
}
GET
JSON with the following parameters
| var | value |
|---|---|
| years | 2018 |
| states | MD |
| actions_taken | 5,6 |
| races | White, Asian, Joint |
CSV Example
Example
curl -L "https://ffiec.cfpb.gov/v2/data-browser-api/view/csv?states=CA,MD,DC&years=2018&actions_taken=5"
CSV file
GET
CSV file with the following parameters
| var | value |
|---|---|
| states | CA, MD, DC |
| years | 2018 |
| action_taken | 5 |
Filers
The filers
endpoint takes the following parameters:
| Parameter Name | Options |
|---|---|
| years | CSV list of years (example: 2018,2019) |
| states | two letter state code |
| msamds | 5 digit integer code |
| counties | 5 digit integer code |
Filers Example
Example
curl "https://ffiec.cfpb.gov/v2/data-browser-api/view/filers?states=MD,DC&years=2018"
JSON Format Response
{
institutions:[
{
lei:"lei",
name:"institution name",
period:2018
},
{
lei:"lei",
name:"institution name",
period:2018
}
]
}
GET
with the following parameters
| var | value |
|---|---|
| years | 2018 |
| states | MD, DC |
Errors
Example
curl "https://ffiec.cfpb.gov/v2/data-browser-api/view/csv"
JSON Response
{
"errorType": "provide-atleast-msamds-or-states",
"message": "Provide year and either states or msamds or both"
}
Incorrect calls will result in an error. For example the following call will result in an error since there is no state(s)/msamds and years provided.
HMDA Filing API
The following are HMDA Filling API endpoints
Authorization
To file HMDA data using the API, an bearer authorization token is required for all api calls. To acquire an authorization token use the /auth
endpoint with your username and password as payload.
Example
curl -X POST \
"https://ffiec.cfpb.gov/auth/realms/hmda2/protocol/openid-connect/token" \
-d 'client_id=hmda2-api&grant_type=password&username={{username}}%40{{bank_domain}}&password={{password}}'
| Method | POST |
| URL | https://ffiec.cfpb.gov/auth/realms/hmda2/protocol/openid-connect/token |
| Payload | client_id=hmda2-api grant_type=password username={{username}}%40{{bank_domain}} password={{password}} |
| Return | JSON with access_token |
Postman Collection
The HMDA Postman Collection can be used to file via HMDA Filing API.
Endpoints
Use https://ffiec.cfpb.gov/v2/filing/institutions/{lei}/filings
as a prefix for the following endpoints.
Start a Filing
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2019" \
-H 'Authorization: Bearer {{access_token}}' \
JSON Response
{
"filing": {
"period": "2018",
"lei": "B90YWS6AFX2LGWOXJ1LD",
"status": {
"code": 2,
"message": "in-progress"
},
"filingRequired": true,
"start":<PHONE_NUMBER>454,
"end": 0
},
"submissions": []
}
For evey filing period, you must begin by starting a filing. This only needs to be done once per filing season. The POST
will result in a 200
only for the first time it's called. If the filing for the given filing period already exists, the POST
will return a 400
.
| Method | POST |
| Endpoint | /{{year}} |
Get a Filing
Example
curl -X GET \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2019" \
-H 'Authorization: Bearer {{access_token}}' \
JSON Response
{
"filing": {
"period": "2018",
"lei": "B90YWS6AFX2LGWOXJ1LD",
"status": {
"code": 2,
"message": "in-progress"
},
"filingRequired": true,
"start":<PHONE_NUMBER>454,
"end": 0
},
"submissions": []
}
| Method | GET |
| Endpoint | /{{year}} |
Create Submission
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions" \
-H 'Authorization: Bearer {{access_token}}' \
More than one submissions can be created for a filing period. The most recent submission will be considered the latest submission. Each POST
on the submission endpoint will return a new submission number.
JSON Response
{
"id": {
"lei": "B90YWS6AFX2LGWOXJ1LD",
"period": "2018",
"sequenceNumber": 4
},
"status": {
"code": 1,
"message": "No data has been uploaded yet.",
"description": "The filing period is open and available to accept HMDA data. Make sure your data is in a pipe-delimited text file."
},
"start":<PHONE_NUMBER>303,
"end": 0,
"fileName": "",
"receipt": ""
}
| Method | POST |
| Endpoint | /{{year}}/submissions |
| Payload | {{access_token}} |
| Return | Returns JSON with {{sequenceNumber}} |
Get latest submission
Example
curl -X GET \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/latest" \
-H 'Authorization: Bearer {{access_token}}' \
JSON Response
{
"id": {
"lei": "B90YWS6AFX2LGWOXJ1LD",
"period": "2018",
"sequenceNumber": 1520
},
"status": {
"code": 13,
"message": "Your data has macro edits that need to be reviewed.",
"description": "Your file has been uploaded, but the filing process may not proceed until edits are verified or the file is corrected and re-uploaded."
},
"start":<PHONE_NUMBER>130,
"end": 0,
"fileName": "clean_file_10.txt",
"receipt": "",
"qualityVerified": false,
"macroVerified": false,
"qualityExists": true,
"macroExists": true
}
| Method | GET |
| Endpoint | /{{year}}/submissions/latest |
| Return | Details for the latest submission |
Upload File
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2019/submissions/13" \
-H 'Authorization: Bearer {{access_token}}' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F file=<file.csv>
JSON Response
{
"id": {
"lei": "B90YWS6AFX2LGWOXJ1LD",
"period": "2018",
"sequenceNumber": 55
},
"status":{
"code": 3,
"message": "Your file has been uploaded.",
"description": "Your data is ready to be analyzed."
},
"start":<PHONE_NUMBER>130,
"end": 0,
"fileName": "",
"receipt": ""
}
| Method | POST |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}} |
| Headers | 'Content-Type': multipart/form-data |
| Payload | LAR file |
View parse errors
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/24/parseErrors" \
-H 'Authorization: Bearer {{access_token}}'
JSON Response
{
"transmittalSheetErrors": [],
"larErrors": [],
"count": 0,
"total": 0,
"status": {
"code": 5,
"message": "Your data has formatting errors.",
"description": "Review these errors and update your file. Then, upload the corrected file."
},
"_links": {
"href": "/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/24/parseErrors{rel}",
"self": "?page=1",
"first": "?page=1",
"prev": "?page=1",
"next": "?page=0",
"last": "?page=0"
}
}
| Method | GET |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/parseErrors |
View all edits
Example
curl -X GET \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/24/edits" \
-H 'Authorization: Bearer {{access_token}}'
JSON Response
{
"syntactical": {
"edits": []
},
"validity": {
"edits": []
},
"quality": {
"edits": [
{
"edit": "Q630",
"description": "If Total Units is greater than or equal to 5, then HOEPA Status generally should equal 3."
},
{
"edit": "Q631",
"description": "If Loan Type equals 2, 3 or 4, then Total Units generally should be less than or equal to 4."
}
],
"verified": false
},
"macro": {
"edits": [
{
"edit": "Q637",
"description": "No more than 15% of the loans in the file should report Action Taken equals 5. Your data indicates a percentage outside of this range."
}
],
"verified": false
},
"status": {
"code": 13,
"message": "Your data has macro edits that need to be reviewed.",
"description": "Your file has been uploaded, but the filing process may not proceed until edits are verified or the file is corrected and re-uploaded.",
"qualityVerified": false,
"macroVerified": false
}
}
| Method | GET |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/edits |
View edit details
Example
curl -X GET \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/24/edits/Q631" \
-H 'Authorization: Bearer {{access_token}}'
JSON Response
{
"edit": "Q631",
"rows": [
{
"id": "B90YWS6AFX2LGWOXJ1LDHHXWCDPM0ZEHW08FFTXGRXT62",
"fields": [
{
"name": "Loan Type",
"value": "3"
},
{
"name": "Total Units",
"value": "16"
}
]
}
],
"count": 20,
"total": 54,
"_links": {
"href": "/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/24/edits/Q631{rel}",
"self": "?page=1",
"first": "?page=1",
"prev": "?page=1",
"next": "?page=2",
"last": "?page=3"
}
}
| Method | GET |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/edits/{{edit_code}} |
Verify Quality Edits
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/sequenceNumber/edits/quality" \
-H 'Authorization: Bearer {{access_token}}' \
-d '{"verified": true}'
JSON Response
{
"verified": true,
"status": {
"code": 13,
"message": "Your data has macro edits that need to be reviewed.",
"description": "Your file has been uploaded, but the filing process may not proceed until edits are verified or the file is corrected and re-uploaded."
}
}
| Method | POST |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/edits/quality |
| Body | {"verified": true} |
Verify Macro Edits
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/sequenceNumber/edits/macro" \
-H 'Authorization: Bearer {{access_token}}' \
-d '{"verified": true}'
JSON Response
{
"verified": true,
"status": {
"code": 14,
"message": "Your data is ready for submission.",
"description": "Your financial institution has certified that the data is correct, but it has not been submitted yet."
}
}
| Method | POST |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/edits/macro |
| Body | {"verified": true} |
Sign a Submission
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/55/sign" \
-H 'Authorization: Bearer {{access_token}}' \
-d '{"verified": true}'
JSON Response
{
"email"<EMAIL_ADDRESS>"timestamp":<PHONE_NUMBER>080,
"receipt": "B90YWS6AFX2LGWOXJ1LD-2018-55-1572375004080",
"status": {
"code": 15,
"message": "Your submission has been accepted.",
"description": "This completes your HMDA filing process for this year. If you need to upload a new HMDA file, the previously completed filing will not be overridden until all edits have been cleared and verified, and the new file has been submitted."
}
}
| Method | POST |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/sign |
| Body | {"signed": true} |
Get Sign receipt
Example
curl -X GET \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/submissions/1520/sign" \
-H 'Authorization: Bearer {{access_token}}' \
-d '{"verified": true}'
JSON Response
{
"email"<EMAIL_ADDRESS>"timestamp":<PHONE_NUMBER>080,
"receipt": "B90YWS6AFX2LGWOXJ1LD-2018-55-1572375004080",
"status": {
"code": 15,
"message": "Your submission has been accepted.",
"description": "This completes your HMDA filing process for this year. If you need to upload a new HMDA file, the previously completed filing will not be overridden until all edits have been cleared and verified, and the new file has been submitted."
}
}
| Method | GET |
| Endpoint | /{{year}}/submissions/{{sequenceNumber}}/sign |
Submission Status
Structure
Example
{
"id": {
"lei": "12345abc",
"period": "2018",
"sequenceNumber": 3
},
"status": {
"code": 1,
"message": "No data has been uploaded yet.",
"description": "The filing period is open and available to accept HMDA data. Make sure your data is in a pipe-delimited text file."
},
"start": 0,
"end": 0,
"fileName": "test.txt",
"receipt": ""
}
Every submission will store a SubmissionStatus
object with the following structure:
| Key | Type |
|---|---|
| code | Integer |
| message | String |
| description | String |
Status Codes
In order to track the status of a filing for a financial institution, the following states are captured by the backend:
| Code | Message | Description |
|---|---|---|
| 1 | No data has been uploaded yet. | The filing period is open and available to accept HMDA data. Make sure your data is in a pipe-delimited text file. |
| 2 | Your file is uploading. | Your file is currently being uploaded to the HMDA Platform. |
| 3 | Your file has been uploaded. | Your data is ready to be analyzed. |
| 4 | Checking the formatting of your data. | Your file is being analyzed to ensure that it meets formatting requirements specified in the HMDA Filing Instructions Guide. |
| 5 | Your data has formatting errors. | Review these errors and update your file. Then, upload the corrected file. |
| 6 | Your data is formatted correctly. | Your file meets the formatting requirements specified in the HMDA Filing Instructions Guide. Your data will now be analyzed for any edits. |
| 7 | Your data is being analyzed. | Your data has been uploaded and is being checked for any edits. |
| 8 | Your data has been analyzed for Syntactical and Validity Errors. | Your file has been analyzed and does not contain any Syntactical or Validity errors. |
| 9 | Your data has syntactical and/or validity edits that need to be reviewed. | Your file has been uploaded, but the filing process may not proceed until the file is corrected and re-uploaded. |
| 10 | Your data has been analyzed for Quality Errors. | Your file has been analyzed, and does not contain quality errors. |
| 11 | Your data has quality edits that need to be reviewed. | Your file has been uploaded, but the filing process may not proceed until edits are verified or the file is corrected and re-uploaded. |
| 12 | Your data has been analyzed for macro errors. | Your file has been analyzed, and does not contain macro errors. |
| 13 | Your data has macro edits that need to be reviewed. | Your file has been uploaded, but the filing process may not proceed until edits are verified or the file is corrected and re-uploaded. |
| 14 | Your data is ready for submission. | Your financial institution has certified that the data is correct, but it has not been submitted yet. |
| 15 | Your submission has been accepted. | This completes your HMDA filing process for this year. If you need to upload a new HMDA file, the previously completed filing will not be overridden until all edits have been cleared and verified, and the new file has been submitted. |
| -1 | An error occurred while submitting the data. | Please re-upload your file. |
Quarterly Filing
Example
curl -X GET \
"https://ffiec.cfpb.gov/v2/filing/institutions/B90YWS6AFX2LGWOXJ1LD/filings/2018/quarter/Q1/submissions/latest" \
-H 'Authorization: Bearer {{access_token}}' \
JSON Response
{
"id": {
"lei": "B90YWS6AFX2LGWOXJ1LD",
"period": {
"year": 2020,
"quarter": "Q1"
},
"sequenceNumber": 10
},
"status": {
"code": 13,
"message": "Your data has macro edits that need to be reviewed.",
"description": "Your file has been uploaded, but the filing process may not proceed until edits are verified or the file is corrected and re-uploaded."
},
"start":<PHONE_NUMBER>652,
"end": 0,
"fileName": "<file_name>",
"receipt": "",
"qualityVerified": false,
"macroVerified": false,
"qualityExists": true,
"macroExists": false
}
All the endpoints are the same for quarterly filing with the addtion of quarter/Q1/
, quarter/Q2/
or quarter/Q3/
.
HMDA Public API
The following are HMDA Public API endpoints that do not require authorization. You may use these public endpoints to help prepare your data for sumbission.
Use public/
for all the follwing endpoints.
TS and LAR Endpoints
Use ts/
and lar/
for the endpoints bellow. Each endpoint could be called to parse and validate TS and LAR respectfully. Use parse
to check for parsing errors and validate/<year>
to check for SVQ (syntactical, validity, quality) errors.
Parse TS Example
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/public/ts/parse" \
-H 'Content-Type: application/json' \
-d '{
"ts" : "1|Bank<EMAIL_ADDRESS>Main St|Washington|DC|20001|9|100|99-999999|10Bx939c5543TqA1144M"
}'
Response
{
"id": 1,
"institutionName": "Bank 0",
"year": 2018,
"quarter": 4,
"contact": {
"name": "Jane",
"phone": "111-111-1111",
"email"<EMAIL_ADDRESS>"address": {
"street": "123 Main St",
"city": "Washington",
"state": "DC",
"zipCode": "20001"
}
},
"agency": 9,
"totalLines": 100,
"taxId": "99-999999",
"LEI": "10Bx939c5543TqA1144M"
}
| Method | POST |
| URL | https://ffiec.cfpb.gov/v2/public/ts/parse |
| Payload | Pipe delimited TS |
| Return | JSON |
Validate TS Example
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/public/ts/validate/2018" \
-H 'Content-Type: application/json' \
-d '{
"ts" : "1|Bank<EMAIL_ADDRESS>Main St|Washington|DC|20001|9|100|99-999999|10Bx939c5543TqA1144M"
}'
Response
{
"syntactical": {
"errors": []
},
"validity": {
"errors": []
},
"quality": {
"errors": []
}
}
| Method | POST |
| URL | https://ffiec.cfpb.gov/v2/public/ts/validate/2018 |
| Payload | Pipe delimited TS |
| Return | JSON |
Parse a LAR Example
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/public/lar/parse" \
-H 'Content-Type: application/json' \
-d '{ "lar": "2|10Bx939c5543TqA1144M|10Bx939c5543TqA1144M999143X38|20180721|1|1|1|1|1|110500|1|20180721|123 Main St|Beverly Hills|CA|90210|06037|06037264000|1|1|1|1|1||1|1|1|1|1||3|3|5|7|7|7|7||||5|7|7|7|7||||3|3|1|1|3|3|30|30|36|1|0.428|1|1|750|750|1|9|1|9|10|10|10|10||2399.04|NA|NA|NA|NA|4.125|NA|42.95|80.05|360|NA|1|2|1|1|350500|1|1|5|NA|1|1|12345|1|1|1|1|1||1|1|1|1|1||1|1|1"
}'
Response
{
"larIdentifier": {
"id": 2,
"LEI": "10BX939C5543TQA1144M",
"NMLSRIdentifier": "12345"
},
"loan": {
"ULI": "10Bx939c5543TqA1144M999143X38",
"applicationDate": "20180721",
"loanType": 1,
"loanPurpose": 1,
"constructionMethod": 1,
"occupancy": 1,
"amount": 110500.0,
"loanTerm": "360",
"rateSpread": "0.428",
"interestRate": "4.125",
"prepaymentPenaltyTerm": "NA",
"debtToIncomeRatio": "42.95",
"combinedLoanToValueRatio": "80.05",
"introductoryRatePeriod": "NA"
},
"larAction": {
"preapproval": 1,
"actionTakenType": 1,
"actionTakenDate": 20180721
},
"geography": {
"street": "123 Main St",
"city": "Beverly Hills",
"state": "CA",
"zipCode": "90210",
"county": "06037",
"tract": "06037264000"
},
"applicant": {
"ethnicity": {
"ethnicity1": 1,
"ethnicity2": 1,
"ethnicity3": 1,
"ethnicity4": 1,
"ethnicity5": 1,
"otherHispanicOrLatino": "",
"ethnicityObserved": 3
},
"race": {
"race1": 5,
"race2": 7,
"race3": 7,
"race4": 7,
"race5": 7,
"otherNativeRace": "",
"otherAsianRace": "",
"otherPacificIslanderRace": "",
"raceObserved": 3
},
"sex": {
"sex": 1,
"sexObserved": 3
},
"age": 30,
"creditScore": 750,
"creditScoreType": 1,
"otherCreditScoreModel": "9"
},
"coApplicant": {
"ethnicity": {
"ethnicity1": 1,
"ethnicity2": 1,
"ethnicity3": 1,
"ethnicity4": 1,
"ethnicity5": 1,
"otherHispanicOrLatino": "",
"ethnicityObserved": 3
},
"race": {
"race1": 5,
"race2": 7,
"race3": 7,
"race4": 7,
"race5": 7,
"otherNativeRace": "",
"otherAsianRace": "",
"otherPacificIslanderRace": "",
"raceObserved": 3
},
"sex": {
"sex": 1,
"sexObserved": 3
},
"age": 30,
"creditScore": 750,
"creditScoreType": 1,
"otherCreditScoreModel": "9"
},
"income": "36",
"purchaserType": 1,
"hoepaStatus": 1,
"lienStatus": 1,
"denial": {
"denialReason1": 10,
"denialReason2": 10,
"denialReason3": 10,
"denialReason4": 10,
"otherDenialReason": ""
},
"loanDisclosure": {
"totalLoanCosts": "2399.04",
"totalPointsAndFees": "NA",
"originationCharges": "NA",
"discountPoints": "NA",
"lenderCredits": "NA"
},
"nonAmortizingFeatures": {
"balloonPayment": 1,
"interestOnlyPayment": 2,
"negativeAmortization": 1,
"otherNonAmortizingFeatures": 1
},
"property": {
"propertyValue": "350500.0",
"manufacturedHomeSecuredProperty": 1,
"manufacturedHomeLandPropertyInterest": 1,
"totalUnits": 5,
"multiFamilyAffordableUnits": "NA"
},
"applicationSubmission": 1,
"payableToInstitution": 1,
"AUS": {
"aus1": 1,
"aus2": 1,
"aus3": 1,
"aus4": 1,
"aus5": 1,
"otherAUS": ""
},
"ausResult": {
"ausResult1": 1,
"ausResult2": 1,
"ausResult3": 1,
"ausResult4": 1,
"ausResult5": 1,
"otherAusResult": ""
},
"reverseMortgage": 1,
"lineOfCredit": 1,
"businessOrCommercialPurpose": 1
}
| Method | POST |
| URL | https://ffiec.cfpb.gov/v2/public/lar/parse |
| Payload | Pipe delimited TS |
| Return | JSON |
Validate a LAR Example
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/public/lar/validate/2018" \
-H 'Content-Type: application/json' \
-d '{"lar": "2|10Bx939c5543TqA1144M|10Bx939c5543TqA1144M999143X38|20180721|1|1|1|1|1|110500|1|20180721|123 Main St|Beverly Hills|CA|90210|06037|06037264000|1|1|1|1|1||1|1|1|1|1||3|3|5|7|7|7|7||||5|7|7|7|7||||3|3|1|1|3|3|30|30|36|1|0.428|1|1|750|750|1|9|1|9|10|10|10|10||2399.04|NA|NA|NA|NA|4.125|NA|42.95|80.05|360|NA|1|2|1|1|350500|1|1|5|NA|1|1|12345|1|1|1|1|1||1|1|1|1|1||1|1|1"
}'
Response
{
"syntactical": {
"errors": []
},
"validity": {
"errors": [
"V614-3",
"V614-4",
"V615-2",
"V615-3",
"V628-3",
"V631-3",
"V635-2",
"V635-3",
"V638-2",
"V638-3",
"V657-3",
"V662-1",
"V662-2",
"V667-1",
"V667-2",
"V669-2",
"V669-3",
"V669-4",
"V672-3",
"V672-4",
"V672-5",
"V682-2",
"V689-3",
"V690-3"
]
},
"quality": {
"errors": [
"Q608",
"Q612",
"Q622",
"Q630"
]
}
}
| Method | POST |
| URL | https://ffiec.cfpb.gov/v2/public/lar/validate/2018 |
| Payload | Pipe delimited TS |
| Return | JSON |
HMDA Parse
To parse a file, use the hmda/parse
endpoint and a file.
HMDA Parse Example
Example
curl -X OPTIONS \
"https://ffiec.cfpb.gov/v2/public/hmda/parse" \
-F<EMAIL_ADDRESS>Response
{
"validated": []
}
| Method | OPTIONS |
| URL | https://ffiec.cfpb.gov/v2/public/hmda/parse |
| Payload | LAR file |
| Return | JSON |
HMDA Validate
To parse and validate a file, use the hmda/validate
endpoint and a file.
HMDA Validate Example
Example
curl -X OPTIONS \
"https://ffiec.cfpb.gov/v2/public/hmda/validate" \
-F<EMAIL_ADDRESS>Response
{
"parserErrors": [
{
"rowNumber": 1,
"estimatedULI": "Transmittal Sheet",
"errorMessages": [
{
"fieldName": "Calendar Quarter",
"inputValue": "a",
"validValues": "Integer"
}
]
}
],
"validationErrors": [
[
{
"uli": "B90YWS6AFX2LGWOXJ1LDNIXOQ6OO7BRA5SLR6FSJJ5R89",
"editName": "V619-2",
"editDescription": "\"The Action Taken Date must be in the reporting year.\"",
"fields": {
"Action Taken Date": "20180908",
"Application Date": "NA"
}
}
]
]
}
| Method | OPTIONS |
| URL | https://ffiec.cfpb.gov/v2/public/hmda/validate |
| Payload | LAR file |
| Return | JSON |
Check Digit
To use check digit on a csv file, use the uli/validate/csv
and upload a csv. The respose will list the ULIs along with true
/false
.
Check Digit Example
Example
curl -X POST \
"https://ffiec.cfpb.gov/v2/public/uli/validate/csv" \
-F<EMAIL_ADDRESS>Response
uli,isValid
95GVQQ61RS6CWQF0SZD9F4VRXNN1OCVXHP1JURF9ZJS92,true
B90YWS6AFX2LGWOXJ1LDNIXOQ6O0000SLR6FSJJ5R89,false
| Method | POST |
| URL | https://ffiec.cfpb.gov/v2/public/validate/csv |
| Payload | CSV file as shown bellow |
| Return | JSON |
check_digit_sample_file.csv
| 95GVQQ61RS6CWQF0SZD9F4VRXNN1OCVXHP1JURF9ZJS92 |
| B90YWS6AFX2LGWOXJ1LDNIXOQ6O0000SLR6FSJJ5R89 |
Rate Spread
Rate Spread API
The /rateSpread
endpoint you can provide information about a loan and have the rate spread calculated via POST
.
Note: The response is either a number representing the rate spread or "NA".
Endpoints
Rate spread has 2 API endpoints, one for submitting JSON and one for CSV.
POST
https://ffiec.cfpb.gov/public/rateSpread
POST
https://ffiec.cfpb.gov/public/rateSpread/csv
JSON Example
Example
curl -X POST "https://ffiec.cfpb.gov/public/rateSpread" -H "Content-Type: application/json" -d '{ "actionTakenType": 1, "loanTerm": 30, "amortizationType": "FixedRate", "apr": 6.0, "lockInDate": "2017-11-20", "reverseMortgage": 2 }'
JSON Response
{"rateSpread":"2.010"}
JSON with the following parameters
| var | value |
|---|---|
| actionTakenType | 1 |
| loanTerm | 30 |
| amortizationType | FixedRate |
| apr | 6.0 |
| lockInDate | 2017-11-20 |
| reverseMortgage | 2 |
CSV File Format
The contents of this file must include the following information:
| var | type | accepted values |
|---|---|---|
| action_taken_type | integer | 1 = Originated2 = Approved Not Accepted8 = Pre-approval request approved but not Accepted3 , 4 , 5 , 6 or 7 will result in NA |
| loan_term | integer | Range from 1 - 50 |
| amortization_type | String | FixedRate or VariableRate |
| apr | double | The annual Percentage Rate on the loan, eg 6.0 |
| lock_in_date | date | YYYY-MM-DD |
| reverse_mortgage | integer | 2 = false1 = true, will result in NA |
CSV Example
Example
curl -X POST "https://ffiec.cfpb.gov/public/rateSpread/csv" -F file=<file.csv>
CSV file with an added column for rate_spread calculated for each row
action_taken_type,loan_term,amortization_type,apr,lock_in_date,reverse_mortgage,rate_spread
1,30,FixedRate,6.0,2017-11-20,2,2.010
1,30,VariableRate,6.0,2017-11-20,2,2.150
Example CSV file with contents:
| 1 | 30 | FixedRate | 6.0 | 2017-11-20 |
| 1 | 30 | VariableRate | 6.0 | 2017-11-20 |


Java programming language: Basic understanding and
implementation of data structures in the language. Currently, not very
proficient in it. Studied mostly between 2017-2018.
Excel: Understanding of the use of macros and how to
solve optimization problems.
Learning (in progress):
The ability to learn things in a quicker manner and to be able to
understand them and apply them in different contexts.
Web development (in progress): Construction of basic
webpages, like this one. Hoping to learn how to build a responsive and
interactive website.


A program is made up of a sequence of clauses and directives. The clauses of a predicate do not have to be immediately consecutive, but remember that their relative order may be important (see ref-sem).
To input a program from a file file, issue a query of the form:
| ?- consult(file).
This instructs the interpreter to read in (consult) the program. Note that it may be necessary to enclose the filename file in single quotes to make it a legal Prolog atom; e.g.:
| ?- consult('myfile.pl'). | ?- consult('/usr/prolog/somefile').
The specified file is then read in. Clauses in the file are stored so that they can later be interpreted, while any directives are obeyed as they are encountered. When the end of the file is found, the system displays on the standard error stream the time spent. This indicates the completion of the query.
Predicates that expect the name of a Prolog source file, or more generally a file specification, use the facilities described in ref-fdi to resolve the file name. File extensions are optional. There is also support for libraries.
This query can also take any list of filenames, such as:
| ?- consult([myprog,extras,tests]).
In this case all three files would be consulted.
The clauses for all the predicates in the consulted files will replace any existing clauses for those predicates, i.e. any such previously existing clauses in the database will be deleted.


The cstr module provides a spreadsheet-like Variable whose values may be any data or a formula that depends on the
value of other variables,
Classes
Members
(static) Variable
Class of spreadsheet-like variables.
(protected, inner, constant) system :ConstraintSystem
Type:
- ConstraintSystem
Methods
(inner) addDaemon(daemonnon-null)
Add a daemon to the system to be executed once, at the start of the next call to get the value of any Variable
instance. After the first and only execution the daemon must be added again to execute another time.
Parameters:
| Name | Type | Description |
|---|---|---|
daemon |
function |


Aleksandra's work gallery
First work
Site Uber
Menu flex
JS traffic light
JS toggle
Website adapted to mobile
Final project
StartUp Site


Contact Form
Please fill all the texts in the fields.
Your Name :
Your Email :
Message :
Subject :
Job Inquiry
General Question
Send


Normalizing schema.org namespace¶
Consistent representation of namespaces simplifies programmatic processing of markup. For example, even though
conceptually it is clear the terms http://schema.org/Dataset
and https://schema.org/Dataset
(note the protocol
difference) are referring to https://schema.org/Dataset, these are programmatically treated as different
entities. The schema.org guidelines are somewhat ambivalent on the topic, with perhaps emphasis on “https”.
The trailing slash (/) is also important. Without it, common RDF processing libraries such as rdflib will construct
a term like “https://schema.orgDataset”. For example given the three SO:Dataset
entries:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [
{
"@context": {
"@vocab": "https://schema.org"
},
"@id":"demo_0",
"@type":"Dataset",
"name": "https, no trailing slash"
},
{
"@context": {
"@vocab": "http://schema.org"
},
"@id":"demo_1",
"@type":"Dataset",
"name": "http, no trailing slash"
},
{
"@context": {
"@vocab": "http://schema.org/"
},
"@id":"demo_2",
"@type":"Dataset",
"name": "http only"
}
]
|
the resulting RDF:type
values as recognized by rdflib are:
from rdflib import ConjunctiveGraph
g = ConjunctiveGraph()
g.parse(
"source/examples/data/ds_bad_namespace.json",
format="json-ld",
publicID="https://my.server.net/data/"
)
sparql_types = """
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?x ?y
{
?x rdf:type ?y .
} ORDER BY ASC(?x) """
qres = g.query(sparql_types)
for v in qres:
print(f'{v[0].n3()} {v[1].n3()}')
<https://my.server.net/data/demo_0> <https://schema.orgDataset/>
<https://my.server.net/data/demo_1> <http://schema.orgDataset/>
<https://my.server.net/data/demo_2> <http://schema.org/Dataset>
None of these will match for a query that relies on the schema.org namespace of https://schema.org/
:
sparql = """
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX so: <https://schema.org/>
SELECT ?x
{
?x rdf:type so:Dataset .
} """
qres = g.query(sparql)
print(f"Number of matches = {len(qres)}")
Number of matches = 0
There are however, many real world examples of each use of the schema.org namespace variants.
In order to simplify tooling for extracting information from schema.org resources, sotools
will normalize all
json-ld graphs to use the namespace https://schema.org/
. The normalization is performed when loading with the
sotools.common.loadJsonldGraph()
method. For example, loading the same data with normalization and applying
the same queries:
import sotools
g = sotools.loadJsonldGraph(
filename="source/examples/data/ds_bad_namespace.json",
publicID="https://my.server.net/data/"
)
qres = g.query(sparql_types)
for v in qres:
print(f'{v[0].n3()} {v[1].n3()}')
qres = g.query(sparql)
print(f"Number of matches = {len(qres)}")
<https://my.server.net/data/demo_0> <https://schema.org/Dataset>
<https://my.server.net/data/demo_1> <https://schema.org/Dataset>
<https://my.server.net/data/demo_2> <https://schema.org/Dataset>
Number of matches = 3


{% extends 'layouts/layout.html' %} {% from 'button/macro.njk' import button %} {% from 'back-link/macro.njk' import backLink %} {% block pageTitle %} You have tried too many times {% endblock %} {% block content %}
You must start again.
Go back to the website or app you want to access and log in with NHS login.


Error playing this sound.
Sound is loading...
audioObject.currentTime: The current time of the object in seconds
audioObject.progress: The progress of the object as a percentage (0-1);


The following shows a composite log associated with the web application to which the tutorial examples communicate.
This composite log shows details of all of the plugins from which the web application is composed. Since the web
application proves examples for all the available plugins, there will be several entries in the log. A business
application service will only compose the application from plugins it needs. The composite log only shows the
details for the plugins used by the host application service.


Big sports events today
by TIMESOFINDIA.COMNEW DELHI: Here are the big sports events lined up for Sunday (November 17) that comprise action from ATP Finals and European Championship Qualifiers.
(All timings in IST)
1:15 am (Football - European Championship Qualifiers)
Croatia vs Slovakia (Croatia won 3-1)
Northern Ireland vs Netherlands (The match ended in a 0-0 draw)
Germany vs Belarus (Germany won 4-0)
Israel vs Poland (Poland won 2-0)
Austria vs North Macedonia (Austria won 2-1)
1:30 am (Tennis - ATP Finals)
Dominic Thiem vs Alexander Zverev in semifinal (Dominic Thiem won 7-5, 6-3)
9:00 am (Cricket - Syed Mushtaq Ali Trophy)
Arunachal Pradesh vs Chandigarh, Round 7, Group C
Bihar vs Uttarakhand, Round 7, Group A
9:30 am (Cricket - Syed Mushtaq Ali Trophy)
Rajasthan vs Tripura, Round 7, Group B
Tamil Nadu vs Vidarbha, Round 7, Group B
Bengal vs Puducherry, Round 7, Group D
10:00 am (Cricket - Syed Mushtaq Ali Trophy)
Gujarat vs Jharkhand, Round 7, Group E
Assam vs Mumbai, Round 7, Group D
Delhi vs Sikkim, Round 7, Group E
10:30 am (Cricket - Syed Mushtaq Ali Trophy)
Goa vs Karnataka, Round 7, Group A
1:00 pm (Cricket - Syed Mushtaq Ali Trophy)
Chhattisgarh vs Hyderabad, Round 7, Group C
Andhra vs Services, Round 7, Group A
1:30 pm (Cricket - Syed Mushtaq Ali Trophy)
Kerala vs Uttar Pradesh, Round 7, Group B
Haryana vs Madhya Pradesh, Round 7, Group D
2:00 pm (Cricket - Syed Mushtaq Ali Trophy)
Mizoram vs Meghalaya, Round 7, Group D
Nagaland vs Odisha, Round 7, Group E
Jammu and Kashmir vs Saurashtra, Round 7, Group E
7:00 pm (Cricket - 3rd T20I)
Afghanistan vs West Indies
7:30 pm (Football - European Championship Qualifiers)
Luxembourg vs Portugal
Serbia vs Ukraine
10:30 pm (Football - European Championship Qualifiers)
Bulgaria vs Czech Republic
Kosovo vs England
11:00 pm (Cricket - 4th T20I)
West Indies Women vs India Women
11:30 pm (Tennis - ATP Finals, final)
Stefanos Tsitsipas vs Dominic Thiem


Plugin Information |
|---|
View IBM Content Navigator remote plug-in reloader on the plugin site for more information. |
Allows users to remotely reload IBM Content Navigator Plug-ins from Jenkins.
Features
- Reload existing plug-ins in IBM Content Navigator
Requirements
Jenkins
Jenkins version 1.638 or newer is required.
ICN
The plug-in is using an application managed authentication at this time to authenticate so that's the only authentication supported.
Please note
- This reloads/updates only existing plug-ins, they must be added manually once before being able to use this plug-in.
- This does not update the plug-in's configuration, which will stay untouched after the reload.
- This does not copy the plug-in's jar to the ICN server, there are plenty other Jenkins plug-ins for that.
Setup
One-time
Install plugin
Install this plugin via the Jenkins plugin manager.
There is no global configuration in this plug-in, credentials are per-job configuration (see next section).
Per-job configuration
Freestyle job configuration
Once the plug-in installed, you will see a new build step, add it to your job.
Then configure the build step:
ICN URL
The Content Navigator root URL. You can use the secured version (https) but if you're using a self signed certificate, make sure you've added it to the keystore of the JRE running Jenkins or you will get an exception.
Username
The username of an ICN administrator.
Password
The password of the ICN administrator you used above
File location on server
The path to use to reload the plug-in. The path is from the ICN server point-of-view, not Jenkins since this plug-in is triggering a remote reload in ICN. If your job is building the plug-in's jar, as it is usually what is done, you should first copy the jar to where ICN is expecting it to be, using any Jenkins plug-in you want, for instance the Publish over SSH plug-in.
If you're refreshing the plug-in in a clustered environment and the plug-in is not in a shared location, make sure you copy it to all instances before reloading it.
Using variables
All parameters above can use job variables, or be a simple variable. A few examples of what this will allow you to do:
- Ask for the password as a job parameter to make sure only an authorized user is triggering a build/reload.
- Let the user choose which plug-in he wants to reload as a job choice list parameter if you have several plug-ins.
- Let the user choose to which platform he wants to deploy with a job choice list parameter
- ...
Here is an example of a configuration making use of job variables.
You can't see it here but the password is also using a variable (ICN_ADMIN_PWD).
What is reloaded and when
When you reload a plug-in in ICN, all the Java classes are immediately reloaded on the server side. That means all services will be immediately using your new code. The JavaScript files (Dojo classes) will also immediately be served by the ICN server. However, users already connected will still be using their own cached version of the JavaScript files, which can lead to some confusing behavior. Likewise, the default cache-control expiration time for JavaScript resources in ICN is 24 hours, so users with cached versions of the files can also experience confusing behavior during the next 24 hours following the reload. Emptying the browser cache might be required depending on what changes you've made.
Expected output
Here is an output of the plug-in when reload was successful:
Connecting to ICN as P8Admin... OK Reloading plugin /home/dcs/icnplugin/my-plugin.jar... OK Plug-in MyPlugin(id: MyPlugin) successfully reloaded. Saving configuration... JSON conversion OK Returned message is: The configuration was updated. Finished: SUCCESS
Version history
Version 1.0 (February 11, 2017)
- Initial release
Attachments:
icn-plugin-loader-buildstep-config.jpg (image/jpeg)
icn-plugin-loader-buildstep-variables.jpg (image/jpeg)


Traveling sourthen express way is now Faster, Safer and Smarter thanks to highway bus services.But passengers unable to find bus at right time right bus stop. Highway Express is a real time highway bus schedule Service that provide you, guidance to find right bus at right time. puts a stop to your bus riding hassles including buses not showing up on time, broken buses, arguments with the driver or bus stations and lost belongings! we connect you with highway buses. we are having network in all the bus services and every bus station to provide you real time update. Our mobile application highway express App features some really impressive tools that prioritize on passenger safety, reliability and efficiency making highway express not just a solution but a smart solution!
semister project of the CS3202 software engineering project, Department of computer Science and engineering, University of Moratuwa. Sri Lanka.
THANK YOU!
get highway express app from:


This Coffeescript
Today I stumbled upon something that I found while working on a rails project that uses coffeescript. If you have never heard of coffeescript before, check out coffeescript right now! Coffeescript is basically a nice DSL on top of regular ol javascript which is just much nicer to write, plus theres some great little helpers in there for some common functions which can be a bit nasty, at least IMHO.
So what the fuss is about today is this, this as in the this statement in javascript. You can accomplish the same thing by using @ in coffeescript.
Here is an example of a jQuery this object used normally and then in coffeescript.
Jquery
$(this)
Coffeescript
$(@)
This just looks much nicer to me, even though it was like uhh whats that at first, but the code following after made perfect sense in the scope of the action.


"BuzzFeed Inc is an American Internet media company based in New York City. The firm is a social news and entertainment company with a focus on digital media."
-Wikipedia
"Instagram is a mobile, desktop, and Internet-based photo-sharing application and service that allows users to share pictures and videos either publicly, or privately to pre-approved followers."
-Wikipedia
"Netflix is an American entertainment company founded by Reed Hastings and Marc Randolph on August 29, 1997, in Scotts Valley, California. It specializes in and provides streaming media and video-on-demand online and DVD by mail."
-Wikipedia
| Spanish | History | Math | Chemistry | Computer Science | Free | English |
| History | Spanish | English | Math | Free | Free | Chemistry |
| Chemistry | English | Computer Science | Free | History | Spanish | Free |
| Chemistry | Self School and Society | Free | Computer Science | Spanish | History | Math |
| Free | Math | Spanish | History | Chemistry | English | Computer Science |
| Computer Science | Chemistry | Free | Free | English | Math | Free |


One Day, Blooming without Blue
This is the first micro-film I directed in April, 2013. After further study about film production, I found it may need a lot of improvements. :P But I really enjoyed the time when I made such attempt with several teammates and made progress by practicing. As a result of our efforts, the film won First Prize at Beijing 2013 College Student Psychology Short Film Contest at that time. :)


ecCausaSnipper
Connect all evidences to the goals.
Soucecode is available at
https://github.com/hnbeck/ecCausaSnipper
with no warranties. See license information at
Github
.
Test / Debug area
Output for Tau Prolog queries. Output is done via callback of the pl.answer function of Tau Prolog.
Exchange Pengine and tau
Tau terms
Tau terms


About Tingeaid Silent Auction
Jim Smith and Jeff Stansberry have over 45 years of auction experience. From automobiles, commercial real estate, residential and development property to farms and ranches, heavy equipment and farm machinery.
Auctioning specialty assets such as classic cars, some of the finest purebred livestock in the world, and the most prime of estates, Smith and Stansberry combined have auctioned assets totaling in the BILLIONS of dollars. They formed AUCTION OVERDRIVE to offer one of the most diverse and experienced teams in the global industry of auctions. Companies such as Manheim, Adesa, Ford, General Motors, Nissan, BMW, Barrett Jackson, Auction.com, and Keeneland have utilized their talents and services to increase sales and profits to their heavy hitter list of clients. Now these services are available to you.


{{ partial "header.html" . }} {{ partial "navbar.html" . }} {{ partial "header_image.html" . }}
{{ i18n "filter_by_type" }}:
Below is a list of my selected publications. Please see also my profile at [Google Scholar] | [Completed List @ LU Portal] | [DBLP]


[§624D-6] Application to court. A motion to the court for a protective order or to enforce, quash, or modify a subpoena issued by a clerk of court under section 624D‑3 shall comply with the rules of court and statutes of this State and be submitted to the court in the circuit in which discovery is to be conducted. [L 2012, c 17, pt of §1]


MSNBC's Elise Jordan: Republicans Know Trump Is a 'Classic Scumbag' | Breitbart
by Trent BakerFriday on MSNBC’s “Morning Joe,” network analyst Elise Jordan, an aide to the White House under former President George W. Bush, discussed the disdain conservatives have for President Donald Trump.
Host Joe Scarborough shared with Jordan that he has spoken with Republicans “behind the scenes” and they want Trump out of office.

Partial transcript as follows:
SCARBOROUGH: Elise, everybody Republican I’ve spoken with behind the scenes, they just shake their head. They’re like, “God.” MIKA BRZEZINSKI: They want it to end. SCARBOROUGH: They are counting the days until Donald Trump leaves office. JORDAN: Why not impeach? SCARBOROUGH: If they could turn off all the lights in the Senate when they voted to convict, they could would all vote to convict him and have Mike Pence as president in a second.  They know he’s corrupt. They know that his behavior is just a classic scumbag. And yet they just take it every single day.
(h/t Newsbusters)
Follow Trent Baker on Twitter @MagnifiTrent


Is there any activity in OpenEnergyMonitor on the M-bus protocol? (M-Bus = Meter Bus, not Multi-Bus). Hardware level converters from M-Bus to RS-232/ or 485 / USB / software ? A number of energy monitoring devices and sensors becoming available that support M-Bus.
M-Bus ?
Submitted by Guest on Mon, 21/01/2013 - 19:25»
Re: M-Bus ?
BUMP Post.
Would be interesting in this too, M-Bus is rather interesting as it is similar to the I2C bus. Commercial products to read the Mbus are often insane priced (250+).
--- Update 3-Sep-2013 ---
Reading the M-Bus specs there is a IC TSS721 that does most of the job.
TSS721 (source: http://www.m-bus.com/mbusdoc/md4.php)
And a very simple one based on RS232:
( it's a tif so if you can't see it, copy url and download it)
I'll have a go with this later on.
Wxll
Re: M-Bus ?
Hi, did you have any success with the m-bus reader using the rs232 level converter (as in the tiff-image) ?
Re: M-Bus ?
no not yet. I glanced over it recently and collected a little bit more info but haven't build anything yet.
I did found some one who did quite some work and shared his:
http://a385e-5.de/?cat=11
I think I go with his work on this, looks good.
Re: M-Bus ?
Hi there,
I've been using libmbus since version 0.3 and have always been very happy with it... I'ld be very interested in getting a deeper integration to work.
My current solution in regards of emoncms is to simply run curl for every value I transmit... So there's a shell script run every 15min's from cron, and that script calls libmbus get's the mbus response extracts the value's and generate's a curl line.
Think it would be perfect to have like a emonhub framework to read from plugins like libmbus or the tools from the volkszaehler.org project: like
never tested vzlogger, but as it reads so many different meter's I would love to...
Re: M-Bus ?
John Cantor and I are looking at how we could connect a couple of different heat meters with m-bus to the OpenEnergyMonitor system for heatpump monitoring. I dont yet have any experience with m-bus, I might try starting by building the circuit here https://github.com/rscada/libmbus/tree/master/hardware looking at both libmbus there and http://wiki.volkszaehler.org/software/controller/m-bus as Mircsicz suggests.
But I wonder if anyone else has more experience of this and can give me an idea of what might be involved in getting data out of a kamstrup 402 with mbus module http://www.termonet.rs/pdfpr/Data%20Sheet%20%20MC402.pdf or a sontex http://www.rhimetering.co.uk/pdf/Sontex-Superstatic-449-Datasheet.pdf
Re: M-Bus ?
http://www.openmuc.org
[Please read http://openenergymonitor.org/emon/node/10391 - Moderator]
Re: M-Bus ?
(The link above should be http://www.openmuc.org not http://www.openmuc.org%20/)
Also see https://code.google.com/p/iotsys/wiki/MBusConnector#M-Bus-Master_for_Raspberry_Pi
and in particular towards the end of that page is a schematic and layout for a Pi gpio -> M-Bus interface
It would cause a conflict for use with a RFM2Pi, but maybe a RFM69Pi's IO could be utilized with a custom sketch to "merge" M-Bus and RFM packets into the Pi's serial port ?
Paul
Re: M-Bus ?
Thanks a lot Paul. I will try those out.
Re: M-Bus ?
Good news, John Cantor (http://heatpumps.co.uk/) and I got the MBUS reader circuit by rscada https://github.com/rscada/libmbus/tree/master/hardware to work and their libmbus library and command line mbus reader utility, reading data from a kampstrup 402 heat meter with the intention of using it for heatpump heat output monitoring. We then implemented a very lightweight kampstrup 402 meter specific reader for Arduino.
We started by building the simple circuit below and connecting the TX and RX lines to a USB to Serial adapter connected to a laptop and providing 34V from a bench top DC power supply. We didn't have the BD136 PNP transistor so we used a 2N3906 PNP instead, which worked fine.
We then downloaded libmbus library https://github.com/rscada/libmbus and installed on linux :
ch libmbus
sh build.sh
sudo make install
Running
$ mbus-serial-scan /dev/ttyUSB0
reported "Found a M-Bus device at address 68". Running
$ mbus-serial-request-data -b 2400 /dev/ttyUSB0 68
Printed the following XML output: http://openenergymonitor.org/emon/sites/default/files/example_xml_output.txt.
With the bench top power supply connected and reading over USB to serial we could reduce the voltage driver all the way down to 18V and still receive a full frame from the MBus device, although I dont know how reliable that would be.
With the data being read over USB-to-Serial I then decided to dig a little into the protocol format to see if it would be possible to implement a reader that ran on an Arduino rather than needing a serial port on a computer or raspberrypi. There seems to be quite a few people looking to do this from searching on the internet but I couldn't find a solution that worked on an Arduino UNO the full libmbus library stores a lot of information that relates to particular byte values in large arrays which would completely fill the memory on the Atmega328.
By reading the MBUS protocol and kamstrup data frame description in the Kamstrup MBUS manual here http://www.oresundskraft.se/media/202136/m-bus_protokoll_f_r_multical_40... and cross checking that by reading the byte values that where being received from the kamstrup meter and the source code for libmbus I put together a barebones Kamstrup 402 specific reader for Arduino:
http://openenergymonitor.org/emon/sites/default/files/kamstrup402_mbus_r...
Commands sent to the MBUS device need to be even parity 1 stop bit, the arduino hardware serial library supports this but the softserial arduino library does not. I tried various suggested modifications to the softserial library but couldnt get it to work so in the end settled on the temporary solution of sending the command string on the hardware serial tx line and receiving the reply on the softserial rx line. This at least kept most of the activity off the hardware serial port used to communicate with the computer.
Here's an example of the print out from the arduino reader showing the part of the kamstrup heatmeter data frame that we where most interested in:
Energy (kWh): 10
Volume (m3): 2.72
Ontime (hours): 2423
Flow temperature: 18.36
Return temperature: 18.16
Temperature difference (K): 0.20
Power (W): 0
Max Power (W): 47
Volume flow (m3/h): 0
Max volume flow (m3/h): 1390
To decode the data frame its a matter of reading each byte in the frame and understanding from the data frame specification what each byte corresponds too. For example the first part of the header that specifies the frame type, data length and address is read like this:
start1 = bytes[0]
length1 = bytes[1]
length2 = bytes[2]
start2 = bytes[3]
control = bytes[4]
address = bytes[5]
control_information = bytes[6]
The first record starts at byte 25 and is 6 bytes long, the first 2 bytes corresponding to type and units and the last 4 bytes the value. Which can be decoded with, where i is the start byte of the record (i.e 25)
value = bytes[i+2] + (bytes[i+3]<<8) + (bytes[i+4]<<16) + (bytes[i+5]<<24)
It would be good to do some more reading up on the protocol in order to create a more generic less hardcoded arduino library for reading MBUS meters and sort the software serial library even parity bit issue but the above gives a working initial solution that can be built upon and integrated into the OpenEnergyMonitor system. Data could now be sent via RFM12/69 to an emonbase for logging in emoncms.
A small step-up converter can be used to provide the 34V required for the MBUS, we're going to try this one http://www.ebay.co.uk/itm/XL6009-DC-DC-Voltage-Step-Up-Boost-Converter-r...
Re: M-Bus ?
Hi Trystan,
Im working on to connect another meters with M-bus interface to Emoncms. I read your great tutorial in above (great job you made!) and I replicated HW interface you described. I have conected energy meter Siemens WFN21 with M-bus interface and it works ! Using libmbus at my Ubuntu desktop I got very similar structured output, like you got from your Kampstrup. There is just another set of registers and values represented by them, but registers structure seem to be the same. Now I will try to modify your .ino script for reading registers of my energy meter and to read values by my experimental Arduino Mega (for more HW Serials available).
Did you make any progress since your status description above from the end of May?
Radek
Re: M-Bus ?
Hello Radek, great to hear, yes we did make a little more progress, we built a couple of the reader circuits connected to emonth's to create a wireless emonth mbus reader. We're still reading the mbus meter address manually first.
Here's the firmware example for an emonth that connects to the reader circuit and then transmits via rfm12: http://openenergymonitor.org/emon/sites/default/files/kamstrup402_mbus_r...
It would be good to get device address discovery going as part of this.
Re: M-Bus ?
A little more progress on this. The hack that I was using above to first send the MBUS command on hardware serial and then receive the data on software serial can now be replaced with this nice software serial library by @ledongthuc on github
https://github.com/ledongthuc/CustomSoftwareSerial
This alternative to the Arduino software serial library allows configuration of the software serial parity bit, stop bits and number of data bits which makes it easy to use 8 bit, even parity with one stop bit as required by MBUS.
I've attached a reworked example of the last example I posted which uses this library, It also reads 2x DS18B20 temperature sensors and two analog inputs (flow temperature and flow rate) from a grundfos vortex flow meter which Im parallel testing alongside a kampstrup heatmeter.
Re: M-Bus ?
Hello TrystanLea.
I'm doing a M-BUS master device. I wonder exactly how many slave can be connected to the hardware circuit discussed above in https://github.com/rscada/libmbus/tree/master/hardware.
Do you have tested many devices? How many?
I need to connect 8 slaves, and I need to know if the hardware circuit discussed above, it is sufficiently robust to endure 8 slaves. Because documentation sets "Bus-driver for up to three meters"
Then, I look a circuit hardware in ANALOG-BOARD for the Meter Bus Application of Texas Instruments http://cxjr.21ic.org/uploadfile-/200667162428749.pdf .Which it is more robust, it but more expensive. I do not know whether it is worth implement for 8 slaves, this circuit of Texas instruments.
Do you have tested many slaves with the circuit of libmbus? How many slaves?
Thank you very much,
Albert
[2 further copies of this post have been deleted. Please READ "Read this before posting" under the heading SITE MAP. Moderator (RW)]
Re: M-Bus ?
Hi Albert -
The simple interface circuit will not work for more than about 3 or 4 M-bus slaves. This circuit detects a '0' from the slaves whenever the total bus current is above about 7 mA. Each slave is allowed to draw up to 1.5 mA (and as little as 0 mA) at all times. When a slave wants to send a '0', it will draw an additional 10 mA. So, with 4 slaves, you would see anywhere from 0 to 6 mA all the time, and somewhere between 10 and 16 mA when a '0' is transmitted. This will give valid results with the simple circuit, because anything less than 7 mA will be received as a '1', and anything over that will be received as a '0'.
If you connect 8 slaves, the total current when no slave is sending a '0' is between 0 and 12 mA. The current when a slave is sending a '0' could be anywhere from 10 to 22 mA. In this case, there is no single current value that can be used as the threshold between '1' and '0'. In order to work with more than 3 or 4 slaves, the receiving circuitry must measure the current when no slave is sending, remember this current, and compare the current received to a threshold based on the saved current.
I am working on a circuit which will do this. I will post my results as I proceed.
Caver Mike


PROFIL
Section: Linux Programmer's Manual (3)
Updated: 2014-07-08
Index
Return to Main Contents
NAME
profil - execution time profile
SYNOPSIS
#include <unistd.h>
int profil(unsigned short *buf, size_t bufsiz,
size_t offset, unsigned int scale);
Feature Test Macro Requirements for glibc (see
feature_test_macros(7)):
profil():
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
DESCRIPTION
This routine provides a means to find out in what areas your program
spends most of its time.
The argument
buf
points to
bufsiz
bytes of core.
Every virtual 10 milliseconds, the user's program counter (PC)
is examined:
offset
is subtracted and the result is multiplied by
scale
and divided by 65536.
If the resulting value is less than
bufsiz,
then the corresponding entry in
buf
is incremented.
If
buf
is NULL, profiling is disabled.
RETURN VALUE
Zero is always returned.
CONFORMING TO
Similar to a call in SVr4 (but not POSIX.1-2001).
BUGS
profil()
cannot be used on a program that also uses
ITIMER_PROF
interval timers (see
setitimer(2)).
True kernel profiling provides more accurate results.
Libc 4.4 contained a kernel patch providing a system call profil.
SEE ALSO
gprof(1),
sprof(1),
setitimer(2),
sigaction(2),
signal(2)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- CONFORMING TO
-
- BUGS
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:55:00 GMT, September 18, 2014


--- layout: data_model title: taggantObject this_version: 4.1 ---
Taggant object, for use in characterizing the software taggant that may be associated with a file or multiple files. For more information on the taggant system or the IEEE Malware Working Group that created it, please see http://standards.ieee.org/develop/indconn/icsg/malware.html.
| Field Name | Type | Description |
|---|---|---|
| @idrequired | string | |
| vendorID1..1 | string | |
| taggantValidity0..1 | boolean | |
| signingTimestamp0..1 | signingTimestampInlineType |


Important Note
You should NOT rely on only one way of PAX Ticket sale notifications.
Sign up for the @Official_PAX Twitter notifications
via text.
Watch the Reddit Live thread (if there is one). Make sure your friends
know to text you if they find out. Do NOT miss out because you relied on only
one form of notification!
So far, the program beat the Twitter notification for PAX West 2014 and
PAX South 2015. The Twitter notification came out before the program found
the link for PAX East 2015, which has hopefully been fixed. Still, don't
rely on only one notification form!
Email and Password
If you do not want to receive a text message when tickets are found,
simply leave these fields blank.
Your email is used to send a text message when tickets are found. Currently,
there are two internally supported email services: Gmail and Yahoo!.
Simply type in your email address to use these. For information on using
different email services, see the Additional Information section.
Gmail generally takes 30-45 seconds to receive a sent text. This is
the recommended option.
Yahoo! is very inconsistent with texts -- it can take anywhere from 10
seconds to 15 minutes to receive a text from Yahoo!
For information on why your email is required for sending texts, see
the Additional Information section.
Cell Number (Texting)
Your cell number is required to text to your phone. The program natively
upports AT&T, Verizon, Sprint, T-Mobile, and U.S. Cellular in the US, and Bell, Rogers,
Fido, Koodo, Telus, Virgin, Wind, and SaskTel in Canada. If you have
any of these carriers, simply select yours from the dropdown menu.
If you have a different carrier, you'll need to go to
emailtextmessages.com and
get the ending for your carrier.
Please note that standard messaging rates most likely apply. Please
ensure that your plan either includes SMS/MMS messages or you're willing
to receive additional fees. Most smartphone plans come with unlimited
SMS/MMS messages.
You can put dashes and parentheses into your number. For example,<PHONE_NUMBER>
is just as valid as<PHONE_NUMBER>. Your number is automatically converted
into a format with no dashes or parentheses -- just numbers. Overall,
the email is sent in the format of<EMAIL_ADDRESS>For example,
if your number is<PHONE_NUMBER> and your provider is 3 River Wireless,
you would put<EMAIL_ADDRESS>in the Cell Num field.
To text multiple numbers, simply add another number using the button
provided. There is no hard-coded limit for how many numbers you may
text. Each additional number should follow all of the instructions above.
AH! What's the difference between "AT&T (MMS)" and "AT&T (SMS)"???
Selecting the MMS option sends the message as a multimedia message.
This preserves the email sender information (you receive the text from
your email address) and shortens the length. This is the recommended
option to use. Unlimited texting plans most likely include
multimedia texts.
The SMS option sends the message as a text message. You receive
it from a 210-extension number, and it includes "FRM", "SUBJ" and "MSG"
information, increasing the message length and decreasing readability.
Not recommended, as text messages have a character limit of 160
characters, and the text from the program might go over 160 characters.
Scan PAX Registration Website
This scans the selected PAX registration website for the "Register Now" button.
It checks PAX.paxsite.com/registration (obviously PAX is the expo you're checking).
This uses the most bandwidth (still not very much). It's recommended to
use this option if you really want tickets, as the website will eventually
be updated with this, regardless of whether or not it's before or after the
Twitter notification.
Scan Showclix Website
This scans the Showclix API (api.showclix.com) for the
selected PAX expo's most recent ticket sale.
This option is highly recommended. The Showclix website is updated first in order
to get the link to the ticket queue, which this program finds using the Showclix API. It
uses a small amount of bandwidth, and will mostly likely find the tickets before the PAX
Registration Website option.
Credit goes to /u/GrahamArthurBlair
for his original Showclix API scanning code.
Scan @Official_PAX Twitter
This scans the @Official_PAX Twitter feed for announcements. This will detect any
links PAX puts out, whether or not they're Showclix links. Thus, be ready for false
positives.
Links found by scanning the Showclix API will be opened a few seconds before others
receive them via text. Thus, receiving notifications via text for Twitter links
is almost guaranteed to be useless, as you'll receive Twitter notifications before
the email text message.
The Twitter option has not been used on an actual ticket release. Testing done has
shown that the option is able to successfully open links posted via Twitter, however
there's no guarantee that it will work (as with any part of the program).
API keys???
API keys are required to use the Twitter option. API keys are sensitive information,
and as such are not safe to put directly into an open-source application.
To use them, see
here.
Additional Information
Why Does This Need my Email Password?
An email is required to send a text message. It's the simplest way to send
a text message, and anyone can use it.
There are several reasons why your email and password is required:
- You must authenticate your login to send an email using your account
username and password
- This program is open-source. If there was a hard-coded username and
password, anyone would be able to find it in this program at any time and
disable texting for everyone. Using your email address prevents this from
happening.
- Having one email address send out potentially dozens (modestly) of
emails within 60 seconds is very fishy, and multiple logins from different
locations will lock out the email after a few emails. This means only a few
people would actually get the text.
- You will recognize the sender of your text
Using a Different Email Provider
For sending an email using a different email provider, several things are required:
- The service must use SMTP and TLS
- You must know the SMTP server address
- You must know the SMTP server port
Once you have this information, you must input this after your email address
and two colons (::). If the server uses a port other than 587, you must
add the port after the server and a colon (:).
An example:
Emailaddress@someprovider.com::provider.smpt.server:999
Note that this is very experimental. Make sure to test your text message every time!


BROTHER'S KEEPER A film review by James Berardinelli Copyright 1993 James Berardinelli
Date Released: variable Running Length: 1:44 Rated: NR (Mature themes, animal slaughter)
Featuring: Delbert, Roscoe, and Lyman Ward, and the townsfolk of Munnsville, NY Directors: Joe Berlinger and Bruce Sinofsky Producers: Joe Berlinger and Bruce Sinofsky Screenplay: Joe Berlinger and Bruce Sinofsky Music: Jay Ungar and Molly Mason Released by Creative Thinking International
BROTHER'S KEEPER is a documentary that chronicles the death of 64 year old Bill Ward, the arrest of his 59-year-old brother Delbert for the killing, and the subsequent murder trial (and verdict). Producers/Directors/Writers Berlinger and Sinofsky are careful to present both sides of the story, although their bias for the "Ward boys" is evident.
Joe Berlinger was present at the screening of BROTHER'S KEEPER which I attended. After the film was over, he spent approximately twenty minutes talking to the audience about the making of the film and his relationship with the Ward boys. One element that he highlighted was how he and his partner, Bruce Sinofsky, made an effort to get to know the picture's subjects--and earn their trust--before ever shooting a frame of film. The rapport they established comes across.
BROTHER'S KEEPER is a remarkable film, and a tremendous feat of documentary film-making. Put together on a minuscule budget, it has all of the power, drama, and tension of a big-budget Hollywood thriller. That it is real gives the story that much more punch.
This is not a "talking heads" movie, with an omniscient announcer's voice-over chronicling events. Instead, the story is presented as it unfolds. When the film makers began their project, they had no idea how the movie would turn out, or whether Delbert would be found innocent or guilty. The film evolves exactly as the real-life tale did, complete with a twist or two, and genuine suspense as the jury deliberates the verdict.
Ultimately, however, BROTHER'S KEEPER is less about the guilt or innocence of Delbert Ward as it is an indictment of police procedure, a look at the role of the media in criminal proceedings, and an examination of a people and culture that most mainstream Americans never encounter. Delbert and his brothers are throw-backs in time--indigent farmers who live together in a house without central heating, sleep together for warmth, can barely read or write, and bathe perhaps once every six months. At times, their speech is so slurred that it's difficult to understand what they're saying.
At first look, Delbert and his brothers seem unlikely candidates to base a documentary on. My initial reaction was that it would be impossible to create the necessary rapport between them and the audience. I was wrong. What Berlinger and Sinofsky have accomplished in BROTHER'S KEEPER is astounding. I left the theater feeling as if I knew these people, and, more than simply knowing them, I cared about them.
BROTHER'S KEEPER is anything but a traditional documentary; it's more engaging and less dry than other films in the category. Since the movie is getting extremely-limited distribution (Berlinger and Sinofsky are handling this themselves since all the major distributors turned them down), it may be hard to find. But, if it comes to a theater in your neck of the woods, my advice is to go see it. If not, there will still be an opportunity when it shows up on American Playhouse for the 1993-94 season.
Rating: 8.9 (A, ***1/2)
- James Berardinelli<EMAIL_ADDRESS>.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Shocking moment lorry smashes through level crossing causing travel chaos
Trains are able to run through at a reduced speed until repair work has been completed, but passengers have been advised to expect delays.
by Thomas LynchShocking footage has captured the dramatic moment a lorry bulldozes through a level crossing seconds before it closes.
The video shows the vehicle plough through a barrier in the West Midlands - resulting in travel chaos across the region.
Fire crews from Kidderminster were sent to the scene just before 10am this morning (Friday, November 22). The incident has since been left in the hands of Network Rail.
No injuries have been reported but the windscreen of the van was damaged as a result of the collision.
The scene was littered with debris and engineers are working to reattach the broken barrier.
Watch the video above to see the dramatic moment.
Trains are able to run through at a reduced speed until the work has been completed but passengers have been advised to expect delays for the rest of the day, particularly between Kidderminster and Stourbridge.
A fault with the signalling system is also causing travel chaos between Birmingham Moor Street and Birmingham Snow Hill.
Signalling engineers are currently on site working to rectify this issue but National Rail has warned trains may be cancelled, delayed by up to 60 minutes or revised.
Passengers are urged to check West Midlands Railway or National Rail before travel.


BALANCE, THE (BILANS KWARTALNG) (director/writer: Krzysztof Zanussi; cast: Maja Komorowska (Marta), Marek Piwowski (Jacek), Halina Mikolajska (Jan), Mariusz Dmochowski (Director), 1975-Poland)
Reviewed by Dennis Schwartz
Marta (Maja) is a do-gooder. She sees a boy crying while she is in a rush to go to work, and still stops to help him with the problem he is having with his teacher. This is the same teacher her son has. So she ends up meddling, telling the teacher what to do, which causes the teacher to take it out on her son and fail him. She works as an accountant in an office and is also the union representative, where she gets a chance to help her friend and confidante out, who is accused of stealing. She still insists on helping her friend even though her friend talks to her boss about her behind her back, which the boss tells her about. All she can say is, that she needs my help because she is weak.
By chance, she gets a lift to work by a former acquaintance, someone she hardly remembers, a handsome trainer, Jacek (Marek Piwowski). An attraction develops between the middle-aged woman and the athletic and free spirited Jacek, who tempts her with his casual air and sophistication that comes from traveling the world; but, she can't decide whether to leave her husband Jan (Halina), or to stay with Jan and try to make the marriage work for the stability of the family, even if the marriage has lost a lot of its romance.What makes her decision difficult is that she can't cheat on her husband without feeling guilty, so she says that her choice will have to be to leave him or stay with him as a faithful married wife.What also makes her decision difficult, is that Jan is such a decent guy, who does nothing wrong, he does not even try to tell her what to do when he picks up on what is going on.
Marta gets to know herself and what other people think of her, as she agonizes over her decision. She learns that others think her do-gooder nature causes more harm to others than good, that if she can't help in a positive way she should step aside and let the other person fend for themselves; that she does this because she is a self-indulgent person.
By putting herself through an emotional ringer, Marta does find out about what she is really made of, and what her marriage means to her. She is strengthened by the experience in a way that she has never felt before.
The acting was convincing, but the story didn't have enough suspense in it to sustain interest, especially when the ending was becoming increasingly predictable, as the story wore on. What interested me in a rather oblique way, was how tired life in Poland seemed, and how the real enemy seemed to be the bureaucratic nature of the country, that was off-handedly touched upon in the scenes at work, as the love triangle waned in my interest. I thought of how different things were in America during that time frame of the '70s, and how similar bureaucracies seem to be wherever they exist, whatever the time frame is.
REVIEWED ON 4/28/99 GRADE: C
Dennis Schwartz: "Ozus' World Movie Reviews"
© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


HIV (.–.) South care testing ART .–. treatment viral suppression status .–.) �?�? AIDS North men HIV�?positive West data {border-style < px;} targets #ffffff;} (CI Africa findings using participants National status, weighted women Health PLHIV improvements proportion survey African Research study surveys Africa. collab: compared defined higher knowledge positive reported time ;():–. Department Province, estimated including national past patients sample target Available CI) continuum differences estimates from: health people DBS Provincial access antiretroviral changes included increased known rapid similar Institute [cited community increase linkage lower number prevalence prevention px; recent survey, test {font-family (.% Center EAs Human approximately area did engagement font-size impact introduced likely models months overall provider second selected value Africa's Council Data Global Prevention UNAIDS Viral account adherence analyses aware blood combination conducted double; eligible estimate large load males new population�?representative reporting rural seeing significant significantly size stable tested testing, total versus virally years (Table Africa; Disease Figure Greater Int KwaZulu�?Natal, Ltd, Plan Prior Survey adults antibody assess border-color border-width cluster consistent data. expanded females implemented initiation know living municipalities municipality non�?response policies population prior probability research respectively sex solid; statistically suppressed therapy treatment, used year {font-style {font-weight <. (the .). ;():e–. Africa: CaliforniaSan Committee DUs FDC However, John Med. Pretoria, Progress Republic San Stata Table TanserF, University Weights Wiley achieved activities aged analysis analyte analytes areas bold clinic communities consistently copies/mL courier; criteria declined determined dried efforts em; enumeration evaluate evidence following food having high household however, implementation improve imputation increasing individuals longer month observed outcomes participation past�?year point population�?based programme pt;} receiving remained responsible retention samples sensitivity streamline support surveys, terms testing. thank time, universal �?.


Stimuli
Image files in this folder will be used for stimuli
{{ settings.stimuliPath }}
{{ stimuliPathValidationMessage }}
Responses
The participant folder will be saved inside this folder
{{ settings.responsesPath }}
{{ responsesPathValidationMessage }}
Block Size
Number of trials in a block
Response length
Maximum time allowed for response in seconds
Repetitions
Number of repetitions for each stimulus