func MockRecv(mock *MockBlocksDeliverer) (*orderer.DeliverResponse, error)
MockRecv mock for the Recv function
EndpointUpdater is an autogenerated mock type for the EndpointUpdater type
type EndpointUpdater struct { mock.Mock }
func (_m *EndpointUpdater) GetEndpoint() string
GetEndpoint provides a mock function with given fields:
func (_m *EndpointUpdater) UpdateEndpoints(endpoints []comm.EndpointCriteria)
UpdateEndpoints provides a mock function with given fields: endpoints
LedgerInfo is an autogenerated mock type for the LedgerInfo type
type LedgerInfo struct { mock.Mock }
func (_m *LedgerInfo) LedgerHeight() (uint64, error)
LedgerHeight provides a mock function with given fields:
MessageCryptoVerifier is an autogenerated mock type for the MessageCryptoVerifier type
type MessageCryptoVerifier struct { mock.Mock }
func (_m *MessageCryptoVerifier) VerifyHeader(chainID string, signedBlock *common.Block) error
VerifyHeader provides a mock function with given fields: chainID, signedBlock
type MockAtomicBroadcastClient struct { BD *MockBlocksDeliverer }
func (mabc *MockAtomicBroadcastClient) Broadcast(ctx context.Context, opts ...grpc.CallOption) (orderer.AtomicBroadcast_BroadcastClient, error)
func (mabc *MockAtomicBroadcastClient) Deliver(ctx context.Context, opts ...grpc.CallOption) (orderer.AtomicBroadcast_DeliverClient, error)
MockBlocksDeliverer mocking structure of BlocksDeliverer interface to initialize the blocks provider implementation
type MockBlocksDeliverer struct { DisconnectCalled chan struct{} CloseCalled chan struct{} Pos uint64 grpc.ClientStream MockRecv func(mock *MockBlocksDeliverer) (*orderer.DeliverResponse, error) // contains filtered or unexported fields }
func (mock *MockBlocksDeliverer) Close()
func (mock *MockBlocksDeliverer) Disconnect()
func (mock *MockBlocksDeliverer) GetEndpoints() []string
func (mock *MockBlocksDeliverer) Recv() (*orderer.DeliverResponse, error)
Recv gets responses from the ordering service, currently mocked to return only one response with empty block.
func (mock *MockBlocksDeliverer) RecvCount() int32
RecvCount returns the number of times Recv has been called.
func (mock *MockBlocksDeliverer) Send(env *common.Envelope) error
Send sends the envelope with request for the blocks for ordering service currently mocked and not doing anything
func (mock *MockBlocksDeliverer) UpdateEndpoints(endpoints []string)
func (mock *MockBlocksDeliverer) UpdateReceived(blockNumber uint64)
MockGossipServiceAdapter mocking structure for gossip service, used to initialize the blocks providers implementation and asserts the number of function calls used.
type MockGossipServiceAdapter struct { GossipBlockDisseminations chan uint64 // contains filtered or unexported fields }
func (mock *MockGossipServiceAdapter) AddPayload(chainID string, payload *gossip_proto.Payload) error
AddPayload adds gossip payload to the local state transfer buffer
func (mock *MockGossipServiceAdapter) AddPayloadCount() int32
AddPayloadCount returns the number of times Recv has been called.
func (mock *MockGossipServiceAdapter) Gossip(msg *gossip_proto.GossipMessage)
Gossip message to the all peers
func (*MockGossipServiceAdapter) PeersOfChannel(gossip_common.ChainID) []discovery.NetworkMember
PeersOfChannel returns the slice with peers participating in given channel
MockLedgerInfo mocking implementation of LedgerInfo interface, needed for test initialization purposes
type MockLedgerInfo struct { Height uint64 }
func (li *MockLedgerInfo) LedgerHeight() (uint64, error)
LedgerHeight returns mocked value to the ledger height
func (li *MockLedgerInfo) Set(height uint64)
type Orderer struct { net.Listener *grpc.Server // contains filtered or unexported fields }
func NewOrderer(port int, t *testing.T) *Orderer
func (*Orderer) Broadcast(orderer.AtomicBroadcast_BroadcastServer) error
func (o *Orderer) ConnCount() int
func (o *Orderer) ConnCountType() (int, orderer.SeekInfo_SeekContentType)
func (o *Orderer) Deliver(stream orderer.AtomicBroadcast_DeliverServer) error
func (o *Orderer) Fail()
func (o *Orderer) Resurrect()
func (o *Orderer) SendBlock(seq uint64)
func (o *Orderer) SetNextExpectedSeek(seq uint64)
func (o *Orderer) Shutdown()


PD: Son arrested after woman found dead in Phoenix home
by abc15.com staffPHOENIX — Police say the son of a 74-year-old woman who was found dead in a Phoenix home on Wednesday has been arrested for murder.
Officers were called to a home near 12th Street and Indian School Road around 2:30 p.m. for a report of a death. Inside the home, 74-year-old Tina Topali was found dead and police began speaking with the woman's son.
During the investigation, it was learned that Topali suffered injuries that appeared to have been caused by a bladed object.
Topali's son, 50-year-old Harlen Shelton, was then arrested for murder and concealment of a dead body.
The investigation is still ongoing.


Mouse Test
Results
Here,
deading refers to the server responding on the immediate tick after your click, instead of
lagging and delaying to the next tick.
Probability of deading vs. latency
Raw graph data
Raw data
Advanced
You can customize this game by adding the following parameters to the URL query string:
bg=<color>
: The background color. Any format recognized by CSS is accepted.
orbsize=<positive integer>
: Orb size in pixels.
count=<nonnegative integer>
: The number of ticks to countdown. 0 means that the orb
spawns in the next immediate tick.
rand=<0|1>
: Whether to spawn the orb at a random time instead of a fixed time.
team=<vief|acantha>
: Whether to use yellow orbs or green orbs.


Method List
Search:
- #actual ElabsMatchers::Matchers::OnlyInclude::OnlyIncludeMatcher
- #actual ElabsMatchers::Matchers::ContainHash::ContainHashMatcher
- #allow ElabsMatchers::Matchers::Allow
- #as ElabsMatchers::Matchers::Allow::AllowMatcher
- #attribute ElabsMatchers::Matchers::Persist::PersistMatcher
- attribute_selector ElabsMatchers
- attribute_selector_type ElabsMatchers
- #attributes ElabsMatchers::Matchers::Allow::AllowMatcher
- configure ElabsMatchers
- #contain_hash ElabsMatchers::Matchers::ContainHash
- #does_not_match? ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #does_not_match? ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #does_not_match? ElabsMatchers::Matchers::HaveHeader::HaveHeaderMatcher
- #does_not_match? ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- #does_not_match? ElabsMatchers::Matchers::HaveImage::HaveImageMatcher
- #does_not_match? ElabsMatchers::Matchers::Allow::AllowMatcher
- #does_not_match? ElabsMatchers::Matchers::HaveFields::HaveFieldsMatcher
- #does_not_match? ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- #elements ElabsMatchers::Matchers::OnlyInclude::OnlyIncludeMatcher
- #expected ElabsMatchers::Matchers::ContainHash::ContainHashMatcher
- #failure_message_for_should ElabsMatchers::Matchers::OnlyInclude::OnlyIncludeMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveHeader::HaveHeaderMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #failure_message_for_should ElabsMatchers::Matchers::ContainHash::ContainHashMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- #failure_message_for_should ElabsMatchers::Matchers::Persist::PersistMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveImage::HaveImageMatcher
- #failure_message_for_should ElabsMatchers::Matchers::Allow::AllowMatcher
- #failure_message_for_should ElabsMatchers::Matchers::HaveFields::HaveFieldsMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveFields::HaveFieldsMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::ContainHash::ContainHashMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveImage::HaveImageMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::Persist::PersistMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::OnlyInclude::OnlyIncludeMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveHeader::HaveHeaderMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- #failure_message_for_should_not ElabsMatchers::Matchers::Allow::AllowMatcher
- #field ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #fields ElabsMatchers::Matchers::HaveFields::HaveFieldsMatcher
- #fixture_file ElabsMatchers::Helpers::Fixtures
- flash_alert_selector ElabsMatchers
- flash_alert_selector_type ElabsMatchers
- flash_notice_selector ElabsMatchers
- flash_notice_selector_type ElabsMatchers
- form_errors_on_selector ElabsMatchers
- #have_attribute ElabsMatchers::Matchers::HaveAttribute
- #have_fields ElabsMatchers::Matchers::HaveFields
- #have_flash_alert ElabsMatchers::Matchers::HaveFlash
- #have_flash_notice ElabsMatchers::Matchers::HaveFlash
- #have_form_errors_on ElabsMatchers::Matchers::HaveFormErrorsOn
- #have_header ElabsMatchers::Matchers::HaveHeader
- #have_image ElabsMatchers::Matchers::HaveImage
- #have_table_row ElabsMatchers::Matchers::HaveTableRow
- header_selector ElabsMatchers
- header_selector_type ElabsMatchers
- image_selector ElabsMatchers
- image_selector_type ElabsMatchers
- #initialize ElabsMatchers::Matchers::Allow::AllowMatcher
- #label ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #matches? ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #matches? ElabsMatchers::Matchers::OnlyInclude::OnlyIncludeMatcher
- #matches? ElabsMatchers::Matchers::HaveHeader::HaveHeaderMatcher
- #matches? ElabsMatchers::Matchers::Persist::PersistMatcher
- #matches? ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #matches? ElabsMatchers::Matchers::Allow::AllowMatcher
- #matches? ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- #matches? ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- #matches? ElabsMatchers::Matchers::HaveImage::HaveImageMatcher
- #matches? ElabsMatchers::Matchers::HaveFields::HaveFieldsMatcher
- #matches? ElabsMatchers::Matchers::ContainHash::ContainHashMatcher
- #message ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- #message ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #normalize_keys ElabsMatchers::Helpers::NormalizeKeys
- #only_include ElabsMatchers::Matchers::OnlyInclude
- #page ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- #page ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #page ElabsMatchers::Matchers::HaveFormErrorsOn::HaveFormErrorsOnMatcher
- #page ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- #page ElabsMatchers::Matchers::HaveHeader::HaveHeaderMatcher
- #page ElabsMatchers::Matchers::HaveFields::HaveFieldsMatcher
- #page ElabsMatchers::Matchers::HaveImage::HaveImageMatcher
- #persist ElabsMatchers::Matchers::Persist
- #record ElabsMatchers::Matchers::Allow::AllowMatcher
- #record ElabsMatchers::Matchers::Persist::PersistMatcher
- #reload ElabsMatchers::Helpers::ReloadRecord
- #row ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- #save_and_reload ElabsMatchers::Helpers::ReloadRecord
- #select_year_and_month ElabsMatchers::Helpers::SelectYearAndMonth
- #table_name ElabsMatchers::Matchers::HaveTableRow::HaveTableRowMatcher
- table_row_selector ElabsMatchers
- #text ElabsMatchers::Matchers::HaveHeader::HaveHeaderMatcher
- #type ElabsMatchers::Matchers::HaveFlash::HaveFlashMatcher
- use_default_configuration! ElabsMatchers
- #value ElabsMatchers::Matchers::HaveImage::HaveImageMatcher
- #value ElabsMatchers::Matchers::HaveAttribute::HaveAttributeMatcher
- #value ElabsMatchers::Matchers::Persist::PersistMatcher


|
*Company name you applied to |
*First name of companies' representative |
*Last name of companies' representative |
*Email address of companies' representative |
*Initial contact date with representative |


--- layout: post title: Whoever brought me here will have to take me home date: 2004-07-20 00:00:00 category: books ---


Read the rest of the post here.Last year Nation of Patriots tour came through Sioux Falls, I participated in the mini-parade we took down to the Sioux Falls Veterans' Memorial Park. We did the same thing this year, but then several of us also rode down to Nebraska for the next passing of the flag ceremony,...


{# (c) Crown Owned Copyright, 2016. Dstl. #} {% extends "layout.html" %} {% load compress %} {% block page_title %}404 Not Found{% endblock %} {% block grid_content %}
No content is available at the URL you've navigated to. If this is unexpected, try going back one page or visiting the Lighthouse homepage to find your way back to the page you were looking for.
{% endblock %}


Documentation
A FreeRADIUS resource portal
FreeRADIUS Documentation
Configuring the server can be a complex task. This task is made easier in recent versions, as we gradually improve the documentation and "default" configurations.
The server comes with documentation. The doc directory contains a number of files, named for their functionality. The configuration files themselves contain enormous amounts of documentation and the raddb/sites-available directory contains many example "virtual servers". Each example has comments describing what it does, when it should be used, and how to configure it.
If you are using version 1 or 2 of the server, we suggest upgrading to version 3. Versions 1 and 2 are both end-of-life and no longer supported.
Many people try to find documentation by Googling keywords, but this method is not generally productive. Most of the links are to other people asking the same question, or to out-dated third party documentation. It is easy to get lost in a mess of contradictory and confusing documentation, leading to frustration and a badly configured server.
Most third-party documentation and How-To's are wrong and outdated. We strongly suggest that you do not follow any documentation which is more than 4 years old. If you do follow such ancient documentation, the result will likely be a server that does not work.
New to RADIUS? Start here.
Quick Start guide
New users of the server should read Getting Started. It describes how to set up a test user and how to add a new client. These are the two basic steps that start all new installations.
Visit GETTING STARTEDFreeRADIUS Technical Guide (PDF)
This comprehensive guide covers RADIUS concepts, how RADIUS works, and how to install FreeRADIUS. It also describes configuration files distributed with the server and what they are used for.
Download the FreeRADIUS Technical Guide (PDF)FreeRADIUS Wiki
The Wiki has a fair amount of documentation and How-To's. It is a good starting resource. The Wiki is searchable: type in a few keywords, and you will get pages of documentation that often answer your questions and can help you solve problems.
Contributing to the documentation
You can help! Just edit the wiki. It takes less than five minutes, and it will help thousands of other people.
Resources
All of the "man" pages are available on any system running FreeRADIUS. We suggest typing typing man radiusd, and reading the resulting text. These manual pages contain instructions for configuring and debugging the server.
Links of interest:
Visit ONLINE MANUAL PAGESThis web site has a number of useful how-to documents that are kept up to date with newer versions of the server.
Links of interest:
- Configuring EAP (TLS, PEAP, TTLS)
- Configure Active Directory for authentication
- Setting up the server
- Authentication Protocols Table compatiblity with back-end databases and password storage methods
Our documentation is a work in process and is as yet incomplete. However, we have extensive documentation on the following topics:
Links of interest:
- Upgrading to 3.0
- Unlang keywords i.e., "if", "update", etc.
- Conditional syntax i.e., how to use "if" statements in unlang
- String expansions i.e., "%{User-Name}"
- Modules About ¾ of the modules are documented
The doc site holds a rendered copy of the doxygen annotations added to the FreeRADIUS code base. Doxygen content is primarily useful for developers, but it contains notes describing hidden or advanced features that may be useful for users.
The API documentation site is not useful for people who want to configure FreeRADIUS.
Visit DOXYGEN DOC SITENovell eDirectory Integration
An administration guide to FreeRADIUS and Novell eDirectory is available.
Download ADMINSTRATION GUIDE PDFFor the latest version of the "Integrating Novell eDirectory with FreeRADIUS" administration guide, refer to Novell's site.
Visit NETIQ.COMRADIUS Standards
Many Request for Comments (RFC) documents have been written over the years that build up the de-facto standards used in implementing RADIUS solutions. They are listed here for convenience.
Visit LIST OF RFCs


Herewith attached the Test Report for the executed script in nightwatch.js.
| Report Generated Time | Duration | Tests Executed count | Title |
|---|---|---|---|
| Sat, 08 Jul 2017 09:35:22 GMT | 68.46 sec | 1 | Share / |
| Total count of Pass | Total count of Failures | Total count of Errors | Total count of Skipped |
|---|---|---|---|
| 1 | 0 | 0 | 0 |


Add New Coffee
Coffee Name
Coffee Type
Amount Sugar
Amount Creamer
Save
Brew Now
Delete
Add New Schedule
Brew Time Name
Coffee Name
{{coffeeInstance.name}}
Brew Time
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Save
Delete


 If you don't get paid If Mary Richards stops paying the instalments, you can ask the court to enforce payment. Back to your account {% elif data['radio-indent-group'] == "accept_stop_claim_claim_amount" %} We'll email the defendant Mary Richards telling them that you accepted their response and that the claim is is now closed. Back to your account {% elif data['radio-indent-group'] == "mediation-accept" %} A mediator will contact both the defendant and you within the next 14 days to arrange an appointment. Back to your account {% elseif data['radio-indent-group'] == "payment_instalments" %} The court will review your payment request. We'll email you when a decision has been made Back to your account {% elseif data['radio-indent-group'] == "set_date" %} The court will review your payment request. We'll email you when a decision has been made. Back to your account {% elseif data['radio-indent-group'] == "reject_stop_claim"%} This claim will be determined by the court to what the defendant can afford to pay based on their financial details. We'll contact you when a hearing date is scheduled and explain what you need to do to prepare. {% elseif data['radio-indent-group'] == "mediation-reject"%} The case will be reviewed and might go to a hearing. We'll email you if a hearing date is scheduled and explain what you need to do to prepare. Back to your account {% elseif data['radio-indent-group'] == "mediation-opt"%} The defendant Mary Richards will be asked if they would like free mediation. If they accept a mediator will contact both the defendant and you within 14 days to arrange an appointment. If they reject or don't respond with 7 days the case will be reviewed and might go to a hearing. We'll email you if a hearing date is scheduled and explain what you need to do to prepare. We'll email you when the defendant responds. Back to your account {% else %} The defendant Mary Richards can accept your counter offer, reject it or suggest an alternative. We will notify you once the defendant responds. Back to your account {% endif %} Help and support Email<EMAIL_ADDRESS>Telephone: 0300 123 7050 Hours: 9am to 5pm, Monday to Friday Find out about call charges {% endblock %}
We'll email the defendant Mary Richards telling them that you agree to the instalment plan.
If Mary Richards stops paying the instalments, you can ask the court to enforce payment.
Back to your account
We'll email the defendant Mary Richards telling them that you accepted their response and that the claim is is now closed.
A mediator will contact both the defendant and you within the next 14 days to arrange an appointment.
The court will review your payment request.
We'll email you when a decision has been made
We'll email you when a decision has been made.
This claim will be determined by the court to what the defendant can afford to pay based on their financial details.
We'll contact you when a hearing date is scheduled and explain what you need to do to prepare.
The case will be reviewed and might go to a hearing. We'll email you if a hearing date is scheduled and explain what you need to do to prepare.
The defendant Mary Richards will be asked if they would like free mediation.
If they accept a mediator will contact both the defendant and you within 14 days to arrange an appointment.
If they reject or don't respond with 7 days the case will be reviewed and might go to a hearing. We'll email you if a hearing date is scheduled and explain what you need to do to prepare.
We'll email you when the defendant responds.
The defendant Mary Richards can accept your counter offer, reject it or suggest an alternative.
We will notify you once the defendant responds.
Email<EMAIL_ADDRESS>Telephone: 0300 123 7050 Hours: 9am to 5pm, Monday to Friday
Find out about call charges


Bill bets Craig 100 that he can predict the score of the hockey game before it starts. Craig agrees, but loses the bet. Why did Craig lose the bet Bill said the score would be 0-0 and he was right?
Submit


Great Forest Marathon
Levin NZL
Website: www.greatforest.org.nz
Race Winners
(20 runnings)
31 Mar 2007
01 Apr 2006
02 Apr 2005
03 Apr 2004
05 Apr 2003
2002
2001
08 Apr 2000
1999
1998
Notes: 1997 is believed to have been the inaugural year. The course is largely dirt roads with some trail sections.
09 Apr
2016
3:03:21
Mace Clark (NZL)
2:54:22
Nicole Goldsmid-3
11 Apr
2015
3:00:44
Shane Thrower (NZL)
2:50:53
Nicole Goldsmid-2
12
Apr
2014
2:45:30
Sam McCutcheon (NZL)
3:03:56
Nicole Goldsmid (NZL)
13
Apr
2013
2:38:42
Chris Sanson (NZL)
3:22:16
Leah Barnfield (NZL)
14 Apr
2012
2:47:35
Bryn Davies (NZL)
3:16:34
Jessie Sanzo (ENG)
02 Apr
2011
2:46:54
Andy Bennett (NZL)
3:29:16
Ingrid Frost-3
10 Apr
2010
2:54:18
Billy MacDougall-3
3:08:48
Suzi Richards (NZL)
04 Apr
2009
2:52:51
Billy MacDougall-2
3:28:01
Ingrid Frost-2
05 Apr
2008
3:06:06
Ross Morrison (NZL)
3:18:41
Jean Beaumont (NZL)
3:10:22
Billy MacDougall (NZL)
3:34:25
Ingrid Frost (NZL)
2:46:05
Adrian Lysaght (NZL)
3:04:41
Alison Draine (NZL)
2:45:26
Alastair Snowdon (NZL)
3:28:55
Janice McCallum (NZL)
2:48:45
Tony Ahern (NZL)
3:09:12
Wendy Cottrell (NZL)
3:00:44
Bart Baker (NZL)
3:34:45
Debra Arnold (NZL)
---
n/a
---
n/a
---
n/a
---
n/a
3:07:19
Bertrend Suss (SWE)
3:51:04
Gloria Moffitt (NZL)
---
n/a
---
n/a
---
n/a
---
n/a
1997
---
n/a
---
n/a
Most Wins
(1998/date)
Men
3
Billy MacDougall (NZL)
2007,2009-2010
Women
|
3 |
Ingrid Frost (NZL) | 2007,2009,2011 |
| Nicole Goldsmid (NZL) | 2014-16 |
Prize Money
(ADR qualified runners)
No information on prize money has been received for this race.
Race Time Bias
(sec/km)
Insufficient information to calculated the race time bias.
Competitive Level
(1990-date)
Insufficient information to calculated the competitive level.
Quality Performances
Men no men under 2:20 Women no women under 2:50
Last Updated on 15 Apr 2016
Contributor: Klaas Loonstra (15)


Island Mystery Game
Kyle Kodani, Kevin Lu, Ivan Petkov, Xiaosong Shi, David Vasko
Inventory
Controls
- Move around with W, A, S, D
- Jump with SPACE
- Look around with the mouse
- Run by holding SHIFT while moving forward
- Add stick to fire with T while at firepit
- Charge up throw with mouse down
- Throw rock mouse up
- Toggle music with M


Chapter 7 Visualising data
7.1 Seminar
In this section, we will learn how to visualise data which is an important step towards understanding relationships better.
The non-western foreingers data is about the subjective perception of immigrants from non-western countries. The perception of immigrants from a context that is not similar to the one’s own ,is often used as a proxy for racism. Whether this is a fair measure or not is debatable but let’s examine the data from a survey carried out in Britain.
Let’s check the codebook of our data.
| Variable | Description |
|---|---|
| IMMBRIT | Out of every 100 people in Britain, how many do you think are immigrants from non-western countries? |
| over.estimate | 1 if estimate is higher than 10.7%. |
| RSex | 1 = male, 2 = female |
| RAge | Age of respondent |
| Househld | Number of people living in respondent’s household |
| party identification | 1 = Conservatives, 2 = Labour, 3 = SNP, 4 = Greens, 5 = Ukip, 6 = BNP, 7 = other |
| paper | Do you normally read any daily morning newspaper 3+ times/week? |
| WWWhourspW | How many hours WWW per week? |
| religious | Do you regard yourself as belonging to any particular religion? |
| employMonths | How many mnths w. present employer? |
| urban | Population density, 4 categories (highest density is 4, lowest is 1) |
| health.good | How is your health in general for someone of your age? (0: bad, 1: fair, 2: fairly good, 3: good) |
| HHInc | Income bands for household, high number = high HH income |
Let’s load the dataset.
We can look at the variable names in our data with the names()
function.
The dim()
function can be used to find out the dimensions of the dataset (dimension 1 = rows, dimension 2 = columns).
[1] 1049 13
So, the dim()
function tells us that we have data from 1049 respondents with 13 variables for each respondent.
Let’s take a quick peek at the first 10 observations to see what the dataset looks like. By default the head()
function returns the first 6 rows, but let’s tell it to return the first 10 rows instead.
IMMBRIT over.estimate RSex RAge Househld paper WWWhourspW religious
1 1 0 1 50 2 0 1 0
2 50 1 2 18 3 0 4 0
3 50 1 2 60 1 0 1 0
4 15 1 2 77 2 1 2 1
5 20 1 2 67 1 0 1 1
6 30 1 1 30 4 1 14 0
7 60 1 2 56 2 0 5 1
8 7 0 1 49 1 1 8 0
9 30 1 1 40 4 0 3 1
10 2 0 1 61 3 1 0 1
employMonths urban health.good HHInc party_self
1 72 4 1 13 2
2 72 4 2 3 7
3 456 3 3 9 7
4 72 1 3 8 7
5 72 3 3 9 7
6 72 1 2 9 7
7 180 1 2 13 3
8 156 4 2 14 7
9 264 2 2 11 3
10 72 1 3 8 1
Finally, let’s look at summary statistics of our dataset.
IMMBRIT over.estimate RSex RAge
Min. : 0.00 Min. :0.0000 Min. :1.000 Min. :17.00
1st Qu.: 10.00 1st Qu.:0.0000 1st Qu.:1.000 1st Qu.:36.00
Median : 25.00 Median :1.0000 Median :2.000 Median :49.00
Mean : 29.03 Mean :0.7235 Mean :1.544 Mean :49.75
3rd Qu.: 40.00 3rd Qu.:1.0000 3rd Qu.:2.000 3rd Qu.:62.00
Max. :100.00 Max. :1.0000 Max. :2.000 Max. :99.00
Househld paper WWWhourspW religious
Min. :1.000 Min. :0.0000 Min. : 0.000 Min. :0.0000
1st Qu.:1.000 1st Qu.:0.0000 1st Qu.: 0.000 1st Qu.:0.0000
Median :2.000 Median :0.0000 Median : 2.000 Median :0.0000
Mean :2.392 Mean :0.4538 Mean : 5.251 Mean :0.4929
3rd Qu.:3.000 3rd Qu.:1.0000 3rd Qu.: 7.000 3rd Qu.:1.0000
Max. :8.000 Max. :1.0000 Max. :100.000 Max. :1.0000
employMonths urban health.good HHInc
Min. : 1.00 Min. :1.000 Min. :0.000 Min. : 1.000
1st Qu.: 72.00 1st Qu.:2.000 1st Qu.:2.000 1st Qu.: 6.000
Median : 72.00 Median :3.000 Median :2.000 Median : 9.000
Mean : 86.56 Mean :2.568 Mean :2.044 Mean : 9.586
3rd Qu.: 72.00 3rd Qu.:3.000 3rd Qu.:3.000 3rd Qu.:13.000
Max. :600.00 Max. :4.000 Max. :3.000 Max. :17.000
party_self
Min. :1.000
1st Qu.:1.000
Median :2.000
Mean :3.825
3rd Qu.:7.000
Max. :7.000
7.1.1 Plots
We can visualize the data with the help of a boxplot, so let’s see how the perception of the number of immigrants is distributed.
# how good are we at guessing immigration
boxplot(
dat1$IMMBRIT,
main = "Perception of Immigration from Non-Western Countries",
ylab = "Subjective number of immigrants per 100 British",
frame.plot = FALSE, col = "darkgray"
)
Notice how the lower whisker is much shorter than the upper one. The distribution is right skewed. The right tail (higher values) is a lot longer. We can see this beter using a density plot. We combine R’s denisty()
function with the plot()
function.
plot(
density(dat1$IMMBRIT),
bty = "n",
lwd = 1.5,
main = "Perception of Immigration from Non-Western Countries",
xlab = "Subjective number of immigrants per 100 British"
)
We can also plot histograms using the hist()
function.
It is plausible that perception of immigration from Non-Western countries is related to party affiliation. In our dataset, we have a some party affiliation dummies (binary variables). We can use square brackets to subset our data such that we produce a boxplot only for members of the Conservative Party. We first create the binary variables Cons and Lab for (Conservatives and Labour respectively) using the ifelse()
function.
dat1$Cons <- ifelse(dat1$party_self == 1, yes = 1, no = 0)
dat1$Lab <- ifelse(dat1$party_self == 2, yes = 1, no = 0)
We have a look at the variable Cons using the table()
function first.
0 1
765 284
In our data, 284 respondents associate with the Conservative party and 765 do not. We create a boxplot of IMMBRIT but only for members of the Conservative Party. We do so by using the square brackets to subset our data.
# boxplot of immbrit for those observations where Cons is 1
boxplot(
dat1$IMMBRIT[dat1$Cons==1],
frame.plot = FALSE,
xlab = "Conservatives",
col = "blue"
)
We would now like to compare the distribution of the perception fo Conservatives to the distribution among Labour respondents. We can subset the data just like we did for the Conservative Party. In addtion, we want to plot the two plots next to each other, i.e., they should be in the same plot. We can achieve this with the par()
function and the mfrow
argument. This will spilt the plot window into rows and columns. We want 2 columns to plot 2 boxplots next to each other.
# split plot window into 1 row and 2 columns
par(mfrow = c(1,2))
# plot 1
boxplot(
dat1$IMMBRIT[dat1$Cons==1],
frame.plot = FALSE,
xlab = "Conservatives",
col = "blue"
)
# plot 2
boxplot(
dat1$IMMBRIT[dat1$Lab==1],
frame.plot = FALSE,
xlab = "Labour",
col = "red"
)
It is very hard to spot differences. The distributions are similar. The median for Labour respondents is larger which mean that the central Labour respondent over-estimates immigration more than the central Conservative respondent.
You can play around with the non-western foreigners data on your own time. We now turn to a dataset that is integrated in R already. It is called longley
. Use the help()
function to see what this dataset is about.
Let’s create a scatterplot with the Year
variable on the x-axis and Employed
on the y-axis.
plot(x = longley$Year, # x-axis variable
y = longley$Employed, # y-axis variable
bty = "n" # no box around the plot
)
To create a line plot instead, we use the same function with one additional argument type = "l"
.
Create a plot that includes both points and lines.


{% extends "shop/base.html" %} {% load url from future %} {% block body %}
Your order has been placed


I am a 20 year old IT student from the Philippines. As a musician, I casually perform in local cafe's with songs from Queen, The Beatles, My Chemical Romance, Bon Jovi and the like. I am also a Church pianist and have been for almost 5 years.
I studied at Saint Louis University for 3 years. 1 year as a Civil Engineering Student and 2 years as an Architecture Student. I was also a member of the SEA Chorale named "MUSICEA" in that three years and was head Alto for two. In those three years, I have learned technical drafting, architectural theory and history, chorale performing and the ability to perform with less sleep than usual.
I took a summer course in Traditional Drawing at the Cordillera School of Digital Arts and gained more knowledge in terms of drafting comic strips and have a new found respect for people working with Traditional and digital mediums in terms of creating art.
As an artist, I do technical art and sketches often not following a lot of guidelines. I prefer drafting backgrounds rather than people but am learning more about the human anatomy as I go along with my life.
I participated in the summer music program held in the University of Baguio before I was to return to my schooling. I was there for one month which helped me as I continued playing the piano in our local church.
As of right now, I am studying Information Technology at the University of the Cordilleras. As a second year student, I have already acquired basic knowledge in java programming and database management.
I was a member of the University Chorale for 2 semesters before leaving. I have no major achievements during these past year and I'm happier with just that.


There are numerous types of treatments. Local therapy is the removal of the pinpoint of breast cancer, which involves surgery and sometimes radiation therapy. Surgery removed the tumore from the breast, and radiation therapy uses powerful X-rays to kill leftover breast cancer cells.  Chemotherapy, hormone therapy, and targeted therapy are systematic. Chemotherapy is used for most types of breast cancer. It is given throughout a schedule and a full session would be complete by 3-6 months. Hormone therapy slow and stops the precess of cancer cells collecting estrogen, which helps them grow. Targeted therapy attacks a certain pathway connected to the breast cancer and causes little harm to normal cells, unlike chemotherapy. You should consider these treatments by the biology of the tumor, the stage of the breast cancer, health, age, medical issues, and personal preference.
There is always research to improve treatments for breast cancer. Clinical trials have progressed with sucess over 40 years. Even though oncologists and other scientists are working toward a cure, it is vital to folllow your treatment plan. Important elements in your treatment plan include the correct dosage amount, timing, and frequency. Medications would only function their task properly if you take them as prescribed.


Early Retirement 401K Investing
Motivation behind investing in a 401K
Having started a new job, and being thrown in the depths of all that is the adult world, one thing I learnt about is retirement savings primarily through 401Ks and Roth IRAs.  This is great if you know you’ll be in a lower tax bracket when you retire. It means that instead of earning $1 now, giving 30 cents in taxes, and investing the remaining 70 cents. You can invest the full $1 right now, and then pay 15 or 20 cents tax when you’re 65.
Downside to 401K
As always, there is a catch to this. Any withdrawals you make from a 401K before the age of 55 incur a 10% penalty fee.
The loophole
Let’s say you want to retire earlier than 55, or you need some of the cash in your 401K for whatever reason. One option is to just withdraw the cash now and take the 10% hit. If your employer matches your 401K contribution, this might seem like a great idea because for the $1 you contributed, you still got $1.90 back. If you know you’re going to need this cash though, with a little bit of planning you can get the full $2. The way to do this is to roll over the 401K into a Roth IRA. You will pay full taxes on whatever you rollover based on your current tax bracket. The advantage, is that you can withdraw the principal from a Roth IRA after 5 years. Withdrawing the principal means you can only withdraw what you put in at the time, not any interest you may have gained on it.
Comparison with other approaches
To clarify with an example, let’s say you contributed $1 to your 401K, and your employer matched 100% of it for a total of $2 in your 401K. Let’s say you left it there for 2 years with an interest rate of 8%, so at the end of 2 years, you have a total of $2.33 in your 401K. Now you roll that over to a 401K, and let’s say you pay 15% tax on it. So your total rollover amount is $1.9805.  If you’d left it all in your 401K, you’d have $3.43 in the account, and if we assume you were 55 and withdrew it at a 15% tax rate, then you’d have $2.9155 in hand which is slightly more(or significantly more depending on the number of zeros in your real investment) than the rollover approach. If you had more years to retirement, your investment would also grow more with the full 401K approach, so if you know that you won’t need the cash until 55, then that approach is probably better for you.
Let’s say in comparison you tried to invest your $1 the regular way. So you paid taxes on it based on your current tax bracket of 25%. So you have $0.75 left, and invested it for the 7 years with an 8% tax rate, that will result in a total of $1.29.
Note that this does require you to be in the lower tax bracket at the time of rollover, which is 5 years before you can see the money, so it requires some planning on your part, and won’t work for an emergency situation.
Why not just invest in a Roth IRA to begin with? Well for one you pay taxes on your $1 right now. The yearly contribution limit is also only $5000 in comparison to the $17,500 of the 401K.


WATCH: Days of our Lives up for 56th season renewal
by Algoa FMFans of the longtime running soapie horrified at the news just weeks ago that the entire cast had been released from their contracts can rest easy again as the series nears a deal for the renewal of a 56th season.
According to Variety an unnamed source said that the deal for the renewal is not one hundred per cent done yet, but to all intents and purposes it seems like the daily soap opera will go back into production in January next year.
Watching Kristina Alfonsa’s (Hope Williams Brady in the soapie) post on Instagram, it looks like fans and the media should not have jumped to any conclusions.


Home
Edit Profile
Toggle navigation
Profile
Log out
Edit Profile
Email address
Name
Password
Minimum of 6 characters
Contact No.
Update Profile


Name: each
Input: None.
Output: Set of elements.
Definition: Short description of the function, style of the old system manual
Argumentlist:
When used in all contexts except the part= parameter of the write command, this function accepts no arguments.
When used with the write command, the function may be specified without argument; it also accepts a structured list of arguments, however. If the first argument is no structuring argument, the presence of "=Name" is assumed.
Structured list
Name: Names
sublist:
Name: packaged
sublist:
No sublist : Objectname
No sublist : 3 comma separated objectnames
Name: parcels
sublist:
Name: ordered
- No sublist
Name: unordered
- No sublist
Name: default
sublist:
Name: nocomment
- No sublist
Name: nooriginal
- No sublist
Name: comment
- No sublist
Name: original
- No sublist
Name: exclude
sublist:
Name: aspects
- No sublist
Name: noaspects
- No sublist
Name: suppress
sublist:
Name: noheader
- No sublist
Discussion: Detailed explanation and examples


Please choose from the following contact options:
I would like to:
- Request Edits to a Website
- includes:
- Content [descriptions, hours, events, specials, promotions, etc...]
- Graphics
content updates [Seasonal content, upcoming events, new specials, etc.]
graphics and/or picture updating
- Submit a Meeting Request
- Need to meet in-person? Try emailing your questions first, but you can schedule appointments here.
- Ask a General Question
- Ideas, cost questions, business services inquiries, etc.


"""BN learn algorithms.
Imported from the bnlearn package.
Author: Diviyan Kalainathan
.. MIT License
..
.. Copyright (c) 2018 Diviyan Kalainathan
..
.. Permission is hereby granted, free of charge, to any person obtaining a copy
.. of this software and associated documentation files (the "Software"), to deal
.. in the Software without restriction, including without limitation the rights
.. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
.. copies of the Software, and to permit persons to whom the Software is
.. furnished to do so, subject to the following conditions:
..
.. The above copyright notice and this permission notice shall be included in all
.. copies or substantial portions of the Software.
..
.. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
.. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
.. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
.. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
.. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
.. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
.. SOFTWARE.
"""
import os
import uuid
import warnings
import networkx as nx
from shutil import rmtree
from .model import GraphModel
from pandas import DataFrame, read_csv
from ...utils.R import RPackages, launch_R_script
from ...utils.Settings import SETTINGS
def message_warning(msg, *a, **kwargs):
"""Ignore everything except the message."""
return str(msg) + '\n'
warnings.formatwarning = message_warning
[docs]class BNlearnAlgorithm(GraphModel):
"""BNlearn algorithm. All these models imported from bnlearn revolve around
this base class and have all the same attributes/interface.
Args:
score (str):the label of the conditional independence test to be used in the
algorithm. If none is specified, the default test statistic is the mutual information
for categorical variables, the Jonckheere-Terpstra test for ordered factors and the
linear correlation for continuous variables. See below for available tests.
alpha (float): a numeric value, the target nominal type I error rate.
beta (int): a positive integer, the number of permutations considered for each permutation
test. It will be ignored with a warning if the conditional independence test specified by the
score argument is not a permutation test.
optim (bool): See bnlearn-package for details.
verbose (bool): Sets the verbosity. Defaults to SETTINGS.verbose
Available tests:
• discrete case (categorical variables)
– mutual information: an information-theoretic distance measure.
It's proportional to the log-likelihood ratio (they differ by a 2n factor)
and is related to the deviance of the tested models. The asymptotic χ2 test
(mi and mi-adf, with adjusted degrees of freedom), the Monte Carlo
permutation test (mc-mi), the sequential Monte Carlo permutation
test (smc-mi), and the semiparametric test (sp-mi) are implemented.
– shrinkage estimator for the mutual information (mi-sh)
An improved
asymptotic χ2 test based on the James-Stein estimator for the mutual
information.
– Pearson’s X2 : the classical Pearson's X2 test for contingency tables.
The asymptotic χ2 test (x2 and x2-adf, with adjusted degrees of freedom),
the Monte Carlo permutation test (mc-x2), the sequential Monte Carlo
permutation test (smc-x2) and semiparametric test (sp-x2) are implemented .
• discrete case (ordered factors)
– Jonckheere-Terpstra : a trend test for ordinal variables.
The
asymptotic normal test (jt), the Monte Carlo permutation test (mc-jt)
and the sequential Monte Carlo permutation test (smc-jt) are implemented.
• continuous case (normal variables)
– linear correlation: Pearson’s linear correlation.
The exact
Student’s t test (cor), the Monte Carlo permutation test (mc-cor)
and the sequential Monte Carlo permutation test (smc-cor) are implemented.
– Fisher’s Z: a transformation of the linear correlation with asymptotic normal distribution.
Used by commercial software (such as TETRAD II)
for the PC algorithm (an R implementation is present in the pcalg
package on CRAN). The asymptotic normal test (zf), the Monte Carlo
permutation test (mc-zf) and the sequential Monte Carlo permutation
test (smc-zf) are implemented.
– mutual information: an information-theoretic distance measure.
Again
it is proportional to the log-likelihood ratio (they differ by a 2n
factor). The asymptotic χ2 test (mi-g), the Monte Carlo permutation
test (mc-mi-g) and the sequential Monte Carlo permutation test
(smc-mi-g) are implemented.
– shrinkage estimator for the mutual information(mi-g-sh):
an improved
asymptotic χ2 test based on the James-Stein estimator for the mutual
information.
• hybrid case (mixed discrete and normal variables)
– mutual information: an information-theoretic distance measure.
Again
it is proportional to the log-likelihood ratio (they differ by a 2n
factor). Only the asymptotic χ2 test (mi-cg) is implemented.
"""
def __init__(self, score='NULL', alpha=0.05, beta='NULL',
optim=False, verbose=None):
"""Init the model."""
if not RPackages.bnlearn:
raise ImportError("R Package bnlearn is not available.")
super(BNlearnAlgorithm, self).__init__()
self.arguments = {'{FOLDER}': '/tmp/cdt_bnlearn/',
'{FILE}': 'data.csv',
'{SKELETON}': 'FALSE',
'{ALGORITHM}': None,
'{WHITELIST}': 'whitelist.csv',
'{BLACKLIST}': 'blacklist.csv',
'{SCORE}': 'NULL',
'{OPTIM}': 'FALSE',
'{ALPHA}': '0.05',
'{BETA}': 'NULL',
'{VERBOSE}': 'FALSE',
'{OUTPUT}': 'result.csv'}
self.score = score
self.alpha = alpha
self.beta = beta
self.optim = optim
self.verbose = SETTINGS.get_default(verbose=verbose)
[docs] def orient_undirected_graph(self, data, graph):
"""Run the algorithm on an undirected graph.
Args:
data (pandas.DataFrame): DataFrame containing the data
graph (networkx.Graph): Skeleton of the graph to orient
Returns:
networkx.DiGraph: Solution on the given skeleton.
"""
# Building setup w/ arguments.
self.arguments['{VERBOSE}'] = str(self.verbose).upper()
self.arguments['{SCORE}'] = self.score
self.arguments['{BETA}'] = str(self.beta)
self.arguments['{OPTIM}'] = str(self.optim).upper()
self.arguments['{ALPHA}'] = str(self.alpha)
whitelist = DataFrame(list(nx.edges(graph)), columns=["from", "to"])
blacklist = DataFrame(list(nx.edges(nx.DiGraph(DataFrame(-nx.adj_matrix(graph, weight=None).to_dense() + 1,
columns=list(graph.nodes()),
index=list(graph.nodes()))))), columns=["from", "to"])
results = self._run_bnlearn(data, whitelist=whitelist,
blacklist=blacklist, verbose=self.verbose)
return nx.relabel_nodes(nx.DiGraph(results),
{idx: i for idx, i in enumerate(data.columns)})
[docs] def orient_directed_graph(self, data, graph):
"""Run the algorithm on a directed_graph.
Args:
data (pandas.DataFrame): DataFrame containing the data
graph (networkx.DiGraph): Skeleton of the graph to orient
Returns:
networkx.DiGraph: Solution on the given skeleton.
.. warning::
The algorithm is ran on the skeleton of the given graph.
"""
warnings.warn("The algorithm is ran on the skeleton of the given graph.")
return self.orient_undirected_graph(data, nx.Graph(graph))
[docs] def create_graph_from_data(self, data):
"""Run the algorithm on data.
Args:
data (pandas.DataFrame): DataFrame containing the data
Returns:
networkx.DiGraph: Solution given by the algorithm.
"""
# Building setup w/ arguments.
self.arguments['{SCORE}'] = self.score
self.arguments['{VERBOSE}'] = str(self.verbose).upper()
self.arguments['{BETA}'] = str(self.beta)
self.arguments['{OPTIM}'] = str(self.optim).upper()
self.arguments['{ALPHA}'] = str(self.alpha)
results = self._run_bnlearn(data, verbose=self.verbose)
graph = nx.DiGraph()
graph.add_edges_from(results)
return graph
def _run_bnlearn(self, data, whitelist=None, blacklist=None, verbose=True):
"""Setting up and running bnlearn with all arguments."""
# Run the algorithm
id = str(uuid.uuid4())
os.makedirs('/tmp/cdt_bnlearn' + id + '/')
self.arguments['{FOLDER}'] = '/tmp/cdt_bnlearn' + id + '/'
def retrieve_result():
return read_csv('/tmp/cdt_bnlearn' + id + '/result.csv', delimiter=',').values
try:
data.to_csv('/tmp/cdt_bnlearn' + id + '/data.csv', index=False)
if blacklist is not None:
whitelist.to_csv('/tmp/cdt_bnlearn' + id + '/whitelist.csv', index=False, header=False)
blacklist.to_csv('/tmp/cdt_bnlearn' + id + '/blacklist.csv', index=False, header=False)
self.arguments['{SKELETON}'] = 'TRUE'
else:
self.arguments['{SKELETON}'] = 'FALSE'
bnlearn_result = launch_R_script("{}/R_templates/bnlearn.R".format(os.path.dirname(os.path.realpath(__file__))),
self.arguments, output_function=retrieve_result, verbose=verbose)
# Cleanup
except Exception as e:
rmtree('/tmp/cdt_bnlearn' + id + '')
raise e
except KeyboardInterrupt:
rmtree('/tmp/cdt_bnlearn' + id + '/')
raise KeyboardInterrupt
rmtree('/tmp/cdt_bnlearn' + id)
return bnlearn_result
[docs]class GS(BNlearnAlgorithm):
"""Grow-Shrink algorithm.
.. note::
Margaritis D (2003).
Learning Bayesian Network Model Structure from Data
. Ph.D. thesis, School
of Computer Science, Carnegie-Mellon University, Pittsburgh, PA. Available as Technical Report
CMU-CS-03-153
"""
def __init__(self):
"""Init the model."""
super(GS, self).__init__()
self.arguments['{ALGORITHM}'] = 'gs'
[docs]class IAMB(BNlearnAlgorithm):
"""IAMB algorithm.
.. note::
Tsamardinos I, Aliferis CF, Statnikov A (2003). "Algorithms for Large Scale Markov Blanket
Discovery". In "Proceedings of the Sixteenth International Florida Artificial Intelligence Research
Society Conference", pp. 376-381. AAAI Press.
"""
def __init__(self):
"""Init the model."""
super(IAMB, self).__init__()
self.arguments['{ALGORITHM}'] = 'iamb'
[docs]class Fast_IAMB(BNlearnAlgorithm):
"""Fast IAMB algorithm.
.. note::
Yaramakala S, Margaritis D (2005). "Speculative Markov Blanket Discovery for Optimal Feature
Selection". In "ICDM ’05: Proceedings of the Fifth IEEE International Conference on Data
Mining", pp. 809-812. IEEE Computer Society.
"""
def __init__(self):
"""Init the model."""
super(Fast_IAMB, self).__init__()
self.arguments['{ALGORITHM}'] = 'fast.iamb'
class Inter_IAMB(BNlearnAlgorithm):
"""Inter IAMB algorithm.
.. note::
Yaramakala S, Margaritis D (2005). "Speculative Markov Blanket Discovery for Optimal Feature
Selection". In "ICDM ’05: Proceedings of the Fifth IEEE International Conference on Data Min-
ing", pp. 809-812. IEEE Computer Society.
"""
def __init__(self):
"""Init the model."""
super(Inter_IAMB, self).__init__()
self.arguments['{ALGORITHM}'] = 'inter.iamb'
[docs]class MMPC(BNlearnAlgorithm):
"""Max-Min Parents-Children algorithm.
.. note::
Tsamardinos I, Aliferis CF, Statnikov A (2003). "Time and Sample Efficient Discovery of Markov
Blankets and Direct Causal Relations". In "KDD ’03: Proceedings of the Ninth ACM SIGKDD
International Conference on Knowledge Discovery and Data Mining", pp. 673-678. ACM.
Tsamardinos I, Brown LE, Aliferis CF (2006). "The Max-Min Hill-Climbing Bayesian Network
Structure Learning Algorithm".
Machine Learning,65(1), 31-78.
"""
def __init__(self):
"""Init the model."""
super(MMPC, self).__init__()
self.arguments['{ALGORITHM}'] = 'mmpc'


See Great Artesian Basin for the water source in Australia.
An artesian aquifer is a confined aquifer containing groundwater under positive pressure. This causes the water level in a well to rise to a point where hydrostatic equilibrium has been reached.
A well drilled into ...
[dscrdeql] <Cryptoon> So it should be enough, except in very dry spells
[dscrdeql] <Biomech-Founder> A well in an impermeable aquifer. Self pressurised, always brings up water without a pump, as long as the aquifer don't go dry.
[dscrdeql] <Biomech-Founder> Usually rather deep.
[dscrdeql] <Cryptoon> Just checked, and not allowed to make a new well in my town
[dscrdeql] <Biomech-Founder> figures.
[dscrdeql] <Biomech-Founder> Nothing that regulation can't screw up.
[dscrdeql] <Cryptoon> We have a lot of old mines over here and if a lot of people start pumping up a lot of water it could mess up the ground levels I think
[dscrdeql] <Llama> sinkholes are scary
[dscrdeql] <linkara6669> @Thorth doing well here! sorry got distracted by an airdrop bahaha
[dscrdeql] <Cryptoon> @Llama dont really expect sinkholes, but if ground layers start shifting, we might see some cracks in buildings etc
[dscrdeql] <Cryptoon> Most mine shafts are 250-1000 meters deep
[dscrdeql] <Biomech-Founder> yeah, that would probably not work geologically for an artesian well anyway. You'd pretty much have to drill below the mines. That would get expensive, fast.
GatewayBOT09-Jul-18 08:47 PM
[dscrdeql] <jellysmash> I didn't realise mine shafts go that deep
[dscrdeql] <donaldmathers> Hi
[dscrdeql] <!!! Thorth !!!> @linkara6669 np ... i get u (edited)
[dscrdeql] <linkara6669>
[dscrdeql] <jellysmash> @donaldmathers hi there
[dscrdeql] <donaldmathers> whats up
[dscrdeql] <linkara6669> kinda like how some people get distracted by shiny objects. i get distracted by airdrops xD
[dscrdeql] <jellysmash> Same old same old
[dscrdeql] <jellysmash> @linkara6669 Haha..Same
[dscrdeql] <linkara6669>
[dscrdeql] <jellysmash> And they can be time consuming
[dscrdeql] <jellysmash> To register for
[dscrdeql] <linkara6669> yeah dependent on the airdrop haha
[dscrdeql] <slipersty> yhe some teakes so insane lots of thime
[dscrdeql] <sourge> i like airdrops as well
[dscrdeql] <sourge> sometimes they are fun
[dscrdeql] <linkara6669> like trivia is one of my faves :)
[dscrdeql] <slipersty> yes triva is fun but sadly i miss them alot, that are often when i sleep
[dscrdeql] <tanya> i love trivia myself. but sometimes i get pulled in other directions
[dscrdeql] <SwimedDragon> I'm bad at trivia, but most of the times it's also because I find it hard to do trivia in another language
[dscrdeql] <SwimedDragon> Especially since some questions seem pretty easy, but if the translation of words or names is different, it's hard
[dscrdeql] <slipersty> @SwimedDragon yhe i feel the same ^^
[dscrdeql] <slipersty> but some ppl knows alot or do that use google ?(edited)
[dscrdeql] <SwimedDragon> Well, sometimes when Americans do a trivia, they ask a lot of celeb questions. And I don't even know half of the celebs that are only famous in their country. Stuff like that.
[dscrdeql] <SwimedDragon> Or you need to have the correct spelling of words.


{% extends 'flask_user/public_base.html' %} {% block content %} {% from "base_templates/form_macros.html" import render_field, render_submit_field with context %}
{{ commentary }}


* Inputs in Top section can only be drag and dropped in Top Section or in Add-on Section
* Similarly inputs in Bottom section can only be drag and dropped in Bottom Section or in Add-on Section
* From Add-on section only corresponding inputs can be dropped into respective sections
{{modelAsJson}}


Socio-economic Assessment of Climate Vulnerability
How does forest area relate to carbon emissions?
They're correlated
They're uncorrelated
What do you think of carbon emissions (per capita) of the US in next 5 years?

Carbon-dioxide Emissions per Capita
1960
Average Temperature : 32' C
1970
Average Temperature : 32' C
1980
Average Temperature : 32' C
1990
Average Temperature : 32' C
2000
Average Temperature : 32' C
2005
Average Temperature : 32' C
1960
1970
1980
1990
1995
2000
2005


RT / 07SG Team (in alphabetical order):
- Cristian Carlesso
- Fujii Takahashi
- Prasad Marne
- Yokomichi Takahashi
Assets from OpenGameArt.org:
Orbital Colossus: Music by Matthew Pablo http://www.matthewpablo.com
Use of @Poomillust images authorized by A.Nuttapoom himself. All rights reserved.


GOLDENEYE A film review by Paul Copyright 1995<EMAIL_ADDRESS>It's been ages since I last saw a Bond film. I think the last one I saw was Dalton's first Bond film. Pierce Brosnan is a major improvement over Dalton. Dalton was cold, angst ridden, and serious. While this personality is probably closer to reality, Bond films have never been very realistic. They are in fact, very silly, with megalomaniac villains who wants to take over/destroy the world. Bond is constantly being placed into "escape-proof" death traps which he eventually escapes. The appeal of Bond is his bad boy image. Brosnan restore some of that fun image to the character that Dalton had wore away.
Plot-wise, the film is unoriginal. Bond must save the world once again from a doomsday device, the Goldeneye, a weapon that can destroy all electronics. But people don't see Bond film for their plot, they see Bond films for familar things like beautiful women, fast cars, megalomania villains, and shopping trips at Q's. Even if the plot is rather predictable, there's enough action in the film to keep you from falling asleep.
The villain this time is 006, played by Sean Bean, who also act as an angst generator because he was once Bond's best friend.
What's interesting about the movie is that while bond has changed
very little (he still sleeps around, and drink Martini shaken but not
stirred), the world around him have changed considerably. The women
are more assertive, and independent. Bond's boss is now a woman who
tells Bond that he is a sexist relic of the cold war. His female
co-star is constantly criticizing him about his "boys with toy"
attitude. Moneypenny has
Bond fans will not want to miss this movie. For others, it's worth a look if you're looking for a fun movie that you can watch with half of your brain disconnected.
-- Paul<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


So you want to build a "web" app...
Downsides of web apps: Performance, Functionality/Access to Hardware, Marketing: App/Play-Store
Show sections about everything I'm talking about: Web Activities, Manifest, Marketplace
APIs
WebTelephony
Vibration API
WebSMS
Idle API
Screen Orientation
Power Management API
Mobile Connection API
TCP Socket API
Geolocation API
WiFi Information API
Device Storage API
Contacts API
Mouse Lock API
Open WebApps
WebBluetooth
Network Information API
Battery Status API
Alarm API
Browser API
Time/Clock API
Push Notifications API
Permissions API
WebFM API
FileHandle API
Network Stats API
WebPayment
Ambient light sensor
Proximity sensor
There's a whole bunch of APIs that have come up, this isn't a complete list either. Some are already very widespread, think Geolocation, others not at all. I've never seen WebBluetooth in the wild yet for example, but it sounds like fun. WebNFC is on the list of things to come.
All the apps on the FirefoxOS phones are written using these APIs, and so they let you do most things a phone can. You could theoretically write your own dialer using the WebTelephony app for example.
We'll look at a few fun ones to give you some ideas of how you can extend your existing app easily.
Ambient Light
var ambientLight = window.devicelight;
//TODO: check and complete
Ambient Light is a w3c working draft. It adds an event on the window object, which gets called with a string stating the ambient light level as one of the values "normal", "dim", "bright".
Battery Status
var battery = navigator.battery;
/*
battery.level: Battery level between 0 and 1
battery.charging: true/false
battery.chargingTime: Time left to fully charge, in seconds
battery.dischargingTime: Time until fully discharged, in seconds
*/
console.log("Battery level: " + battery.level * 100 + "%");
navigator.battery.addEventListener(
"levelchange",
function() {
// Update display with current battery level
}
);
W3C Specification
The Battery Status API is a W3C Editors Draft. It allows you to get information about the battery by using the navigator.battery object.
TODO: push notifications?
Web Activities
Let's make a slight excursion and have a look at web activities.
Web activities allow you to build links between apps. There are two sides to that.
TODO: add a picture
Use another apps functionality
One side is when you want to reuse a different apps functionality.
Examples might be sharing something, or taking a picture - you want to offer the functionality to the user of the app, but don't want to implement it all yourself, so you call a web activity.
Sharing might offer a selection of Twitter, Facebook or Google Plus, while take a picture will offer you the Camera or the Gallery.
TODO: add a picture
Offer functionality
The other side is if you want to offer functionality from your app, so that other apps can take advantage of it.
What you can do is register your app for existing activities, or you can create your own activities. When creating your own activity, it's considered best practice to prefix it with your URL/Domain, to avoid namespace collisions.
Sharing an Image
var share = new MozActivity({
name: "share",
data: {
type: "image/*",
number: 1,
blobs: [new Blob($('#imgToShare')[0], {type: "text/png"})]
}
});
share.onsuccess = function() {
// Do stuff
};
share.onerror = function () { // handle error };
Let's take a closer look at the first scenario first.
Basically all we have to do is instantiate a new object, and tell it what kind of activity we want to execute.
As soon as that object is instantiated the user will see the interface to choose what he wants to do.
Offering an Activity
"pick": {
"href": "./pick.html",
"disposition": "inline",
"filters": {
"type": ["image/*","image/jpeg","image/png"]
},
"returnValue": true
}
The alternative, if our app wants to offer functionality, needs two steps - we need to register the activity and handle it.
Registering the app happens in the app manifest, where we add Objects that configure it.
pick is the name of the activity in this case, and additionally we define the href, which is the page that should be opened when the activity is called. The disposition has two options, either inline or window
TODO: see if there's a difference
returnValue is a boolean, stating if the call will return a value or not... TODO: look into in more detail
Finally, filters specify what image types this activity should be offered for. This can be easy like in this example, but can also have things like ranges with a minimum and maximum, a pattern, and more.
Handling the Activity
navigator.mozSetMessageHandler('activity', function(request) {
var options = request.source;
if ("pick" === options.name) {
//TODO: add code
if (isOk) {
request.postResult();
request.postError();
}
}
});
To handle the activity, what we need to do is
Things to note:
Activity pages have to abide to same origin policy as well
Support for dynamically registering activities is coming but not ready yet
Firefox OS Activities
browse
Browse a gallery to select a Photo
configure
Change phone settings
costcontrol/*
Cost control functionality
dial
Call someone
new
'add something': contact, email, sms
open
'open sthg': contact, gallery, music, video
pick
Retrieve data: contact, image, email
record
Take a picture or record video
save-bookmark
Save a bookmark to the home screen
There are a bunch of activities that FirefoxOS offers by default, which you can take advantage of or use as well.
Cost control allows you to get the available balance and data/voice usage
Firefox OS Activities (2)
share
Share via bluetooth/email, also used to set picture as wallpaper
view
Open sthg: browser, email, pdf, video
update
Update a contact
There are a bunch of activities that FirefoxOS offers by default, which you can take advantage of or use as well.
Cost control allows you to get the available balance and data/voice usage
Open Web App manifest
So what makes it work, what makes the whole thing an app?
All it takes is a manifest, which is a json file containing some metadata about your app.
Basic Manifest
{
"name": "Cool App",
"description": "This app lets you do really awesome stuff"
}
This is a very basic manifest, and includes the two required fields, a name for your app, and a short text describing what your app does.
A bit more data
{
"name": "Cool App",
"description": "This app lets you do really awesome stuff",
"icons": {
"60": "/img/icon-60.png",
"128": "/img/icon-128.png"
},
"fullscreen": true,
"orientations": ["portrait","landscape-secondary"],
"developer": {
"name": "Colin Frei",
"url": "http://colinfrei.com"
}
}
Firefox OS App Icon Guidelines
Let's expand on that a bit:
There's some more not really interesting data in here, including data about you, as well as an icon.
You can add a bunch of different icons in different sizes if you want, and for Firefox OS apps there are some guidelines to what icons should look like.
There's also a fullscreen flag, which is specific to FirefoxOS, and allows you to say if the app should be launched in fullscreen mode or not.
Firefox Marketplace requires the developer name to be included.
Locales
{
"name": "Cool App",
"description": "This app lets you do really awesome stuff",
"default_locale": "en",
"locales": {
"de": {
"description": "Beschreibung der App"
}
}
}
We can add translations for pretty much all this metadata.
We specify the default_locale property, saying all this stuff is English, and then have a locales object, with an object for each language, where we can overwrite the fields above.
This does not have anything to do with the app's language itself, only the metadata in this manifest file.
You can overwrite almost all the fields in it though, with very few exceptions.
Web Activities
{
"name": "Cool App",
"description": "This app lets you do really awesome stuff",
"activities": {
"pick": {
"href": "./pick.html",
"disposition": "inline",
"filters": {
"type": ["image/*","image/jpeg","image/png"]
},
"returnValue": true
}
}
}
Permissions
{
"name": "App Name",
"description": "A description of your app",
"type": "privileged",
"permissions": {
"desktop-notification": {
"description": "Required to notify about stuff"
}
}
}
types: web / privileged / certified
Types
web
privileged
certified
Types are kind of important. There are three different types of apps for Firefox OS: web, privileged and certified. There is also the differentiation, if an app is packaged or not - don't confuse the two, one doesn't mean the other is given.
apps with a type web are the easiest,
Permissions
alarms
audio-channel-*
contacts
desktop-notification
geolocation
storage
systemXHR
Versions & Updating
https://developer.mozilla.org/en-US/docs/Apps/Updating_apps
- Same Origin
- Content-Type: application/x-web-app-manifest+json (github)
Firefox Marketplace
First off, notice that it's called Firefox Marketplace and not Firefox OS Marketplace.
That's because it's not meant only for Firefox OS, you can submit normal web apps, which can be installed through Firefox (like the Chrome Web Store), but also on Firefox on Android, a first step towards mobile apps. And of course you can allow them to be installed on Firefox OS.
Submitting your app
Submitting an app to the Firefox Marketplace works two ways, depending on the type of app you're trying to submit. You'll need to log in with a Persona account and then you'll see a screen where you can select for what device(s) your app is. If you're submitting a hosted web app you can simply enter the URL to your manifest file, and if you want to submit a packaged app you can upload the zip file for it.
The site validates the manifest, and in the case of packaged apps does some security checks on the code as well (CSP). Once those pass you can go to the next step where you can enter details about your app, things like categories, a privacy policy, ...
Review criteria
So there are guidelines to what's allowed in the store and what isn't, and there's a team that reviews all the submissions. Reviews are meant to be fair, and be mostly about security checks and providing feedback to developers.
Reviews are not QA! Reviewers will install the app and click around a bit and make sure the app seems to work and isn't misleading.
Once your app passes the review it'll show up on the marketplace.
You can review apps too!
Reviewer Application
Requirements:
Basic HTML Knowledge
Friendly and helpful attitude
Fluent in English


History¶
0.2.1 (31.03.2019)¶
- Fixed references to correct redirections
Repairs links to valid websites.
0.2 (31.03.2019)¶
- Changed the topology of the repository
Transfers the column_parsing module to the preprocessing subpackage and changes the name to a more adequate in terms of actual functionality.
Creates preprocessing.imputation module used for imputation of missings.
- Added Sphinx documentation
Creates HTML documentation of the package with use of the Github Pages.
Standardizes the docstrings across the whole package.
Adds initial example of usage for the paralytics.Discretizer transformer.
- Created utilities for web scraping
New module preprocessing.scraping presenting the base class for scraping using the Selenium package.
- Fixed functionality of defective transformers
Transfers key operations of the preprocessing.ColumnProjector transformer to the fit method to avoid errors when applying to corner cases.
Adapts the functionality of the TargetEncoder to be able to apply its transformations to entire DataFrame without first choosing only variables of the type: category.
- Initialized XAI subpackage
Initializes directory for the Explainable Artificial Intelligence subpackage which will be developed over the 0.2.X versions.
0.1 (24.03.2019)¶
- Initial package
Initializes the Paralytics package.


{% extends 'base.html' %} {% block title %}Home{% endblock %} {% block content %} {% if user.is_authenticated %}
Our product is very soothing in terms of search engine processing. It uses advanced machine learning techniques & algorithms on the go.
We are a startup company of 3 shareholders & about to land up in the market. We have lots of ideas in our mind that we are constantly working on to make our product best for our users.


Diff Drive Robot
Raspberry Pi, Arduino, and ROS robot
Abstract
I built a wheeled mobile robot, WMR, to complete the Coursera robotics specialization. In this project post, I will walk through how I built and tested it.
Introduction
Over the course of six weeks, I built this:
which did the following:
- Planned motion from a starting point to a goal point avoiding static obstacles
- Performed landmark recognition
- Estimated robot position within the map
- Controlled the robot to stably navigate
Before executing the above four tasks, I needed to get the materials and build the robot.
Building the Robot
The full list of build materials can be found here. The mechanical assembly followed very simply from the instructions provided with the chassis, wheels, etc… The electronic assembly was more complicated, so I will focus on these steps in this writeup.
The main processing computer is a Raspberry Pi v3, into which a Raspberry Pi camera is directly plugged. The Pi, and therefore the camera, are powered by a 5V USB battery pack. Communication between the Pi and the low-level hardware, like motors and sensors, is achieved by soldering the male end of a 40-pin connector into an Arduino board.
The Arduino board is also connected to a 5V power source which powers the board and the hardware peripherals connected to it.
Software
Operating System / OS
An Ubuntu distribution with ROS-Indigo was included with the project materials but, in order to use it, I had to flash the image onto an SD card and plug it into the Pi. After verifying successful installation of the OS, I was able to move on to the software that would control the robot.
Python / API
The ROS-Indigo distribution comes with an API that is accessible via Python. Rather than having to deal with C++, this API provides an easy way to code and test before implementation on the real robot.
Also included was a Python simulation that I used as a testbed before deploying code on the actual robot.
Calibration
Once the OS and ROS were installed, it was time to calibrate the robot. There were only two components that needed to be calibrated, but these steps were crucial.
The first system to calibrate was the motors, and this was accomplished by commanding a constant linear velocity over a fixed time and then measuring how far the robot travelled during this time. The specific speed and time used were 0.2 m/s and 1 sec, respectively. Depending upon whether the robot travelled too far or not far enough, the motor gains were tuned and the same experiment was reran until the measured distance travelled closely matched the desired 20cm. This step was necessary because, if I command the wheels to rotate at a certain rate, I want to know that they actually were going to!
The second system was the camera. As part of ROS, there is a camera calibration utility that uses OpenCV. After running a command from the command line, a GUI popped up that walked me through the process of moving a checkerboard near the camera so that the correct calibration parameters could be computed and stored on the robot. This step was necessary for both detecting landmarks and computing the camera’s distance to them.
Now that the robot was built and correctly calibrated, it was time to start designing and testing the code to get it to navigate autonomously.
Step 1: Construct a Plan
The first step is to build the high-level planner that will provide the robot with waypoints to drive through. The project specifically stated to use Dijkstra’s algorithm. This was not my first choice, but I wrote and tested it. I had seen in the earlier courses how it did, in fact, work; it was just terribly slow when compared to other planners. For the size of the map I was considering: ~1m x ~1m map broken into a grid of 20cm squares, execution speed was definitely not an issue.
Step 2: Landmark Recognition
The next step was to correctly configure the AprilTag detector ROS node. AprilTags are visual landmarks, like QR codes, that can be used as visual landmarks. When configured correctly, the camera will see one or more tags and the detector will construct a quaternion vector pointing towards the tag. From the quaternion, relative distance and orientation data, robot-to-tag, can be extracted and used to localize the robot within a map.
See here for a detailed outline of how AprilTags work in vision-based localization.
Step 3: Estimate Pose
To estimate the robot’s position and orientation within the mapped area, I used a linear Kalman filter that used velocity commands to propagate the state and uncertainty during the predict stage, and the tag detections during the update stage. The time from the IMU was used to process detections on a fixed clock-cycle. Besides the time, no other IMU output was used.
Step 4: Control
The final step was to build a controller that would stably navigate the robot through the set of waypoints computed in Step 1. I constructed a simple feedback controller that used the estimated state from Step 3 and a simple unicycle model for WMR. This led to a third-order state space model for the controller with three gains on the error states. Basic stability criteria for the gains was determined based upon an analysis of the eigenvalues of the closed loop system.
Merging this continuous controller with the grid-based path planner was simple: the center of each grid square from the optimal path was used as an intermediate waypoint for the robot to achieve. Each time the robot got close enough to its goal waypoint, that waypoint was popped from the plan’s list and the next waypoint became the new goal. Once all waypoints had been exhausted, meaning the robot was near the final goal, the robot would zero out the controls and stop.
Putting It All Together
Before bothering to test on hardware, I wanted to be sure that my algorithms would work. As I mentioned previously, part of the source distribution for the project included a little Python simulation that had all of the correct infrastructure calls to mask ROS protocol. Here is output from a sample run:
There were several nice things about simulation environment, specifically it
- had a simple yaml interface for adding and removing obstacles
- had a nice way of visualizing obstacles and tags
- plotted the robot’s estimated pose and its “true” pose against each other; this was important for tuning the Kalman filter
- plotted the trace of the trajectory so that the robot’s past path was visible
I will discuss what I didn’t like about the sim in the Concluding Remarks. All things considered, the sim was a good tool.
After getting good output from the simulation, I tested against a simple map where there were only three obstacles: the first three AprilTags. For the robot’s performance, please see this video. The robot navigates successfully to the desired goal point just to the right of the final tag and correctly stops.
Concluding Remarks
This was a really fun project to work on, and I am grateful that Coursera made this available. Hardware is usually difficult for me to work on in my side projects because my proficiencies are in software and algorithm design. Getting to dust off my soldering iron and build this robot, along with measuring and constructing the test course, was challenging but rewarding. Getting to see all of the elements culminating in the successful autonomous navigation of the robot was very gratifying. There were many challenges that were unseen along the way, but I think that they are important to mention here.
- Lighting effects: The Pi camera was crappy, like really crappy. It was only a few dollars, so I shouldn’t expect the world, but I had to carefully select test areas based upon lighting.
- Simulation and modeling assumptions: The simulation noise models were really unrealistic. Zeroing out the velocity commands from the controller resulted in the sim robot drifting forward at a slow, but appreciable, rate. Based on what I saw from the actual motors, this noise model was fundamentally incorrect. I would have preferred they not bother modelling the effects from noise if they weren’t going to accurately do so.
- Tag size: Based upon experimental observations, it appears that tag size does matter. With smaller tag sizes, I was able to get the robot to navigate much more precisely around and near tags. The tradeoff was that the landmarks were not detectable from as far. The AprilTags node from ROS allows for specifying tags of multiple sizes, so long as they have unique ID; e.g. only use one size for tag with id i.
For others considering trying this project or one similar to it, I highly recommend this web-based utility for viewing ROS telemetry; I found its indispensible.


Bike Repair
Bike Repair Dashboard
Login
No account yet?
Sign in here
Damage reports
Misplaced bikes
53
Pending reports
Archive
Welcome to your profile page


Japan Urges US to Suspend F-16 Flights Until Probe of Dummy Shell Drop Completed - Reports
TOKYO (Sputnik) - The authorities of Japan's Aomori prefecture demanded that the US military command refrain from carrying out F-16 aircraft exercises until the reasons for a dummy shell drop were established and measures to prevent such incidents were taken, Japanese media reported on Friday.
According to the NHK broadcaster, the prefecture's governor, Shingo Mimura, passed the corresponding statement to Japanese Defence Minister Taro Kono.
On Wednesday evening, a US aircraft dropped a 500-pound shell that fell into a pasture during exercises at the Misawa base in the Aomori prefecture.
There were no explosives in it, but due to the flight altitude, it crashed deep into the ground. The authorities of the prefecture expressed concern because, due to the presence of schools located in the area, the fall of even a dummy shell could lead to irreparable consequences.
Repeated incidents with US military aircraft in Japan have occurred recently. In late August, a CH-53 heavy transport helicopter the US troops in Japan "dropped" a plastic port window at sea off the coast of Okinawa during a flight.
In December 2016, a US Osprey convertiplane crashed during an aerial refuelling exercise.


{% extends "reading/layout.html" %} {% load static %} {% block content %}
Nobody likes to spend money on a new book only to face that overwhelming feeling of disappointment when it doesn’t live up to your expectations. The solution is to check out the book reviews here before you hit the shops. The greater the diversity of opinions you can gather, the more confidence you can have that you’ll enjoy the title.
Our mission is to share book love and encourage reading for pleasure by offering the tools, advice and information needed to help our users find their next favourite book.