This is an exploration of bicycle-sharing data in the city of Seattle, WA (USA) from October 2014 - August 2016. I hope to eventually combine this data with other forms of ride-sharing and transportation in the city, but this will be the first step.
Time to get started!
# For data manipulation and tidying
library(dplyr)
library(lubridate)
library(tidyr)
# For mapping
library(ggmap)
library(mapproj)
library(dplyr)
# For data visualizations
library(ggplot2)
library(gridExtra)
# For modeling and machine learning
library(caret)
library(readr)
All of the data can be downloaded from the bicycle-sharing service website or from Kaggle. This project contains 3 data sets and I’ll import and inspect each data file independently.
station <- read.csv(file = "station.csv", header = TRUE,
stringsAsFactors = FALSE)
trip <- read.csv(file = "trip.csv", header = TRUE,
stringsAsFactors = FALSE)
weather <- read.csv(file = "weather.csv", header = TRUE,
stringsAsFactors = FALSE)
Ok, let’s take a look at each of these data files.
Station
str(station)
'data.frame': 58 obs. of 9 variables:
$ station_id : chr "BT-01" "BT-03" "BT-04" "BT-05" ...
$ name : chr "3rd Ave & Broad St" "2nd Ave & Vine St" "6th Ave & Blanchard St" "2nd Ave & Blanchard St" ...
$ lat : num 47.6 47.6 47.6 47.6 47.6 ...
$ long : num -122 -122 -122 -122 -122 ...
$ install_date : chr "10/13/2014" "10/13/2014" "10/13/2014" "10/13/2014" ...
$ install_dockcount: int 18 16 16 14 20 18 20 20 20 18 ...
$ modification_date: chr "" "" "" "" ...
$ current_dockcount: int 18 16 16 14 20 18 20 18 20 18 ...
$ decommission_date: chr "" "" "" "" ...
Looks like this dataset is dealing with 9 variables:
Station ID : The individual ID number for a bike station
Name : The name of that station ID, also appears to be the rough location of the station
Latitude : The latitude of the station
Longitude : The longitude of the station
Install Date : When that particular station was installed (in MM/DD/YYYY format)
Install Dock Count : Number of docks (bike positions) available at each station on installation day
Modification Date : When a particular station was modified (in MM/DD/YYYY format)
Current Dock Count : Number of docks (bike positions) available at each station on August 31, 2016
Decommission Date : The date that a particular station was put out of service (in MM/DD/YYYY format)
Trip
'data.frame': 50793 obs. of 12 variables:
$ trip_id : int 431 432 433 434 435 436 437 438 439 440 ...
$ starttime : chr "10/13/2014 10:31" "10/13/2014 10:32" "10/13/2014 10:33" "10/13/2014 10:34" ...
$ stoptime : chr "10/13/2014 10:48" "10/13/2014 10:48" "10/13/2014 10:48" "10/13/2014 10:48" ...
$ bikeid : chr "SEA00298" "SEA00195" "SEA00486" "SEA00333" ...
$ tripduration : num 986 926 884 866 924 ...
$ from_station_name: chr "2nd Ave & Spring St" "2nd Ave & Spring St" "2nd Ave & Spring St" "2nd Ave & Spring St" ...
$ to_station_name : chr "Occidental Park / Occidental Ave S & S Washington St" "Occidental Park / Occidental Ave S & S Washington St" "Occidental Park / Occidental Ave S & S Washington St" "Occidental Park / Occidental Ave S & S Washington St" ...
$ from_station_id : chr "CBD-06" "CBD-06" "CBD-06" "CBD-06" ...
$ to_station_id : chr "PS-04" "PS-04" "PS-04" "PS-04" ...
$ usertype : chr "Member" "Member" "Member" "Member" ...
$ gender : chr "Male" "Male" "Female" "Female" ...
$ birthyear : int 1960 1970 1988 1977 1971 1974 1978 1983 1974 1958 ...
Looks like this dataset is dealing with 9 variables:
Trip ID : An identification number assigned to each trip (from one bike station to another)
Start Time : The time and date that a bike was borrowed from a station (in MM/DD/YYYY HH:MM format)
Stop Time : The time and date that a bike was returned to a station (in MM/DD/YYYY HH:MM format)
Bike ID : The identification number for a specific bike
Trip Duration : Time of trip (measured in seconds)
From Station Name : The name of the station where the bike was borrowed from
To Station Name : The name of the station where the bike was returned to
From Station ID : The ID number of the station where the bike was borrowed from
To Station ID : The ID number of the station where the bike was returned to
User Type : Indicates whether the user was a “Member” (i.e., someone with a monthly or annual membership to Pronto!) or a “Short-Term Pass Holder” (i.e., someone who purchased a 24 hour or 3 day pass)
Gender : The gender of the rider (if known)
Birth Year : The year that the rider was born
Weather
str(weather)
'data.frame': 689 obs. of 21 variables:
$ Date : chr "10/13/2014" "10/14/2014" "10/15/2014" "10/16/2014" ...
$ Max_Temperature_F : int 71 63 62 71 64 68 73 66 64 60 ...
$ Mean_Temperature_F : int 62 59 58 61 60 64 64 60 58 58 ...
$ Min_TemperatureF : int 54 55 54 52 57 59 55 55 55 57 ...
$ Max_Dew_Point_F : int 55 52 53 49 55 59 57 57 52 55 ...
$ MeanDew_Point_F : int 51 51 50 46 51 57 55 54 49 53 ...
$ Min_Dewpoint_F : int 46 50 46 42 41 55 53 50 46 48 ...
$ Max_Humidity : int 87 88 87 83 87 90 94 90 87 88 ...
$ Mean_Humidity : int 68 78 77 61 72 83 74 78 70 81 ...
$ Min_Humidity : int 46 63 67 36 46 68 52 67 58 67 ...
$ Max_Sea_Level_Pressure_In : num 30 29.8 30 30 29.8 ...
$ Mean_Sea_Level_Pressure_In: num 29.8 29.8 29.7 29.9 29.8 ...
$ Min_Sea_Level_Pressure_In : num 29.6 29.5 29.5 29.8 29.7 ...
$ Max_Visibility_Miles : int 10 10 10 10 10 10 10 10 10 10 ...
$ Mean_Visibility_Miles : int 10 9 9 10 10 8 10 10 10 6 ...
$ Min_Visibility_Miles : int 4 3 3 10 6 2 6 5 6 2 ...
$ Max_Wind_Speed_MPH : int 13 10 18 9 8 10 10 12 15 14 ...
$ Mean_Wind_Speed_MPH : int 4 5 7 4 3 4 3 5 8 8 ...
$ Max_Gust_Speed_MPH : chr "21" "17" "25" "-" ...
$ Precipitation_In : num 0 0.11 0.45 0 0.14 0.31 0 0.44 0.1 1.43 ...
$ Events : chr "Rain" "Rain" "Rain" "Rain" ...
This dataset represents quite a bit of weather data in 21 variables.
Date : The date in MM/DD/YYYY format
Max Temperature F : The maximum temperature that day (in degrees F)
Mean Temperature F : The average temperature that day (in degrees F)
Min Temperature F : The minimum temperature that day (in degrees F)
Max Dew Point F : The maximum dew point (in degrees F)
Mean Dew Point F : The average dew point (in degrees F)
Min Dew Point F : The minimum dew point (in degrees F)
Max Humidity : The maximum humidity (in %)
Mean Humidity : The average humidity (in %)
Min Humidity : The minimum humidity (in %)
Maximum Sea Level Pressure : The maximum atmospheric pressure at sea level (in inches of mercury)
Mean Sea Level Pressure : The average atmospheric pressure at sea level (in inches of mercury)
Min Sea Level Pressure : The minimum atmospheric pressure at sea level (in inches of mercury)
Max Visibility Miles : The maximum visibility (in miles)
Mean Visibility Miles : The average visibility (in miles)
Min Visibility Miles : The minimum visibility (in miles)
Max Wind Speed MPH : The maximum sustained wind speed (in miles per hour)
Mean Wind Speed MPH : The average sustained wind speed (in miles per hour)
Max Gust Speed MPH : The maximum gust wind speed (in miles per hour)
Precipitation : The amount of precipitation (measured in inches)
Events : Weather events that occurred that day (e.g., rain, fog, snow, thunderstorm etc.)
Since the “Stations” dataset was the first one I imported, let’s start with a little exploration there. First of all, how many unique stations are we dealing with?
station %>% summarise(n_distinct(station_id))
n_distinct(station_id)
1 58
Wow! 58 different stations! Let’s take a quick peek at where they are located.
station_locs <- station %>% group_by(station_id) %>% select(1:4,-2)
mymap <- get_map(location = "Seattle", maptype = "roadmap", zoom = 12)
mymap1 <- get_map(location = c(lon =-122.315 , lat = 47.63), maptype = "roadmap", zoom = 13)
ggmap(mymap) + geom_point(aes(x = long, y = lat), data = station_locs,
alpha = 0.7, color = "darkred", size = 2)
So it looks like all of the stations are located near the Lower Queen Anne, Belltown, International District, Capitol Hill and University of Washington areas. Let’s take a more zoomed-in look.
Great! So the locations are pretty well clustered. I wonder what order they were added in.
station$install_date <- mdy(station$install_date)
station %>% summarise(n_distinct(install_date))
n_distinct(install_date)
1 9
station %>% group_by(install_date) %>% summarise(count = n()) %>%
arrange(install_date)
# A tibble: 9 x 2
install_date count
<date> <int>
1 2014-10-13 50
2 2015-05-22 1
3 2015-06-12 1
4 2015-07-27 1
5 2015-09-15 1
6 2015-10-29 1
7 2016-03-18 1
8 2016-07-03 1
9 2016-08-09 1
It looks like the vast majority (86%) of the stations were added on opening day. Let’s see where those original ones were and where the rest were added.
So they added more stations throughout the district that they serve, instead of adding several new stations to a single neighborhood all at once. Good to know.
Now, I wonder how many bikes can be parked at each station (as of August 31,2016)?
hist(station$current_dockcount, breaks = "fd",
freq = NULL, col = "light blue",
main = paste("Histogram of Current Dock Count"),
xlab = "Number of Bikes per station",
axes = TRUE, plot = TRUE, labels = FALSE,
nclass = NULL, warn.unused = TRUE)
Warning in hist.default(station$current_dockcount, breaks = "fd", freq =
NULL, : 'nclass' not used when 'breaks' is specified
Well that’s weird, some of the stations have a dock count of 0. I’m assuming they didn’t start that way. Let’s calculate the change in dock count from station installation to August 31, 2016 and plot it on a map.
Change in Number of Bike Docks Per Station
Any stations with no change in number of docks are not shown here.
dock_change <- station %>% group_by(station_id) %>% select(station_id,
long, lat, ends_with("dockcount")) %>% mutate(dock_change = current_dockcount -
install_dockcount)
dock_change %>%
group_by()
# A tibble: 58 x 6
station_id long lat install_dockcount current_dockcount
<chr> <dbl> <dbl> <int> <int>
1 BT-01 -122.3510 47.61842 18 18
2 BT-03 -122.3486 47.61583 16 16
3 BT-04 -122.3411 47.61609 16 16
4 BT-05 -122.3442 47.61311 14 14
5 CBD-03 -122.3324 47.61073 20 20
6 CBD-04 -122.3356 47.60922 18 18
7 CBD-05 -122.3358 47.60406 20 20
8 CBD-06 -122.3358 47.60595 20 18
9 CBD-07 -122.3304 47.60351 20 20
10 CBD-13 -122.3396 47.61019 18 18
# ... with 48 more rows, and 1 more variables: dock_change <int>
ggmap(mymap1) + geom_point(aes(x = long, y = lat, size = factor(dock_change), color = factor(dock_change)),
data = dock_change, alpha = 0.6) +
guides(color = guide_legend(title = "Change"), size = guide_legend(title = "Change")) +
scale_size_manual(values = 10:1)
Wow! Looks like quite a few stations took away bike docks and none gained any. Perhaps those stations weren’t being used very frequently. We’ll have to look at that a bit later.
Current Station Size
I’m going to take one quick look at the current size of each station before moving on to the next dataset. Note: I did not include any stations that were closed as of August 31, 2016 in this map
So it looks like the biggest stations tend to be on the outskirts of the rest. Where there are several stations in close proximity, there tend to be fewer bike docks at each station. That makes sense, logically speaking. If you go to a station and there is no bike to rent, you can easily go to another nearby, assuming there is another nearby. In areas where the stations are more secluded, it’s more important that there be bikes and open spaces readily available for users.
Alright, I’m feeling good about exploring this dataset. Time to check out the trip dataset!
It’s been a while since we’ve looked at the trip dataset, so let’s take another peek at it here.
'data.frame': 50793 obs. of 12 variables:
$ trip_id : int 431 432 433 434 435 436 437 438 439 440 ...
$ starttime : chr "10/13/2014 10:31" "10/13/2014 10:32" "10/13/2014 10:33" "10/13/2014 10:34" ...
$ stoptime : chr "10/13/2014 10:48" "10/13/2014 10:48" "10/13/2014 10:48" "10/13/2014 10:48" ...
$ bikeid : chr "SEA00298" "SEA00195" "SEA00486" "SEA00333" ...
$ tripduration : num 986 926 884 866 924 ...
$ from_station_name: chr "2nd Ave & Spring St" "2nd Ave & Spring St" "2nd Ave & Spring St" "2nd Ave & Spring St" ...
$ to_station_name : chr "Occidental Park / Occidental Ave S & S Washington St" "Occidental Park / Occidental Ave S & S Washington St" "Occidental Park / Occidental Ave S & S Washington St" "Occidental Park / Occidental Ave S & S Washington St" ...
$ from_station_id : chr "CBD-06" "CBD-06" "CBD-06" "CBD-06" ...
$ to_station_id : chr "PS-04" "PS-04" "PS-04" "PS-04" ...
$ usertype : chr "Member" "Member" "Member" "Member" ...
$ gender : chr "Male" "Male" "Female" "Female" ...
$ birthyear : int 1960 1970 1988 1977 1971 1974 1978 1983 1974 1958 ...
Great, so there are quite a few things that we can potentially look at using this dataset by itself. Let’s start with the number of trips per day since Pronto! began opening bike stations. To do that, we need to recode our start date/times as POSIXct objects. We’ll use the lubridate
package for this.
trip_2 <- trip %>% mutate(start_dt = mdy_hm(starttime), stop_dt = mdy_hm(stoptime))
# Recode the dates
trip_2 <- trip_2 %>% mutate(start_date = paste(month(start_dt),
day(start_dt), year(start_dt), sep = "/"))
trip_2$start_date <- mdy(trip_2$start_date)
trip_2 <- trip_2 %>% mutate(stop_date = paste(month(stop_dt),
day(stop_dt), year(stop_dt), sep = "/"))
trip_2$stop_date <- mdy(trip_2$stop_date)
trip_2 %>%
group_by(start_date) %>%
summarize(N = n()) %>%
ggplot(aes(x = start_date, y = N)) +
geom_line() +
labs(x = "Date", y = "Number of trips per day") +
theme_bw() + geom_smooth()
Great! Time to visualize the number of rides per day.
Hmm, grouping by day is a little noisy. Perhaps we should try by month?
First, we need to create a “Year-Month” variable
start_date_ym <- trip_2 %>% mutate(ym = paste(year(start_date),
month(start_date), sep = "/"), Season = ifelse(ym %in% c("2014/10", "2014/11"), "Fall",
ifelse(ym %in% c("2014/12","2015/1", "2015/2"), "Winter",
ifelse(ym %in% c("2015/3", "2015/4", "2015/5"), "Spring", "Summer"))))
Now plot. I think I’ll plot this by month but color it by season (where December, January, and February are “winter”, March, April, and May are “spring”, June, July, August are “summer”, and September, October, November are “autumn”)
Well that intuitively makes sense. The number of trips taken per month increases in the spring, reaches a maximum in the summer, declines through the fall, remains fairly stable in the winter and then repeats.
Great! I wonder how the average trip duration fluctuates over this time period.
# Convert Trip Duration from Seconds to Minutes
Trip_Duration_Minutes <- start_date_ym %>%
mutate(trip_duration_min = tripduration/60) %>%
group_by(ym) %>%
select(ym,trip_duration_min) %>%
summarise(avg = mean(trip_duration_min), sd = sd(trip_duration_min)) %>%
mutate(se = sd/sqrt(n()), Season = ifelse(ym %in% c("2014/10", "2014/11"), "Fall",
ifelse(ym %in% c("2014/12","2015/1", "2015/2"), "Winter",
ifelse(ym %in% c("2015/3", "2015/4", "2015/5"), "Spring", "Summer"))))
Now to plot the average trip duration (in minutes) (plus or minus standard error), with colors indicating season.
ggplot(Trip_Duration_Minutes, aes(x=ym, y=avg, col=Season)) +
geom_point() +
geom_line(group = 1) +
geom_errorbar(aes(ymin=avg-se, ymax=avg+se)) +
theme_bw() +
labs(x="Date", y="Duration of Average Trip (In Minutes)")
There’s surprisingly not a huge range in trip durations here.
The little bit of variation here makes logical sense. Longer trips were being taken in the spring and summer months rather than the fall and winter. It’s also notable that the spring and summer of 2016 may have shown fewer trips than the previous year, show a slight increase in average trip length.
trip_2$wd <- wday(trip_2$start_date, label = TRUE)
Now to plot the total number of trips by day of the week.
Ok, so there are definitely more trips during the week than on the weekends. I wonder if this varies by season too.
So it looks like usage is relatively consistent across seasons, at least as far as the number of trips are concerned.
How about time of day? Are people using these around commuting times during the week and later on weekends?
Wow, looks like regardless of the season, people are commuting to/from work using this service (there’s a spike between 8 and 10 AM and another between 4 and 7 PM Monday through Friday). But the weekends seem to be popular between 10 AM and 10 PM.
I wonder if different types of members (those who have a membership vs. those that bought a 24 hour or 3 day pass) vary in the number of trips they take.
If I were to guess, I’d think the short-term passes would be ideal for tourists or people looking for a quick weekend trip, whereas members may be more likely to continue using the service year-round. Let’s check out my assumptions by plotting, once again colored by season.
start_date_ym %>%
filter(usertype != "") %>%
group_by(ym , Season, usertype) %>%
summarize(N = n()) %>%
ggplot(aes(x=ym, y = N, color = Season, group = usertype))+
geom_point(aes(shape = usertype, size = 2)) +
geom_line()+
theme_bw()+
labs(x ="Date", y = "Total Number of Trips per Month")
Surprisingly (to me, at least), different types of users seem to follow similar patterns of usage. Spring and Summer are definitely the most popular times for anyone to ride a bike in the Seattle area.
While it may seem that the trip duration shouldn’t vary widely by member type, a quick look at Pronto!’s pricing structure may make you reconsider that assumption.  For members, any ride under 45 minutes is free, but any ride going over 45 minutes will incur a fee of 2 for every additional 30 minutes. For short-term users, any ride under 30 minutes is free, but going over that time limit would cost you an additional 2 for the first 30 minutes and 5 for each additional 30 minutes after that!
Let’s see if these time limits cause differing behaviors in our users.
start_date_ym %>%
filter(usertype != "") %>%
group_by(tripduration, trip_id, usertype) %>%
summarize(N=n()) %>%
ggplot(aes(x= tripduration/60, fill= usertype, color = usertype), group = usertype) +
geom_histogram(binwidth = 2) +
xlim(0,60) +
facet_grid(. ~ usertype) +
labs(x="Trip Duration (minutes)", y = "Number of trips") +
geom_vline(xintercept = 45, linetype = "dashed")
Warning: Removed 2246 rows containing non-finite values (stat_bin).
Ok, so our members are pretty good about making sure that they return their bike before they incur extra charges, but the short-term pass holders frequently go over their time limit. I wonder how the cost of a trip varies for members and pass holders. Let’s try to calculate the cost of a trip.
start_date_ym <- start_date_ym %>% mutate(cost = ifelse(usertype == "Member" &
tripduration/60 <= 45, 0, ifelse(usertype == "Member" & tripduration/60 >
45 & tripduration/60 <= 75, 2, ifelse(usertype == "Member" &
tripduration/60 > 75, (2 + 2 * ceiling((tripduration/60 - 75)/30)),
ifelse(usertype == "Short-Term Pass Holder" & tripduration/60 <=
30, 0, ifelse(usertype == "Short-Term Pass Holder" &
tripduration/60 > 30 & tripduration/60 < 60, 2, ifelse(usertype ==
"Short-Term Pass Holder" & tripduration/60 > 60, (2 +
5 * ceiling((tripduration/60 - 60)/30)), NA)))))))
That was a complicated nested if/else statement! Let’s see how much these folks are paying in additional fees!
Warning: Removed 614 rows containing non-finite values (stat_bin).
Looks like short-term pass holders (who are already paying a higher price per day of biking), are also paying lots of extra fees. This could be because they are unfamiliar with the pricing structure and don’t realize they need to return their bike to a station within 30 minutes without getting charged. It is also possible that short-term users may be tourists who don’t know their way around as easily, and thus can’t find their way to a station within the time limit.
We only seem to have age and gender information about people who have an annual Pronto! membership, so we can at least take a look at what types of people use this service.
Let’s look first at age.
trip_2$usertype <- as.factor(trip_2$usertype)
trip_age <- trip_2 %>% mutate(age = year(start_dt) - birthyear)
hist(trip_age$age, main = "Member Age", xlab = "Number of Riders",
col = "#56B4E9", breaks = 25)
My first instinct here is to say “Wow! There’s a lot of 20 and 30-somethings that use this service!” But this figure (and these data) may be a little misleading. You see, we don’t have any sort of Rider ID number, meaning we can’t take “individual activity level” into account. So we can’t tell if the tallest spike is because 5 very athletic 28-year-olds went on 4,000 trips each, or if 100 people went on 200 trips each, or if there were 20,000 28-year-olds who each only used the service once.
The same problem would arise if we looked at gender, so I’m just going to move beyond demographics.


Warning!
No pairs of high similarity were found. This could be caused by very distinct texts, a high cosine similarity
threshold, or a small sample size.
{% else %}
The following pairs of words were detected to be of similar semantics. You may download the
full list of detected words using the download button, or manually select only synonymous pairs first. Clicking
the button below will then further evaluate your selected pairs.
{% if entrywarning %}
Only the top 10.000 entries are displayed here due to HTML form limitations. However, the downloadable
dataset always contains the full list of word pairs. Consider increasing your RCS threshold to avoid this
situation.


root callus cell mutant ick//// explants induction shoot Arabidopsis regeneration Plant genes plant quintuple calli CDK cells Figure ,-D meristem plates {border-style Cell cycle cortex culture days medium px;} #ffffff;} auxin containing ICK frequency growth ick length rate different regeneration. results cotyledon number Biol. expression kinase lines mutants roots used Callus Cheng Root higher increased inhibitor plate shown size transferred vitro ESR Sci. cultured division formation mg/L plants shoots showed Physiol. SIM Science activity compared concentrations control cyclin-dependent enhanced observed organ organogenesis proliferation up-regulated zone Figures ICK/KRP Supplementary competence differences mature mg/ml multiple px; significantly weight {font-family < Duclercq Shoot Wang average concentration culture. cytokinin determine development down-regulation font-size indicate induction, inhibitors mg/L, plants. study, suggesting tissue (A) (the ,-D, .). Banno EF-dependent FIGURE Genes Ikeda Regeneration Zhang a). absence determined double; explants. identified induced involved lower molecular novo obtained pathway produced regenerating related roots, roots. seedlings showing significant solid tobacco (B) (C) (Supplementary Beemster Student’s Wt, Zhou addition, analyzed border-color border-width cotyledonary described exogenous fresh gene genes. ick/// indicated induction. larger placed previous regulation relative requirement seeds series similar solid; t-test using {font-style {font-weight ,-D. ./s--- A,B Analysis Arabidopsis. China Curr. Dev. FIL Fresh Gordon Induction Liu Matsuo Motte RIM Representative SIM. T-DNA University Wt. activities analysis analyzing apical article bar bold conditions courier; days, demonstrated difference down-regulating effects elongation em; enter factors faster financial form genes, having important investigated known measured mutant, mutant. organogenesis, organogenesis. production pt;} rates ratio regulators row) seed segments sowed sucrose, transcription transformation transgenic underlying ½-strength


txt \xe2\x80\x9cresist\xe2\x80\x9d to 50409 - please help me, keep my healthcare.. resistbot will fax yr congress-folks on yr behalf. ask them to keep intact, the ACA
...


gnmic get
Get a snapshot of a gnmi network device operation data.
More information: home page
- Get a snapshot of the device state at a specific path:
gnmic --address ip:port get --path path
- Query the device state at multiple paths:
gnmic -a ip:port get --path path1 --path path2
- Query the device state at multiple paths with a common prefix:
gnmic -a ip:port get --prefix prefix --path path1 --path path2
- Query the device state and specify reponse encoding (json_ietf):
gnmic -a ip:port get --path path --encoding json_ietf


Health Catalyst's products are not sub-brands themselves. The house brand is the central and most important market identifier for all of our software applications. But within the house brand, apps still need a way to be clearly distinguished from one another. The product icon, along with the Flexo font version of its name (used in the navbar) are the two unique visual identifiers for an app. They are to be used in all promotional or training materials related to the app, as well as any websites that reference the app (Health Catalyst Community, Docs, etc).
Click any of the icons below to download a zip containing an SVG and PNG of that icon. Or use the purple button to download the entire collection.
ARMUS™
Business Decision Support - PowerCosting™
Business Decision Support - PowerLabor™
Business Decision Support - PowerPlanning™
Care Management Suite


Passing Route Parameters to Component Props
Using the User component on a route change:
User List
User 123
User 456
Named Views Demo


pandas.
to_datetime
Convert argument to datetime.
The object to convert to a datetime.
If ‘raise’, then invalid parsing will raise an exception.
If ‘coerce’, then invalid parsing will be set as NaT.
If ‘ignore’, then invalid parsing will return the input.
Specify a date parse order if arg is str or its list-likes. If True, parses dates with the day first, eg 10/11/12 is parsed as 2012-11-10. Warning: dayfirst=True is not strict, but will prefer to parse with day first (this is a known bug, based on dateutil behavior).
Specify a date parse order if arg is str or its list-likes.
If True parses dates with the year first, eg 10/11/12 is parsed as 2010-11-12.
If both dayfirst and yearfirst are True, yearfirst is preceded (same as dateutil).
Warning: yearfirst=True is not strict, but will prefer to parse with year first (this is a known bug, based on dateutil behavior).
Return UTC DatetimeIndex if True (converting any tz-aware datetime.datetime objects as well).
The strftime to parse time, eg “%d/%m/%Y”, note that “%f” will parse all the way up to nanoseconds. See strftime documentation for more information on choices: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior.
Behaves as: - If True, require an exact format match. - If False, allow the format to match anywhere in the target string.
The unit of the arg (D,s,ms,us,ns) denote the unit, which is an integer or float number. This will be based off the origin. Example, with unit=’ms’ and origin=’unix’ (the default), this would calculate the number of milliseconds to the unix epoch start.
If True and no format is given, attempt to infer the format of the datetime strings, and if it can be inferred, switch to a faster method of parsing them. In some cases this can increase the parsing speed by ~5-10x.
Define the reference date. The numeric values would be parsed as number of units (defined by unit) since this reference date.
If ‘unix’ (or POSIX) time; origin is set to 1970-01-01.
If ‘julian’, unit must be ‘D’, and origin is set to beginning of Julian Calendar. Julian day number 0 is assigned to the day starting at noon on January 1, 4713 BC.
If Timestamp convertible, origin is set to Timestamp identified by origin.
If True, use a cache of unique, converted dates to apply the datetime conversion. May produce significant speed-up when parsing duplicate date strings, especially ones with timezone offsets.
New in version 0.23.0.
Changed in version 0.25.0: - changed default value from False to True.
If parsing succeeded. Return type depends on input:
list-like: DatetimeIndex
Series: Series of datetime64 dtype
scalar: Timestamp
In case when it is not possible to return designated types (e.g. when any element of input is before Timestamp.min or after Timestamp.max) return will have datetime.datetime type (or corresponding array/Series).
See also
DataFrame.astype
Cast argument to a specified dtype.
to_timedelta
Convert argument to timedelta.
Examples
Assembling a datetime from multiple columns of a DataFrame. The keys can be common abbreviations like [‘year’, ‘month’, ‘day’, ‘minute’, ‘second’, ‘ms’, ‘us’, ‘ns’]) or plurals of the same
>>> df = pd.DataFrame({'year': [2015, 2016], ... 'month': [2, 3], ... 'day': [4, 5]}) >>> pd.to_datetime(df) 0 2015-02-04 1 2016-03-05 dtype: datetime64[ns]
If a date does not meet the timestamp limitations, passing errors=’ignore’ will return the original input instead of raising any exception.
Passing errors=’coerce’ will force an out-of-bounds date to NaT, in addition to forcing non-dates (or non-parseable dates) to NaT.
>>> pd.to_datetime('13000101', format='%Y%m%d', errors='ignore') datetime.datetime(1300, 1, 1, 0, 0) >>> pd.to_datetime('13000101', format='%Y%m%d', errors='coerce') NaT
Passing infer_datetime_format=True can often-times speedup a parsing if its not an ISO8601 format exactly, but in a regular format.
>>> s = pd.Series(['3/11/2000', '3/12/2000', '3/13/2000'] * 1000) >>> s.head() 0 3/11/2000 1 3/12/2000 2 3/13/2000 3 3/11/2000 4 3/12/2000 dtype: object
>>> %timeit pd.to_datetime(s, infer_datetime_format=True) 100 loops, best of 3: 10.4 ms per loop
>>> %timeit pd.to_datetime(s, infer_datetime_format=False) 1 loop, best of 3: 471 ms per loop
Using a unix epoch time
>>> pd.to_datetime(1490195805, unit='s') Timestamp('2017-03-22 15:16:45') >>> pd.to_datetime(1490195805433502912, unit='ns') Timestamp('2017-03-22 15:16:45.433502912')
Warning
For float arg, precision rounding might happen. To prevent unexpected behavior use a fixed-width exact type.
Using a non-unix epoch origin
>>> pd.to_datetime([1, 2, 3], unit='D', ... origin=pd.Timestamp('1960-01-01')) DatetimeIndex(['1960-01-02', '1960-01-03', '1960-01-04'], dtype='datetime64[ns]', freq=None)


Welcome to Rock, Paper, Scissors !
Register as Player 1
Register as Player 2
Choose your mighty weapon
Attack
Reveal weapon
Get winner
NOTE: You can't reveal until both players have attacked!


| ITUserPlaylistSpecialKindNone |
(0) No special kind. |
| ITUserPlaylistSpecialKindPurchasedMusic |
(1) Purchased Music playlist. |
| ITUserPlaylistSpecialKindPartyShuffle |
(2) Party Shuffle playlist. |
| ITUserPlaylistSpecialKindPodcasts |
(3) Podcasts playlist. |
| ITUserPlaylistSpecialKindFolder |
(4) Folder playlist. |
| ITUserPlaylistSpecialKindVideos |
(5) Videos playlist (added in iTunes type library 1.6). |
| ITUserPlaylistSpecialKindMusic |
(6) Music playlist (added in iTunes type library 1.8). |
| ITUserPlaylistSpecialKindMovies |
(7) Movies playlist (added in iTunes type library 1.8). |
| ITUserPlaylistSpecialKindTVShows |
(8) TV Shows playlist (added in iTunes type library 1.8). |
| ITUserPlaylistSpecialKindAudiobooks |
(9) Audiobooks playlist (added in iTunes type library 1.8). |


Dr. Wangari Maathai
The Nobel Laureate
Here is a timeline of Dr.Wangari Maathai's life:
- 1940 - Born in the village of Ihithe, Nyeri District, in the central highlands of Kenya.
- 1959 - Graduated high school from.
- 1964 - Obtained a Bachelor of Science in Biology from Mount St. Scholastica College in Kansas, US
- 1966 - Completed a Master's of Science degree at the University of Pittsburgh, US
- 1971 - She received her Ph.D. in veterinary anatomy at the University of Nairobi, becoming the 1st woman in East and Central Africa to achieve a Ph.D.
- 1971 to 1977 - She worked with the National Council of Women of Kenya (NCWK), educating women in rural areas about environmental and social conditions affecting poor, rural people, especially women
- 1977 - She established the Green Belt Movement, a non-profit grassroots NGO based in Kenya
- 1989 - After hearing about plans to construct a 60-story skyscraper in Nairobi’s Uhuru Park, she wrote letters of protest to government officials, the media and the Ministry for Environment. The government ignored her inquiries and protests, and instead told the media she was “a crazy woman”
Because of her work with the Green Belt Movement, she constantly faced opposition from the government. During a speech by the President later that year, he suggested that she be a proper woman in the African tradition and “respect men and be quiet” - 1998 - While attempting to plant a tree in Karura Forest, in protest of the privatization and destruction of the forest, she and her fellow protesters were attacked by a large group of men guarding the area
- 2002 - In the elections, she was elected as a Member of Parliament
- 2003 - She published The Green Belt Movement: Sharing the Approach and the Experience, the first of four books she wrote
- 2004 - She became the 1st African woman and 1st environmentalist to receive the Nobel Peace Prize, for her outstanding work on sustainable development, democracy and peace
- 2005 - Maathai was elected the first president of the African Union's Economic, Social and Cultural Council and was appointed a goodwill ambassador for an initiative aimed at protecting the Congo Basin Forest Ecosystem.
- 2006 - She spearheaded the United Nations Billion Tree Campaign.
- 2009 - Published The Challenge for Africa with her insights into the strengths and weaknesses of governance in Africa, her own experiences, and the centrality of environmental protection to Africa's future.
- 2009 - Named as one of PeaceByPeace.com's first peace heroes.
- 2011 - Wangari Maathai passed away on September 25th
“Finally I was able to see that if I had a contribution I wanted to make, I must do it, despite what others said. That I was OK the way I was. That it was all right to be strong.” - Wangari Maathai
Read more about the great Wangari Maathai on her wikipedia entry


An interactive visualization and simulation engine for higher dimensions.
Axes
Hypercubes
Elastic String
Inertial Objects in curved ST
n-Polytopes
Rigid Bodies
General Spacetime motion
Graphing
General geodesic motion: Rigid Bodies
General geodesic motion: Elastic String
4 edged polytopes in nD
© Jake Bian 2013 Jakebian.com


A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
V
W
Y
D
- d(Object,String,Array) - function in com.microblink.camera.util.Log
- d(Object,Throwable,String,Array) - function in com.microblink.camera.util.Log
- DefaultCameraStrategyFactory - class in com.microblink.camera.hardware.camera.camera1.strategy.factory
- Class responsible for creating optimal camera strategy based on device infos
- describeContents() - function in com.microblink.camera.hardware.camera.VideoResolutionPreset
- describeContents() - function in com.microblink.camera.hardware.camera.CameraType
- describeContents() - function in com.microblink.camera.view.CameraAspectMode
- describeContents() - function in com.microblink.camera.view.surface.CameraSurface
- destroy() - function in java.lang.ProcessingQueue
- destroy() - function in com.microblink.camera.view.BaseCameraView
- destroyDrawingCache() - function in android.view.BaseCameraView
- destroyDrawingCache() - function in android.view.DummyCameraView
- destroyDrawingCache() - function in android.view.CameraTextureView
- destroyDrawingCache() - function in android.view.CameraSurfaceView
- DESTROYED - enum entry in com.microblink.camera.view.BaseCameraView.CameraViewState
View is in destroyed (destroy() has been called - all resources have been released) or initial state (nothing is yet loaded), you need to call create() method
- deviceHasCamera() - function in com.microblink.camera.hardware.DeviceManager
- Checks if device has a camera
- DeviceInfo - class in com.microblink.camera.hardware
- DeviceManager - class in com.microblink.camera.hardware
- Class responsible for providing information about current user's device
- disable() - function in android.view.OrientationManager
- dispatchApplyWindowInsets(WindowInsets) - function in android.view.BaseCameraView
- dispatchApplyWindowInsets(WindowInsets) - function in android.view.DummyCameraView
- dispatchApplyWindowInsets(WindowInsets) - function in android.view.CameraTextureView
- dispatchApplyWindowInsets(WindowInsets) - function in android.view.CameraSurfaceView
- dispatchCapturedPointerEvent(MotionEvent) - function in android.view.BaseCameraView
- dispatchCapturedPointerEvent(MotionEvent) - function in android.view.DummyCameraView
- dispatchCapturedPointerEvent(MotionEvent) - function in android.view.CameraTextureView
- dispatchCapturedPointerEvent(MotionEvent) - function in android.view.CameraSurfaceView
- dispatchConfigurationChanged(Configuration) - function in android.view.BaseCameraView
- dispatchConfigurationChanged(Configuration) - function in android.view.DummyCameraView
- dispatchConfigurationChanged(Configuration) - function in android.view.CameraTextureView
- dispatchConfigurationChanged(Configuration) - function in android.view.CameraSurfaceView
- dispatchDisplayHint(int) - function in android.view.BaseCameraView
- dispatchDisplayHint(int) - function in android.view.DummyCameraView
- dispatchDisplayHint(int) - function in android.view.CameraTextureView
- dispatchDisplayHint(int) - function in android.view.CameraSurfaceView
- dispatchDragEvent(DragEvent) - function in android.view.BaseCameraView
- dispatchDragEvent(DragEvent) - function in android.view.DummyCameraView
- dispatchDragEvent(DragEvent) - function in android.view.CameraTextureView
- dispatchDragEvent(DragEvent) - function in android.view.CameraSurfaceView
- dispatchDrawableHotspotChanged(float,float) - function in android.view.BaseCameraView
- dispatchDrawableHotspotChanged(float,float) - function in android.view.DummyCameraView
- dispatchDrawableHotspotChanged(float,float) - function in android.view.CameraTextureView
- dispatchDrawableHotspotChanged(float,float) - function in android.view.CameraSurfaceView
- dispatchFinishTemporaryDetach() - function in android.view.BaseCameraView
- dispatchFinishTemporaryDetach() - function in android.view.DummyCameraView
- dispatchFinishTemporaryDetach() - function in android.view.CameraTextureView
- dispatchFinishTemporaryDetach() - function in android.view.CameraSurfaceView
- dispatchGenericMotionEvent(MotionEvent) - function in android.view.BaseCameraView
- dispatchGenericMotionEvent(MotionEvent) - function in android.view.DummyCameraView
- dispatchGenericMotionEvent(MotionEvent) - function in android.view.CameraTextureView
- dispatchGenericMotionEvent(MotionEvent) - function in android.view.CameraSurfaceView
- dispatchKeyEvent(KeyEvent) - function in android.view.BaseCameraView
- dispatchKeyEvent(KeyEvent) - function in android.view.DummyCameraView
- dispatchKeyEvent(KeyEvent) - function in android.view.CameraTextureView
- dispatchKeyEvent(KeyEvent) - function in android.view.CameraSurfaceView
- dispatchKeyEventPreIme(KeyEvent) - function in android.view.BaseCameraView
- dispatchKeyEventPreIme(KeyEvent) - function in android.view.DummyCameraView
- dispatchKeyEventPreIme(KeyEvent) - function in android.view.CameraTextureView
- dispatchKeyEventPreIme(KeyEvent) - function in android.view.CameraSurfaceView
- dispatchKeyShortcutEvent(KeyEvent) - function in android.view.BaseCameraView
- dispatchKeyShortcutEvent(KeyEvent) - function in android.view.DummyCameraView
- dispatchKeyShortcutEvent(KeyEvent) - function in android.view.CameraTextureView
- dispatchKeyShortcutEvent(KeyEvent) - function in android.view.CameraSurfaceView
- dispatchNestedFling(float,float,boolean) - function in android.view.BaseCameraView
- dispatchNestedFling(float,float,boolean) - function in android.view.DummyCameraView
- dispatchNestedFling(float,float,boolean) - function in android.view.CameraTextureView
- dispatchNestedFling(float,float,boolean) - function in android.view.CameraSurfaceView
- dispatchNestedPreFling(float,float) - function in android.view.BaseCameraView
- dispatchNestedPreFling(float,float) - function in android.view.DummyCameraView
- dispatchNestedPreFling(float,float) - function in android.view.CameraTextureView
- dispatchNestedPreFling(float,float) - function in android.view.CameraSurfaceView
- dispatchNestedPrePerformAccessibilityAction(int,Bundle) - function in android.view.BaseCameraView
- dispatchNestedPrePerformAccessibilityAction(int,Bundle) - function in android.view.DummyCameraView
- dispatchNestedPrePerformAccessibilityAction(int,Bundle) - function in android.view.CameraTextureView
- dispatchNestedPrePerformAccessibilityAction(int,Bundle) - function in android.view.CameraSurfaceView
- dispatchNestedPreScroll(int,int,Array,Array) - function in android.view.BaseCameraView
- dispatchNestedPreScroll(int,int,Array,Array) - function in android.view.DummyCameraView
- dispatchNestedPreScroll(int,int,Array,Array) - function in android.view.CameraTextureView
- dispatchNestedPreScroll(int,int,Array,Array) - function in android.view.CameraSurfaceView
- dispatchNestedScroll(int,int,int,int,Array) - function in android.view.BaseCameraView
- dispatchNestedScroll(int,int,int,int,Array) - function in android.view.DummyCameraView
- dispatchNestedScroll(int,int,int,int,Array) - function in android.view.CameraTextureView
- dispatchNestedScroll(int,int,int,int,Array) - function in android.view.CameraSurfaceView
- dispatchPointerCaptureChanged(boolean) - function in android.view.BaseCameraView
- dispatchPointerCaptureChanged(boolean) - function in android.view.DummyCameraView
- dispatchPointerCaptureChanged(boolean) - function in android.view.CameraTextureView
- dispatchPointerCaptureChanged(boolean) - function in android.view.CameraSurfaceView
- dispatchPopulateAccessibilityEvent(AccessibilityEvent) - function in android.view.BaseCameraView
- dispatchPopulateAccessibilityEvent(AccessibilityEvent) - function in android.view.DummyCameraView
- dispatchPopulateAccessibilityEvent(AccessibilityEvent) - function in android.view.CameraTextureView
- dispatchPopulateAccessibilityEvent(AccessibilityEvent) - function in android.view.CameraSurfaceView
- dispatchProvideAutofillStructure(ViewStructure,int) - function in android.view.BaseCameraView
- dispatchProvideAutofillStructure(ViewStructure,int) - function in android.view.DummyCameraView
- dispatchProvideAutofillStructure(ViewStructure,int) - function in android.view.CameraTextureView
- dispatchProvideAutofillStructure(ViewStructure,int) - function in android.view.CameraSurfaceView
- dispatchProvideStructure(ViewStructure) - function in android.view.BaseCameraView
- dispatchProvideStructure(ViewStructure) - function in android.view.DummyCameraView
- dispatchProvideStructure(ViewStructure) - function in android.view.CameraTextureView
- dispatchProvideStructure(ViewStructure) - function in android.view.CameraSurfaceView
- dispatchSetActivated(boolean) - function in android.view.BaseCameraView
- dispatchSetSelected(boolean) - function in android.view.BaseCameraView
- dispatchStartTemporaryDetach() - function in android.view.BaseCameraView
- dispatchStartTemporaryDetach() - function in android.view.DummyCameraView
- dispatchStartTemporaryDetach() - function in android.view.CameraTextureView
- dispatchStartTemporaryDetach() - function in android.view.CameraSurfaceView
- dispatchSystemUiVisibilityChanged(int) - function in android.view.BaseCameraView
- dispatchSystemUiVisibilityChanged(int) - function in android.view.DummyCameraView
- dispatchSystemUiVisibilityChanged(int) - function in android.view.CameraTextureView
- dispatchSystemUiVisibilityChanged(int) - function in android.view.CameraSurfaceView
- dispatchTouchEvent(MotionEvent) - function in com.microblink.camera.view.BaseCameraView
- dispatchTouchEvent(MotionEvent) - function in android.view.DummyCameraView
- dispatchTouchEvent(MotionEvent) - function in android.view.CameraTextureView
- dispatchTouchEvent(MotionEvent) - function in android.view.CameraSurfaceView
- dispatchTrackballEvent(MotionEvent) - function in android.view.BaseCameraView
- dispatchTrackballEvent(MotionEvent) - function in android.view.DummyCameraView
- dispatchTrackballEvent(MotionEvent) - function in android.view.CameraTextureView
- dispatchTrackballEvent(MotionEvent) - function in android.view.CameraSurfaceView
- dispatchUnhandledMove(View,int) - function in android.view.BaseCameraView
- dispatchUnhandledMove(View,int) - function in android.view.DummyCameraView
- dispatchUnhandledMove(View,int) - function in android.view.CameraTextureView
- dispatchUnhandledMove(View,int) - function in android.view.CameraSurfaceView
- dispatchWindowFocusChanged(boolean) - function in android.view.BaseCameraView
- dispatchWindowFocusChanged(boolean) - function in android.view.DummyCameraView
- dispatchWindowFocusChanged(boolean) - function in android.view.CameraTextureView
- dispatchWindowFocusChanged(boolean) - function in android.view.CameraSurfaceView
- dispatchWindowInsetsAnimationEnd(WindowInsetsAnimation) - function in android.view.BaseCameraView
- dispatchWindowInsetsAnimationEnd(WindowInsetsAnimation) - function in android.view.DummyCameraView
- dispatchWindowInsetsAnimationEnd(WindowInsetsAnimation) - function in android.view.CameraTextureView
- dispatchWindowInsetsAnimationEnd(WindowInsetsAnimation) - function in android.view.CameraSurfaceView
- dispatchWindowInsetsAnimationPrepare(WindowInsetsAnimation) - function in android.view.BaseCameraView
- dispatchWindowInsetsAnimationPrepare(WindowInsetsAnimation) - function in android.view.DummyCameraView
- dispatchWindowInsetsAnimationPrepare(WindowInsetsAnimation) - function in android.view.CameraTextureView
- dispatchWindowInsetsAnimationPrepare(WindowInsetsAnimation) - function in android.view.CameraSurfaceView
- dispatchWindowInsetsAnimationProgress(WindowInsets,List) - function in android.view.BaseCameraView
- dispatchWindowInsetsAnimationProgress(WindowInsets,List) - function in android.view.DummyCameraView
- dispatchWindowInsetsAnimationProgress(WindowInsets,List) - function in android.view.CameraTextureView
- dispatchWindowInsetsAnimationProgress(WindowInsets,List) - function in android.view.CameraSurfaceView
- dispatchWindowInsetsAnimationStart(WindowInsetsAnimation,WindowInsetsAnimation.Bounds) - function in android.view.BaseCameraView
- dispatchWindowInsetsAnimationStart(WindowInsetsAnimation,WindowInsetsAnimation.Bounds) - function in android.view.DummyCameraView
- dispatchWindowInsetsAnimationStart(WindowInsetsAnimation,WindowInsetsAnimation.Bounds) - function in android.view.CameraTextureView
- dispatchWindowInsetsAnimationStart(WindowInsetsAnimation,WindowInsetsAnimation.Bounds) - function in android.view.CameraSurfaceView
- dispatchWindowSystemUiVisiblityChanged(int) - function in android.view.BaseCameraView
- dispatchWindowSystemUiVisiblityChanged(int) - function in android.view.DummyCameraView
- dispatchWindowSystemUiVisiblityChanged(int) - function in android.view.CameraTextureView
- dispatchWindowSystemUiVisiblityChanged(int) - function in android.view.CameraSurfaceView
- dispatchWindowVisibilityChanged(int) - function in android.view.BaseCameraView
- dispatchWindowVisibilityChanged(int) - function in android.view.DummyCameraView
- dispatchWindowVisibilityChanged(int) - function in android.view.CameraTextureView
- dispatchWindowVisibilityChanged(int) - function in android.view.CameraSurfaceView
- dispose() - function in com.microblink.camera.hardware.camera.ICameraManager
- dispose() - function in com.microblink.camera.hardware.camera.camera1.Camera1Manager
- dispose() - function in com.microblink.camera.hardware.camera.camera1.frame.BaseCamera1PreviewFrame
- dispose() - function in com.microblink.camera.hardware.camera.camera1.frame.Camera1PreviewFramePool
- dispose() - function in com.microblink.camera.hardware.camera.camera1.frame.Camera1AbstractFrame
- dispose() - function in com.microblink.camera.hardware.camera.camera1.frame.Camera1PhotoFrame
- dispose() - function in com.microblink.camera.hardware.camera.camera1.focus.ContinuousAutofocusManager
- Called when all internal resources of the focus manager should be disposed.
- dispose() - function in com.microblink.camera.hardware.camera.camera1.focus.AutoFocusManager
- Called when all internal resources of the focus manager should be disposed.
- dispose() - function in com.microblink.camera.hardware.camera.camera1.focus.StillFocusManager
- Called when all internal resources of the focus manager should be disposed.
- dispose() - function in com.microblink.camera.hardware.camera.camera1.focus.IFocusManager
- Called when all internal resources of the focus manager should be disposed.
- dispose() - function in com.microblink.camera.hardware.camera.camera2.Camera2Manager
- dispose() - function in com.microblink.camera.view.surface.ICameraView
- dispose() - function in com.microblink.camera.view.surface.DummyCameraView
- dispose() - function in com.microblink.camera.view.surface.CameraTextureView
- dispose() - function in com.microblink.camera.view.surface.CameraSurfaceView
- doAutofocus(boolean) - function in com.microblink.camera.hardware.camera.camera1.focus.ContinuousAutofocusManager
- Method requests from manager to initiate camera focusing process.
- doAutofocus(boolean) - function in com.microblink.camera.hardware.camera.camera1.focus.AutoFocusManager
- Method requests from manager to initiate camera focusing process.
- doAutofocus(boolean) - function in com.microblink.camera.hardware.camera.camera1.focus.StillFocusManager
- Method requests from manager to initiate camera focusing process.
- doAutofocus(boolean) - function in com.microblink.camera.hardware.camera.camera1.focus.IFocusManager
- Method requests from manager to initiate camera focusing process.
- doesCameraHaveAutofocus(Context,CameraType) - function in com.microblink.camera.hardware.camera.camera2.Camera2Utils
- draw(Canvas) - function in android.view.BaseCameraView
- draw(Canvas) - function in android.view.DummyCameraView
- draw(Canvas) - function in android.view.CameraTextureView
- draw(Canvas) - function in android.view.CameraSurfaceView
- drawableHotspotChanged(float,float) - function in android.view.BaseCameraView
- drawableHotspotChanged(float,float) - function in android.view.DummyCameraView
- drawableHotspotChanged(float,float) - function in android.view.CameraTextureView
- drawableHotspotChanged(float,float) - function in android.view.CameraSurfaceView
- DummyCameraView - class in com.microblink.camera.view.surface
- Used for displaying camera surface in developer tools.
- dumpStack() - function in java.lang.ProcessingQueue


--- title: "Default" description:
Create an ordered or unordered list with a class of evo_c-list-group. Add evo_c-list-group__item on each list item.
evo_c-list-group
evo_c-list-group__item


$_allow
$_allow :
validateAuthorization(integer $userId, $auth)
Validate if user auhorization is valid.
Check if the auth has the proper format, it decodes the jwt and will check if the key is expired and it will return true if the token is valid, false otherwise
| integer | $userId | @param string $auth @return boolean |
| $auth |
login() : void
Return token to user.
Generate a random token which expires in one hour if the user doesn't already have one generated in which case we return them their current token. The user will use the token for authentifcation on subsequent requests. Respond with 406 for an invalid request, with 204 if the user doesn't exist or the password is wrong, respond with 200 if succesful and return the token in json.
insertVideo() : void
Upload video.
 Checks if the user has authorization, check if the file meets the requirements, insert the file path on the server and the video details in the db and moves the file to the uploads folder on the server. Respond with 400 if the request is invalid, 200 if the video was succesfully posted.


Completing the C Scale
Let's add the final three notes to complete our C scale. A scale is a simply defined as a set of notes, typically listed from low to high pitch. There are different scales which define what notes are played in a certain key signature.
The C scale, as picture in the graphic above, begins and ends on C. We know the first five notes already from previous lessons, but the final three notes (in order) are A, B, and C.


We meet every Thursday from 8:00 - 8:30 p.m. You can either call in on<PHONE_NUMBER>, access code 740897 or through the Freeconferencecall.com app on ID gpc_pastor
“Don’t be alarmed,” he said. “You are looking for Jesus the Nazarene, who was crucified. He has risen! He is not here. See the place where they laid him."
"He is not here; he has risen! Remember how he told you, while he was still with you in Galilee: ‘The Son of Man must be delivered over to the hands of sinners, be crucified and on the third day be raised again.’"
"For since death came through a man, the resurrection of the dead comes also through a man."


strikethrough
here's one followed by another one
~~ this ~~ is not one neither is ~this~
escaped ~~this~~


Royal Canadian Legion Fortnite level to mark Remembrance Day
Pay respects.
News by Tom Phillips, News Editor Updated on 12 November 2019
The Royal Canadian Legion has marked this year's Remembrance Day by creating a custom level in Fortnite.
Remembrance Island is a short, peaceful map made using Fortnite's Creative mode.
It gives players a selection of areas to walk through, each themed around a military campaign in which Canadian soldiers have fought.
There's no combat. You simply explore the level's poppy-lined pathways and read snippets of history, before coming to a final memorial - a recreation of the Vimy Ridge cenotaph - where the game suggests you salute to remember the fallen.
It's a nice idea, if an unusual one to see within Fortnite - a game I'm currently playing as a half-man/half-tree character, and where the closest I have to a salute emote is a mournful slow dance.
In a press release announcing the island, the Royal Canadian Legion explained the idea was "an effort to reach this younger audience on their native turf".
"It's our hope that young Canadians will take a few moments to visit this unique environment and learn about the men and women who gave their lives to protect our freedom," said Royal Canadian Legion spokesman Freeman D. Chute.
"As time goes on, we have to find new ways to reach young people and tell the story of Canadian veterans. This is a fantastic example of how to do just that."
The level itself was put together by 19-year-old Texas-based creator Jadan "JXDVN" Allen, who worked on it free of charge.
If you want to explore Remembrance Island yourself, you'll just need the following Fortnite island code: 5053-3302-4847.


STORE
Toggle navigation
apps
Template
OUR SHOP STORE
C'est bon de se faire plaisir!
Your main section here
Card title
Some quick example text to build on the card title and make up the bulk of the card's content.
Go somewhere
Tooltip on top
info_outline
clear
Info alert:
You've got some friends nearby, stop looking at your phone and find them...


--- layout: post title: JSON Web Services and accessing them via jQuery date: '2009-07-01T08:50:00.001+01:00' author: solrevdev tags: modified_time: '2009-07-01T08:50:09.627+01:00' blogger_id: tag:blogger.com,1999:blog-31446756.post-2968987362749741817 blogger_orig_url: http://www.solrevdev.com/2009/07/json-web-services-and-accessing-them.html ---
Continuing with jQuery day I have just read another cracking post that explains how to create a JSON web service that returns JSON formatted data and finally call the JSON web service with jQuery.


In this game you will be making a choice to pay to give points to others you are connected with.
Click 'Next' to continue.


Address: 127.127.2.u
Reference ID: GPS
Driver ID: GPS-TRAK
Serial Port: /dev/traku
; 9600 baud, 8-bits,
no parity
Features: tty_clk, ppsclock
This driver supports the Trak 8820 GPS Station Clock. The claimed accuracy at the 1-PPS output is 200-300 ns relative to the broadcast signal; however, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.
For best accuracy, this radio requires the tty_clk
line
discipline, which captures a timestamp at the *
on-time
character of the timecode. Using this discipline the jitter is in the
order of 1 ms and systematic error about 0.5 ms. If unavailable, the
buffer timestamp is used, which is captured at the \r
ending the timecode message. This introduces a systematic error of 23
character times, or about 24 ms at 9600 bps, together with a jitter well
over 8 ms on Sun IPC-class machines.
Using the menus, the radio should be set for 9600 bps, one stop bit and no parity. It should be set to operate in computer (no echo) mode. The timecode format includes neither the year nor leap-second warning.
In operation, this driver sends a RQTS\r
request to the
radio at initialization in order to put it in continuous time output
mode. The radio then sends the following message once each second:
*RQTS U,ddd:hh:mm:ss.0,q<cr><lf> on-time = '*' ddd = day of year hh:mm:ss = hours, minutes, seconds q = quality indicator (phase error), 0-6: 0 > 20 us 6 > 10 us 5 > 1 us 4 > 100 ns 3 > 10 ns 2 < 10 ns
The alarm condition is indicated by 0
at Q
,
which means the radio has a phase error greater than 20 us relative to
the broadcast time. The absence of year, DST and leap-second warning in
this format is also alarmed.
The continuous time mode is disabled using the RQTX\r
request, following which the radio sends a RQTX
DONE<cr><lf>
response. In the normal mode, other
control and status requests are effective, including the leap-second
status request RQLS<cr>
. The radio responds with
RQLS yy,mm,dd<cr><lf>
, where
yy,mm,dd
are the year, month and day. Presumably, this
gives the epoch of the next leap second, RQLS 00,00,00
if
none is specified in the GPS message. Specified in this form, the
information is generally useless and is ignored by the driver.
When enabled by the flag4
fudge flag, every received
timecode is written as-is to the clockstats
file.
time1 time
time2 time
stratum number
refid string
TRAK
.
flag1 0 | 1
flag2 0 | 1
flag3 0 | 1
flag4 0 | 1
clockstats
recording if set.
Additional Information


VirtualCardsConfig
public struct VirtualCardsConfig : Equatable
Representation of a Virtual Card Config
-
The maximum number of funding sources that can be successfully created within a defined period.
Declaration
Swift
public var maxFundingSourceVelocity: [String]
-
The maximum number of failed funding source creations that can be performed within a defined period.
Declaration
Swift
public var maxFundingSourceFailureVelocity: [String]
-
The maximum number of virtual cards that can be created within a defined period.
Declaration
Swift
public var maxCardCreationVelocity: [String]
-
The maximum number of transactions that can be created within a defined period.
Declaration
Swift
public var maxTransactionVelocity: [CurrencyVelocity]
-
The maximum transaction amount per currency.
Declaration
Swift
public var maxTransactionAmount: [CurrencyAmount]
-
The list of supported virtual card currencies.
Declaration
Swift
public var virtualCardCurrencies: [String]
-
The funding source support info.
Declaration
Swift
public var fundingSourceSupportInfo: [FundingSourceSupportInfo]
-
Whether or not the sudoplatform.virtual-cards.bankAccountFundingSourceExpendable entitlement is required to provision a bank account funding source
Declaration
Swift
public var bankAccountFundingSourceExpendableEnabled: Bool
-
The funding source client configuration.
Declaration
Swift
public var fundingSourceClientConfiguration: [FundingSourceClientConfiguration]
-
The client application configuration keyed by application name.
Declaration
Swift
public var clientApplicationConfiguration: [String : ClientApplicationConfiguration]
-
init(maxFundingSourceVelocity:
maxFundingSourceFailureVelocity: maxCardCreationVelocity: maxTransactionVelocity: maxTransactionAmount: virtualCardCurrencies: fundingSourceSupportInfo: bankAccountFundingSourceExpendableEnabled: fundingSourceClientConfiguration: clientApplicationConfiguration: ) Initialise an instance of
VirtualCardConfig
.Declaration
Swift
public init( maxFundingSourceVelocity: [String], maxFundingSourceFailureVelocity: [String], maxCardCreationVelocity: [String], maxTransactionVelocity: [CurrencyVelocity], maxTransactionAmount: [CurrencyAmount], virtualCardCurrencies: [String], fundingSourceSupportInfo: [FundingSourceSupportInfo], bankAccountFundingSourceExpendableEnabled: Bool, fundingSourceClientConfiguration: [FundingSourceClientConfiguration], clientApplicationConfiguration: [String: ClientApplicationConfiguration] )


layout: page title: Contact
permalink: /contact/
Contact content goes here.
My e-mail is
<EMAIL_ADDRESS>.


My App
Add Category
Show Category
Add Recipe
Show Recipe
Manage Account
Contact
Contact
Name
Email
Message
KKKK
<EMAIL_ADDRESS>Delete
Edit


Syrian Rue & Cacti - T. peruvianus
I'm going to make a long story short for a change. I consumed 2 tsp of homemade peganum harmala extract. After 15 minutes, I ate 30g of Trichocereus Peruvianus from my favorite supplier. In my experience with legal mescaline-containing cacti, I've found that all the peruvianus I've had beats any pachanoi I've eaten to date. I ground the material into a fine, sawdust-like consistency, added water and formed a dough, which I swallowed in 6 bites or so.
For an hour and 30 minutes I was very nauseous and considered throwing up numerous times, but I fought through it. I began to feel the effects of the mescaline lightly at this point.
About 2 hours after ingestion, it started to hit me hard. I reached the levels of my previous 30g experiences, then kept right on going.
By the time I settled into the peak, about 3 hours post ingestion, I was having an incredible time. All my cactus eating sessions before this one had been lacking in the visuals department, but this time they were out in full force.
Patterns galore, trails, and colors were everywhere, accompanied by shivers of euphoria. Woodgrain and other patterns became morphing, flowing art, in a classic phenethylamine fashion. My mind was adrift in that beautiful place that psychedelics take me, going from thought to thought with seamless ease. The body high was very enjoyable, but not really stimulating, and the addition of syrian rue seemed to add to this feeling of muscle weakness. The only complaint I have is that despite my being very tired I couldn't sleep a wink that night, despite feeling very tired. The next day, my lack of sleep seemed to draw out the effects of the mescaline, and the experience lasted no less than 16 hours total. The peak was somewhere around 8-10 hours. I found this duration to be very enjoyable, but in the future I'll consume earlier in the day, so as to be able to sleep.
This trip was awesome, and I wish I'd combined with a MAOI earlier. It was at least twice as powerful as any experience I've had prior.
I have no complaints, except for not being able to sleep, and I will be repeating in the near future.
have fun,
be safe
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


« CSS « CSS Reference
The font-stretch
CSS property selects a normal, condensed, or extended face from a font family.
normal
visual
font-stretch: inherit | ultra-condensed | extra-condensed | condensed | semi-condensed | normal | semi-expanded | expanded | extra-expanded | ultra-expanded | wider | narrower
wider
and narrower
keywords indicate values relative to the values of the parent element. h1 { font-stretch: extra-expanded } p { font-stretch: condensed }
font-stretch
was defined in CSS 2, but dropped in CSS 2.1 due lack of implementation experience. It's newly drafted in CSS 3.
The relative values wider
and narrower
have been dropped from the font-stretch
property in the CSS Fonts Module Level 3 Working Draft (24 March 2011).
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | -- | 9.0 (9.0) [1] [*] | 9.0 [*] | ? | -- |
| Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | -- | 9.0 (9.0) [2] [*] | ? | ? | -- |
[*] Implements the CSS Fonts Module Level 3 specification. Hence do not support the deprecated wider and narrower keywords.
font
,
font-family
,
font-size
,
font-size-adjust
,
font-stretch
,
font-style
,
font-variant
,
font-weight
,
@font-face


England secure Euro seeding slot with 4-0 win in Kosovo
England secured a place among the top six seeds for next year’s European Championship after three late goals helped them to a 4-0 win in Kosovo in their final qualifier on Sunday.
PRISTINA: England secured a place among the top six seeds for next year’s European Championship after three late goals helped them to a 4-0 win in Kosovo in their final qualifier on Sunday.
England, already assured of a place at the finals, finished top of Group A with 21 points from eight games, their only blip being last month’s 2-1 defeat in the Czech Republic, who have qualified as runners-up.
In a subdued and sloppy first half England found a way through only once, when Alex Oxlade-Chamberlain slipped a pass for Harry Winks to tuck home his first international goal after 32 minutes.
Captain Harry Kane then struck his 12th goal of the campaign in the 79th minute, Marcus Rashford added the third with a neat finish four minutes later and Mason Mount completed the scoring in stoppage time to give some gloss to the scoreline.
Kosovo finished third on 11 points. Their chances of automatic qualification disappeared after a 2-1 defeat by the Czechs on Thursday but they could advance via the playoffs.
(Reporting by Mitch Phillips, editing by Ken Ferris)


--- layout: stats title: Tristan Willey Statistics permalink: "/stats/players/tristan-willey.html" ---
| Year | Team | Finish | G | 10 | -5 | Pts | PPG |
|---|---|---|---|---|---|---|---|
| 2015 | Illinois A | 12 | 22 | 18 | 5 | 155 | 7.05 |
| Year | Round | Player | Team | Opponent | Result | 10 | -5 | Pts | Packet |
|---|---|---|---|---|---|---|---|---|---|
| 2015 | 1 (Prelims) | Tristan Willey | Illinois A | Penn C | Win | 3 | 0 | 30 | MIT A + Alberta |
| 2015 | 2 (Prelims) | Tristan Willey | Illinois A | Virginia A | Loss | 0 | 0 | 0 | Minnesota + Washington |
| 2015 | 3 (Prelims) | Tristan Willey | Illinois A | Oxford A | Win | 1 | 0 | 10 | Chicago A |
| 2015 | 4 (Prelims) | Tristan Willey | Illinois A | Waterloo A | Win | 2 | 0 | 20 | Virginia and Yale |
| 2015 | 6 (Prelims) | Tristan Willey | Illinois A | Washington | Win | 0 | 0 | 0 | Michigan + Toronto |
| 2015 | 7 (Prelims) | Tristan Willey | Illinois A | William and Mary | Win | 1 | 0 | 10 | Stanford B + Columbia |
| 2015 | 8 (Prelims) | Tristan Willey | Illinois A | South Carolina | Win | 2 | 0 | 20 | Maryland + NYU |
| 2015 | 9 (Prelims) | Tristan Willey | Illinois A | UCLA | Loss | 1 | 1 | 5 | McGill + WUSTL |
| 2015 | 10 (Prelims) | Tristan Willey | Illinois A | MIT A | Loss | 0 | 1 | -5 | Stanford A |
| 2015 | 11 (Prelims) | Tristan Willey | Illinois A | Notre Dame B | Win | 1 | 1 | 5 | Ottawa + Harvard |
| 2015 | 12 (Prelims) | Tristan Willey | Illinois A | Yale A | Win | 1 | 0 | 10 | UCSD A |
| 2015 | 14 (Playoffs) | Tristan Willey | Illinois A | Maryland A | Loss | 0 | 0 | 0 | Editors 1 |
| 2015 | 15 (Playoffs) | Tristan Willey | Illinois A | Chicago A | Loss | 1 | 0 | 10 | Editors 2 |
| 2015 | 16 (Playoffs) | Tristan Willey | Illinois A | Penn A | Loss | 1 | 0 | 10 | Editors 3 |
| 2015 | 17 (Playoffs) | Tristan Willey | Illinois A | Stanford B | Loss | 0 | 1 | -5 | Dartmouth |
| 2015 | 18 (Playoffs) | Tristan Willey | Illinois A | Minnesota A | Win | 0 | 0 | 0 | Editors 4 |
| 2015 | 19 (Playoffs) | Tristan Willey | Illinois A | Columbia A | Loss | 0 | 0 | 0 | Editors 5 |
| 2015 | 20 (Playoffs) | Tristan Willey | Illinois A | Michigan A | Loss | 0 | 1 | -5 | Penn B + Penn C + Kenyon |
| 2015 | 21 (Playoffs) | Tristan Willey | Illinois A | Stanford A | Loss | 0 | 0 | 0 | VCU and Berkeley |
| 2015 | 22 (Playoffs) | Tristan Willey | Illinois A | UCSD A | Loss | 2 | 0 | 20 | Editors 6 |
| 2015 | 23 (UG Finals) | Tristan Willey | Illinois A | Stanford B | Win | 0 | 0 | 0 | Editors 7 |
| 2015 | 25 (UG Finals) | Tristan Willey | Illinois A | Stanford B | Loss | 2 | 0 | 20 | Finals 2 |


New Lookup
Log Out
Customer Service
Phone Number:
613-555-0123
Shop For More Items
You have successfully completed a pick up for
Order X
Return to Main


Links
3,456
Users
123
Visitors
456K
Link Usage
789
Total Users
All Time Past week Past month Past quarter Past Year
Sales
YoY Comparison
Popular Followers
Message User
This username is available
This email is invalid
Select dropdown With options
Remember me
Yes No
Submit Cancel


Why Tech?
What lead me down this path is my deep love for coding.
I think what made developing resonate with my soul is the fact that I am a problem solver and it has definitely opened up my world up to a whole new possibility and ways in which I can also help create a solution or solutions to problems and issues.
Social Impact
I am someone that likes to get involved.
In year 10, I was elected the school council representative for my form. It was an experience I really enjoyed so I continued on in my year 11 and university too.
While in University I volunteered in a local charity shop for animals within my first two years, which I really enjoyed, and it enabled me to learn about the local community.
At the Co-op, I have been involved in a few community projects and fundraising. In 2016, I organize and lead a massive clean-up in Boggart Hole Park, which also made the local paper. I also organized a fundraising 'Charity Shop' event in 1 Angel Square which raise over £700. And in October 2016, I was part of Team Droylsden Co-op Apprenticeship challenge, where we were the winner of the ‘greatest increase in shop takings’.
I organised Christmas Jumper day last Christmas with my co-workers and was able to raise over £200 for Save the children.
Voluntary
Mentor and Organiser
I have been a mentor and organiser since January 2018.
I joined the Manchester Free Code Camp meet-up community in June 2017 and I am also one of the organiser for the community. I was invited to the join the Free Code Camp Manchester meet-up as an organiser in January 2018 due to my contribution to the group.
I am someone that likes to get involved because I have a genuine commitment to social impact, so I am also a Mentor in my free time, where I help support people new to coding and developing. It is something I enjoy and I also love mentoring those that reach out to me for help and support.
I love attending hackathons and I am very active in Manchester's Tech communities by attending various Tech Events, and I have done a few public speaking at a few events. I am also a writer, sharing my stories about how I got into Tech.


MY NAME IS JOE (1998)
A Film Review by Ted Prigge
Copyright 1999 Ted Prigge
Director: Kenneth Loach
Writer: Paul Laverty
Starring: Peter Mullan, Louise Goodall, David McKay, Anne-Marie Kennedy, David Hayman, Gary Lewis, Lorraine McIntosh
Lucky for us, "...and I'm and Alcoholic" didn't fit on the marquee, because then we may have been guaranteed another tiresome story of a man's struggle against his past cornball affliction, which it could have very well been. It also could have been yet another in a long line of UK social commentary, where the characters and everything else that possibly go into filmmaking take a distant backseat to sometimes sharp, sometimes unabashedly naive satire - basically one of my major pet peeves - but miraculously enough, social commenter Ken Loach opts to toss that in the backseat, and run away with everything else, including characterization and emotion. And thank god, because not only have we seen too much UK social commentary in the last decade to last us our entire lives, but we've not had many films that are this alive and this intelligently realistic. Love stories these days seem to follow a tiresome group of cliches, like the people in love are merely taking the appropriate steps, and trying to get from point to point without every just savoring moments like the ones here. And when "My Name is Joe" is lingering over shared moments between not only its two protagonists, but with others like a soccer team and other aquaintances of the leads, it's one of the best films of the year. It has such a natural energy to it that doesn't feel put-upon, and such a whimsical brand of charm and wit that even when it begins to look like it may fly into Mt. Cliche, it's easily forgivable because we're near sure that other great moments and scenes are going to come up and bring us back into the movie, and only a couple more times does the alcoholism and recovering from thereof come back into play, and only once in a cliched fashion (that's not a bottle in his hand, is it?!).
And without all the great stuff that Ken Loach and company bring to the film, it would have been yet another movie about a man's escape from his past, which it basically is, only here the emotions are felt and earned. Joe, the main character, is played by Peter Mullan as a energetic, un-bitter man who's had a rough life before the present, but is eager to make up for his past life and maybe even find happiness. Many of we yanks may actually recognize Mullan: he's starred in not only in Danny Boyle's "Shallow Grave" (as one of the doomed henchmen), but also in "Trainspotting" (as the bald, buff, drug dealer, Mother Superior), and here finally comes into light as a strong and wonderful actor (he's already won himself an award at Cannes, and rightfully so). He has a welcoming presence, kind of like a more appreciable Will Patton, with a deep tobacco voice and an instantly aimiable presence that makes his character effortlessly sympathetic. He wears a windbreaker and sneakers, and seems impatient and always on the move, despite the fact that he's currently jobless.
He's also the coach of a local soccer team, which he handles like a father fusses over kids, and one day when picking up one of his players, he runs into a social worker named Sarah (Louise Goodall), has a bit of a tiff with her, and runs into her later on. Pushy yet not creepily, he gives her his phone number, offering to do her wallpaper for some extra money, and is soon flirting with her and then going out on a date with her. They get alone greatly and quickly, because they've both in their own way been beat down and aren't expecting much, and are soon carrying on a relationship that makes the both of them extremely happy. These are the best parts of the film because, depsite a couple put-upon instances (she locks herself out of her house and has to stay at his house for the night...), they have a natural comedy and feel that never succumbs to cornball sentamentalism (even a scene where he tells her about why he has a Beethoven tape that opens up a deep wound feels completely and 100% real). The second half, which adds local drug dealing tension to the story, seems less real, though, and more like a need to fulfill the otherwise-goodguy-pulled-back-to-his-past formula. One of his soccer players, an otherwise superb chap named Liam (David McKay) finds he owes a good sum to a local mafiaso named McGowan (David Hayman), but can't pay it, even after his wife had tried to pay it off by dealing while he did a brief stint in jail (and ended up using a bunch of it). Feeling a father-like relationship with him, Joe goes to bat for him, and agrees to pick up two cars for McGowan filled with drugs, despite his wondering why Liam can't just do it.
Basically, it's a guess-what-happens-next rhetorical question here, but strangely enough, while the actual plot elements of Joe picking up drugs and trying to save Liam feel a touch on the fake side, the love story and the story of Joe never feel like they've been trifled with, and, in fact, they seem to only be accentuated and built upon because of them. This is because through everything, we understand Joe's character, and we can realize that despite doing otherwise stupid things, he's really trying to prove himself a good person all along, even if he can't correctly balance everything. And when the romance slowly becomes severed because of his involvement with McGowan, we feel that what's happening as a result is real, even if what has actually happened to cause the complications seem a bit fake. Even by the time he's resorted to the cliche of doing away with his alcohol aversion, we don't feel so much that a cliche has been touched upon, but that Joe himself as a character and as a person has been deeply woudned, perhaps without any hope. Frankly, despite the rampant use of cliches and contrivances, "My Name is Joe" posesses a really damn good story because it's told so well and in such an involving and unique manner.
And because Joe is seen as a good guy but with flaws (the occasional outburst of dramatics, the need to always do the right thing and be selfless, his desire to be happy, etc, etc), it's easier and much more comfortable to feel that Joe is a character worth caring about, and through most of it, he's not been destroyed by his past but by his own personality.  A subject like this is many a time more interesting than a social commentary or another recovering alcoholic story, and it's told by Loach in such an idisoyncractic way, making due notice of the foibles and characteristics of its characters, that it's almost a shame that it does introduce the McGowan subplot at all. Loach has shot it using a dark, pale tone, accentuating the more dark aspects of the film's undertones (of a plagued society - thankfully, this is left as merely an undertone), but this is not a depressing movie - it's filled with life and the cinematography only gives it a deeper feeling of naturalism, despite the fact that the stateside print of this film has been given distracting (though helpful to some - not me, though) subtitles, perhaps a result of bitches about the regional accents in such UK films as "The Full Monty" and "The Butcher Boy," which start out I thought as a joke, but then continue on, like annoying closed-captioning.
And by the end, despite a rather sobering stream of tragic events, "My Name is Joe" is less of a social commentary or a traditional story of good guys with tragic lives and more of a celebration of life, since the best moments are the moments where the characters are just being, and these moments tend to overcome the otherwise traditional moments that populate a good deal of the second half. Even the ending, which could have otherwise been maudlin and generic, seemed like an emotionally devastating blow to the head without ever going too far, and without tending to stand out as bad moves in a film which is so filled with humor and wit (the comedy in this film, including stabs at a bagpipe player and the soccer team's uniforms, peeks its head up sporadically without feeling like it was tossed in there as a break). My only wish was that this film was more affecting, and took more advantage of the naturalism that it so wonderfully displays in the less didactic scenes, which are amongst the best of the year. For a film that steers so far away from sucumbing to becoming maudlin, it'd be nice if it just went - and excuse my clumsy allusion to a recent Disney movie here - the distance.
(And yes, that's Gary Lewis, of Gary Lewis and the Playboys, as Joe's chum, Shanks).
MY RATING (out of 4): ***1/2
Homepage at: http://www.geocities.com/Hollywood/Hills/8335/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews