Simulations
The Simulations page contains the list of test case simulations you can execute. It serves as the central place from which you can create new simulations, as well as start and stop your simulations.
Creating a new simulation top#
Please refer to the Running Simulator document for detailed instructions on creating a new simulation.
The following pages denote the pieces of a new simulation configuration.
General top#
- Simulation Name - Enter a name for your simulation
- Description (optional) - Enter a description for your simulation
- Tags (optional) - Specify tags for your simulation, which can be used to search through or filter simulations later
- Select Cluster - Choose the simulation cluster which will actually run the simulator executable and execute the simulation. If you select a cloud cluster, the following three toggles can not be changed.
- Create test report - Enable to generate a test report after execution.
- Headless mode - Enable to run the simulator without rendering visually in the executable
- Interactive mode - Enable to run the simulator interactively, with the ability to visualize sensors, pause, etc. within the executable
Test case top#
Select a runtime template:
- Random Traffic: A random simulation where starting conditions are defined here in the user interface
- Visual scenario editor: Run a scenario created by the Visual Scenario Editor
- Python API: Directly input the Python API test case script to automatically execute from the user interface. If you have selected a local cluster, you will still need to bring up your Autopilot separately.
- API Only: The simulator is simply started in API Only mode, and you are expected to use a runner to execute test cases (Python API, Visual Scenario Editor)
Curently, only the Python API runtime template is available if you have selected a cloud cluster.
Runtime Template: Random Traffic#
- Map: Select the map for the simulation
- Vehicle: Select one or more ego vehicles
- Simulation Date: Set the date within simulation
- Time of Day: Set the time of day
- Rain: [0-1] set how much rain should fall
- Fog: [0-1] set how thick fog should be
- Wetness: [0-1] set how wet the road surfaces should be
- Cloudiness: [0-1] set how much cloud cover there should be
- Random Traffic: Enable for non-ego traffic vehicles
- Random Pedestrians: Enable for pedestrian agents
- Random Bicyclists: Enable for bicyclists
- Use Pre-defined Seed: Enable then input an integer to deterministically produce a random simulation that can be reproduced
Find the example guide here.
Runtime Template: Visual scenario editor#
- Scenario: Upload the JSON file created by the Visual Scenario Editor.
Runtime Template: Python API#
- Python Script: Input the Python API test case script that you would like to automatically execute when starting the simulation from the web user interface. Note that this is only supported for clusters running the Linux version of SVL Simulator.
- Map: Select the map for the simulation. This must match the name of map passed to
sim.load()
. - Vehicle: Select one or more ego vehicles. These must match any hardcoded vehicle names passed to
sim.add_agent()
. NOTE: If you have selected a cloud cluster, only a single vehicle can be selected.
Please see here for additional information on Python API mode.
Runtime Template: API Only#
For API Only simulations, you do not need to set any starting parameters, as the runner and test case you are expected to execute should determine the starting configuration. This could be from Visual Scenario Editor, or a Python API test case script.
See the below documents for additional information on running the various types of test cases using the API Only runtime template:
Autopilot top#
Local cluster top#
- Autopilot: A list of compatible Autopilot systems are highlighted to choose from, based on the ego vehicle and the cluster type selected on the Test case pane.
- Bridge IP: the IP address and port number that your bridge is running at, e.g.
localhost:9090
or<IP_ADDRESS>:9000
.
Publish top#
Finally, click "Publish" to publish the new simulation to your library and to be able to execute it.
You can now run your simulation. Make sure the cluster you specified for the simulation is online, then click "Run Simulation".


Class CrossViewHeaderDescriptor
The descriptor that is used to describe one element of the CrossView header.
Implements
Inherited Members
Namespace: FastReport.CrossView
Assembly: FastReport.OpenSource.dll
Syntax
public class CrossViewHeaderDescriptor : CrossViewDescriptor, IFRSerializable
Remarks
The CrossViewHeaderDescriptor class is used to define one header element of the CrossView (either the column element or row element).
To set visual appearance of the element, use the TemplateCell property.
The collection of descriptors used to represent the CrossView header is stored in the CrossViewObject.Data.Columns and CrossViewObject.Data.Rows properties.
Constructors
CrossViewHeaderDescriptor()
Initializes a new instance of the CrossViewHeaderDescriptor class
Declaration
public CrossViewHeaderDescriptor()
CrossViewHeaderDescriptor(String, String, Boolean, Boolean, Boolean)
Initializes a new instance of the CrossViewHeaderDescriptor class
Declaration
public CrossViewHeaderDescriptor(string fieldName, string measureName, bool isTotal, bool isGrandTotal, bool isMeasure)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | fieldName | The Field Name. |
| System.String | measureName | The Measure Name. |
| System.Boolean | isTotal | Indicates the "Total" element. |
| System.Boolean | isGrandTotal | Indicates the "GrandTotal" element. |
| System.Boolean | isMeasure | Indicates the "Measure" element. |
Properties
Cell
Gets the cell coordinate.
Declaration
public int Cell { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
CellSize
Gets the size in cell coordinate.
Declaration
public int CellSize { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
FieldName
Gets the name of field in cube.
Declaration
public string FieldName { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
IsGrandTotal
Gets a value indicating that this is the "GrandTotal" element.
Declaration
public bool IsGrandTotal { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
IsMeasure
Gets a value indicating that this is the "Measure" element.
Declaration
public bool IsMeasure { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
IsTotal
Gets a value indicating that this is the "Total" element.
Declaration
public bool IsTotal { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Level
Gets the level coordinate.
Declaration
public int Level { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
LevelSize
Gets the size in level coordinate.
Declaration
public int LevelSize { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
MeasureName
Gets the name of measure in cube.
Declaration
public string MeasureName { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
Methods
Assign(CrossViewDescriptor)
Assigns values from another descriptor.
Declaration
public override void Assign(CrossViewDescriptor source)
Parameters
| Type | Name | Description |
|---|---|---|
| CrossViewDescriptor | source | Descriptor to assign values from. |
Overrides
Serialize(FRWriter)
Serializes the object.
Declaration
public override void Serialize(FRWriter writer)
Parameters
| Type | Name | Description |
|---|---|---|
| FRWriter | writer | Writer object. |


RViz teleop interface to the controller. More...
Public Member Functions | |
| def | __init__ |
| def | interactiveMarkerLocationCallback |
| Callback for the interactive marker location. | |
| def | goalPositionHandler |
| Publishes the current pose of the interactive marker as the goal pose for the MPC. | |
| def | goalPositionOrientationHandler |
| Publishes the current pose of the interactive marker as the goal pose for the MPC. | |
| def | stopArmHandler |
| Publishes an empty trajectory message. | |
| def | enablePps |
| Enable the PR2 PPS sensors by adding the topics to the skin client. | |
| def | disablePps |
| Enable the PR2 PPS sensors by removing the topics from the skin client. | |
| def | openGripperHandler |
| Open the PR2 gripper for this arm and enable the PPS sensors (assumes this is running on the PR2). | |
| def | closeGripperHandler |
| Close the PR2 gripper for this arm and enable the PPS sensors (assumes this is running on the PR2). | |
| def | zeroSkinHandler |
| Zeroes the PR2 skin (eg, to correct for calibration errors). | |
| def | goal_feedback_rviz_cb |
| def | initComms |
| Initialise all publishers/subscribers. | |
| def | initMarkers |
| Initialise the interactive marker based on what robot we're running on, and whether we use orientation or just position. | |
| def | initMenu |
| Initialise the menu used to control the arm behaviour. | |
| def | start |
| Start the interactive marker server (spin indefinitely). | |
Public Attributes | |
| opt | |
| current_goal_pose | |
| goal_pos_pub | |
| mpc_weights_pub | |
| goal_traj_pub | |
| add_topic_pub | |
| remove_topic_pub | |
| open_pub | |
| close_pub | |
| disable_pub | |
| enable_pub | |
| zero_gripper_pub | |
| zero_gripper_left_link_pub | |
| zero_gripper_right_link_pub | |
| zero_gripper_palm_pub | |
| zero_forearm_pub | |
| zero_upperarm_pub | |
| zero_pps_left_pub | |
| zero_pps_right_pub | |
| server | |
| wp_im | |
| wp_menu_handler |
RViz teleop interface to the controller.
Publishes goal poses on the appropriate topics and allows a user to teleop the arm controller.
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.closeGripperHandler | ( | self, | |
| feedback | |||
| ) |
Close the PR2 gripper for this arm and enable the PPS sensors (assumes this is running on the PR2).
Enable the PR2 PPS sensors by removing the topics from the skin client.
Enable the PR2 PPS sensors by adding the topics to the skin client.
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.goalPositionHandler | ( | self, | |
| feedback | |||
| ) |
Publishes the current pose of the interactive marker as the goal pose for the MPC.
Also sets the orientation weight for the controller to 0.0 (ie, position only).
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.goalPositionOrientationHandler | ( | self, | |
| feedback | |||
| ) |
Publishes the current pose of the interactive marker as the goal pose for the MPC.
Also enables the orientation weight (ie, position and orientation).
Initialise the interactive marker based on what robot we're running on, and whether we use orientation or just position.
Initialise the menu used to control the arm behaviour.
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.interactiveMarkerLocationCallback | ( | self, | |
| feedback | |||
| ) |
Callback for the interactive marker location.
Receives and stores the updated pose of the marker in space as the user moves it around.
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.openGripperHandler | ( | self, | |
| feedback | |||
| ) |
Open the PR2 gripper for this arm and enable the PPS sensors (assumes this is running on the PR2).
Start the interactive marker server (spin indefinitely).
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.stopArmHandler | ( | self, | |
| feedback | |||
| ) |
Publishes an empty trajectory message.
This has the effect of flushing the stored trajectory and goal pose from the waypoint generator, stopping the controller motion.
| def hrl_haptic_mpc.mpc_teleop_rviz.MPCTeleopInteractiveMarkers.zeroSkinHandler | ( | self, | |
| feedback | |||
| ) |
Zeroes the PR2 skin (eg, to correct for calibration errors).


I'm A Celeb stars miserably fail at winning luxury items for other camp in trial
The celebs in Main Camp failed to bag any luxury items for Snake Rock during the gruelling Put Your Oar In It challenge
by Brogan-Leigh HurstI'm A Celebrity... Get Me Out Of Here! Main Camp stars failed to grab any luxury items during a Bushtucker trial.
Kate Garraway, Adele Roberts, Roman Kemp and Myles Stephenson all took part in the challenge but despite their hard teamwork they failed.
Gathering by a dirty swamp to take part in a night time challenge, Roman read a laminate out to everyone which said: "In front of you are 10 luxury items, one for each of the celebrities in both camps.
"Your job is to get each item from the wheel onto the basket however you can only use the oars. You will win each luxury item that reaches the basket."
Kate gave a stunned response: "Oh no, what if we drop someone elses. Oh the pressure!"
The celebrities lined up in a row with their oars balanced above the swamp and they had to pass each luxury item box down the row on the oars without dropping it in the swamp.
They didn't do very well and the only luxury items they managed to successfully pass from wheel to basket were Adele and Kate's.
It left nothing for Snake Rock.
Fans of the show were left baffled as to why Rak Su's Myles Stephenson chose to take a disposable camera into the Jungle when the whole thing is being filmed.

Another penned: "A disposable camera? Yeah, like it's not on telly or anything like that! #ImACeleb ".
A fourth wrote: "Miles wants to make memories on a disposable camera on a show that’s being recorded and televised for the world to see".
While others were questioning why the stars were getting luxury items already just a day into the new series.
*I'm A Celebrity returns tomorrow night at 9pm on ITV
Do you have a story to sell? Get in touch with us at<EMAIL_ADDRESS>or call us direct 0207 29 33033


The Early Years Foundation Stage Curriculum states:
"All planning starts with observing children in order to understand and consider their current interests, development and learning."
I implement the EYFS by:
- Making systematic observations and assessment of each child’s achievements, interests and learning styles
- Use these observations and assessments to identify learning priorities and plan relevant and motivating learning experiences for each child
- Match their observations to the expectations of the early learning goals. Depending on the age of your child I will be using the EYFS to support my work.
I will make regular observations on your child, using different mediums, for example, their daily diary, photograph’s, written observations or video recordings. You are welcome to see copies of any of my observations. All observations are only made for personal use and will remain confidential.
I request each parent to sign a form giving me permission to carry out and record observations on their child.
If you have any concerns regarding the content of this policy please do discuss them with me.


Hello, world!
First Name:
Last Name:
Email:
Number:
Must follow custom handler:
Optional:
Required option:
Select one...
Yes
No
Option one (required)
Option two
Option one (optional)
Option two
Option three
Hidden input on xs & sm screens:
Toggle Hidden Field
Submit


ProjectAsPackage provides a template for generating reproducible analyses as an R package. Why? Using an R package has some advantages:
.Rmd
files in the “vignettes” directory that reproduce your analysis, and take advantage of rmarkdown caching to speed up running them.ProjectAsPackage demonstrates setup for analyzing published data from:
Chou B, Krill LS, Horton BB, Barat CE, Trimble CL: Disparities in human papillomavirus vaccine completion among vaccine initiators. Obstet. Gynecol. 2011, 118:14–20.
ProjectAsPackage is set up as a GitHub “template” allowing you to initiate a new repository with it as the starting point for a new analysis. Click on “Use this template” to create a new GitHub repo starting with this code.
Building is most easily done using the “Build” menu in RStudio. Building roxygen documentation requires the roxygen2 package.
To easily publish your package and analysis as a web site using pkgdown (publicly on GitHub-pages or locally), you can use commands in the script update.sh. This very short script runs the command pkgdown::build_site(lazy=TRUE)
.
You can customize the website with the _pkgdown.yml file using instructions from pkgdown.
Note that the line in this _pkgdown.yml providing the site URL is only there to provide correct hyperlinking to help pages, such as ?gardasil
. For correct hyperlinking to help pages, the URL needs to be provided here and in the DESCRIPTION URL:
line.
To activate GitHub pages, from your GitHub repo you need to click on “Settings” on the top toolbar, scroll down to “GitHub Pages”, then change “None - Disable GitHub Pages” to “master branch /docs folder”. You should now see the URL for your new web page here. If you can’t select this option, it’s because you haven’t yet pushed a master branch docs folder created by pkgdown to GitHub.
See the result here.
To the extent possible under law,
Levi Waldron
has waived all copyright and related or neighboring rights to
ProjectAsPackage.
This work is published from:
United States.


It may seem early to start thinking about getting your child ready for college,
but it really isn’t— important groundwork should take place in ninth and tenth grade.
Here’s a list to help you make sure your child is on the right track:
Grade 9
- Create a four-year high school plan. Once your child is settled into ninth grade,
introduce the idea of preparing an overall plan for high school that relates to
his or her goals.
-
Make sure you and your child know what high school courses are required by colleges
and that your child’s ninth-grade courses are on the right track.
-
Map out when these courses should be taken.
-
Familiarize yourself with the various levels of courses offered by your child’s
school.
- Start your child thinking about careers. Encourage your child to develop a tentative
career goal. Of course it will change—often—but it’s the thought process that counts.
-
Help your child to identify interests—likes and dislikes—not just in academics
but in all areas. This will help your child focus on goals.
-
Encourage your child to discuss career options with others, such as the school
counselor, teachers, recent college graduates who are working, professionals in
the community, etc.
- Suggest extracurricular activities. Encourage your child to actively take part in
a sport, school club, music or drama group, or community volunteer activity.
-
Remember that colleges would rather see real involvement in one activity than
a loose connection to several activities.
-
If your child may want to play sports in college, research the National College
Athletic Association eligibility requirements. The NCAA requires completion of certain
core courses; you can find the specifics at www.ncaaclearinghouse.net.
- Meet with the school counselor.  Make sure your child has an opportunity during
the school year to discuss post—high school plans with the school counselor.
-
You should participate in this meeting, too.
- Save for college. It’s still not too late to start a college savings plan, if you
haven’t already. Every little bit helps!
-
Investigate state financial aid programs and 529 plans.
- Obtain a social security number for your child if you don’t already have one. This
is often required for applications, testing, scholarships, and other opportunities.
Grade 10
- Meet with the school counselor—again. Make sure your child meets with his or her
school counselor to ensure that he or she is enrolled in college-preparatory courses.
-
Check to see that your child is taking any prerequisites to advanced-level junior-
and senior-year courses.
- Ask if the PSAT/NMSQT® if offered to tenth-graders. While this test is usually taken
in the eleventh grade, it is also often offered in the tenth. That’s because it
provides invaluable feedback on the Student Score Report; tenth-graders can then
work on any disclosed academic weaknesses while there is still ample time to improve
them.
- Is your child interested in attending a U.S. military academy? If so, he or she
should request a pre-candidate questionnaire and complete it.
- Attend college and career fairs. These often take place in the fall, at your school,
or in your area.
- Support your child’s participation in a school activity or volunteer effort.
Extracurricular activities help students develop time-management skills and enrich
the school experience.
- Tour college campuses. If possible, take advantage of vacation or other family travel
opportunities to visit colleges and see what they’re like.
-
a. Even if there is no interest in attending the college you are visiting, it will
help your child learn what to look for in a college.
View these other handouts:
Source: College Counseling Sourcebook, 4th Edition
|
|
If investment, financial,
mortgage or insurance planning and/or products are required, College and Retirement
Solutions, LLC may refer you to one of its affiliates, including The Ziering Insurance
Agency. Any discussion of the Tax implications of planning is strictly for general
purposes. Neither "CRS" nor its representatives may give specific tax advice. One
should seek the advice and counsel of their accountant and/or tax advisor for information
regarding their particular situation. |


"AHITUB "brother of goodness = good. (1.) The son of Phinehas. On the death of his grandfather Eli he succeeded to the office of high priest, and was himself succeeded by his son Ahijah (1 Samuel 14:3; 22:9, 11, 12, 20). (2.) The father of Zadok, who was made high priest by Saul after the extermination of the family of Ahimelech (1 Chronicles 6:7, 8; 2 Samuel 8:17).
"AHITUB "brother of goodness = good. (1.) The son of Phinehas. On the death of his grandfather Eli he succeeded to the office of high priest, and was himself succeeded by his son Ahijah (1 Samuel 14:3; 22:9, 11, 12, 20).
(2.) The father of Zadok, who was made high priest by Saul after the extermination of the family of Ahimelech (1 Chronicles 6:7, 8; 2 Samuel 8:17).


What We Do
Unlike typical data centric solutions, Mile Two helps companies innovate by delivering mission centered solutions that focus on the intersection of people, technology, and the work.
The process usually begins with a combination of hypothesis building and observation of the current state of the art. The user is interviewed, problem areas are extrapolated from user stories, and brought back to the conceptual model of what is believed to be a viable solution. A prototype is built, demonstrating the hypothesized concepts to the user. Once feedback is received, the process is iterated on until a satisfactory solution is achieved. Critical factors in this model include: understanding the user’s problem and developing a viable product that demonstrates the proposed solution.
From a developer’s point of view, the speed of iteration, especially in the design portion of the process is critical. To achieve this goal, initial products are minimally viable. They demonstrate the concept and prove or disprove the conceptual model’s viability and reduces the overall project costs by preventing over development of invalid concepts. Once viability is demonstrated, refinement is performed to deliver a quality product to the user. The end goal centers around the user’s success.


--- title: "MSc in evolutionary ecology" author: "Julien Martin" date: 2021-02-18 categories: ["Opportunities"] tags: ["marmots", "quantitative genetic"] summary: MSc on reproductive strategies of yellow-bellied marmots reading_time: false # Show estimated reading time? share: false # Show social sharing links? profile: false # Show author profile? comments: false # Show comments? ---
Life-histories strategies are strongly influenced by environmental conditions and age. To understand the how animals adapt and evolve in natural conditions, it is key to understand how life-history trade-offs vary throughout the life of individuals. The main aim of the project will be to investigate variation in life-history trade-offs with environment age and/or sexes variation using the yellow-bellied marmot long-term study (> 50 years). The richness of the study system will allow the student to further define the project at the beginning of the project.
The project will be supervised by Pr. Julien Martin (uOttawa). The project will be done in collaboration with Pr. Dan Blumstein (UCLA, USA) and the Rocky Mountain Biological Laboratory, RMBL, USA. The student will be based at the Biology department of the University of Ottawa and will participate to field work in Colorado at RMBL during the summer.
Available for 2 years. The student is expected to complete a minimum of two teaching assistantship per year.
Ideally September 2021 or January 2022
The ideal candidate should have:
Students that are interested should send by email to Julien Martin (julien.martin@uottawa.ca):


VISION
MISSION
CORE VALUES
SCAST EXAM
ADMISSION REQUIREMENTS
PROGRAM OFFERINGS
GRANTS AND SCHOLARSHIP
PAYMENT SCHEME
CONTACT US


Home
My kitchen
FAQ
Register
(current)
Sign in
Sign out
Register
First Name
Last Name
Email address
No spam, we promise.
Where do you live?
Choose a Password
Confirm your Password
Register


Site map
These are the pages needed for this site
Installing Perl (maybe on www.perl.org?)
Learning Perl
- http://perldoc.perl.org/perlintro.html
- books
Finding modules
- Kensho
- Search.cpan.org
- white papers?
Installing modules
- cpanm
- local::lib
- CPAN::Mini
- Getting help
- rt
- cpantesters
- community / irc
Web quick start
- Plack::App::Template + some bits?


Robot Translator
Please enter a number below!
Please enter your name:
Please enter a number:
Translate
Reverse
Normal Translation
Reversed Translation


Come and get the best cakes ever with different flavours.
675-00900 Kilimani, Ngong Lane plaza 3rd floor
+254701646678


KIDS A film review by Bryant Frazer Copyright 1995 Bryant Frazer
Directed by Larry Clark Written by Harmony Korine
With his debut feature, Larry Clark has made an unpleasant film about a few repulsive characters who lead a fairly irredeemable existence. Premiered at the Sundance Film Festival in Utah, it provoked a hailstorm of accolades from critics who latched onto its uncompromising style and raw vision of (mostly) white urban American youth. Even the film's rating created a ruckus, with Disney subsidiary Miramax first appealing the obviously unavoidable NC-17 and then creating a new company (Shining Excalibur) to release it unrated. The hype machine has turned the movie's release into something of an event, daring audiences to come stare into the abyss that is young America. Unfortunately, while the flick itself lives up to its billing, it doesn't deliver much else.
The story is pretty thin. Telly (Leo Fitzpatrick) is an obnoxious kid who brags about his knack for seducing virgins (we see him having sex with one in the movie's very first scene). Casper (Justin Pierce) is his pal, slightly more sympathetic because he's something of a straight man to Telly's obscene vocal meanderings. Jennie (Chloe Sevigny) is one of the girls Telly has deflowered, and when she tests HIV-positive, she sets off across New York City on a quest to catch Telly--the only sexual partner she's ever had--before he screws again.
Not that we're given the impression that Telly would stop having sex, or even start wearing a condom, if he knew he had the AIDS virus. At one point, he remarks in voice-over that sex means everything to him, and his worldview is so nihilistic that concern for someone else's life is probably beyond him. In fact, KIDS reminded me of another relentlessly despairing New York cult film, LIQUID SKY. In that movie, a character is bemused and pleased by her ability to kill people by having sex with them, and it follows that Telly might get a similar macho thrill out of having a secret weapon at his disposal.
Another movie KIDS bears a passing resemblance to is A CLOCKWORK ORANGE, where Alex and his "droogs" get hopped up at the Korova milk bar and then go out looking for a fight. That movie shocked audiences with jubilant scenes of violence and then posed questions about whether or not Alex could be reformed by the state. But there is no state in KIDS. The police aren't a concern, and the parents are absent or ineffectual. This state of mind regenerates itself in a tight cycle, as we see the younger counterparts of these kids hanging out at the same parties, experimenting with drugs and trying their best to talk tough.
 That's the moment where the characters lose our sympathy completely, and we realize how much damage stands to be done by these loser kids. And then there's a great scene right after it where the kids strip down and go swimming in the middle of the night, showing themselves off to each other (a pair of girls along for the ride kiss just to make the boys crazy). It's the closest thing to an innocent good time these characters have, even though Telly is scheming on his next conquest through it all.
As a realistic portrait of those bleak teenage years, I guess KIDS should get high marks. The music is just right. The actors, who aren't professionally trained, do a great job inhabiting their roles, and Harmony Korine's screenplay goes a long way toward creating this film's naturalistic feel. KIDS is mostly well-directed, even though some shots go on forever, striving for realism but instead dulling the senses with pseudo-documentary stylistics. Jennie is the closest thing we have to a sympathetic character, and even she is violated in the neat-but-predictable denouement.
Critical reaction to the film has been almost worshipful, and as best I can figure out, that's for two reasons. One is that the film is supposedly a "wake-up call," and I guess it serves that purpose for folks who haven't yet figured out that this world is populated more and more by selfish, disenfranchised youth who get their kicks from drugs, sex, and casual cruelty. The other is that the film is a contemporary tragedy, telling the story of young people with no direction, no family, and nothing to look forward to. It's admirable that the film avoids moralizing, and that it is frank, brutal, and honest. I'd like to see it spur serious debate about the plight of young people in our society. But KIDS remains more satisfying as an event than as a movie. We barely feel for these kids, and that's a big part of why this movie seems nearly as empty as the lives it depicts. That might be exactly the intention here, but I'd argue that makes for questionable drama, and mediocre movies.
-- DEEP FOCUS: An Archive of Reviews by Bryant Frazer http://www.panix.com/~bfrazer/flicker
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


The Go Blog
Introducing the Developer Experience Working Group
10 April 2017
Over the last several years, Go's audience has shifted from early adopters to mainstream users. Today, our users come from a wide variety of backgrounds, experiences, and expectations. The needs of users are growing faster than the Go project can currently address them. To streamline the experience for first-time Go users, we've created the Developer eXperience Working Group (DXWG).
For the next three months, this group will work together on delivering:
- improvements to the Go installation experience
- better guidelines to help new users
- guides on tooling and developer environments (editors and IDEs)
- running user studies to systematically analyze and measure friction points
- improvements to the Go Tour and Go Playground
A secondary goal of the working group is to better understand how to involve the Go community in charting Go’s future. We hope that working groups – Go team members working alongside community members – will help Go scale its leadership and address user needs. We’ll learn from this experience and iterate.
The initial members of the working group are: Carmen Andoh, Chris Broadfoot, Francesc Campoy, Jaana Burcu Dogan, Steve Francia, Jess Frazelle, Bill Kennedy, Katrina Owen, Natalie Pistunovich, Mat Ryer, Dmitry Shuralyov.
We are looking for additional people to help with contributing code, writing documentation, sharing feedback and experiences (user stories), reviewing contributions, and more. If you are interested in any of our current areas of focus, please join us on the #devexp channel on the Gophers Slack and subscribe to the golang-devexp mailing list.
HTTP/2 Server Push
24 March 2017
Introduction
HTTP/2 is designed to address many of the failings of HTTP/1.x. Modern web pages use many resources: HTML, stylesheets, scripts, images, and so on. In HTTP/1.x, each of these resources must be requested explicitly. This can be a slow process. The browser starts by fetching the HTML, then learns of more resources incrementally as it parses and evaluates the page. Since the server must wait for the browser to make each request, the network is often idle and underutilized.
To improve latency, HTTP/2 introduced server push, which allows the server to push resources to the browser before they are explicitly requested. A server often knows many of the additional resources a page will need and can start pushing those resources as it responds to the initial request. This allows the server to fully utilize an otherwise idle network and improve page load times.
At the protocol level, HTTP/2 server push is driven by PUSH_PROMISE
frames. A PUSH_PROMISE
describes a request that the server predicts the
browser will make in the near future. As soon as the browser receives
a PUSH_PROMISE
, it knows that the server will deliver the resource.
If the browser later discovers that it needs this resource, it will
wait for the push to complete rather than sending a new request.
This reduces the time the browser spends waiting on the network.
Server Push in net/http
Go 1.8 introduced support for pushing responses from an http.Server
.
This feature is available if the running server is an HTTP/2 server
and the incoming connection uses HTTP/2. In any HTTP handler,
you can assert if the http.ResponseWriter supports server push by checking
if it implements the new http.Pusher
interface.
For example, if the server knows that app.js
will be required to
render the page, the handler can initiate a push if http.Pusher
is available:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if pusher, ok := w.(http.Pusher); ok { // Push is supported. if err := pusher.Push("/app.js", nil); err != nil { log.Printf("Failed to push: %v", err) } } // ... })
The Push call creates a synthetic request for /app.js
,
synthesizes that request into a PUSH_PROMISE
frame, then forwards
the synthetic request to the server's request handler, which will
generate the pushed response. The second argument to Push specifies
additional headers to include in the PUSH_PROMISE
. For example,
if the response to /app.js
varies on Accept-Encoding,
then the PUSH_PROMISE
should include an Accept-Encoding value:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if pusher, ok := w.(http.Pusher); ok { // Push is supported. options := &http.PushOptions{ Header: http.Header{ "Accept-Encoding": r.Header["Accept-Encoding"], }, } if err := pusher.Push("/app.js", options); err != nil { log.Printf("Failed to push: %v", err) } } // ... })
A fully working example is available at:
$ go get golang.org/x/blog/content/h2push/server
If you run the server and load https://localhost:8080,
your browser's developer tools should show that app.js
and
style.css
were pushed by the server.
Start Your Pushes Before You Respond
It's a good idea to call the Push method before sending any bytes of the response. Otherwise it is possible to accidentally generate duplicate responses. For example, suppose you write part of an HTML response:
<html> <head> <link rel="stylesheet" href="a.css">...
Then you call Push("a.css", nil). The browser may parse this fragment
of HTML before it receives your PUSH_PROMISE, in which case the browser
will send a request for a.css
in addition to receiving your
PUSH_PROMISE
. Now the server will generate two responses for a.css
.
Calling Push before writing the response avoids this possibility entirely.
When To Use Server Push
Consider using server push any time your network link is idle. Just finished sending the HTML for your web app? Don't waste time waiting, start pushing the resources your client will need. Are you inlining resources into your HTML file to reduce latency? Instead of inlining, try pushing. Redirects are another good time to use push because there is almost always a wasted round trip while the client follows the redirect. There are many possible scenarios for using push -- we are only getting started.
We would be remiss if we did not mention a few caveats. First, you can only push resources your server is authoritative for -- this means you cannot push resources that are hosted on third-party servers or CDNs. Second, don't push resources unless you are confident they are actually needed by the client, otherwise your push wastes bandwidth. A corollary is to avoid pushing resources when it's likely that the client already has those resources cached. Third, the naive approach of pushing all resources on your page often makes performance worse. When in doubt, measure.
The following links make for good supplemental reading:
- HTTP/2 Push: The Details
- Innovating with HTTP/2 Server Push
- Cache-Aware Server Push in H2O
- The PRPL Pattern
- Rules of Thumb for HTTP/2 Push
- Server Push in the HTTP/2 spec
Conclusion
With Go 1.8, the standard library provides out-of-the-box support for HTTP/2 Server Push, giving you more flexibility to optimize your web applications.
Go to our HTTP/2 Server Push demo page to see it in action.
Go 2016 Survey Results
6 March 2017
Thank you
This post summarizes the result of our December 2016 user survey along with our commentary and insights. We are grateful to everyone who provided their feedback through the survey to help shape the future of Go.
Programming background
Of the 3,595 survey respondents, 89% said they program in Go at work or outside of work, with 39% using Go both at home and at work, 27% using Go only at home, and 23% using Go only at work.
We asked about the areas in which people work. 63% said they work in web development, but only 9% listed web development alone. In fact, 77% chose two or more areas, and 53% chose three or more.
We also asked about the kinds of programs people write in Go. 63% of respondents write command-line programs, 60% write API or RPC services, and 52% write web services. Like in the previous question, most made multiple choices, with 85% choosing two or more and 72% choosing three or more.
We asked about people’s expertise and preference among programming languages. Unsurprisingly, Go ranked highest among respondents’ first choices in both expertise (26%) and preference (62%). With Go excluded, the top five first choices for language expertise were Python (18%), Java (17%), JavaScript (13%), C (11%), and PHP (8%); and the top five first choices for language preference were Python (22%), JavaScript (10%), C (9%), Java (9%), and Ruby (7%). Go is clearly attracting many programmers from dynamic languages.
Reading the data: This question was “multiple choice,” so the percentages add up to well over 100%. All graphs in this post show both the total count and the corresponding percentage of the 3,595 surveys completed.
Reading the data: This question was “ordered choice.” The first, second, third, fourth, and fifth choices are displayed as progressively lighter sections of the bars. The total count shown next to the bar is for all choices; the percentage list shows how the choices are divided.
 Fewer users agree that Go is critical to their company’s success (2.5:1).
When asked what they like most about Go, users most commonly mentioned Go’s simplicity, ease of use, concurrency features, and performance. When asked what changes would most improve Go, users most commonly mentioned generics, package versioning, and dependency management. Other popular responses were GUIs, debugging, and error handling.
When asked about the biggest challenges to their own personal use of Go, users mentioned many of the technical changes suggested in the previous question. The most common themes in the non-technical challenges were convincing others to use Go and communicating the value of Go to others, including management. Another common theme was learning Go or helping others learn, including finding documentation like getting-started walkthroughs, tutorials, examples, and best practices.
Some representative common feedback, paraphrased for confidentiality:
“The documentation is not clear enough for beginners. It needs more examples and often assumes experience with other languages and various computer science topics.”
“I want to use Go at work but struggle to convince my team to even try Go.”
“I can’t get management approval to use Go; they don’t see its value and worry about adoption and finding developers.”
We appreciate the feedback given to identify these challenges faced by our users and community. In 2017 we are focusing on addressing these issues and hope to make as many significant improvements as we can. We welcome suggestions and contributions from the community in making these challenges into strengths for Go.
Reading the data: This question asked how strongly the respondent agreed or disagreed with the statement. The responses for each statement are displayed as sections of a single bar, from “strongly disagree” in deep red on the left end to “strongly agree” in deep blue on the right end. The bars use the same scale as the rest of the graphs, so they can (and do, especially later in the survey) vary in overall length due to lack of responses. The ratio after the text compares the number of respondents who agreed (including “somewhat agree” and “strongly agree”) to those who disagreed (including “somewhat disagree” and “strongly disagree”). For example, the ratio of respondents agreeing that they would recommend Go to respondents disagreeing was 19 to 1.
Reading the data: This question asked for write-in responses. The bars above show the fraction of surveys mentioning common words or phrases. Only words or phrases that appeared in twenty or more surveys are listed, and meaningless common words or phrases like “the” or “to be” are omitted. The displayed results do overlap: for example, the 287 responses that mentioned “standard library” do include the 27 listed separately that mentioned “great standard library.” However, nearly or completely redundant shorter entries are omitted: there are not twenty or more surveys that listed “standard” without mentioning “standard library,” so there is no separate entry for “standard.”
Development and deployment
When asked which operating systems they develop Go on, 63% of respondents say they use Linux, 44% use MacOS, and 19% use Windows, with multiple choices allowed and 49% of respondents developing on multiple systems. The 51% of responses choosing a single system split into 29% on Linux, 17% on MacOS, 5% on Windows, and 0.2% on other systems.
Go deployment is roughly evenly split between privately managed servers and hosted cloud servers.
Working Effectively
We asked how strongly people agreed or disagreed with various statements about Go. Users most agreed that Go’s performance meets their needs (57:1 ratio agree versus disagree), that they are able to quickly find answers to their questions (20:1), and that they are able to effectively use Go’s concurrency features (14:1). On the other hand, users least agreed that they are able to effectively debug uses of Go’s concurrency features (2.7:1).
Users mostly agreed that they were able to quickly find libraries they need (7.5:1). When asked what libraries are still missing, the most common request by far was a library for writing GUIs. Another popular topic was requests around data processing, analytics, and numerical and scientific computing.
Of the 30% of users who suggested ways to improve Go’s documentation, the most common suggestion by far was more examples.
The primary sources for Go news are the Go blog, Reddit’s /r/golang and Twitter; there may be some bias here since these are also how the survey was announced.
The primary sources for finding answers to Go questions are the Go web site, Stack Overflow, and reading source code directly.
The Go Project
55% of respondents expressed interest in contributing in some way to the Go community and projects. Unfortunately, relatively few agreed that they felt welcome to do so (3.3:1) and even fewer felt that the process was clear (1.3:1). In 2017, we intend to work on improving the contribution process and to continue to work to make all contributors feel welcome.
Respondents agree that they are confident in the leadership of the Go project (9:1), but they agree much less that the project leadership understands their needs (2.6:1), and they agree even less that they feel comfortable approaching project leadership with questions and feedback (2.2:1). In fact, these were the only questions in the survey for which more than half of respondents did not mark “somewhat agree”, “agree”, or “strongly agree” (many were neutral or did not answer).
We hope that the survey and this blog post convey to those of you who are aren’t comfortable reaching out that the Go project leadership is listening. Throughout 2017 we will be exploring new ways to engage with users to better understand their needs.
Community
At the end of the survey, we asked some demographic questions. The country distribution of responses roughly matches the country distribution of site visits to golang.org, but the responses under-represent some Asian countries. In particular, India, China, and Japan each accounted for about 5% of the site visits to golang.org in 2016 but only 3%, 2%, and 1% of survey responses.
An important part of a community is making everyone feel welcome, especially people from under-represented demographics. We asked an optional question about identification across a few diversity groups. 37% of respondents left the question blank and 12% of respondents chose “I prefer not to answer”, so we cannot make many broad conclusions from the data. However, one comparison stands out: the 9% who identified as underrepresented agreed with the statement “I feel welcome in the Go community” by a ratio of 7.5:1, compared with 15:1 in the survey as a whole. We aim to make the Go community even more welcoming. We support and are encouraged by the efforts of organizations like GoBridge and Women Who Go.
The final question on the survey was just for fun: what’s your favorite Go keyword?
Perhaps unsurprisingly, the most popular response was go
, followed by defer
, func
, interface
, and select
.
Go 1.8 is released
16 February 2017
Today the Go team is happy to announce the release of Go 1.8. You can get it from the download page. There are significant performance improvements and changes across the standard library.
The compiler back end introduced in Go 1.7 for 64-bit x86 is now used on all architectures, and those architectures should see significant performance improvements. For instance, the CPU time required by our benchmark programs was reduced by 20-30% on 32-bit ARM systems. There are also some modest performance improvements in this release for 64-bit x86 systems. The compiler and linker have been made faster. Compile times should be improved by about 15% over Go 1.7. There is still more work to be done in this area: expect faster compilation speeds in future releases.
Garbage collection pauses should be significantly shorter, usually under 100 microseconds and often as low as 10 microseconds.
The HTTP server adds support for HTTP/2 Push, allowing servers to preemptively send responses to a client. This is useful for minimizing network latency by eliminating roundtrips. The HTTP server also adds support for graceful shutdown, allowing servers to minimize downtime by shutting down only after serving all requests that are in flight.
Contexts (added to the standard library in Go 1.7)
provide a cancelation and timeout mechanism.
Go 1.8 adds support for contexts in more parts of the standard library,
including the database/sql
and net
packages
and Server.Shutdown
in the net/http
package.
It's now much simpler to sort slices using the newly added Slice
function in the sort
package. For example, to sort a slice of structs by their Name
field:
sort.Slice(s, func(i, j int) bool { return s[i].Name < s[j].Name })
Go 1.8 includes many more additions, improvements, and fixes. Find the complete set of changes, and more information about the improvements listed above, in the Go 1.8 release notes.
To celebrate the release, Go User Groups around the world are holding release parties this week. Release parties have become a tradition in the Go community, so if you missed out this time, keep an eye out when 1.9 nears.
Thank you to over 200 contributors who helped with this release.
Participate in the 2016 Go User Survey and Company Questionnaire
13 December 2016
The Go project wants to hear from you!
The Go project wants to hear from you! Our goal is to create the best language for developing simple, reliable, scalable software. We are asking you to help by participating in a survey and if applicable, a company questionnaire.

Where: Please take this 20-minute survey by December 22nd: Go User Survey 2016
The survey is anonymous and confidential.
Why: The Go project leadership depends on your feedback to guide the future of the Go project. Your responses will help to understand how we are doing and help plan improvements for the Go language, libraries, and tools.
After the survey closes, we will publish the anonymous aggregate results to the Go blog.
The Go Company Questionnaire
Who: If you are in a position to share details like “company name”, “if your company is hiring Go developers”, and “reasons your team or company adopted Go” then please help us by taking this questionnaire. We only need one response per company (or department for larger companies).
Where: Please take this 5-minute questionnaire by December 22nd: Go Company Questionnaire 2016
The questionnaire is confidential, but not anonymous.
Why: The Go project would like to better understand the companies using Go.
After the questionnaire closes the Go project leadership will use this information to better understand how companies are utilizing Go and in what ways the project can improve their experience. If you participate we may reach out for further information.
Spread the word!
Please help us spread the word by sharing this post on your social network feeds, at meetups, around your office and in other communities.
The survey & questionnaire close by December 22nd so please share today.
See the index for more articles.


The below element will show/hide based on the ng-show directive
This paragraph is controlled by Angular


HP Black Friday Sale Will Save You up to £400 on Envy PCs
by Shabana ArifThe Black Friday event has discounts on laptops, PCs, printers, and more.
If you're in the market for a new laptop or PC, you'll be hard pressed to find a deal that looks this good. Prices have been slashed on the Envy series, Pavillion, HP 14, and HP All-in-One, as well as an OMEN gaming PC. There's up to £40 off monitors, and £70 off printers to boot.
While there are quite a few offers to wade through, we've zeroed in on some key deals that you might just be tempted by.
- OMEN by HP 880-552na Gaming PC: Was £2,099.00, now £1,699. Save £400 with code BLK18.
- HP OfficeJet Pro 9014 Wireless All-in-One Printer: Was £179, now £149. Save £30 with code BLK29.
- HP ENVY x360 15-dr0033na 4K OLED Convertible Laptop: Was £1,499, now £1,249. Save £250 with code BLK3.
- HP Pavilion 15-cs2026na Full-HD Laptop: Was £599, now £479. Save £120 with code BLK17.
There's a lot more in the Black Friday sale than just this tiny handful, so be sure to visit the website and have a look around. In the meantime, for more Black Friday offers, check out our hub page.


output options
There a few way to access your lists. Each of these urls can be found on your lists page beside each list.
Each lists as an
RSS Feed assoicated with it. The RSS feed contains the newest 25 notes that arn't marked as completed.
Firefox has great native handling for this or if you use chrome I would suggest
Foxish(full disclosure: I wrote it). Or finally
Google Reader.
Each list has an optional readable url. You can disable this by unchecking the readable url option for the list.
This url takes the form: http://notefeeder.heroku.com/
<your user name>/
<your lists name>
This is slightly more private and its just an auto generated id for the list. This url hides who owns the list.
This url takes the form: http://notefeeder.heroku.com/lists/
<list id>


[gecode-users] Watching Propagators
Guido Tack
tack at gecode.org
Mon Jun 20 10:40:32 CEST 2011
Hi Max,
there's no way to implement what you want without modifying either the Gecode kernel or all the propagators that are supposed to record that information. In order to watch propagation, you'd have to modify the Space::status function (the main propagation loop), or each individual propagate function (because only the individual propagators actually have access to their variables, the Gecode kernel doesn't really know about them).
Because of rewriting (replacing propagators at runtime), this is a pretty intrusive change, but not impossible to do.
The second complication, as far as I can see, is that the order in which variables are modified can be quite important. In a trailing-based system, this order is recorded automatically on the trail. In a copying system such as Gecode, you'd have to record the order yourself, essentially implementing an additional trail. This is why it probably makes much more sense to start from a trailing system in the first place.
Cheers,
Guido
On 20 Jun 2011, at 10:05, Max Ostrowski wrote:
> Sorry for reposting, i already asked this question 2 years ago, but now i managed to read more of the manual and my questions will be more refined.
>
> For each constraint that i post, i want to find out which variables are propagated by the corresponding propagator.
> Also the ordering would be interesting. I need this to build an SMT like System, to generate a "reason" why a certain reified constraint became true/false.
>
> So can i somehow "watch" the propagate function, testing if the subscribed variables are pruned?
>
> I first thought of "copying" the post functions of Gecode and implementing a "wrapper" propagator that wraps around the functions.
> But i think this will not do the work, as propagators can be disposed and replaced at runtime, right ?
>
>
> Do you have any other idea how i can find out which constraint is responsible for pruning the search space?
> I want to avoid to modify Gecode, as i want to stay up to date.
> This is also the reason why i do not simply want to copy all propagators to implement BookKeeping myself.
>
> Best,
> Max
> --
> Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
> belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
>
> _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users
--
Guido Tack, http://people.cs.kuleuven.be/~guido.tack/
More information about the users
mailing list


Can we do better than a Dart Throwing Chimpanzee? It is said by the experts that a dart throwing chimp can hit the target 60% of the time!
In this task we are going to predict mental illness for workers in the tech sector. The data comes from Kaggle. The variable to predict is ‘treatment’.
library(ggplot2)
library(data.table)
library(caret)
library(glmnet)
library(ROCR)
library(dplyr)
library(ggthemes)
knitr::opts_chunk$set(warning = FALSE)
knitr::opts_chunk$set(message = FALSE)
data <- fread("data/mentaldata/survey_cleaned.csv")
data <- data[ ,c("comments", "state","work_interfere") := NULL]
data[, age := as.numeric(age)]
data[ , treatment := factor(treatment, levels = c("Yes", "No"))]
Explore some predictors that can be used to predict treatment
names(data)
## [1] "Timestamp" "age"
## [3] "gender" "country"
## [5] "self_employed" "family_history"
## [7] "treatment" "no_employees"
## [9] "remote_work" "tech_company"
## [11] "benefits" "care_options"
## [13] "wellness_program" "seek_help"
## [15] "anonymity" "leave"
## [17] "mental_health_consequence" "phys_health_consequence"
## [19] "coworkers" "supervisor"
## [21] "mental_health_interview" "phys_health_interview"
## [23] "mental_vs_physical" "obs_consequence"
glimpse(data)
## Observations: 1,256
## Variables: 24
## $ Timestamp <chr> "2014-08-27 11:29:31", "2014-08-27 1...
## $ age <dbl> 37, 44, 32, 31, 31, 33, 35, 39, 42, ...
## $ gender <chr> "male", "male", "male", "male", "mal...
## $ country <chr> "United States", "United States", "C...
## $ self_employed <chr> "", "", "", "", "", "", "", "", "", ...
## $ family_history <chr> "No", "No", "No", "Yes", "No", "Yes"...
## $ treatment <fct> Yes, No, No, Yes, No, No, Yes, No, Y...
## $ no_employees <chr> "6-25", "More than 1000", "6-25", "2...
## $ remote_work <chr> "No", "No", "No", "No", "Yes", "No",...
## $ tech_company <chr> "Yes", "No", "Yes", "Yes", "Yes", "Y...
## $ benefits <chr> "Yes", "Don't know", "No", "No", "Ye...
## $ care_options <chr> "Not sure", "No", "No", "Yes", "No",...
## $ wellness_program <chr> "No", "Don't know", "No", "No", "Don...
## $ seek_help <chr> "Yes", "Don't know", "No", "No", "Do...
## $ anonymity <chr> "Yes", "Don't know", "Don't know", "...
## $ leave <chr> "Somewhat easy", "Don't know", "Some...
## $ mental_health_consequence <chr> "No", "Maybe", "No", "Yes", "No", "N...
## $ phys_health_consequence <chr> "No", "No", "No", "Yes", "No", "No",...
## $ coworkers <chr> "Some of them", "No", "Yes", "Some o...
## $ supervisor <chr> "Yes", "No", "Yes", "No", "Yes", "Ye...
## $ mental_health_interview <chr> "No", "No", "Yes", "Maybe", "Yes", "...
## $ phys_health_interview <chr> "Maybe", "No", "Yes", "Maybe", "Yes"...
## $ mental_vs_physical <chr> "Yes", "Don't know", "No", "No", "Do...
## $ obs_consequence <chr> "No", "No", "No", "Yes", "No", "No",...
sapply(data, function(x) sum(is.na(x)))
## Timestamp age
## 0 0
## gender country
## 0 0
## self_employed family_history
## 0 0
## treatment no_employees
## 0 0
## remote_work tech_company
## 0 0
## benefits care_options
## 0 0
## wellness_program seek_help
## 0 0
## anonymity leave
## 0 0
## mental_health_consequence phys_health_consequence
## 0 0
## coworkers supervisor
## 0 0
## mental_health_interview phys_health_interview
## 0 0
## mental_vs_physical obs_consequence
## 0 0
data$gender %>% unique()
## [1] "male" "trans" "female"
data[, age_cat := cut(age, .(-Inf,20,35,65,Inf), labels = c('Kids','Young','Middle','Old'))]
ggplot(data, aes(age_cat)) + geom_bar() + facet_grid(~gender) + theme_economist_white()
This data is mostly about young males which is representative for the tech industry. But which one is seeking relatively more treatment? Males or females?
ggplot(data, aes(x = treatment, group = gender)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes( label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.1) +
scale_y_continuous(labels=scales::percent) +
facet_grid(~gender) +
labs(y = "Percent", fill="Treatment") +
theme_fivethirtyeight() + scale_fill_grey()
I said males or females and the trans gender came out with a surprise
How about family history?
ggplot(data, aes(x = treatment, group = family_history)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes( label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.1) +
scale_y_continuous(labels=scales::percent) +
facet_grid(~family_history) +
labs(y = "Percent", fill="Treatment") +
theme_fivethirtyeight() + scale_fill_grey()
Family really matters a big deal!
ggplot(data, aes(x = treatment, group = age_cat)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes( label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.1) +
scale_y_continuous(labels=scales::percent) +
facet_grid(~age_cat) +
labs(y = "Percent", fill="Treatment") +
theme_fivethirtyeight() + scale_fill_grey()
We can see a pattern here. Older the age category, more the treatment. Similarly younger age categories are seeking less and less treatment.
Why do I have 100% in the oldest age category?
data %>% filter(age > 65) %>% select(age_cat, gender, family_history, treatment)
## age_cat gender family_history treatment
## 1 Old male No Yes
## 2 Old trans Yes Yes
## 3 Old male Yes Yes
It turns out there are only 3 observations over there. As we have seen above the dominant age category is 20-35 years old.
ggplot(data, aes(x = treatment, group = seek_help)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes( label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.1) +
labs(y = "Percent", fill="treatment") +
facet_grid(~seek_help) +
scale_y_continuous(labels = scales::percent) +
theme_fivethirtyeight() + scale_fill_grey()
There can be some evidence for the higher probability of ending up in a treatment for the people who are aware of their employer’s services regarding mental issues
ggplot(data, aes(x = treatment, group = leave)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes( label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.2) +
labs(y = "Percent", fill="treatment") +
facet_grid(~leave) +
scale_y_continuous(labels = scales::percent) +
theme_fivethirtyeight() + scale_fill_grey()
People who indicate that there is some difficulty on getting a leave for mental issue reasons might giving us signal.
Partitioning the data to 70% training and 30% test samples.
set.seed(123)
my_ratio <- 0.7
train_indices <- createDataPartition(y = data[["treatment"]],
times = 1,
p = my_ratio,
list = FALSE)
data_train <- data[train_indices, ]
data_test <- data[-train_indices, ]
Build models with glmnet and rpart that predict the binary outcome of treatment. Using cross-validation on the training set and AUC as a selection measure.
train_control <- trainControl(method = "cv",
number = 5,
classProbs = TRUE,
summaryFunction = twoClassSummary)
tune_grid <- expand.grid("alpha" = c(0, 1),
"lambda" = seq(0.1, 0.14, 0.01))
set.seed(123)
glmnet_model <- train(treatment ~ age_cat + seek_help + benefits + supervisor +
family_history + leave + gender,
data = data_train,
method = "glmnet",
preProcess = c("center", "scale"),
trControl = train_control,
tuneGrid = tune_grid,
metric = "ROC")
glmnet_model
## glmnet
##
## 880 samples
## 7 predictor
## 2 classes: 'Yes', 'No'
##
## Pre-processing: centered (16), scaled (16)
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 704, 705, 704, 703, 704
## Resampling results across tuning parameters:
##
## alpha lambda ROC Sens Spec
## 0 0.10 0.7448183 0.6576864 0.7178422
## 0 0.11 0.7452348 0.6576864 0.7178422
## 0 0.12 0.7452360 0.6576864 0.7178422
## 0 0.13 0.7454450 0.6554392 0.7155434
## 0 0.14 0.7453153 0.6531920 0.7132706
## 1 0.10 0.6904544 0.5540347 0.8049634
## 1 0.11 0.6840193 0.5540347 0.8049634
## 1 0.12 0.6794991 0.5540347 0.8049634
## 1 0.13 0.6794991 0.5540347 0.8049634
## 1 0.14 0.6794991 0.5540347 0.8049634
##
## ROC was used to select the optimal model using the largest value.
## The final values used for the model were alpha = 0 and lambda = 0.13.
trctrl <- trainControl(method = "cv",
number = 5,
classProbs = T,
#verboseIter = T,
summaryFunction = twoClassSummary)
tune_grid <- data.frame(cp=seq(0.0001, 0.01, 0.001))
set.seed(123)
treeCPModel <- train(treatment ~ age_cat + seek_help + benefits + supervisor +
family_history + leave + gender,
data = data_train,
method = "rpart",
trControl = trctrl,
preProcess = c("center", "scale"),
tuneGrid = tune_grid,
metric = 'ROC')
treeCPModel
## CART
##
## 880 samples
## 7 predictor
## 2 classes: 'Yes', 'No'
##
## Pre-processing: centered (16), scaled (16)
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 704, 705, 704, 703, 704
## Resampling results across tuning parameters:
##
## cp ROC Sens Spec
## 0.0001 0.7156373 0.6800817 0.6422936
## 0.0011 0.7139538 0.6935904 0.6376959
## 0.0021 0.7153335 0.6936415 0.6491641
## 0.0031 0.7194024 0.7072268 0.6422675
## 0.0041 0.7194024 0.7072268 0.6422675
## 0.0051 0.7191620 0.6734168 0.7039446
## 0.0061 0.7193958 0.6688968 0.7085162
## 0.0071 0.7193958 0.6688968 0.7085162
## 0.0081 0.7193958 0.6688968 0.7085162
## 0.0091 0.7051818 0.6281920 0.7268548
##
## ROC was used to select the optimal model using the largest value.
## The final value used for the model was cp = 0.0041.
Now, compare models based on their predictive performance based on the cross-validation information. We can just use the mean AUC to select the best model.
Now evaluating the better performing model on the test set, drawing a ROC curve and interpreting the AUC.
test_prediction <- predict.train(glmnet_model, newdata = data_test)
test_truth <- data_test[["treatment"]]
There are 4 cases:
confusionMatrix(test_prediction, test_truth)
## Confusion Matrix and Statistics
##
## Reference
## Prediction Yes No
## Yes 132 64
## No 58 122
##
## Accuracy : 0.6755
## 95% CI : (0.6256, 0.7226)
## No Information Rate : 0.5053
## P-Value [Acc > NIR] : 1.777e-11
##
## Kappa : 0.3508
## Mcnemar's Test P-Value : 0.6508
##
## Sensitivity : 0.6947
## Specificity : 0.6559
## Pos Pred Value : 0.6735
## Neg Pred Value : 0.6778
## Prevalence : 0.5053
## Detection Rate : 0.3511
## Detection Prevalence : 0.5213
## Balanced Accuracy : 0.6753
##
## 'Positive' Class : Yes
##
The various types of errors have to be examined and we have to decide based on them.
# obtain probabilities instead of binary predictions
test_prediction_probs <- predict.train(glmnet_model,
newdata = data_test,
type = "prob")
head(test_prediction_probs)
## Yes No
## 1 0.6769227 0.3230773
## 2 0.6396976 0.3603024
## 3 0.3119165 0.6880835
## 4 0.4018016 0.5981984
## 5 0.6274032 0.3725968
## 6 0.7856110 0.2143890
summary(test_prediction_probs$Yes)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.2779 0.3640 0.5072 0.5149 0.6580 0.8601
By default, predict.train uses the 50% threshold for prediction. We can try 45% also:
test_prediction_v2 <- ifelse(test_prediction_probs$Yes > 0.45, "Yes", "No")
test_prediction_v2 <- factor(test_prediction_v2, levels = c("Yes", "No"))
confusionMatrix(test_prediction_v2, test_truth)
## Confusion Matrix and Statistics
##
## Reference
## Prediction Yes No
## Yes 150 82
## No 40 104
##
## Accuracy : 0.6755
## 95% CI : (0.6256, 0.7226)
## No Information Rate : 0.5053
## P-Value [Acc > NIR] : 1.777e-11
##
## Kappa : 0.3494
## Mcnemar's Test P-Value : 0.0002057
##
## Sensitivity : 0.7895
## Specificity : 0.5591
## Pos Pred Value : 0.6466
## Neg Pred Value : 0.7222
## Prevalence : 0.5053
## Detection Rate : 0.3989
## Detection Prevalence : 0.6170
## Balanced Accuracy : 0.6743
##
## 'Positive' Class : Yes
##
We lowered our false negatives a bit by using the threshold of 0.45 above. Lets do a search for threshold.
If we increase the threshold for predicting something to be positive: we will have less and less cases that we label as positive. Both of those that are positive in reality and of those that are negative. Thus, both the true positives and the false positives increase.
thresholds <- seq(0.3, 0.6, by = 0.05)
for (thr in thresholds) {
test_prediction <- ifelse(test_prediction_probs$Yes > thr, "Yes", "No")
test_prediction <- factor(test_prediction, levels = c("Yes", "No"))
print(paste("Threshold:", thr))
print(confusionMatrix(test_prediction, test_truth)[["table"]])
}
## [1] "Threshold: 0.3"
## Reference
## Prediction Yes No
## Yes 189 172
## No 1 14
## [1] "Threshold: 0.35"
## Reference
## Prediction Yes No
## Yes 170 125
## No 20 61
## [1] "Threshold: 0.4"
## Reference
## Prediction Yes No
## Yes 161 98
## No 29 88
## [1] "Threshold: 0.45"
## Reference
## Prediction Yes No
## Yes 150 82
## No 40 104
## [1] "Threshold: 0.5"
## Reference
## Prediction Yes No
## Yes 132 64
## No 58 122
## [1] "Threshold: 0.55"
## Reference
## Prediction Yes No
## Yes 109 46
## No 81 140
## [1] "Threshold: 0.6"
## Reference
## Prediction Yes No
## Yes 89 33
## No 101 153
What to choose then? I would choose .45 threshold because it is a balanced point for my business objectives.
My strategy is to minimize the situations where I predict no-treatment but in reality it is a yes. In those cases I do a terrible mistake. The outcome has a high cost for the company. I am not aware of the troubled people around. It is like sitting on a time bomb which we dont know it exists.
However, I cant lower my threshold too much also. In that case I would do too many false positives which has other kind of costs. It will impact the time and productivity negatively.
On the other hand, we can accept False Positives until to a centain extend. There is a sweet spot where they are not much costly compared to False Negatives. Just like some false fire alarms will not cause a lot of trouble.
After some scientific meditation, 0.45 will be the threshold I would use.
At 0.45 Threshold Point I have:
82 False Posities and 40 False Negatives.
The ROC curve summarizes how a binary classifier performs “overall”, taking into accounts all possible thresholds. It shows the trade-off between true positive rate (a.k.a sensitivity, # true positives / # all positives) and the false positive rate (a.k.a 1 - specificity, # false positive / # negatives).
# a ggplot
# using prediction function from ROCR package
glmnet_prediction <- prediction(test_prediction_probs$Yes,
data_test[["treatment"]])
glmnet_perf <- performance(glmnet_prediction, measure = "tpr", x.measure = "fpr")
glmnet_roc_df <- data.table(
model = "glm",
FPR =<EMAIL_ADDRESS>TPR =<EMAIL_ADDRESS>cutoff =<EMAIL_ADDRESS>)
ggplot(glmnet_roc_df) +
geom_line(aes(FPR, TPR, color = cutoff), size = 2) +
geom_ribbon(aes(FPR, ymin = 0, ymax = TPR), alpha = 0.1) +
geom_abline(intercept = 0, slope = 1, linetype = "dotted", col = "black") +
scale_y_continuous(limits = c(0, 1), breaks = seq(0, 1, .1)) +
scale_x_continuous(limits = c(0, 1), breaks = seq(0, 1, .1)) +
theme_fivethirtyeight() + scale_fill_grey()
Higher AUC generally means better classification.
# calculate AUC
AUC <- performance(glmnet_prediction<EMAIL_ADDRESS>print(AUC)
## [1] 0.7259904
The colored field’s area in the plot is 0.725. A superb classifier would yield an area very close to 1. This is not one of the best models. However, it is better than flipping a coin. Or, it is better than a dart throwing chimpanzee
This data is about patients taking an appointment from the doctors. They are labeled as ‘no-show’ when they have an appointment but never showed up. We will first predict this no-show behaviour and then do some calibration.
# https://www.kaggle.com/joniarroba/noshowappointments
data <- fread("data/noshowdata/no-show-data.csv")
glimpse(data)
## Observations: 110,527
## Variables: 14
## $ PatientId <dbl> 2.987250e+13, 5.589978e+14, 4.262962e+12, 8.679...
## $ AppointmentID <int> 5642903, 5642503, 5642549, 5642828, 5642494, 56...
## $ Gender <chr> "F", "M", "F", "F", "F", "F", "F", "F", "F", "F...
## $ ScheduledDay <chr> "2016-04-29T18:38:08Z", "2016-04-29T16:08:27Z",...
## $ AppointmentDay <chr> "2016-04-29T00:00:00Z", "2016-04-29T00:00:00Z",...
## $ Age <int> 62, 56, 62, 8, 56, 76, 23, 39, 21, 19, 30, 29, ...
## $ Neighbourhood <chr> "JARDIM DA PENHA", "JARDIM DA PENHA", "MATA DA ...
## $ Scholarship <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,...
## $ Hipertension <int> 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ Diabetes <int> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ Alcoholism <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ Handcap <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ SMS_received <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,...
## $ `No-show` <chr> "No", "No", "No", "No", "No", "No", "Yes", "Yes...
# some data cleaning
data[, c("PatientId", "AppointmentID", "Neighbourhood") := NULL]
setnames(data,
c("No-show",
"Age",
"Gender",
"ScheduledDay",
"AppointmentDay",
"Scholarship",
"Hipertension",
"Diabetes",
"Alcoholism",
"Handcap",
"SMS_received"),
c("no_show",
"age",
"gender",
"scheduled_day",
"appointment_day",
"scholarship",
"hypertension",
"diabetes",
"alcoholism",
"handicap",
"sms_received"))
# clean up a little bit
data <- data[age %between% c(0, 95)]
# for binary prediction with caret, the target variable must be a factor
data[, no_show := factor(no_show, levels = c("Yes", "No"))] #first one got to be YES, the positive
data[, no_show_num := ifelse(no_show == "Yes", 1, 0)]
data[, handicap := ifelse(handicap > 0, 1, 0)]
# create new variables
data[, scheduled_day := as.Date(scheduled_day)]
data[, appointment_day := as.Date(appointment_day)]
data[, days_since_scheduled := as.integer(appointment_day - scheduled_day)]
data <- data[days_since_scheduled > -1]
data[, no_show_num := NULL]
data[, days_category := cut(
days_since_scheduled,
breaks = c(-1, 0, 1, 2, 5, 10, 30, Inf),
include.lowest = TRUE)]
data[, age_category := cut(age,
breaks = seq(0, 100, by = 5),
include.lowest = TRUE)]
Now create a training and a test data and estimate a simple logistic regression to predict no_show
.
training_ratio <- 0.5
set.seed(1234)
train_indices <- createDataPartition(y = data[["no_show"]],
times = 1,
p = training_ratio,
list = FALSE)
data_train <- data[train_indices, ]
data_test <- data[-train_indices, ]
train_control <- trainControl(method = "cv",
number = 5,
classProbs = TRUE)
set.seed(857)
glm_model <- train(no_show ~ age_category + gender + days_since_scheduled,
method = "glm",
data = data_train,
trControl = train_control)
test_prediction <- predict.train(glm_model, newdata = data_test)
test_truth <- data_test[["no_show"]]
# obtain probabilities instead of binary predictions
test_prediction_probs <- predict.train(glm_model,
newdata = data_test,
type = "prob")
summary(test_prediction_probs$Yes)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0939 0.1479 0.1829 0.2011 0.2265 0.9542
prediction <- test_prediction_probs$Yes
prediction_sqrt <- sqrt(prediction)
prediction_sq <- prediction^2
rocr_prediction <- prediction(prediction, test_truth)
rocr_sqrt <- prediction(prediction_sqrt, test_truth)
rocr_sq <- prediction(prediction_sq, test_truth)
# built-in plot method
plot(performance(rocr_sqrt, "tpr", "fpr"), colorize = FALSE)
plot(performance(rocr_sq, "tpr", "fpr"), add = TRUE, colorize = FALSE)
plot(performance(rocr_prediction, "tpr", "fpr"), add = TRUE, colorize = FALSE)
Area under the curves are the same for all three of them. Because it is the same model. Sensitivity and specificity have an inverse relationship. Increasing one would always decrease the other and Area Under the Curve remains the same.
# calculate AUC
AUC <- performance(rocr_prediction<EMAIL_ADDRESS>AUC_sqrt <- performance(rocr_sqrt<EMAIL_ADDRESS>AUC_sq <- performance(rocr_sq<EMAIL_ADDRESS>AUC_results <- c(AUC, AUC_sqrt, AUC_sq)
AUC_results
## [1] 0.6559295 0.6559295 0.6559295
Can the scores produced by the model be regarded as probabilities? Let’s calculate the predicted and actual share of positive cases for groups of observations in the test set based on their predicted scores.
truth_numeric <- ifelse(test_truth == "Yes", 1, 0)
score_glm <- test_prediction_probs$Yes
summary(score_glm)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0939 0.1479 0.1829 0.2011 0.2265 0.9542
actual_vs_predicted <- data.table(actual = truth_numeric,
predicted = score_glm)
actual_vs_predicted[, score_category := cut(predicted,
seq(0, 0.4, 0.1),
include.lowest = TRUE)]
calibration <- actual_vs_predicted[, .(mean_actual = mean(actual),
mean_predicted = mean(predicted),
num_obs = .N),
keyby = .(score_category)]
ggplot(calibration,
aes(x = mean_actual, y = mean_predicted, size = num_obs)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
ylim(0, 1) + xlim(0, 1)
This one is well calibrated. Predicted mean groups are similar to the actual means. It looks like a well calibrated classifier does not mean a perfect classifier.
Below we will see the calibration when we take squre root of the predictions. In general if we are following the 45 degree line it is a good sign for calibration.
actual_vs_predicted <- data.table(actual = truth_numeric,
predicted = prediction_sqrt)
actual_vs_predicted[, score_category := cut(predicted,
seq(0, 0.4, 0.05),
include.lowest = TRUE)]
calibration <- actual_vs_predicted[, .(mean_actual = mean(actual),
mean_predicted = mean(predicted),
num_obs = .N),
keyby = .(score_category)]
ggplot(calibration,
aes(x = mean_actual, y = mean_predicted, size = num_obs)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
ylim(0, 1) + xlim(0, 1)
Of course since we increased the values of our predictions they went up in the y axis, and the transformation was not a linear one.
We will see a similar effect below to the other direction.
actual_vs_predicted <- data.table(actual = truth_numeric,
predicted = prediction_sq)
actual_vs_predicted[, score_category := cut(predicted,
seq(0, 0.4, 0.05),
include.lowest = TRUE)]
calibration <- actual_vs_predicted[, .(mean_actual = mean(actual),
mean_predicted = mean(predicted),
num_obs = .N),
keyby = .(score_category)]
ggplot(calibration,
aes(x = mean_actual, y = mean_predicted, size = num_obs)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
ylim(0, 1) + xlim(0, 1)
Nevertheless, even after perfect calibration of a classifier, its ROC is not affected and its classification ability remains unchanged. This is discussed in this paper in detail if you are interested: http://www.stat.wvu.edu/~jharner/courses/dsci503/docs/vuk.pdf
A good example about calibration is discussed also in Nate Silver’s book the Signal and Noise regarding weather forecasts being tweaked a bit on tv channels to predict more rain. It is called the ‘wet bias’. They want to predict more rain than the evidence suggests, not to make people angry.
Thank for surviving until here! See you in the next chapters.


Drop file(s) here to upload!
Files with .jpg, .jpeg, and .png extensions are allowed!Maximum file size of 50MB


--- layout: page title: 404 - Page Not Found permalink: /404.html ---
Hi there, I regularly doing development research and improvement my blog to a new platform. It may have broken a lot of links inadvertently.
Make sure the URL you entered is correct and try to refresh.
If you don't mind, please log an issue with the URL you were trying to reach and where you found the URL. Thanks!


Niko Sünderhauf
Professor, Chief Investigator, Computer Scientist
– creating robots that see and understand the world –
I am a Professor and Chief Investigator of the QUT Centre for Robotics at Queensland University of Technology (QUT) in Brisbane, Australia, where I lead the Visual Understanding and Learning Program.
I am Deputy Director (Research) for the ARC Research Hub in Intelligent Robotic Systems for Real-Time Asset Management (2022-2027). I was Chief Investigator of the Australian Centre for Robotic Vision 2017-2020.
I conduct research in robotic vision, at the intersection of robotics, computer vision, and machine learning. My research interests focus on scene understanding, object-based semantic SLAM, robotic learning for navigation and interaction, uncertainty and reliability of deep learning in open set conditions. I furthermore lead a project on new benchmarking challenges in robotic vision.
I am very honoured that my work was recognised through a Google Faculty Research Award (2018) and an Amazon Research Award (2020).
I regularly organise workshops at robotics and computer vision conferences, such as RSS, CVPR, and ICRA. I am member of the editorial board for the International Journal of Robotics Research (IJRR), and co-chair of the Technical Committee on Computer and Roboti Vision of IEEE the Robotics and Automation Society. I was Associate Editor for the IEEE Robotics and Automation Letters journal (RA-L) from 2015 to 2019, and served as AE for the IEEE International Conference on Robotics and Automation (ICRA) 2018 and 2020.
news
| Dec 1, 2022 | I am General Chair for the Robotic Vision Summer School (RVSS) 2023. Registrations are open now! If you are a first-year PhD or Master’s student, or an exceptional undergraduate student, have a look and consider joining us for an amazing week of hands-on learning, and making new friends at the beach and campfire, from 6-11 February 2023. |
| Aug 1, 2022 | My application for promotion to Professor has been successful! Only two years after becoming Associate Professor, this appreciation by QUT is very much owed to the immense support by my colleagues in our QUT Centre for Robotics, the School for Electrical Engineering and Robotics, and my collaborators at QUT, in Australia, and internationally! |
| Jul 22, 2021 | Our application to establish the Australian Research Council Research Hub in Intelligent Robotic Systems for Real-Time Asset Management has been successful! In this 5 year project we will develop new robotic capabilities to transform the way infrastructure and assets are inspected, managed, and maintained. This is a joint project with the University of Sydney, the Australian National University in Canberra, and many partners from industry. I will serve as Deputy Director (Research), and look forward to working with new colleagues and old friends! |
| May 21, 2021 | I feel very humbled to have been listed as #39 of the AI2000 Most Influential Scholars in Robotics (2011-2020) in the world. |
| Aug 1, 2020 | I am incredibly happy and very proud to announce I have been promoted to Associate Professor. A big THANK YOU to all my collaborators, colleagues, mentors and friends at the Australian Centre for Robotic Vision, the QUT Centre for Robotics, and all around the world! |
| Apr 1, 2020 | I am happy and feel very honoured to announce I received an Amazon Research Award for my proposal “Learning Robotic Navigation and Interaction from Object-based Semantic Maps”. |
| Mar 5, 2020 | We are hiring PhD students and postdocs! I am offering a 3 year contract for a postdoctoral research fellow to work with me on our Visual Learning and Understanding research program. If you are interested, please read the position description and contact me. The QUT Centre for Robotics is also offering fully funded PhD positions in a number of areas, including visual learning and understanding, perception and localisation, decision and control, physical interaction, and human interaction. |
| Feb 15, 2020 | Our workshop proposal at ECCV has been accepted! We will organise a half-day workshop on Beyond mAP: Reasessing the Evaluation of Object Detectors and will run our Probabilistic Object Detection Challenge again. |
| Jan 25, 2020 | Our paper Residual Reactive Navigation: Combining Classical and Learned Navigation Strategies for Deployment in Unknown Environments has been accepted for ICRA 2020. In this work led by Krishan Rana, we focus on improving the efficiency and generalisation of learned navigation strategies when transferred from their training environment to previously unseen environment. Check out the paper on arxiv, and the project website. Code is available too. |
| Dec 15, 2019 | I had a fantastic week at the IEEE Robotics and Automation Society Summer School on Deep Learning for Robot Vision in Santiago, Chile! It felt very rewarding to interact with around 100 undergraduate, Master’s and PhD students from Chile, South America, and around the world – the next generation of robotics researchers. I gave an introduction to deep learning and two more lectures about two of my favourite research topics: uncertainty and reliability of deep learning, and semantic object-based SLAM. |


I'm about to release an iPhone app I created a (very) long time ago.
It allows to browse through the whole iPhone file system, displaying files and directories, with infos and previews.
I doubt such an app will be validated by the AppStore team, but who knows.
I had to re-create the project with the new XCode 4, because it was created for iOS 2.
Now it's also ready for a future iPad version.
If it's not validated, I think I'm going to release the source code as OpenSource...
More on a few days...


Credit Card Information
Credit Card Number
Expiration Date
/
Name on Card
CVV
Fund Account
GitHub repository for creditcard.js


{% comment %} This is the default Footer content. Overrides block "footer" if you want to manage your own footer. Overrides block "footer_content" if you want to only change the middle part of the footer. {% endcomment %}
Presented with Twitter Bootstrap HTML5/CSS3 framework.
{% block extra_footer %}{% endblock extra_footer %}


Adam E. Cohen (PI) Professor of Chemistry and Chemical Biology and Physics<EMAIL_ADDRESS>Mallinckrodt M115 |
Maggie KenarAdministrator Mallinckrodt M116A
|
||
Yoav AdamPostdoc Mallinckrodt M116 |
Daan BrinksPostdoc Mallinckrodt M116 |
||
Miao-Ping ChienPostdoc Mallinckrodt M116 |
Shan LouPostdoc Mallinckrodt M117 |
||
Xin TangPostdoc Mallinckrodt M116 |
Hongkang ZhangPostdoc Mallinckrodt M117 |
||
Linlin FanGraduate Student Chemical Biology Mallinckrodt M114 |
Sami FarhiGraduate Student Chemical Biology Mallinckrodt M114
|
||
Harry McNamaraGraduate Student Physics Mallinckrodt M116
<EMAIL_ADDRESS>|
Vicente ParotGraduate Student Biophysics Mallinckrodt M114 |
||
Vaibhav
|
Melinda LeeResearch Technician Mallinckrodt M116 |
||
Katherine
|
|||
Eli WeinsteinUndergrad Mallinckrodt M116 |
|||
Alumni |
|||
| Peng Zou | Assistant Professor, Peking University, China | ||
| Stefano Boccardo | Novartis | ||
| Kit Werley | Q-State Biosciences | ||
| Daniel Hochbaum | Q-State Biosciences | ||
| Veena Venkatachalam | Medical student, Harvard Medical School | ||
| Joel Kralj | Assistant Professor, University of Colorado Boulder | ||
| Jennifer Hou | McKinsey and Company | ||
| Min Ju Shon | Postdoc at Yoon Lab, Korea Advanced Institute of Science and Technology | ||
| Alex Fields | Postdoc at Weissman Lab, UCSF | ||
| Tony Shen | Medical student, Washington University, St.Louis MO | ||
| Jeehae Park | Postdoc at DePace Lab, Harvard Medical School | ||
| Hohjai Lee | Assistant Professor of Chemistry, Gwangju Institute of Science and Technology, South Korea | ||
| Prashant Jain | Assistant Professor of Chemistry, University of Illinois Urbana-Champaign | ||
| Halil Bayraktar | Assistant Professor of Chemistry, Koc University, Turkey | ||
| Sabrina Leslie | Assistant Professor of Physics, McGill University, Canada | ||
| Lucy Rosenbaum | Medical student, University of Pittsburgh | ||
| Yiqiao Tang | Schlumberger | ||
| Nan Yang | Jain Street Capital |


http://blogjono.com
<->
http://localhost:8080/a
copy short_url
<- go back
visit https://szs.herokuapp.com/
This microservice shortens urls and stores them within a mongodb database.
The number2str.js file converts a number (base 10), into a alphanumeric string (base 62), so will can take exponentially more options at a shorter length than using a number. The function can also be inversed ie convert a alphanumeric string to number so saves disk space.
purpose: returns a shortened url for a given url, the shortened path is the _id
in the response
{
_id: "a",
creationDate: "2016-12-02T12:47:21.164Z",
url: "http://blogjono.com"
}
{ err: "invalid url" }
GET /a
will redirect with code 301 to 'http://blogjono.com'
GET /aoPCz
isn't found in the database therefor will redirect to root
GET /info/a
will respond with
{
_id: "a",
creationDate: "2016-12-02T12:47:21.164Z",
url: "http://blogjono.com"
}
GET /info/aoPCz
will respond with null
$ npm install
$ npm build
$ npm start
You will also have to make js file called keys and set up your mongodb database
module.exports = {
"mongourl": "mongodb://user:pwd@domain.com:port/db"
}
Author: Jonathan T L Lee
Licence: MIT


| # | Sta | Rlx | Name | Row Text |
| 0 | | 0 | autoRow0 | an "animal" is a kind of "living thing" (bb63-bcc5-0cd8-72db) |
| 1 | | 0 | autoRow1 | an "apple tree" is a kind of "plant" (00a7-56fc-3c22-e6f2) |
| 2 | | 0 | autoRow2 | "green plants" are a kind of "producer" (f812-4338-e44b-e685) |
| 3 | | 0 | autoRow3 | a "bear" is a kind of "animal" (5639-8136-4788-3ee6) |
| 4 | ST | 0 | autoRow4 | eating ; taking in food is used to get nutrients ; energy by animals ; living things (4842-3518-d7ab-f670) |
| 5 | ST | 0 | autoRow5 | In the food chain process an animal has the role of consumer which eats producers ; other animals for food (a4f8-5748-0846-cb45) |
| 6 | ST | 0 | autoRow6 | green plants provide food for themselves ; animals ; consumers by performing photosynthesis (694b-d9ec-8c65-5a6a) |
| 7 | ST | 0 | autoRow7 | an animal ; living thing requires nutrients for survival (80de-489f-48b2-16f4) |
| 8 | ST | 0 | autoRow8 | the sun is the source of energy for life on Earth (2d69-ee53-599f-9438) |
| 9 | ST | 0 | autoRow9 | food contains nutrients for living things (a4c9-5ade-9cc2-f3f0) |
| 10 | ST | 0 | autoRow10 | food is a source of energy for animals ; plants (5753-2812-04c2-af70) |
| 11 | ST | 0 | autoRow11 | a plant requires sunlight for photosynthesis (619e-a5d1-b505-4f69) |
| 12 | ST | 0 | autoRow12 | a producer is a source of energy for consumers (b19d-b086-7090-2115) |
| 13 | ST | 0 | autoRow13 | a consumer can not produce its own food (6bf8-4a05-d7b7-8bc0) |