{% extends "tutorial.html" %} {% load mixin from templatefilters %} {% block headauthor %}Deanna Rubin{% endblock %} {% block pagebreadcrumb %}{{ tut.title }}{% endblock %} {% block browsersupport %} Operaunsupported Internet Explorerunsupported Safarisupported Firefoxunsupported Chromesupported {% endblock %} {% block iscompatible %} {% endblock %} {% block head %} {% endblock %} {% block html5badge %} {% endblock %} {% block share_image %} {% endblock %} {% block content %}
Chrome DevTools moves fast and we wanted to call your attention to some new functionality and improvements we've introduced to a few components. Namely, we're going to talk about some UI changes, high-resolution JS profiling and new Workspaces features.
High-resolution profiling now goes to .1 millisecond precision
Toolbars rose to the top of Devtools and Overrides moved to the console drawer
Workspaces added several features to support adding/removing/searching files
CPU
profiling
is a pretty useful feature for seeing how efficient your Javascript is. In
addition to the traditional profile views, we introduced a Flame
Chart
this summer, which visually represents a page's Javascript processing over time.
It can be used to easily view how deep your call stack is going as well as how
long the individual functions take to process.
Until recently, both the traditional Heavy (bottom up) and Tree (top down)
representations, as well as the Flame Chart, would only show processes down to 1
millisecond precision. For most applications, this is fine. However, if you
are working on something where speed really matters in the UI, like a game -- 1
millisecond resolution may be too chunky to get meaningful results for what is
causing your site to be slow or for your UI to seem laggy.
To enable High Resolution Profiling (currently Canary only):
Open DevTools Settings.
On the General tab, under Profiler, turn on High resolution CPU profiling.
Here's an example of a Flame Chart seen in normal profiling and with high resolution, where we profile loading the HTML5Rocks.com home page:
With normal profiling resolution, process time always gets rounded up to the
next millisecond, so a process that only takes 0.1 milliseconds or less still
gets reported as taking 1.0 milliseconds, and other processes might not get
shown at all in the call stack.
High-resolution profiling has a large overhead in the Javascript VM, which is
why it is turned off by default. While it certainly looks cooler than normal
profiling resolution, we recommend only using it if you really need the
precision.
While there are always new things being rolled out in Canary, we wanted to call your attention to a few major UI changes: Buttons rising to the top of the UI in general, the Timeline navigation and information panels, and the relocation of Overrides to the Console Drawer.
First, let's take a look at where we're coming from. Because we're talking about Timeline anyway, I'll try to kill the first two birds with one pair of screenshots. Here's what Timeline looks like in Chrome (stable) right now:
And here's what Timeline looks like now.
Notice the following things:
The toolbars and buttons are all at the top of the screen now, both for the specific Timeline ones on the left and the general DevTools ones on the right.
The Timeline records now have their nesting structure in the panel to the left, and you can even use the keyboard to scroll through them. In addition to using up and down keys to scroll up and down, you can also use the left and right keys to open and close nested records.
Time details are now displayed in a panel on the right for whichever entry you've selected. (You can also hover over other entries to get their information.)
Now let's take a look at the console drawer. To open the console drawer, press Escape from within DevTools or hit the console drawer button and the drawer rolls up from the bottom.
By default, you will have Console and Search tabs there. To get to the functionality formerly known as Overrides, open the DevTools settings and check the box next to "Show 'Emulation' view in console drawer". Close the settings box and you will have an Emulation tab in the console drawer like the screenshot here:
And you can do all of your emulation there.
The reason for this change is that before, you would have to go in and out of Settings to change your emulation overrides, and then go back and view your page. Now you can change around your emulation overrides while still manipulating styles.
Workspaces in particular is a feature that can simplify your authoring workflow quite a bit, and yet it doesn't get nearly as much love as it deserves. With Workspaces, rather than experimenting and making changes in DevTools and having to copy and paste your changes back to your source files, you can make changes in DevTools, see them rendered in the browser, and save them to a persistent local version of your files -- all without leaving Chrome.
If you haven't read the Chrome Developer Tools Revolutions 2013 article yet, go ahead and take a look at that and then come back here to learn how we've improved on those features in the last few months.
Back at the time of the Revolutions 2013 article, creating a new workspace required adding the folder to your workspaces and then mapping the folder to a network resource. We've simplified this process to a single step: Simply right-click in the left panel of Sources and select Add Folder to Workspace. This launches you into a file dialog where you can choose a new folder to add to your Workspaces. (It does not add the currently highlighted folder to your Workspaces.)
You can add new files to the local directory you're using for Workspaces within Workspaces itself now. Simply right-click on a folder in the left Sources panel and select New File.
You can also remove files from within Workspaces. Right-click on a file in the left Sources panel and select Delete File.
You can also duplicate a file by selecting Duplicate File.
Now that you can create new files (or delete files) directly in workspaces, the Sources directory will also automatically refresh and show these new files. If not, you can always right-click on a folder and select Refresh from the pop-up menu to force a refresh.
This is also useful if you happen to change your files open in another editor and want the changes to show up in DevTools.
We've refined the interface for searching across files a little bit, and now you
can also search for strings across all of the files in your workspaces as well
as all of the files loaded into DevTools. You can either search for a string or
for a regular expression, and we match every occurrence in every file or page.
To search multiple files in Workspaces (currently in Canary):
Open the console drawer by pressing the Escape key, and click the Search tab next to Console to open the Search window
OR
Press Ctrl + Shift + F (Cmd + Opt + F on Mac) to open the Search window.
Type your query into the Search Sources box, and hit Enter. If your query is a regular expression or needs to be case-insensitive, click the appropriate box.
Searching through the text of files or filtering through filenames can get very tedious if you have a ton of .git files or README.md files cluttering up your results.
Thus, we've added an ignore list feature into Workspaces so you can exclude certain file types or folders when viewing and searching your workspace.
Here's how you can view and change the current shared ignorelist in Workspaces:
Open DevTools Settings.
Click Workspace.
Under Common, within the Folder exclude pattern box, you can view and/or edit the patterns.
We ship with these default global exclude patterns:
/.git/|/.sass-cache/|/.hg/|/.idea/|/.svn/|/.cache/|/.project/|/.DSStore$|/.Trashes$|/.Spotlight-V100$|/.AppleDouble$|/.LSOverride$|/Icon$|/..*$
This regex excludes metadata from Git, SVN, Mercurial, project files from Eclipse and IntelliJ, OS X DS_Store and Trash files, and a few other things worth ignoring like cache from Sass. Their entire folder, including any children are excluded from the UI to not show up in the UI and to not show up when searching through files.
To get more specific, you can also choose to exclude files and folders inside your particular workspace to reduce clutter in searches. Excluded folders will not show up in the sources directory either.
To exclude an entire folder from your workspace, right-click on the folder in
the left Sources panel and select Exclude Folder.
To see the mappings and excluded folders for a given workspace folder:
Open the DevTools Settings.
Click Workspace.
Highlight the folder you're interested in.
Click Edit and the "Edit file system" window appears; you can add or remove mappings and/or excluded folders from this window.


description = "News latest"
[viewBag]
snippetCode = "news-latest"
snippetName = "News latest"
[blogPosts]
pageNumber = "{{ :page }}"
postsPerPage = 5
noPostsMessage = "No posts found"
sortOrder = "published_at desc"
categoryPage = "novice"
postPage = "novice"
==
{% for post in blogPosts.posts %}
{{ post.title }}
{% endfor %}
{#{ d(blogPosts) }#}{#% component 'blogPosts' %#}


Hi there, please state your Issue and preferred Means of Communication before clicking the Next button.
Issue:
Means of Communication:


| Modifier and Type | Interface and Description |
|---|---|
interface |
AtmosClient
Provides access to EMC Atmos Online Storage resources via their REST API.
|
| Modifier and Type | Method and Description |
|---|---|
URI |
AtmosClient.createFile(String parent,
AtmosObject object,
PutOptions... options) |
AtmosObject |
AtmosClient.readFile(String path,
GetOptions... options) |
void |
AtmosClient.updateFile(String parent,
AtmosObject object,
PutOptions... options) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
AWSEC2Client
Provides synchronous access to EC2 services.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AWSAMIClient
Provides access to EC2 via their REST API.
|
interface |
AWSInstanceClient
Provides access to EC2 via their REST API.
|
interface |
AWSKeyPairClient |
interface |
AWSSecurityGroupClient
Provides access to EC2 via their REST API.
|
interface |
MonitoringClient
Provides monitoring services for EC2.
|
interface |
PlacementGroupClient
Provides Placement Group services for EC2.
|
interface |
SpotInstanceClient
Provides Spot Instance services for EC2.
|
interface |
TagClient
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
Set<Spot> |
SpotInstanceClient.describeSpotPriceHistoryInRegion(String region,
DescribeSpotPriceHistoryOptions... options)
Describes Spot Price history.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AWSS3Client
Provides access to amazon-specific S3 features
|
| Modifier and Type | Method and Description |
|---|---|
String |
AWSS3Client.uploadPart(String bucketName,
String key,
int partNumber,
String uploadId,
Payload part)
This operation uploads a part in a multipart upload.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AzureManagementApi
The Windows Azure Service Management API is a REST API for managing your services and
deployments.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
DiskApi
The Service Management API includes operations for managing the disks in your subscription.
|
interface |
HostedServiceApi
The Service Management API includes operations for managing the hosted services beneath your
subscription.
|
interface |
LocationApi
The Service Management API includes operations for listing the available data center locations
for a hosted service in your subscription.
|
interface |
OperationApi
The Service Management API includes one operation for tracking the progress of asynchronous requests.
|
interface |
OSImageApi
The Service Management API includes operations for managing the OS images in your subscription.
|
interface |
RoleApi
The Service Management API includes operations for managing the virtual
machines in your subscription.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AzureBlobClient
Provides access to Azure Blob via their REST API.
|
| Modifier and Type | Method and Description |
|---|---|
AzureBlob |
AzureBlobClient.getBlob(String container,
String name,
GetOptions... options)
The Get Blob operation reads or downloads a blob from the system, including its metadata and
properties.
|
ListBlobsResponse |
AzureBlobClient.listBlobs(ListBlobsOptions... options) |
ListBlobsResponse |
AzureBlobClient.listBlobs(String container,
ListBlobsOptions... options)
The List Blobs operation enumerates the list of blobs under the specified container.
|
String |
AzureBlobClient.putBlob(String container,
AzureBlob object)
The Put Blob operation creates a new blob or updates the content of an existing blob.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
LocalBlobStore |
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudFilesClient
Provides access to Cloud Files via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudServersClient
Provides access to Cloud Servers via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudSigmaClient
Provides synchronous access to CloudSigma.
|
| Modifier and Type | Method and Description |
|---|---|
DriveInfo |
CloudSigmaClient.cloneDrive(String sourceUuid,
String newName,
CloneDriveOptions... options)
Clone an existing drive.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudStackClient
Provides synchronous access to CloudStack.
|
interface |
CloudStackDomainClient
Provides synchronous access to CloudStack.
|
interface |
CloudStackGlobalClient
Provides synchronous access to CloudStack.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AccountClient
Provides synchronous access to CloudStack Account features.
|
interface |
AddressClient
Provides synchronous access to CloudStack IPAddress features.
|
interface |
AsyncJobClient
Provides synchronous access to CloudStack asyncJob features.
|
interface |
ConfigurationClient
Provides synchronous access to CloudStack Configuration features.
|
interface |
DomainAccountClient
Provides synchronous access to CloudStack Account features available to Domain
Admin users.
|
interface |
DomainDomainClient
Provides synchronous access to CloudStack Domain features available to Domain
Admin users.
|
interface |
DomainLimitClient
Provides synchronous access to CloudStack Limit features available to Domain
Admin users.
|
interface |
DomainUserClient
Provides synchronous access to CloudStack User features available to Domain
Admin users.
|
interface |
EventClient
Provides synchronous access to CloudStack Event features.
|
interface |
FirewallClient
Provides synchronous access to CloudStack PortForwardingRule features.
|
interface |
GlobalAccountClient
Provides synchronous access to CloudStack Account features available to Global
Admin users.
|
interface |
GlobalAlertClient
Provides synchronous access to CloudStack Alerts features available to Global
Admin users.
|
interface |
GlobalCapacityClient
Provides synchronous access to CloudStack Capacities features available to Global
Admin users.
|
interface |
GlobalConfigurationClient
Provides synchronous access to CloudStack Configuration features available to Global
Admin users.
|
interface |
GlobalDomainClient
Provides synchronous access to CloudStack Domain features available to Global
Admin users.
|
interface |
GlobalHostClient
Provides synchronous access to CloudStack host features.
|
interface |
GlobalOfferingClient
Provides synchronous access to CloudStack zone features.
|
interface |
GlobalPodClient
Provides synchronous access to CloudStack Pod features available to Global
Admin users.
|
interface |
GlobalStoragePoolClient
Provides synchronous access to CloudStack storage pool features.
|
interface |
GlobalUsageClient
Provides synchronous access to CloudStack usage features.
|
interface |
GlobalUserClient
Provides synchronous access to CloudStack User features available to Global
Admin users.
|
interface |
GlobalVlanClient
Provides synchronous access to CloudStack VLAN features.
|
interface |
GlobalZoneClient
Provides synchronous access to CloudStack Zone features available to Global
Admin users.
|
interface |
GuestOSClient
Provides synchronous access to CloudStack Operating System features.
|
interface |
HypervisorClient
Provides synchronous access to CloudStack Operating System features.
|
interface |
ISOClient
|
interface |
LimitClient
Provides synchronous access to CloudStack resource limit API.
|
interface |
LoadBalancerClient
Provides synchronous access to CloudStack LoadBalancer features.
|
interface |
NATClient
Provides synchronous access to CloudStack IPForwardingRule features.
|
interface |
NetworkClient
Provides synchronous access to CloudStack network features.
|
interface |
OfferingClient
Provides synchronous access to CloudStack zone features.
|
interface |
SecurityGroupClient
Provides synchronous access to CloudStack security group features.
|
interface |
SessionClient
Provides synchronous access to CloudStack Sessions
|
interface |
SnapshotClient
Provides synchronous access to CloudStack Snapshot features.
|
interface |
SSHKeyPairClient
Provides synchronous access to CloudStack SSHKeyPair features.
|
interface |
TemplateClient
Provides synchronous access to CloudStack template features.
|
interface |
VirtualMachineClient
Provides synchronous access to CloudStack VirtualMachine features.
|
interface |
VMGroupClient
Provides synchronous access to CloudStack VM group features.
|
interface |
VolumeClient
Provides synchronous access to CloudStack Event features.
|
interface |
ZoneClient
Provides synchronous access to CloudStack zone features.
|
| Modifier and Type | Method and Description |
|---|---|
void |
AddressClient.disassociateIPAddress(String id)
Disassociates an ip address from the account.
|
void |
NATClient.enableStaticNATForVirtualMachine(String virtualMachineId,
String IPAddressId) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudWatchApi
Provides access to Amazon CloudWatch via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
MetricApi
Provides access to Amazon CloudWatch via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
DeltacloudClient
Provides synchronous access to deltacloud.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
DynECTApi
Provides access to DynECT Managed DNS through the API2 api
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
RecordApi |
interface |
SessionApi |
interface |
ZoneApi |
| Modifier and Type | Interface and Description |
|---|---|
interface |
EC2Api
Provides access to EC2 features, broken up by feature group.
|
interface |
EC2Client
Provides synchronous access to EC2 services.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
SubnetApi
To help you manage your Amazon EC2 instances, images, and other Amazon EC2 resources, you can assign your own
metadata to each resource in the form of tags.
|
interface |
TagApi
To help you manage your Amazon EC2 instances, images, and other Amazon EC2
resources, you can assign your own metadata to each resource in the form of
tags.
|
interface |
WindowsApi
Provides access to EC2 Windows Features via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AMIClient
Provides access to EC2 via their REST API.
|
interface |
AvailabilityZoneAndRegionClient
Provides EC2 Availability Zones and Regions services for EC2.
|
interface |
ElasticBlockStoreClient
Provides access to EC2 Elastic Block Store services.
|
interface |
ElasticIPAddressClient
Provides access to EC2 via their REST API.
|
interface |
InstanceClient
Provides access to EC2 via their REST API.
|
interface |
KeyPairClient
Provides access to EC2 via their REST API.
|
interface |
SecurityGroupClient
Provides access to EC2 via their REST API.
|
interface |
WindowsClient
Provides windows services for EC2.
|
| Modifier and Type | Method and Description |
|---|---|
Set<? extends Image> |
AMIClient.describeImagesInRegion(String region,
DescribeImagesOptions... options)
Returns information about AMIs, AKIs, and ARIs.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ElasticStackClient
Provides synchronous access to elasticstack.
|
| Modifier and Type | Method and Description |
|---|---|
ServerInfo |
ElasticStackClient.createAndStartServer(Server server)
create and start a new server
|
DriveInfo |
ElasticStackClient.createDrive(Drive createDrive)
create a new drive
|
void |
ElasticStackClient.startServer(String uuid)
Start a server
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ELBApi
Provides access to EC2 Elastic Load Balancer via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AvailabilityZoneApi
Provides access to Amazon ELB via the Query API
|
interface |
InstanceApi
Provides access to Amazon ELB via the Query API
|
interface |
LoadBalancerApi
Provides access to Amazon ELB via the Query API
|
interface |
PolicyApi
Provides access to Amazon ELB via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
FGCPApi
Provides synchronous access to FGCP services.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AdditionalDiskApi
API relating to additional storage.
|
interface |
AdditionalDiskAsyncApi
Non-blocking API relating to additional storage.
|
interface |
BuiltinServerApi
API relating to built-in servers, also called extended function module (EFM),
such as a firewall or load balancer (SLB).
|
interface |
BuiltinServerAsyncApi
Non-blocking API relating to built-in servers, also called extended function
module (EFM), such as a firewall or load balancer (SLB).
|
interface |
DiskImageApi
API relating to disk images.
|
interface |
DiskImageAsyncApi
Non-blocking API relating to disk images.
|
interface |
FirewallApi
API relating to a system's built-in server of type firewall.
|
interface |
FirewallAsyncApi
Non-blocking API relating to a built-in server, also called extended function
module (EFM), of type firewall.
|
interface |
LoadBalancerApi
API relating to a built-in server of type software load balancer (SLB).
|
interface |
LoadBalancerAsyncApi
Non-blocking API relating to a built-in server, also called extended function
module (EFM), of type load balancer (SLB).
|
interface |
PublicIPAddressApi
API relating to public IP addresses.
|
interface |
PublicIPAddressAsyncApi
Non-blocking API relating to public IP addresses.
|
interface |
SystemTemplateApi
API relating to system templates, also referred to as virtual system
descriptors.
|
interface |
SystemTemplateAsyncApi
Non-blocking API relating to system templates, also referred to as virtual
system descriptors.
|
interface |
VirtualDCApi
API relating to the virtual data center.
|
interface |
VirtualDCAsyncApi
Non-blocking API relating to the virtual data center.
|
interface |
VirtualServerApi
API relating to virtual servers.
|
interface |
VirtualServerAsyncApi
Non-blocking API relating to virtual servers.
|
interface |
VirtualSystemApi
API relating to virtual systems.
|
interface |
VirtualSystemAsyncApi
Non-blocking API relating to virtual systems.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
GleSYSApi
Provides synchronous access to GleSYS.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ArchiveApi
Provides synchronous access to Archive requests.
|
interface |
DomainApi
Provides synchronous access to Domain requests.
|
interface |
EmailAccountApi
Provides synchronous access to E-Mail requests.
|
interface |
IpApi
Provides synchronous access to IP Addresses.
|
interface |
ServerApi
Provides synchronous access to Server.
|
| Modifier and Type | Method and Description |
|---|---|
ServerDetails |
ServerApi.clone(String serverid,
String hostname,
CloneServerOptions... options)
Clone a server
|
ServerDetails |
ServerApi.createWithHostnameAndRootPassword(ServerSpec serverSpec,
String hostname,
String rootPassword,
CreateServerOptions... options)
Create a new server
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
GoGridClient |
| Modifier and Type | Interface and Description |
|---|---|
interface |
GridImageClient
Manages the server images
|
interface |
GridIpClient |
interface |
GridJobClient
Manages the customer's jobs.
|
interface |
GridLoadBalancerClient |
interface |
GridServerClient
Provides synchronous access to GoGrid.
|
| Modifier and Type | Method and Description |
|---|---|
Set<Job> |
GridJobClient.getJobList(GetJobListOptions... options)
Returns all jobs found.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
HPCloudObjectStorageApi
Provides synchronous access to HP Cloud Object Storage via the REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CDNContainerApi
Provides synchronous access to HP Cloud Object Storage via the REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
IAMApi
Provides access to Amazon IAM via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
InstanceProfileApi |
interface |
PolicyApi |
interface |
RoleApi |
interface |
RolePolicyApi |
interface |
UserApi |
| Modifier and Type | Interface and Description |
|---|---|
interface |
JenkinsApi
Provides synchronous access to Jenkins.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ComputerApi
Computer Services
|
interface |
JobApi
Job Services
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
JoyentCloudApi
Provides synchronous access to JoyentCloud.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
DatacenterApi
Datacenter Services
|
interface |
DatasetApi
Provides synchronous access to Datasets.
|
interface |
KeyApi
Keys are the means by which you operate on your SSH/signing keys.
|
interface |
MachineApi
Provides synchronous access to Machine.
|
interface |
PackageApi
Provides synchronous access to Packages.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CinderApi
Provides synchronous access to Cinder.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
SnapshotApi
Provides synchronous access to Volume Snapshots via their REST API.
|
interface |
VolumeApi
Provides synchronous access to Volumes.
|
interface |
VolumeTypeApi
Provides synchronous access to Volumes via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
GlanceApi
Provides synchronous access to Glance.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ImageApi
Image Services
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
OpenStackAuthClient
Provides access to Rackspace resources via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AuthenticationClient
Provides synchronous access to the KeyStone Service API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AuthenticationApi
Provides synchronous access to the KeyStone Service API.
|
interface |
KeystoneApi
Provides access to Openstack keystone resources via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ServiceApi
Provides synchronous access to the KeyStone Tenant API.
|
interface |
TenantApi
Provides synchronous access to the KeyStone Tenant API.
|
interface |
TokenApi
Provides synchronous access to the KeyStone Admin API.
|
interface |
UserApi
Provides synchronous access to the KeyStone User API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
NovaClient
Deprecated.
Deprecated in jclouds 1.5.5, to be removed in jclouds 1.6. See
ServerApi in openstack-nova. |
| Modifier and Type | Interface and Description |
|---|---|
interface |
NovaEC2Client
Provides synchronous access to EC2 services.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
NovaEC2KeyPairClient |
| Modifier and Type | Interface and Description |
|---|---|
interface |
NovaApi
Provides synchronous access to Nova.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
FlavorExtraSpecsApi
Provide access to extra metadata for Nova flavors.
|
interface |
FloatingIPApi
Provides synchronous access to Floating IPs.
|
interface |
HostAdministrationApi
Provides asynchronous access to Host Administration features via the REST API.
|
interface |
HostAggregateApi
Provide access to Host Aggregates in Nova (alias "OS-AGGREGATES")
|
interface |
KeyPairApi
Provides synchronous access to Security Groups.
|
interface |
QuotaApi
The quotas extension enables limiters placed on the resources used per tenant (project) for virtual instances.
|
interface |
QuotaClassApi
Provides synchronous access to Quota Classes via the REST API.
|
interface |
SecurityGroupApi
Provides synchronous access to Security Groups.
|
interface |
ServerAdminApi
Provide additional actions for servers:
'suspend', 'resume', 'migrate', 'lock', 'unlock', 'resetNetwork', 'createBackup', 'pause', 'migrateLive',
'injectNetworkInfo', 'unpause'
|
interface |
ServerWithSecurityGroupsApi
Provides synchronous access to Server details including security group, referred to as the CREATESERVEREXT extension
in the nova documentation
NOTE: the equivalent to listServersInDetail() isn't available at the other end, so not extending ServerApi at this
time.
|
interface |
SimpleTenantUsageApi
Provides asynchronous access to Simple Tenant Usage via the REST API.
|
interface |
VirtualInterfaceApi
Provides synchronous access to Virtual Interface features (VIFs).
|
interface |
VolumeApi
Provides synchronous access to Volumes.
|
interface |
VolumeAttachmentApi
Provides synchronous access to Volume Attachments.
|
interface |
VolumeTypeApi
Provides synchronous access to Volume Type features
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
FlavorApi
Provides asynchronous access to Flavors via their REST API.
|
interface |
ImageApi
Provides synchronous access to Images.
|
interface |
ServerApi
Provides synchronous access to Server.
|
| Modifier and Type | Method and Description |
|---|---|
ServerCreated |
ServerApi.create(String name,
String imageRef,
String flavorRef,
CreateServerOptions... options)
Create a new server
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
QuantumApi
Provides synchronous access to Quantum.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
NetworkApi
Provides synchronous access to Network operations on the openstack quantum API.
|
interface |
PortApi
Provides synchronous access to Port operations on the openstack quantum API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CommonSwiftClient
Common features between OpenStack Swift and CloudFiles
|
interface |
SwiftClient
Functionality that's in Swift, and not in CloudFiles.
|
interface |
SwiftKeystoneClient
Functionality that's in Swift, and not in CloudFiles.
|
| Modifier and Type | Method and Description |
|---|---|
SwiftObject |
CommonSwiftClient.getObject(String container,
String name,
GetOptions... options) |
String |
CommonSwiftClient.putObject(String container,
SwiftObject object) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
TemporaryUrlKeyApi |
| Modifier and Type | Interface and Description |
|---|---|
interface |
SwiftApi
Provides synchronous access to Swift.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AccountApi
Storage Account Services
|
interface |
ContainerApi
Storage Container Services
|
interface |
ObjectApi
Storage Object Services An object represents the data and any metadata for the files stored in
the system.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ExtensionApi
Provides asynchronous access to Extensions via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
OpSourceServersApi
Provides synchronous access to OpSourceServers.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AccountApi
Provides synchronous access to Account.
|
interface |
ServerApi
Provides synchronous access to server api's.
|
interface |
ServerImageApi
Provides synchronous access to ServerImage.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudIdentityAuthenticationApi
Provides synchronous access to the KeyStone Service API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CloudLoadBalancersApi
Provides synchronous access to CloudLoadBalancers.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
LoadBalancerApi
Provides synchronous access to CloudLoadBalancers LoadBalancer features.
|
interface |
NodeApi
Provides synchronous access to CloudLoadBalancers Node features.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
RDSApi
Provides access to EC2 Elastic Load Balancer via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
InstanceApi
Provides access to Amazon RDS via the Query API
|
interface |
SecurityGroupApi
Provides access to Amazon RDS via the Query API
|
interface |
SubnetGroupApi
Provides access to Amazon RDS via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
HttpClient
Simple client
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
RimuHostingClient
Provides synchronous access to RimuHosting.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
Route53Api
Provides access to Amazon Route53 via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
HostedZoneApi |
interface |
ResourceRecordSetApi |
| Modifier and Type | Interface and Description |
|---|---|
interface |
S3Client
Provides access to S3 via their REST API.
|
| Modifier and Type | Method and Description |
|---|---|
ObjectMetadata |
S3Client.copyObject(String sourceBucket,
String sourceObject,
String destinationBucket,
String destinationObject,
CopyObjectOptions... options)
Copies one object to another bucket, retaining UserMetadata from the source.
|
S3Object |
S3Client.getObject(String bucketName,
String key,
GetOptions... options)
Retrieves the S3Object associated with the Key or KeyNotFoundException if not available;
To use GET, you must have READ access to the object.
|
boolean |
S3Client.putBucketInRegion(String region,
String bucketName,
PutBucketOptions... options)
Create and name your own bucket in which to store your objects.
|
String |
S3Client.putObject(String bucketName,
S3Object object,
PutObjectOptions... options)
Store data by creating or overwriting an object.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
VPDCApi
Provides synchronous access to VPDC.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
BrowsingApi
Provides access to Symphony VPDC resources via their REST API.
|
interface |
FirewallApi
Provides access to Symphony VPDC resources via their REST API.
|
interface |
ServiceManagementApi
Provides access to Symphony VPDC resources via their REST API.
|
interface |
VMApi
Provides access to Symphony VPDC resources via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
LoginApi |
| Modifier and Type | Interface and Description |
|---|---|
interface |
SlicehostClient
Provides access to Slicehost via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CDMIApi
Provides synchronous access to CDMI.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ContainerApi
CDMI Container Object Resource Operations
|
interface |
DataApi
Data Object Resource Operations
|
interface |
DataNonCDMIContentTypeApi
Data Object Resource Operations
|
interface |
DomainApi
Domain Object Resource Operations
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
SoftLayerClient
Provides synchronous access to SoftLayer.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
AccountClient
Provides synchronous access to Account.
|
interface |
DatacenterClient
Provides synchronous access to LocationDatacenter.
|
interface |
ProductPackageClient
Provides synchronous access to ProductPackage.
|
interface |
VirtualGuestClient
Provides synchronous access to VirtualGuest.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
SQSApi
Provides access to SQS via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
MessageApi
Provides access to SQS via their REST API.
|
interface |
PermissionApi
Provides access to SQS via their REST API.
|
interface |
QueueApi
Provides access to SQS via their REST API.
|
| Modifier and Type | Method and Description |
|---|---|
URI |
QueueApi.create(String queueName)
The CreateQueue action creates a new queue.
|
URI |
QueueApi.create(String queueName,
CreateQueueOptions options)
same as
#create(String, String) except you can
control options such as delay seconds. |
| Modifier and Type | Interface and Description |
|---|---|
interface |
STSApi
Provides access to Amazon STS via the Query API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
TerremarkECloudClient
Provides access to VCloud resources via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
DataCenterOperationsClient
Data Center Operations access to DataCenterOperations functionality in vCloud
There are times where knowing a data center is necessary to complete certain
operations (i.e.
|
interface |
TagOperationsClient
Tag Based Operations
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
TerremarkVCloudClient
Provides access to VCloud resources via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
TerremarkVCloudLoginClient |
interface |
TerremarkVCloudVersionsClient |
| Modifier and Type | Interface and Description |
|---|---|
interface |
TerremarkVCloudExpressClient
Provides access to VCloud resources via their REST API.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
UltraDNSWSApi
Provides access to Neustar UltraDNS via the SOAP API
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
ResourceRecordApi |
interface |
TaskApi |
interface |
ZoneApi |
| Modifier and Type | Interface and Description |
|---|---|
interface |
VCloudClient
Provides access to VCloud resources via their REST API.
|
interface |
VCloudVersionsClient |
| Modifier and Type | Interface and Description |
|---|---|
interface |
VCloudDirectorAdminApi
Provides synchronous access to VCloudDirector Admin.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CatalogApi
Provides synchronous access to
Catalog objects. |
interface |
MediaApi
Provides synchronous access to
Media . |
static interface |
MetadataApi.Readable |
static interface |
MetadataApi.Writeable |
interface |
NetworkApi
Provides synchronous access to
Network . |
interface |
OrgApi
Provides synchronous access to
Org . |
interface |
QueryApi
Provides synchronous access to the REST API query interface.
|
interface |
TaskApi
Provides synchronous access to
Task objects. |
interface |
UploadApi
Provides synchronous access to upload.
|
interface |
VAppApi
Provides synchronous access to
VApp objects. |
interface |
VAppTemplateApi
Provides synchronous access to
VAppTemplate objects. |
interface |
VdcApi
Provides synchronous access to a vDC.
|
interface |
VmApi
Provides synchronous access to
Vm objects. |
| Modifier and Type | Interface and Description |
|---|---|
interface |
AdminCatalogApi
Provides synchronous access to
AdminCatalog objects. |
interface |
AdminNetworkApi
Provides synchronous access to admin
Network objects. |
interface |
AdminOrgApi
Provides synchronous access to
Org objects. |
interface |
AdminQueryApi
Provides synchronous access to
AdminQuery objects. |
interface |
AdminQueryAsyncApi
Provides asynchronous access to
AdminQuery objects. |
interface |
AdminVdcApi
Provides synchronous access to
AdminVdc . |
interface |
GroupApi
Provides synchronous access to
Group objects. |
interface |
UserApi
Provides synchronous access to
User objects. |
| Modifier and Type | Interface and Description |
|---|---|
interface |
SessionApi
Provides synchronous access to Session.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
VCloudDirectorApi
Provides synchronous access to VCloudDirector.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
CatalogClient
Provides access to Catalog functionality in vCloud
|
interface |
NetworkClient
Provides access to Network functionality in vCloud
|
interface |
OrgClient
Provides access to Org functionality in vCloud
|
interface |
TaskClient
Provides access to Task functionality in vCloud
|
interface |
VAppClient
Provides access to VApp functionality in vCloud
|
interface |
VAppTemplateClient
Provides access to VApp Template functionality in vCloud
|
interface |
VDCClient
Provides access to VDC functionality in vCloud
|
interface |
VmClient
Provides access to VM functionality in vCloud
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
VCloudLoginClient |
Copyright © 2009-2013 jclouds. All Rights Reserved.


Methods
(static) fromSlackData(objData) → {Promise}
Creates or updates a user based on incoming Slack payload
Parameters:
| Name | Type | Description |
|---|---|---|
objData |
AnyObject | Slack payload to be used to create or update the user. |
- Source:
Returns:
A Promise that will be resolved after the user has been created or updated.
- Type
- Promise
ask(message, type) → {Promise}
Sends a prompt to the current user.
Parameters:
| Name | Type | Description |
|---|---|---|
message |
String | Prompt to be sent to the user. |
type |
Number | Type of expected answer. Possible values are Context.NUMBER,
Context.BOOL, and Context.REGEX. Documentation about those items and
how they behave can be found in the |
- Source:
Returns:
A Promise that will be resolved whenever the target user replies to the prompt in the given Channel. If the user reacts with an negative emoji (-1, thumbsdown), the promise is rejected.
- Type
- Promise
enumerateSocialNetworkHandles() → {Promise}
Enumerates all social network associations for this user.
- Since:
- 2.1.1
- Source:
Returns:
A promise that will be resolved as soon as all handles are mapped to a {name, value} array. An empty array will be returned in case the user does not have any handle.
- Type
- Promise
getMentionTag() → {String}
Gets the mention tag for this user.
- Source:
Returns:
The mention tag for this user.
- Type
- String
getSocialNetworkHandle(name) → {Promise}
Gets a social network association for the given user
Parameters:
| Name | Type | Description |
|---|---|---|
name |
String | Name of the social network |
- Since:
- 2.1
- Source:
Returns:
A Promise that will be resolved in case the association exists. In this case, the promise will be resolved with the association value. Otherwise, the promise will be rejected.
- Type
- Promise
is(role) → {Boolean}
Checks if the current user belongs to a given role.
Parameters:
| Name | Type | Description |
|---|---|---|
role |
String | Role name to be checked. |
- Source:
Returns:
Whether the user belongs to the given role or not.
- Type
- Boolean
isOnline() → {Boolean}
Returns whether this user is online or not.
- Source:
Returns:
Whether this user is online or not.
- Type
- Boolean
isRoot() → {Boolean}
Checks if the current user is a system administrator.
- Source:
Returns:
Whether if the current user is an administrator or not.
- Type
- Boolean
send(message) → {Promise}
Sends a direct message message to the current User
Parameters:
| Name | Type | Description |
|---|---|---|
message |
String | Message to be sent to the user. |
- Source:
Returns:
A Promise that will be either resolved or rejected when the message is sent or fails to be sent.
- Type
- Promise
setRole(role) → {Promise}
Sets the current user in a given role.
Parameters:
| Name | Type | Description |
|---|---|---|
role |
String | Role name. |
- Source:
Returns:
A Promise that will be resolved after the user is successfully updated.
- Type
- Promise
toString() → {String}
Returns the User descrption. Useful during debug.
- Source:
Returns:
User description.
- Type
- String
updateLastSeen() → {Promise}
Updates the last seen value for this user.
- Source:
Returns:
A promise that will be resolved after the user is updated.
- Type
- Promise
updatePresence(newP) → {undefined}
Updates a user presence state to a given value.
Parameters:
| Name | Type | Description |
|---|---|---|
newP |
String | New presence state. |
- Source:
Returns:
Nothing.
- Type
- undefined
updateSocialNetworkHandle(name, value) → {Promise}
Creates or updates a social network association for the given user
Parameters:
| Name | Type | Description |
|---|---|---|
name |
String | Name of the social network |
value |
String | Value of the association |
- Since:
- 2.1
- Source:
Returns:
A Promise that will be resolved after the association has been created or updated.
- Type
- Promise
usetRole(role) → {Promise}
Removes the current user in a given role.
Parameters:
| Name | Type | Description |
|---|---|---|
role |
String | Role name. |
- Source:
Returns:
A Promise that will be resolved after the user is successfully updated.
- Type
- Promise


class: center, middle, inverse, title-slide # A Pedagogical Approach to Create and Assess Domain Specific Data Science Learning Materials in the Biomedical and Health Sciences ## ChangeMedEd 2021 ### Daniel Chen, MPH ### Anne Brown, PhD ### 2021-09-30 --- ## Hello! .pull-left[ .center[  ] ] .pull-right[ - PhD **Candidate**: Virginia Tech (Winter 2021) - Data Science education & pedagogy - Medical, Biomedical, Health Sciences - Inten at RStudio, 2019 - [`gradethis`](https://github.com/rstudio-education/gradethis) - Code grader for [`learnr`](https://github.com/rstudio/learnr) documents - The Carpentries - Instructor, 2014 - Trainer, 2020 - Community Maintainer Lead, 2020 - [R + Python!](https://rstudio.github.io/reticulate/) - Author:     ] --- class: inverse center middle # Current Data Science Education --- .pull-left[ ![](./figs/papers/kross-2020-courses.png) ] .pull-right[ - Data Science education is a **commodity** - Content is **not** an issue - Various learning platforms - **Domain experts** can help learners improve **data literacy** - Need more dedicated courses: - **Data Products** - **Data Cleaning** - **Reproducible Science** .myfootnote[Kross, S., Peng, R. D., Caffo, B. S., Gooding, I., and Leek, J. T. (2020). The Democratization of Data Science Education. The American Statistician, 74(1), 1–7. https://doi.org/10.1080/00031305.2019.1668849] ] --- .pull-left[ ![](./figs/papers/song-2016-table1.png) - Joint departments ] .pull-right[ ![](./figs/papers/song-2016-table2.png) - Probability + Statistics - Data Mining - Programming ] .myfootnote[Song, I.-Y., and Zhu, Y. (2016). Big data and data science: What should we teach? Expert Systems, 33(4), 364–373. https://doi.org/10.1111/exsy.12130] --- # Data Science Programs Are Too General - Data science programs target **single broad audiences** - Opportunity to **branch out** to different disciplines - Democratization of data science education enables more **domain specific** learning materials .myfootnote[Kross, S., Peng, R. D., Caffo, B. S., Gooding, I., and Leek, J. T. (2020). The Democratization of Data Science Education. The American Statistician, 74(1), 1–7. https://doi.org/10.1080/00031305.2019.1668849] --- # Why Domain Specificity? - You learn better when things are more relevant - Internal factors for motivation - Learning feedback loops - Self-directed learners .myfootnote[ - Ambrose, S. A., Bridges, M. W., DiPietro, M., Lovett, M. C., and Norman, M. K. (2010). How learning works: Seven research-based principles for smart teaching. John Wiley & Sons. - Koch, C., and Wilson, G. (2016). Software carpentry: Instructor Training. https://doi.org/10.5281/zenodo.57571 - Wilson, G. (2019). Teaching tech together: How to make your lessons work and build a teaching community around them. CRC Press. ] --- # NIH Strategic Plan for Data Science ![](./figs/nih-strategic_plan.png) .myfootnote[ National Institutes of Health. (2020, September 14). NIH Strategic Plan for Data Science | Data Science at NIH. https://datascience.nih.gov/nih-strategic-plan-data-science ] --- # NIH Biomedical Research - Support substantial quantities of biomedical data and metadata - Data is highly distributed - Accomplished by small groups of researchers - Variety of formats lead to complications in cleaning - **Develop a research workforce** --- # NIH The Big Data to Knowledge (BD2K) .pull-left[ - 2013 - 2018 - Narrow the gap in biomedical data science skills - Train and educate workforce on analytical skills ] .pull-right[  ] --- ![](figs/blooms_taxonomy_pyramid.png) Older terms: Knowledge, Comprehension, Application, Analysis, Synthesis, Evaluation  --- # Computing + Statistics Curriculum Guidelines .pull-left[ #### Computing Education - 2005: Knowledge-based - 2020: Competency-based - Discrepancy between graduates and work ability ``` competency = knowledge + skill + disposition = what + how + why ``` ] .pull-right[ #### Statistics Education 1. Teach statistical thinking 2. Focus on conceptual understanding. 3. Integrate real data with a context and a purpose. 4. Foster active learning. 5. Use technology to explore concepts and analyze data. 6. Use assessments to improve and evaluate student learning. ] .myfootnote[ - Shackelford R, McGettrick A, Sloan R, et al. Computing Curricula 2005: The Overview Report. In: Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education. SIGCSE ’06. Association for Computing Machinery; 2006:456-457. doi:10.1145/1121341.1121482 - CC2020 Task Force. Computing Curricula 2020: Paradigms for Global Computing Education. ACM; 2020. doi:10.1145/3467967 - GAISE College Report ASA Revision Committee. Guidelines for Assessment and Instruction in Statistics Education (GAISE) College Report 2016. ] --- # American Medical Association .pull-left[ .center[ ![](figs/ama/Capture01.PNG) ![](figs/ama/Capture02.PNG) ![](figs/ama/Capture03.PNG) ![](figs/ama/Capture04.PNG) ] ] .pull-right[ .center[ ![](figs/ama/Capture05.PNG) ![](figs/ama/Capture06.PNG) ![](figs/ama/Capture07.PNG) ![](figs/ama/Capture08.PNG) ] ] .myfootnote[ American Medical Association. (2021). Accelerating Change in Medical Education. American Medical Association. https://www.ama-assn.org/education/accelerating-change-medical-education ] --- # Applies to All Clinicians .pull-left[ ### American Nursing Association .center[ ![](figs/ana/Capture01.PNG) ![](figs/ana/Capture02.PNG) ![](figs/ana/Capture03.PNG) ] ] .pull-right[ ### Overcome Education Challenges - Elective courses in informatics - Professional society incentives - Online or in-person forums to bring interest parties together - Informal partnerships between medical students and informatics experts ] .myfootnote[ - ANA Enterprise | American Nurses Association. ANA. Accessed September 29, 2021. https://www.nursingworld.org/ - Student interest in informatics outpaces opportunities: Study. American Medical Association. Accessed September 29, 2021. https://www.ama-assn.org/education/accelerating-change-medical-education/student-interest-informatics-outpaces-opportunities ] --- # Interest in Informatics Outpace Opportunities .center[ ![](figs/ama/Capture08.PNG) ] - Students who are interest in a clinical informatics related career - Not aware of training opportunities - Need to increase **quantity**, **quality**, and **publicity** .myfootnote[ - American Medical Association. (2021). Accelerating Change in Medical Education. American Medical Association. https://www.ama-assn.org/education/accelerating-change-medical-education - Banerjee R, George P, Priebe C, Alper E. Medical student awareness of and interest in clinical informatics. Journal of the American Medical Informatics Association. 2015;22(e1):e42-e47. doi:10.1093/jamia/ocu046 ] --- class: inverse center middle # Identifying Our Learners --- ## What Do Our Learners Know? .pull-left[ Concept Maps ![](./figs/papers/wilson-2019-concept_map.png) Can also use "task deconstruction" ] .pull-right[ Dreyfus model of skill acquisition ![](./figs/papers/koch2016-dreyfus2980-skill_acqusition.png) Novice, Competent, Proficient, Expert, Master ] .myfootnote[ - Dreyfus, S. E., and Dreyfus, H. L. (1980). A five-stage model of the mental activities involved in directed skill acquisition. California Univ Berkeley Operations Research Center. - Koch, C., and Wilson, G. (2016). Software carpentry: Instructor Training. https://doi.org/10.5281/zenodo.57571 - Wilson, G. (2019). Teaching tech together: How to make your lessons work and build a teaching community around them. CRC Press. ] --- ## Identify Learners: Learner Self-Assessment Survey - VT IRB-20-537 - Surveys: https://github.com/chendaniely/dissertation-irb/tree/master/irb-20-537-data_science_workshops - Currently working on survey validation - Combination of: - **The Carpentries** surveys: https://carpentries.org/assessment/ - **"How Learning Works: Seven Research-Based Principles for Smart Teaching"** by Susan A. Ambrose, Michael W. Bridges, Michele DiPietro, Marsha C. Lovett, Marie K. Norman - **"Teaching Tech Together"** by Greg Wilson 1. Demographics (6) 2. Programs Used in the Past (1) 3. **Programming Experience** (6) 4. **Data Cleaning and Processing Experience** (4) 5. **Project and Data Management** (2) 6. **Statistics** (4) 7. Workshop Framing and Motivation (3) 8. Summary Likert (7) --- ## Occupations - Grouped occupation demographic data into one of 3 groups.    --- ## The Personas Clare Clinician, Samir Student, Patricia Programmer, Alex Academic
 https://ds4biomed.tech/who-is-this-book-for.html#the-personas ![](./figs/ds4biomed_personas.png) ---    --- class: inverse center middle # Plan the Learning Materials --- ## Survey Responses: Excel .pull-left[ ![](./figs/results/Q4.1.png) ] .pull-right[ ![](./figs/results/Q5.2.png) ] --- ## Survey Responses: Data Literacy .pull-left[ ![](./figs/results/Q4.4.png) ] .pull-right[ ![](./figs/results/Q6.4.png) ] --- ## Planning the Learning Materials Learning objectives: 1. **Name** the features of a tidy/clean dataset 2. **Transform** data for analysis 3. **Identify** when spreadsheets are useful 4. **Assess** when a task should not be done in a spreadsheet software 5. **Break down** data processing into smaller individual (and more manageable) steps 6. **Construct** a plot and table for exploratory data analysis 7. **Build** a data processing pipeline that can be used in multiple programs 8. **Calculate, interpret, and communicate** an appropriate statistical analysis of the data --- class: inverse center middle # Tidy Data --- ## Data is messy in different ways    .myfootnote[ - Allison Horst's Illustrations: https://github.com/allisonhorst/stats-illustrations ] ---    .myfootnote[Wickham, H. (2014). Tidy Data. Journal of Statistical Software, 59(1), 1–23. https://doi.org/10.18637/jss.v059.i10 ] ---    .myfootnote[Wickham, H. (2014). Tidy Data. Journal of Statistical Software, 59(1), 1–23. https://doi.org/10.18637/jss.v059.i10 ] --- ## A different view of data .center[ ![](https://raw.githubusercontent.com/gadenbuie/tidyexplain/master/images/tidyr-spread-gather.gif) ] .myfootnote[https://www.garrickadenbuie.com/project/tidyexplain/] --- class: inverse center middle # Learning and Teaching Materials --- # ds4biomed Part 1 (6 Hours) .pull-left[ .center[  ] ] .pull-right[ https://ds4biomed.tech/ 1. Introduction 2. Spreadsheets 3. R + RStudio / Python + JupyterLab 4. Load Data 5. Descriptive Calculations
 6. Clean Data (Tidy) 7. Visualization (Intro) 8. Analysis Intro (Logistic Regression) ] --- # ds4biomed Part 2 (6 Hours) .pull-left[ .center[  ] ] .pull-right[ https://ds4biomed.tech/ 9. 30-Day re-admittance 10. Working with multiple datasets - Joins - Databases
 11. APIs + Census data 12. Functions 13. Survival Analysis 14. Machine Learning Basics ] --- # Example: Load a dataset .pull-left[ ### Python ```python # load a library # library alias import pandas as pd # use a library function # know about paths # variable assignment # function arguments dat = pd.read_excel("./data/cmv.xlsx") ``` ] .pull-right[ ### R ```r # load library library(tidyverse) library(readxl) # use a library function # know about paths # variable assignment # function arguments dat <- read_excel("./data/cmv.xlsx") ``` ] --- ![](figs/results/pre-post-boxplot.png) --- # How does this help my practice? - You can explore your own patient data - Can work on curating your own data - Potentially faster research-question cycle - Continuing education --- class: inverse center middle # Get Started --- ## Create Your Own Learner Personas If you do end up teaching a domain specific group (e.g., biomedical sciences) 1. Identify who your learners are 2. Figure out what they need and want to know 3. Plan a guided learning tract - Use the surveys I've compiled. https://github.com/chendaniely/dissertation-irb/tree/master/irb-20-537-data_science_workshops ### What's Next? - Survey Validation (Factor Analysis) - Learner pre/post workshop "confidence" - Long-term survey for confidence + retention (summative assessment) - Different types of formative assessment questions --- ![](figs/r-med/rmed.png) --- # Resources and Communities - R4DS Community: Slack: r4ds.io/join - R-Ladies: https://rladies.org/ - Py-Ladies: https://pyladies.com/ - R/Medicine: Twitter: https://twitter.com/r_medicine - OHDSI: https://ohdsi.org/ - Tidy Tuesday: https://github.com/rfordatascience/tidytuesday - Big Book of R: https://www.bigbookofr.com/ --- class: center, middle # Thanks! Slides: https://speakerdeck.com/chendaniely/a-pedagogical-approach-to-create-and-assess-domain-specific-data-science-learning-materials-in-the-biomedical-and-health-sciences Repo: https://github.com/chendaniely/2021-09-30-changemeded-ds4biomed Prelims: https://chendaniely.github.io/dissertation-prelim


Kohana development begun on 31 May 2007 when a few CodeIgniter community members decided to start a community fork of CodeIgniter, named BlueFlame.
In June 2007 the project was renamed "Kohana" and in July version 1.0 was released without any documentation. The project leader left in August and development stagnated until September when a new BDFL was selected and an effort to rewrite the source code began. At that time Kohana had only 3 developers.
Version 2.0 was released in November 2007, based purely on PHP 5.0 and a new OOP framework.
Version 3.0 was released on 9 September 2009.
The latest version 3.3.6 was released on 25. July 2016.


HANDY SOLUTIONS COOL MINT LISTERINE ANTISEPTIC MOUTHWASH- eucalyptol, menthol, methyl salicylate and thymol mouthwash
Navajo Manufacturing Company Inc.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Handy Solutions Cool Mint LISTERINE ANTISEPTIC MOUTHWASH
| Active ingredients |
Purposes |
Eucalyptol 0.092% } Menthol 0.042% } Methyl salicylate 0.060% } Thymol 0.064% } |
Antiplaque/antigingivitis |
Uses
Helps prevent and reduce:
Warnings
Do not use
in children under 12 years of age
Keep out of reach of children.
If more than used for rinsing is accidentally swallowed, get medical help or contact a Poison Control Center right away.
Directions
- rinse full strength for 30 seconds with 20 ml (2/3 fluid ounce or 4 teaspoonfuls) morning and right
- do not swallow
Other information
- store at controlled room temperature 20 degree - 25 degree C (68 degree - 77 degree F)
- cold weather may cloud this product its antiseptic properties are not affected.
Inactive ingredients
water, alcohol (21.6%),sorbitol solution, flavoring, poloxamer 407, benzoic acid, sodium saccharin,sodium benzoate, FDandC green no. 3
Questions?
call toll-free 1-888-222-0182. weekdays
Handy Solutions Cool Mint LISTERINE ANTISEPTIC MOUTHWASH 95ml (67751-103-01)
Navajo Manufacturing Company Inc.


23-Apr-2017 | Milku
There's one in Russia and, in my view, every country should have one.
I had a day off writing my blog yesterday. It’s so hard to get near a computer in my house at the weekend. All the small humans are either concentrating on developing Minecraft environments or are immersed in the world of Roblox. Actually, that can’t be all bad. They offer a hamster simulator game. I hope that’s what my little humans are playing.
I even spotted one Roblox game that mentions a hamster museum. Now that’s not as ridiculous as you might imagine. If gophers warrant having the Gopher Hole Museum in Torrington, Alberta, Canada, I don’t see what’s funny about setting up a Hamster Museum.
And some Russians agree with me. They set up a Hamster Museum in 2013 thinking that studying pet hamsters would help children "learn to appreciate not only something exotic and rare, but also realize the importance of preserving the habitats of animals of the Yaroslavl region". The museum sounds well worth a visit if you're ever in Yaroslavl.
Perhaps there'll be a hamster art gallery next...I'll just try to turn this paper towel into an interesting sculpture...


Noble.Bonk
Engine-specific error handling.
Noble Engine overrides/supersedes some Playdate SDK behavior. A "bonk" is what happens when your game breaks the engine.
Most bonks will throw during normal operation, but others ("debug bonks") introduce some execution overhead so are not checked by default.
Functions
- Noble.Bonk.startCheckingDebugBonks()
-
Begin checking for debug bonks, on every frame. This introduces needless overhead, so don't do it in a release build.
You can only run this if you ran previously
Noble.new()
with__enableDebugBonkChecking
as true, which you should also not do in a release build.See
- Noble.Bonk.stopCheckingDebugBonks()
-
Stop checking for debug bonks on every frame.
NOTE: You can only run this if debug bonk checking is enabled.
- Noble.Bonk.disableDebugBonkChecking()
-
Disable the ability to check for debug bonks. It frees up some memory. Once you disable debug bonk checking, you cannot re-enable it.
NOTE: You can only run this if debug bonk checking is enabled.
- Noble.Bonk.checkingDebugBonks()
-
Are we debug bonk checking for debug bonks?
Returns
-
bool
- Noble.Bonk.checkDebugBonks()
-
Manually check for debug bonks.
This method runs every frame when checkingDebugBonks is true, but you may call it manually instead.
NOTE: You can only run this if debug bonk checking is enabled.


Flash and JavaScript are required for this feature.
Download the video from iTunes U or the Internet Archive.
Description: In this lecture, we consider the nature of human intelligence, including our ability to tell and understand stories. We discuss the most useful elements of our inner language: classification, transitions, trajectories, and story sequences.
Instructor: Patrick H. Winston
Lecture 18: Representations...
PATRICK WINSTON: We might wonder a little bit about the nature of human intelligence, and we might reflect a little bit on the kind of intelligence we've been talking about in the past few weeks.
It's been an intelligence of sorts.
Those programs, support vector machines, boosting, they can do really smart things.
But the peculiar thing about systems that use those methods is that those systems don't have any idea about what they're doing.
They don't know anything.
So they don't give us very much of an insight into the nature of human intelligence.
And, after all, I'd like to have a model of human intelligence because, let's face it, we're the smartest things around.
So there are lots of ways to approach that question.
And we'll approach that question first from a evolutionary point of view.
Some scientists believe, me for instance, that we have a family tree that looks about like this.
Too small to see much of that, but the main point is that we haven't been around very long.

So in the blink of an eye, we seem to have, more or less, taken over.
When you look at that family tree on a scale where you can see it, one of the characteristics is increasing brain size.
There we are on the left, chimpanzee on the right.
Clearly, mostly mouth, not to much brain in there.
That one down below is a reconstruction of one of those pithecus type bipedal apes from about 4 million years ago or so.
So we became bipedal a long time before we had much of a brain.
So you might think, well, maybe brain size has a lot to do with it, and I suppose it does.
So we can plot brain volume of our ancestors versus time.
So the picture I just showed you was from about 3 million years ago, I guess.
And then on the upper right hand corner, oh, that's not just us, that's also the Neanderthals.
Their brains might have been slightly bigger than ours.
So it isn't just brain size.
Here's what that guy looks like.
That's a Neanderthal, of course, on the left.
And that's one of us on the right.
Some conspicuous differences, big heads, the rib cage is kind of conical in shape, a large pelvis.
People like to make a lot of speculations about how they must have moved around.
But one thing is plain, they didn't amount to much.
They could make stone tools, but those stone tools didn't change much over tens of thousands of years.
And that was pretty much the story with us too, until something happened, probably in southern Africa, probably in a group of individuals, maybe less than 1,000.
And what's the evidence for that?
The evidence for that is mostly-- comes from DNA studies with a lot of probabilistic assumptions, and Monte Carlo simulations, but it seems among the competing hypothesis for how we came to populate the world, it seems that there was a group of us, homo sapiens, in Southern Africa that got something that nobody else had and the highest probability scenario is that we quickly took over.
That population of homo sapiens dominated the rest, went out of Africa, and within the blink of an eye did that sort of stuff.
What's that sort of stuff?
Those two paintings are from Lascaux about 25,000 years ago.
Paleoanthropologists, like Tattersall, take that as plain evidence that there was symbolic thought on the people who were around at that time, us homo sapiens.
The head is a carving of a mastodon tusk of a woman 25,000 years ago.
Also, plainly symbolic, people are making a lot of jewelry and doing self adornment.
The Neanderthals never seemed to do that.
That jewelry making seems to have gone back to Southern Africa, maybe 70,000 years ago.
People were puncturing seashells and using them as necklaces, apparently.
So something happened, and the paleoanthropologists, who write fascinating stuff, don't quite know how to talk about it other than to say it looks like we became somehow symbolic.
And somehow that has something to do with language.
So if you talk to Noam Chomsky he will say-- let me get this precise, this is near his quotation as I can get.
He thinks it was the ability to take two concepts and put them together to form a third concept without disturbing the original concepts and without limit, and each part of that's important.
The without limit part is what separates us from species that might be able to do that a little bit, but we can do it without any apparent limit.
So that's a linguist speaking.
He talks a lot about the merge operation, and combinators and language-- using terms foreign to us.
Better not use the term "combinator," it's kind of a computer science term.
But whatever it is, it seemed to happen about that time.
It didn't happen slowly and proportion to brain size, it seemed to happen all of a sudden in consequence of a brain that had grown big enough to be an enablement but the capability was not what pulled evolution in that direction.
So, I believe, that whatever that was, that capability, enabled humans, us humans, to tell and understand stories, and that's what separates us from the other primates.
That ability to-- The symbolic ability, whatever it is, enabled storytelling and understanding.
And that's what all education is about and that's why our species is special.
So what we're going to talk about today is something you might think of as an instantiation of that hypothesis, one way of thinking about it.
And it's a way of thinking about what the linguists would call the inner language.
It's not the language with which we communicate, it's the language with which we think, which is closely related to the language with which we communicate, but may not be quite the same thing.
So many of you are bilingual.
Chris is bilingual.
Chris, have you ever had the experience of remembering that someone said something to you, but not remembering what language they used?
STUDENT: [INAUDIBLE].

STUDENT: [INAUDIBLE].
PATRICK WINSTON: What?
STUDENT: I always [INAUDIBLE].
PATRICK WINSTON: [INAUDIBLE] experience of having-- David, have you ever had that experience of remembering some conversation but not remembering the language in which it was cast?
STUDENT: Well, you remember something you usually don't know which language it was in anyway.
PATRICK WINSTON: You usually don't remember.
That's a common view.
You remember something was said, that there was a conversation that had some content, but if it's with a speaker of your own language and your embedded in another place, you often don't remember what language the conversation was in.
Is that right, [? Wana, ?] you remember things like that?
Not sure?
STUDENT: People who [INAUDIBLE] speak in a certain language, so-- PATRICK WINSTON: Sometimes you don't have that confusion, she says, because you always speak to particular people in a particular language.
But many people report that they have that experience of not remembering which language something was said in.
Well, OK, so what are we going to do?
We need an inner language, and maybe we can start just by saying, let's have something that looks sort of familiar to us.
We have an object and it's supported by some other objects, so those are support relations.
That's one example of what we might call a semantic net.
It's a network that's got nodes and links, it's got-- it has some meaning.
That's where the word "semantic" comes from.
Well, we might have another example that looks like this.
There's Macbeth, there's Duncan, and Macbeth murders Duncan, then we also know, somehow, there's a kill involved as a consequence, and then ultimately, Duncan has a property.
And that property is the property of being dead.
So there's another semantic net recording something that happens in Shakespeare's Macbeth plot.
Now, we can decorate that a little bit.
So as to get a couple of other concepts in play.
First of all, the thing we've got already is we've got combinators.
Then combinators.
Well, a fancy name for those links that connect the nodes.
Another thing we've got is an opportunity for connecting the links themselves.
So the murder sort of implies the kill, and the kill leads us to conclude that the victim is dead.
So that is treating the links themselves as objects that can be the subject or object of other links.
So we call that process "reification." Now, in artificial intelligence, semantic nets we're all over the early work, but if you have a big network that covers the wall you need some way of putting a spotlight on some pieces of it.
So Marvin Minsky put a lot of technical content into that idea and created the notion of-- a notion that deserves another color here-- he suggested that we need a localization process, so we have frames, so-called frames or templates.
And a frame for this murder action might be that there's a murder frame that has an agent and has a victim, and the agent is Macbeth, and the victim is Duncan.
So that's a way of putting a localization layer on top of what we've got so far.
Later on, I'll add sequence to that list.
So this is where it rested for a long time, and in some sense, still rests there because as soon as you've got combinators, you've got something that's pretty much universal.
You can do anything with it.
The trouble is it's sort of down at the bit level.
It's like assembly code.
It doesn't have, as a concept, enough organization to help you go to the next level of achievement.
There's also a little problem here that deserves also, some mention, and that is that we have, over this whole thing, the problem of parasitic semantics.
Parasitic semantics.
A kind of ugliness that surrounds this whole concept because when we look at a diagram like that, and we say, oh, Macbeth murdered Duncan, that means Duncan's the victim.
We know there must have been a motive, maybe Macbeth wanted to be king.
Well, we know all that stuff, and there's a tendency to project that knowing into the machine.
If you're going to play with your telephone, please leave.
So if we project meaning into that that's our understanding that's not the machine's understanding.
So much of the meaning can be said to be parasitic.
We're the parasite, and we're projecting the into that thing.
Putting that diagram into some machine form doesn't mean the machine knows anything.
It might be able to conclude some things, but it's understanding is not grounded in any kind of contact with the physical world.
So we have to worry a lot about that and where philosophers would stop there and go off and write a few books on the subject.
But we're not philosophers so we're going to just mention the problem and go barreling ahead.
So we need to use this notion of semantic net, and we have to ask ourselves some questions about what elements of the inner language are most useful and yet it might be very complicated, but here's usefulness number one.
The notion of classification.
So we know about stuff, and we know about, for example, pianos.
And we know about tools.
And we know about maps.
But we know about those things on different levels.
So say I'm thinking about a tool, do you have a very good image of what I'm talking about?
The answer has to be no because the notion of a tool is very vague, so it's hard to form a picture of what that's all about.
On the other hand, if I said I'm thinking about a mac.
Well, this is interesting because there's lexical ambiguity there.
You don't know if I'm talking about the Apple type Mac or the apple type Mac, or should I say the fruit or the computer?
So there's lexical ambiguity there at two levels or more.
But let's fill this in a little bit.
If I know I'm talking about a piano, you can form a picture of that so that seems to be on a more detailed level where you can do hallucination.
At a higher level you have just a musical instrument.
And I can give you a tool to think about by writing hammer.
And if I'm going to have a mac, it's going to be an apple.
And in this case, I want you to think about a fruit.
And down here, I can be more specific about these things too.
I can add a slight refinement of detail and say, I'm thinking about one of these.
Do you know what this is?
STUDENT: [INAUDIBLE].
PATRICK WINSTON: No, it's not a mere hammer, it's a ball-peen hammer.
In some circles, it's called a ladies hammer.
I don't know why.
But it's-- What's it for?
Most people buy it mostly because it's small and light weight.
But, in fact, it's for metal working.
It's for taking a piece of sheet metal and pounding it out into an ashtray or something or for seating rivets.
It's a metal worker's hammer.
So you might not have known about that before but now, at least, you have a word to hang that knowledge on.
It's a ball peen hammer.
So we have various levels here, going from very specific to very general.
And we can even go to a level of specificity for pianos by saying we've got a Bosendorfer.
Why is a Bosendorfer special?

Something's [INAUDIBLE], Yoka-- Lots of piano types, what's special?
You see, you don't know because unless you play the piano, and probably unless you're a serious piano player you don't know that a Bosendorfer-- Ariel, you know.
STUDENT: I think its supposed to have an extra octave at the bottom, black keys.
Pretty cool.
PATRICK WINSTON: It's got some extra keys at the bottom.
And most people don't know that unless they're serious about the piano.
Some professional piano players, when they're confronted with a Bosendorfer have to have someone cover those keys because it screws up their peripheral vision, and hit the wrong key.
Because they're not used to having those extra keys at the bottom.
So that's a little detail but the Bosendorfer.
So you can make a kind of graph, and you can say, let's go from low, very general, to a basic level, to a specific level.
So it is the case in human knowledge that that graph has a tendency to look sort of like this.
So here's tool, here's hammer, here's ball peen.
So that level, where you have a big jump, that's the general to basic level of transition.
So that basic level is probably there because that's the level on which we hang a huge amount of our knowledge.
We know a lot about pianos, and it all seems to be hanging on that word piano, which gives us power with the concept.
So that's example number one of an element of our inner language.
The ability to assemble things into hierarchies like that, and hang knowledge about those objects on the elements in that hierarchy.
Well, given that you have elements in the hierarchy, how do you talk about them?
Well, I like to consider the possibility, just for the sake of illustration, that you're thinking about a car crashing into a wall.
So you've got things to think about like the speed of the car, the distance to the wall, and the condition of the car.
And you've got the period before the crash, during the crash, and after the crash.
So you might want to think about how to talk about those objects in those three time periods.
So we can do that with a vocabulary of change and we do that because we believe that most of human thinking is thinking about change causing change.
And that flies in the face of what we learned as engineers.
Because in engineering, we learn about state, and once you know the state of the system, you know everything you need to know in order to predict the future.
The trouble is, in our heads, thinking about everything there is in the world, including the current phase of the moon, is too much stuff.
So mostly, our thinking, we think, is hinging on the idea that change leads to change.
So that's why we have a vocabulary of change.
So in the period before the crash, the speed of the car is not changing.
There's a little notation for not change, no delta.
The distance to the wall, that's decreasing.
The condition of the car, that's not changing.
Then, the car hits the wall.
So the speed of the car disappears, the distance to the wall disappears, and the condition of the car will change dramatically.
Finally, after the crash is over, the speed of the car does not appear.
The distance to the wall does not change, and the condition of the car also does not change.
So that's hinting at a vocabulary of change, and its use, which will be the second element in our development of a vocabulary of ways in which we might have constructed are inner language.
So this a particular idea, that's classification.
This is transition, and a system that purports to understand stories with a heavy emphasis on this notion of transition and we believe, that is to say, I think, that that vocabulary has to have decrease, increase, change, appear, and disappear.
So there are 10 things you can have in such diagrams.
I've done five.
That's because, for each of those, there's a not variation on that.
So with a vocabulary of 10 things can go a long way toward helping to describe things that are in process of change and making transition.
And we have a lot of those words in our vocabulary.
We use those words a lot in our vocabulary.
They seem heavily connected with vision.
Our friend appeared.
The cat disappeared.
The speed increased.
So this is a description of a crash.
In terms of those kinds of elements, now, I say to you, how does a camera work?
Well, I could say the camera works because a photon crashes into a photo receptor.
So when I say a photon crashes into a photo receptors, why am I saying that, and how does it help?
I'm saying that and it helps because it's the same pattern of change you already know about when you talk about a car crashing into a wall.
How does that work?
The speed of the photon, the distance of the photon to the receptor, and the condition of the receptor.
So analogies like that are very much of the core of what we think about all the time.
Really then, there is representation number two.
Number one is class, number two is transition, and now, you're ready for number three, which is trajectory.
Linguists, who study sentences, often talk in terms of fundamental patterns that seemed to be in a lot of what we say, and a lot of what we say is about objects moving along trajectories.
So we can talk about a trajectory frame.
And a trajectory frame will have elements like this.
It has an object moving on a trajectory that ends up at a destination.
You might start out at a source.
It's probably been arranged by some kind of agent, and the agent may assist himself making the motion happen with some kind of instrument.
There might be somebody helping out over here, a co-agent.
Well, what else can we have?
A beneficiary, someone is helped out by the action.
Sometimes, the motion is arranged by a conveyance.
So these are a lot of slots, finite slots, and descriptions of actions, many of which involve motion on a trajectory.
We have a tendency in language to decorate these things in one way or another, depending on the language.
And so in many languages, the decoration is by way of position in the sentence.
In English, it's often by way of a preposition.
It's used to help zero in on a particular role of an object in the trajectory scenario.
So if I say, I baked a cake with a friend, there's a with preposition.
If I baked a cake for a friend, the friend is the beneficiary.
If I baked a cake with an oven, that's an instrument.
The object may be moving to a destination from a source, and if I'm going to New York by train, I put a by on top of that.
If the agent isn't in subject position, I would say something like, oh, I see all the work was done by a student.
So those prepositions have a tendency to help us zoom in on the actual role of particular objects in this whole package, the whole frame.
So this is number three.
There's a variation on this in which there's no actual trajectory in which case we'll just call that a role frame.
Because if there's no trajectory, we can still have things such as an instrument, a co-agent, and a beneficiary.
So now, we've got three representations.
You might say, well, what good are they?
And you can determine what good they are these days because it's easier to go over established corpuses, and say, what fraction of those, of the sentences, in such a corpus involve classification or a transition or a trajectory.
The most well known of these is the so-called Wall Street Journal Corpus.
It has 50,000 sentences in it, drawn from some period of time, all the syntactical language types work with that corpus a great deal.
And we worked with it a little bit too, to see what fraction of the sentences or what the density of trajectories and transitions are in those sentences.
So I have to say that a little more carefully, because the finding is that in 100 sentences you'll find about 25 transitions or trajectories.
So they're very densely represented.
They're often very abstract.
Prices rose, the economy went to someplace, but there are still words that denote transition or trajectory.
Of course, once you have all this stuff, that you have then have a desire to put it together.
So the next thing we need to talk about is story sequences.
So a story sequence can be a single sentence, and I want to illustrate that with one of my favorites.
Here's the sentences.
I think I've chosen a gender neutral name so as not getting in any trouble.
So Pat, but I don't call myself Pat because I decided when I was 18 years old that pat is a unit of measure for butter.
In any case, with Pat comforted, Mary, do you have an image of what happened?
Probably not a very firm image.
You know that Pat did something, but you don't know exactly what.
Nevertheless, when Pat comforted Chris, you can construct something that looks like a role frame.
Because the role frame for that would have an agent, and that would be Pat.
There's an action.
We're going to put a question mark in there because we don't have a very firm image of what the action is.
Then again, we're building a wall frame, like so.
The object is Chris.
Oh, you know that is the object.
Is there anything else we can say?
Oh, yes, we can probably say something more.
Something else comes to mind when you see Pat comforted Chris.
There's a sort of result, and the result is a transition frame.
And the transition frame involves an object, which is Chris, and Chris has a mood, which presumably, is improved.
It goes up.
Did you have something, Elliott?
STUDENT: Could you, I guess, analogize the Pat comforted Chris to something like Pat gave comfort to Chris as Chris is the destination?
And couldn't this be [INAUDIBLE]?
PATRICK WINSTON: Elliott is wandering into a very interesting area having to do with, couldn't you think about this in another way and think of it as something moving along a trajectory.
Comfort is moving, if not from Pat, at least to Chris.
And that's a very important kind of observation because what it would suggest is there can be a utility in thinking of things in multiple ways, multiple representations.
Marvin Minsky has a wonderful aphoristic phrase, which is, if you can only think about something in one way, you have no recourse when you get stuck.
So multiple representations mean you have multiple ways of gathering regularity from the world, and collecting it and therefore that'll make you smarter.
So yes, you could do that, and that would be a compliment to what I'm doing now.
Let me continue what I'm doing now.
So what have I done?
I've got a role frame and a tradition frame, and the transition frame is the target of the result slot in the role frame.
Now, we can modify this a little bit.
And maybe want to say, instead of comforted, terrorized.
And how would that change things?
We don't know exactly what Pat did so the action remains unknown.
The agent and the object are the same.
But the result here is presumably that the mood went down.
With just what we've got so far, we can answer a lot of questions, by the way.
Once we've got the sentence understood in these terms, we can say who did the thing?
What's this all about?
And the answer is Pat.
What did Pat do?
Comfort, terrorized.
Who do they do it too?
Who was the object?
It's Chris.
What was the result?
Chris felt better.
Chris felt worse.
So these representations already give us a question and answering capability that makes for an understanding of the sentence.
But still, we haven't been very specific, so our next step takes this same sentence in a more specific direction.
So here's a way that goes.
Kissed Chris.
Now, you begin to get a sense of what's going on, you form a mental image, so you could have a hallucination.
And that hallucinations will also be a kind of frame, but, in this case, it'll be a trajectory frame.
And the object would be, I don't know, Pat's lips.
And the destination will be Chris' lips.
I don't know, is that right?
It depends.
It depends.
Have you all formed a picture of what's going on here?
So it will be different depending on whether Chris is Pat's girlfriend or if Chris is Pat's daughter or if Chris is a frog and Pat is a prince -ess, I guess, the way the story usually goes.
So somehow we have, in our heads, all kinds of libraries that help us to form mental pictures of things when we see things like kissed.
So one final one just to show the variety.
We could say that Pat stabbed Chris.
What changes?
Let's see, in the case of kissed, the mood is going up.
In the case of stabbed, the mood is going down.
You can also probably say that the health is going down.
And the destination is Chris' body.
And the object that's moving is Pat's knife.
We get the same pattern with both of those sentences.
So both of them involve a sequence that starts off with the action, moves to a transition and a trajectory and those are all arranged in a line.
And that line is something that gives us a lot of power over the situation relative to a semantic net.
So I'm going to decorate that one more time, and say that another element we get out of our internal language is sequence.
An element we need in order to have anything that looks like an account of an inner language is sequence.
Because if you think about things being arrayed in a vast spreading network, it's hard to deal with them.
But if you thing about things being arrayed along a line, in a sequence of actions or events, like so, then that imposes enough constraint to get a handle on what's going on.
So what we're going to call this is the representation, and I guess I'm up to one, two, three, four.
This is a representation of story sequence.
so even though that's a kind of micro-story, it's still an example of a story sequence because we get the power out of it by arranging everything in a line.
You have a sense, I think, especially if you play a musical instrument, on how dependent we are on sequence.
So if you play a musical instrument, you probably know how difficult it is to start replaying a piece of music from the middle of a measure.
You have to go back to at least the beginning of the measure, and probably to the beginning of the phrase, if not the beginning of the piece.
So our memory seems to be, at least in music, very rooted in the idea of sequences.
And that's often true of storytelling too.
We have to go back to the beginning of at least a scene, because somehow these things are arranged in sequences that form, somehow, usefulness out of their sequentialness.
So there's one more thing we can talk about and that is the idea of not just the idea of how these sequences are constructed and what they're constructed out of, but we can also talk a little bit in terms of libraries of stories.
And when we talk about libraries of stories, we can think about kind of the sort of standard stories that we have and how they're arranged, and how we can know a lot about something by what it's super class is.
So it's a variation on the theme of learning stuff from the super classes.
So here's an event frame.
And then, in addition to event frames, there's disaster frames.
And then there are party frames.
And parties and disasters are both events.
And when we talk about disasters, we know, in turn, they break up in a variety of things.
We have earthquake disasters, and maybe we have hurricanes.
And in the party world we have, I don't know, birthday parties, and we have weddings.
And each of these types of frames invites us to fill in particular slots.
So if we're reading a newspaper story about a wedding, we know that we're going to be learning the same sorts of things we will learn about any party except there is the additional information that we expect that says something about the bride and the groom.
If we have a raw event and we don't know anything more about it than that, there's a time and place.
If it's a disaster frame, it gets a grizzly over here, but if there's a disaster frame, we might have the fatalities, and how much it cost.
If it's an earthquake frame, we need to know the magnitude of the quake, and the name of the fault.
If it's a hurricane, we have the category and the name.
So each of these things up there can be viewed, not just an example of something, but as a new frame all by itself.
As we mature, we have these first four things as building blocks, and then, we educate ourselves, and we get all those kinds of frames that help us to understand the world.
But how to fill those in from a newspaper story can be sometimes, quite a challenge.
Actually the worst thing to understand is children's stories because, and this was determined experimentally when people tried to understand children's stories, because it turns out that children's stories are not simpler than the stories we write for adults.
In many cases, they're harder.
If you read about Shakespearean plots, it's all about intrigue, murder, jealousy, greed, but when you're trying to write a children's story it can be about anything.
And worse yet, the children's story often raises problems that you don't see in newspaper stories.
Let me illustrate that for you.
You want to read that story?
You have no trouble figuring it out, of course, but think about a poor machine.
It's struggling to understand anything.
What's going to be the problem?
It's going to have trouble figuring out those pronoun antecedents.
Look at them.
They're complicated.

Oh, that's the way.
[INAUDIBLE].
Here are the pronouns.
One of them wanted to buy a kite.
He has one, he said.
He will make you take it back.
So that's pretty hard.
Actually, the principal here that I'm driving at is, when you have a new story or any story, if you have an old story but you want to read it-- when you want to understand it quickly, the instantiation of it quickly, you need to be sure that, if you're the storyteller, you don't add to the burden of the understanding any syntactic difficulty.
So that's an example of telling a story with additional syntactic difficulty.
No newspaper journalist would ever write the story like that.
Here's how they would write it.
They would even give you a clue that there's certain information you're never going to get, like who told the story.
It's that reliable sources business.
So this brings us to the final bit that I want to deal with today, and what I'm going to do is, if you came into this class today as a 97 pound writing weakling, you're about to emerge as a 250 pound mountain of a writer.
Because I want to tell you a few tricks that will make you usually better as a writer, especially if you're Russian or German.
And here's how it works.
Rule one.
Because they place additional syntactic burden on the understanding of the story by the reader.
So if you're telling somebody about some difficult new technical idea, the last thing you want them to do is to burden their syntactic processor with figuring out pronoun antecedents.
So don't use pronouns in you're writing, technical writing, at least, will be much clearer.
By the way, why does this especially apply to Germans and Russians?
Is it because-- is this an ethnic origin slur or is this a fact about their language?
It's a fact about their language.
Where is the fact?
Why can they get away with pronoun usages that we cannot get away with in English?
Yes, Andrew?
STUDENT: Gender and also-- PATRICK WINSTON: Gender, because if you have all of your nouns decorated with gender, that reduces by three, the potential for ambiguity in the pronoun antecedent.
So you'll frequently find that German and Russian writers will have pronouns all over the place that are perfectly clear to them because of gender.
They are interpretable by English speakers when translated because we don't have the gender to help us zero in.
So these things all have to do with minimizing extra, superfluous, gratuitous, unnecessary burden on the reader.
Number two is don't use former or latter.
You see those words used frequently in technical writing, and guess what?
No human being ever encounters those words without having to stop and go back to figure out what they refer to it.
So that's another example of not placing any unnecessary syntactic burden on the reader.
And finally, don't call a shovel a spade.
There's a habit, probably instilled by well-meaning but misadvised high school teachers, that you shouldn't repeat words, and so people go to great lengths to use some different word.
The problem is that the reader doesn't know if the shift in the word is deliberate and attached to some subtle meaning shift, or if it's just adhering to some high school teacher's admonition against using the same word again.
So you don't want to say, oh, the right way to dig this particular hole is with a spade and then switch to a shovel because the reader can't tell if it's deliberate, accidental, or a consequence of just the desire not to use the same word.
So this is how you, with some very simple mechanisms grounded in AI, you can actually make yourself into a better writer by avoiding those kinds of things that put an unnecessary syntactic burden on the people who are reading your stuff.


The :lang pseudo-class allows you to define special rules for different languages. In the example below, :lang defines the quotation marks for q elements with lang="no"
I Love you TSA quote in a paragraph
A quote in a paragraph


‘Me and Pitso Fight Every Day’
by Soccer LadumaIn an exclusive interview with Soccer Laduma, Phakamani Mahlambi opened up about his relationship with Pitso Mosimane, admitting that they ‘fight’ every day.
The 22-year-old has had a slow start to the 2019/20 campaign dealing with injury troubles which has seen him feature just four times for the Brazilians so far.
Read more: 6 Chiefs Players Linked With New Deals At Naturena
Now, with Mauricio Affonso and Jose Ali Meza coming in to the fold, it has been tough for the young striker to break back into the team.
However, in an exclusive interview with Soccer Laduma this week, Mahlambi revealed how much of a role Mosimane plays in his everyday life at Sundowns as he looks to get back on track with his form.
“Me and the coach fight every day. Not like in a bad way, because he wants the best out of me. So, every day, we are fighting,” Mahlambi said.
 I feel like it’s a relationship between a father and a son, with the tough love inside for me to do good. He wants to see me being the best player – that’s what he told me and that’s what he is working towards. I’m happy because if he does not shout at me, maybe I will feel like he is not a good coach anymore. We fight, but I feel like it’s good,” he added.
Mahlambi also opens up on:
- How his confidence has taken a knock…
- His relationship with Gavin Hunt at Bidvest Wits…
- His ambitions of returning to play overseas…
To read the full interview, check out this week’s edition of Soccer Laduma, issue number 1148


A box of our cookie will bting the family together
Made with love!
Our salmon cookies will take you back with memories to your childhood with its special shape and taste.
Seattle
- Seattle - al homra street
- opens from 6am till 7pm
Tokyo
- Tokyo - titan street
- opens from 6am till 7pm
Dubai
- Dubai - al sa'adeh street
- opens from 6am till 7pm
Paris
- Paris - croissant street
- opens from 6am till 7pm
Lima
- Lima - avocado street
- opens from 6am till 7pm
Part of our lovely products
check our online shop for more items!!Store