Gallery showing various tables possible with the {gtsummary} package. If you have created an interesting table using {gtsummary}, please submit it to the gallery via a pull request to the GitHub repository.
library(gtsummary); library(gt); library(survival)
library(dplyr); library(stringr); library(purrr); library(forcats)
Add a spanning header over the group columns for increased clarity, and modify column headers.
trial[c("trt", "age", "grade")] %>%
tbl_summary(by = trt, missing = "no") %>%
modify_header(stat_by = md("**{level}** N = {n} ({style_percent(p)}%)")) %>%
add_n() %>%
bold_labels() %>%
as_gt() %>%
tab_spanner(columns = starts_with("stat_"), md("**Chemotherapy Treatment**"))
| Characteristic1 | N | Chemotherapy Treatment | |
|---|---|---|---|
| Drug A N = 98 (49%) | Drug B N = 102 (51%) | ||
| Age, yrs | 189 | 46 (37, 59) | 48 (39, 56) |
| Grade | 200 | ||
| I | 35 (36%) | 33 (32%) | |
| II | 32 (33%) | 36 (35%) | |
| III | 31 (32%) | 33 (32%) | |
|
1
Statistics presented: median (IQR); n (%)
|
Modify the function that formats the p-values, change variable labels, updating tumor response header, and add a correction for multiple testing.
trial[!is.na(trial$response), c("response", "age", "grade")] %>%
mutate(response = factor(response, labels = c("No Tumor Response", "Tumor Responded"))) %>%
tbl_summary(
by = response,
missing = "no",
label = list(vars(age) ~ "Patient Age", vars(grade) ~ "Tumor Grade")
) %>%
add_p(pvalue_fun = partial(style_pvalue, digits = 2)) %>%
add_q()
| Characteristic1 | No Tumor Response, N = 132 | Tumor Responded, N = 61 | p-value2 | q-value3 |
|---|---|---|---|---|
| Patient Age | 46 (36, 55) | 49 (43, 59) | 0.091 | 0.18 |
| Tumor Grade | 0.93 | 0.93 | ||
| I | 46 (35%) | 21 (34%) | ||
| II | 44 (33%) | 19 (31%) | ||
| III | 42 (32%) | 21 (34%) | ||
|
1
Statistics presented: median (IQR); n (%)
2
Statistical tests performed: Wilcoxon rank-sum test; chi-square test of independence
3
False discovery rate correction for multiple testing
|
Include missing tumor response as column using fct_explicit_na()
.
trial[c("response", "age", "grade")] %>%
mutate(
response = factor(response, labels = c("No Tumor Response", "Tumor Responded")) %>%
fct_explicit_na(na_level = "Missing Response Status")
) %>%
tbl_summary(
by = response,
label = list(vars(age) ~ "Patient Age", vars(grade) ~ "Tumor Grade")
)
| Characteristic1 | No Tumor Response, N = 132 | Tumor Responded, N = 61 | Missing Response Status, N = 7 |
|---|---|---|---|
| Patient Age | 46 (36, 55) | 49 (43, 59) | 52 (44, 57) |
| Unknown | 7 | 3 | 1 |
| Tumor Grade | |||
| I | 46 (35%) | 21 (34%) | 1 (14%) |
| II | 44 (33%) | 19 (31%) | 5 (71%) |
| III | 42 (32%) | 21 (34%) | 1 (14%) |
|
1
Statistics presented: median (IQR); n (%)
|
Include number of observations and the number of events in a univariate regression table.
trial[c("response", "age", "grade")] %>%
tbl_uvregression(
method = glm,
y = response,
method.args = list(family = binomial),
exponentiate = TRUE
) %>%
add_nevent()
| Covariate | N | Event N | OR1 | 95% CI1 | p-value |
|---|---|---|---|---|---|
| Age, yrs | 183 | 58 | 1.02 | 1.00, 1.04 | 0.10 |
| Grade | 193 | 61 | |||
| I | — | — | |||
| II | 0.95 | 0.45, 2.00 | 0.9 | ||
| III | 1.10 | 0.52, 2.29 | 0.8 | ||
|
1
OR = Odds Ratio, CI = Confidence Interval
|
Include two related models side-by-side with descriptive statistics.
gt_r1 <- glm(response ~ age + trt, trial, family = binomial) %>%
tbl_regression(exponentiate = TRUE)
gt_r2 <- coxph(Surv(ttdeath, death) ~ age + trt, trial) %>%
tbl_regression(exponentiate = TRUE)
gt_t1 <- trial[c("age", "trt")] %>% tbl_summary(missing = "no") %>% add_n()
tbl_merge(
list(gt_t1, gt_r1, gt_r2),
tab_spanner = c("**Summary Statistics**", "**Tumor Response**", "**Time to Death**")
)
| Characteristic | Summary Statistics | Tumor Response | Time to Death | |||||
|---|---|---|---|---|---|---|---|---|
| N | N = 2001 | OR2 | 95% CI2 | p-value | HR2 | 95% CI2 | p-value | |
| Age, yrs | 189 | 47 (38, 57) | 1.02 | 1.00, 1.04 | 0.095 | 1.01 | 0.99, 1.02 | 0.4 |
| Chemotherapy Treatment | 200 | |||||||
| Drug A | 98 (49%) | — | — | — | — | |||
| Drug B | 102 (51%) | 1.13 | 0.60, 2.13 | 0.7 | 1.31 | 0.89, 1.93 | 0.2 | |
|
1
Statistics presented: median (IQR); n (%)
2
OR = Odds Ratio, CI = Confidence Interval, HR = Hazard Ratio
|
Include the number of events at each level of a categorical predictor.
gt_model <-
trial[c("ttdeath", "death", "stage", "grade")] %>%
tbl_uvregression(
method = coxph,
y = Surv(ttdeath, death),
exponentiate = TRUE,
hide_n = TRUE
)
gt_eventn <-
trial %>%
filter(death == 1) %>%
select(stage, grade) %>%
tbl_summary(
statistic = all_categorical() ~ "{n}",
label = list(vars(stage) ~ "T Stage", vars(grade) ~ "Grade")
) %>%
modify_header(stat_0 = md("**Event N**"))
tbl_merge(list(gt_eventn, gt_model)) %>%
bold_labels() %>%
italicize_levels() %>%
as_gt(exclude = "tab_spanner")
| Characteristic | Event N1 | HR2 | 95% CI2 | p-value |
|---|---|---|---|---|
| T Stage | ||||
| T1 | 24 | — | — | |
| T2 | 27 | 1.18 | 0.68, 2.04 | 0.6 |
| T3 | 22 | 1.23 | 0.69, 2.20 | 0.5 |
| T4 | 39 | 2.48 | 1.49, 4.14 | <0.001 |
| Grade | ||||
| I | 33 | — | — | |
| II | 36 | 1.28 | 0.80, 2.05 | 0.3 |
| III | 43 | 1.69 | 1.07, 2.66 | 0.024 |
|
1
Statistics presented: n
2
HR = Hazard Ratio, CI = Confidence Interval
|
Regression model where the covariate remains the same, and the outcome changes.
tbl_reg <-
trial[c("age", "marker", "trt")] %>%
tbl_uvregression(
method = lm,
x = trt,
show_single_row = "trt",
hide_n = TRUE
) %>%
modify_header(
label = md("**Model Outcome**"),
estimate = md("**Treatment Coef.**")
)
tbl_reg %>%
as_gt() %>%
tab_footnote(
footnote = "Values larger than 0 indicate larger values in the Drug group.",
locations = cells_column_labels(columns = vars(estimate))
)
| Model Outcome | Treatment Coef.1 | 95% CI2 | p-value |
|---|---|---|---|
| Age, yrs | 0.44 | -3.7, 4.6 | 0.8 |
| Marker Level, ng/mL | -0.20 | -0.44, 0.05 | 0.12 |
|
1
Values larger than 0 indicate larger values in the Drug group.
2
CI = Confidence Interval
|
Add descriptive statistics by treatment group to the table above to produce a table often reported two group comparisons.
gt_sum <-
trial[c("age", "marker", "trt")] %>%
mutate(trt = fct_rev(trt)) %>%
tbl_summary(by = trt,
statistic = all_continuous() ~ "{mean} ({sd})",
missing = "no") %>%
add_n() %>%
modify_header(stat_by = md("**{level}**"))
tbl_merge(list(gt_sum, tbl_reg)) %>%
modify_header(estimate_2 = md("**Difference**")) %>%
as_gt(exclude = "tab_spanner")
| Characteristic | N | Drug B1 | Drug A1 | Difference | 95% CI2 | p-value |
|---|---|---|---|---|---|---|
| Age, yrs | 189 | 47 (14) | 47 (15) | 0.44 | -3.7, 4.6 | 0.8 |
| Marker Level, ng/mL | 190 | 0.82 (0.83) | 1.02 (0.89) | -0.20 | -0.44, 0.05 | 0.12 |
|
1
Statistics presented: mean (SD)
2
CI = Confidence Interval
|


JavaScript Target
In Chrome, open the developer tools.
Refresh the page with the deve tools open to enable source maps.


REBEL WITHOUT A CAUSE (director/writer: Nicholas Ray; screenwriter: Irving Shulman/Stewart Stern/from a Nicholas Ray story; cinematographer: Ernest Haller; editor:William H. Ziegler; cast: James Dean (Jim Stark), Natalie Wood (Judy), Sal Mineo (Plato), Jim Backus (Jim's father), Corey Allen (Buzz Gunderson), Edward Platt (Ray), Dennis Hopper (Goon), Ann Doran (Jim's Mother), Marietta Canty (Plato's Nanny), Frank Mazzola (Crunch), William Hopper (Judy's Father), 1955)
Reviewed by Dennis Schwartz
By the time this film was released, James Dean, the idolized 24-year-old star of the film and soon-to-be eternal movie-cult icon for all generations of estranged youth, had died in a head-on car collision on September 30, 1955, shortly before this film was released. Coincidentally, one of the themes of the film, is playing 'chickie run', that is the cars race to a bluff and the first to jump before going over the cliff, is a chicken. Everyone knows how bad it is to be called a chicken--it could mess up one's self-image worst than the wind can mess up a ducktail haircut for a teenager in the 1950s--as this liberal-inspired social commentary film plunges right into that 1950s Eisenhower era mind-set, without trepidation.
Nicholas Ray's teenage angst film about rich, postwar, suburban L.A., juvenile delinquents who are alienated and can't cope with their disturbing home life, is arguably the best rebellious youth film of the 1950s and though dated, it still plays well today because the issues facing the teenagers haven't changed that much. It was based on an actual case study of a teenage delinquent. It's a film that sympathetically sides with the rebellious youths and their befuddled parents, and it doesn't even demonize the police. It airs out the prevalent problems of the mid-'50s for these youngsters; such as, loneliness, alienation, lack of love, fitting in with their peers, their identity crises, and the lack of communication with their folks. It also hints about a troubled youth, Plato, played with delicacy by Sal Mineo, whose problem is that he is gay in a time and place where no one talked about such things or knew what to say about it. Though, the film stresses that his loneliness problem stems from no father at home and no mother there to console him and tries to make his withdrawal the problem rather than his homosexuality, yet there are strong hints that he is still in-the-closet about his sexual choice. In his high school locker, there is a glossy fan photo of Alan Ladd pasted on it. He also seems to be attracted to Dean in a physical way, though the film tries to make it seem that he mostly wants to induce Dean into being his surrogate father.
The three main stars of the film, cross paths in the opening scene, in the police station, which is just the right place for the mixed-up innocents to meet.  He has just moved here and has no friends. He is visibly upset that his crone-like mother (Doran) and gutless father (Backus), who are always quarreling, are still arguing in the police station. He feels that they are not listening to him and that his bumbling father is not a good role model. When questioned by the youth officer, Ray (Edward Platt), who uses the kindly social worker approach in dealing with the young offenders, Jimmy tells him the truth about his problems and seems to form a positive relationship with him (I couldn't help laughing at that scene and how punky Dean seemed). Judy (Wood) has been picked up wandering the streets, mistaken for a prostitute, and tells Ray the reason for that, is that her father (William Hopper) called her a dirty tramp. She can't get her father to offer her fatherly love, as he seems to be repelled by her. The officer calls home and gets her mother to take her home, when she wanted her father to be the one to come for her. The third innocent, is John Crawford, who goes by the nickname Plato (you know, like the philosopher). He is being looked after by his black nanny (Canty), who can't control him. He is at the station because he used his mother's gun to shoot puppies, seemingly upset because his mother was not there for his birthday. Another officer than Ray, who had been handling his case, recommends that his nanny tell his mother to get Plato a psychiatrist.
The film takes place over one long 24-hour period of delirious activity, starting on an Easter night in the police station and ending the next night with police surrounding the planetarium, where the same three principals from the opening scene at the police station are now at, but are now in more serious trouble.
Jimmy is naturally nervous about going to his new school the next morning, but he is not concerned about teachers or subjects, but about making new friends. He is attracted to Judy, but she rebuffs him for the crew she stays with, that is a gang of ruffians, led by her leather-jacketed boyfriend Buzz (Corey Allen).  Supposedly, they will later on go on to become what middle America is about, reflecting dearly on the values it grew up with and pining for those "good old days" of Eisenhower laissez-faire policies.
Jimmy's first contact with them is at the school visit to the nearby D.W. Griffith Planetarium, and it results in taunting and confrontation outside the building. He is dressed for school in a suit and tie, while Plato is dressed in a sweater and tie. They are not looking for trouble, in fact, he is trying his best to avoid it. But Jimmy is hung-up on being called a chicken, afraid that he will become like his father if he doesn't respond. He thinks his dad should have answered his harping mother back a long time ago.  The fight is broken up by a security guard, but a 'chickie run' is arranged for that night.
At home, Jimmy tries to tell his father what is going on, why he is bleeding, by asking his father to tell him what to do about a matter of honor. Mr. Stark is ironically dressed in an apron and can't directly answer his son's question: "What do you have to do to be a man?"
The rest of the night turns into a Shakespearian tragedy, as Jimmy bails out in the nick of time during the 'chickie run', but Buzz's jacket gets stuck in the car door and he goes over the cliff. Judy gets a ride home with Jimmy and she becomes his new girlfriend, just like that. At home, Jimmy tells his parents that he wants to go to the police station and tell them what happened, but they try to talk him out of that. He then runs out of the house but has no luck getting the police to listen to his story, as Ray is not there. Crunch (Mazzola) and the rest of the gang, who were called into the station for questioning, decide that he has squealed to the police on them and go after him.
Jim finds Judy and they go to a deserted mansion that Plato told him about, that is near the planetarium. Plato will join them there later, bringing his mother's gun along for protection, after he was visited by the gang and roughed up. They become like an alternative nuclear family, the one they were searching for in their own homes.
They find some peace during the later hours of the night. But their happiness is short-lived, as Crunch and the boys find them in the mansion and Plato wounds Crunch who is coming after him. He then runs to the planetarium to escape the rest of the gang. With the police surrounding the planetarium, Jim and Judy run into the place to talk Plato into peacefully giving up. But despite Jim's efforts, the ill-fated Plato panics and is shot down by the police, as he tries to run, frightened by the glare of the police lights. After the incident, Jim's father reconciles with his son, telling him they will face the world together from now on, that you tried to help Plato, but it's not your fault, you did all that you could do, that any man can do. The picture ends as the light of dawn is barely breaking through the darkness and an unidentified man (Nicholas Ray) is walking up the steps of the planetarium.
For all its aging and the changing mores of the times and the ever-increasing complexities of modern youth, this creaky film still has a rawness about it, something that is intangible, that gets into your spine and brings out a chill or two, that tells you this dramatization was real.
REVIEWED ON 4/15/2000 GRADE: B+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Wash hands often with soap and water especially after using the bathroom, before eating and if hands are dirty.


Zipping things together with Enumerable#zip
like a zipper
👻 31 October 2015 🎃
From the Ruby docs:
Function syntax:
zip(arg, ...) → an_array_of_array zip(arg, ...) { |arr| block } → nilTakes one element from enum and merges corresponding elements from each args. This generates a sequence of n-element arrays, where n is one more than the count of arguments. The length of the resulting sequence will be enum#size. If the size of any argument is less than enum#size, nil values are supplied. If a block is given, it is invoked for each output array, otherwise an array of arrays is returned.
Example 1:
a = [ 4, 5, 6 ] b = [ 7, 8, 9 ] a.zip(b) #=> [[4, 7], [5, 8], [6, 9]] [1,2,3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]] [1,2].zip(a,b) #=> [[1, 4, 7], [2, 5, 8]] a.zip([1,2],[8]) #=> [[4, 1, 8], [5, 2, nil], [6, nil, nil]]
We can figure out what this means by following the order Ruby follows when executing the function call on line 4:
- Take the first element from array
b
and place it in a new array one element after the first element in arraya
- Take the second element from array
b
and place it in a new array one element after the second element in arraya
- Take the third element from array
b
and place it in a new array one element after the third element in arraya
Makes sense, right? The zip
function is doing what an actual zipper would do: put two sides together by putting an item from one side of the zipper behind an item from the other side until the zipper is closed.
The only difference with zip
is that we can have as many arrays "zipped" with the base array as we want.
Example 2:
a = [ 4, 5, 6 ] b = [ 7, 8, 9 ] c = [ 10, 11, 12 ] d = [ 13, 14, 15 ] p a.zip(b, c, d)
Which returns:
[[4, 7, 10, 13], [5, 8, 11, 14], [6, 9, 12, 15]]
zip
took every element in arrays b
, c
, and d
and placed them in a new array behind the element with the same index in array a
.
We can also, as shown in the function syntax, specify a block of code for Ruby to execute after it's finished zipping together an array.
Example 3:
a = [ 4, 5, 6 ] b = [ 7, 8, 9 ] c = [ 10, 11, 12 ] d = [ 13, 14, 15 ] a.zip(b, c, d) {|zipped_array| puts zipped_array.object_id}
Which returns:
70367020471620<PHONE_NUMBER>9820<PHONE_NUMBER>9620
zip
did the same thing as shown in Example 2, but instead of returning the arrays, the code in-between the { }
was executed, which was to print the object_id
of each zipped array. One way to think about it is that it's similar to select
, except instead of transforming items from a single array, it works on multiple arrays at once.
I'll leave you with a more practical example that shows why zip
is a powerful, yet simple way of combining multiple arrays in order behind an existing array.
Example 4:
a = [ 1, 2, 3 ] b = [ "Archer", "Lana", "Kreiger" ] p a.zip(b)
Which returns:
[[1, "Archer"], [2, "Lana"], [3, "Kreiger"]]


Before Change
// Since we already have the values of base_config we check against them
if (base_config[key] is not None and
type(base_config[key]) is not type(value)):
raise ValueError(
"Incorrect type "{}" for key "{}". Must be "{}"".format(
type(value), key, type(base_config[key])))
After Change
basestring = str
// Since we already have the values of base_config we check against them
if (base_config[key] is not None and
not isinstance(value, type(base_config[key])) and
// For Python2 compatibility. We don"t want to throw an error when
// both are basestrings (e.g. unicode and str).
not isinstance(value, basestring) and


Texting has paved the way to AI in HR
Texting has paved the way for artificial intelligence, and HR should get on board.
Texting isn’t new by any stretch of the imagination. As a communication medium that has been around for more than 20 years, it has just begun to hit its stride in the past few years. Widespread, generally free, real-time and with incredible reach, texting and messaging has become a central component if not a driving force in human interaction.
But the real question … do you really know who or what you are talking to? The separation between human communication and the familiarity and trust placed on what is effectively anonymous written communication has narrowed to the point that conditions are now ideal for the introduction and mass adoption of artificial intelligence driven digital communications.
Texting is pervasive.
97% of americans text or message at least once a day Pew Research Center while people worldwide will send 8.3 Trillion messages this year … nearly 16 million messages per minute, making it the most common cell phone activity by far. 55% of heavy text message users (50+ per day) would rather receive a text than a phone call Pew Research Center. In all of this, how easy is it really to differentiate between a human and machine at the other end of the conversation? In five years or less, you may not be able to tell the difference.
Similarly, the candidate callback program is nothing new. With the growth of technology, candidate callbacks began to first decline in the mid ‘90’s, despite evidence of their efficacy. The reason? Volume. With the advent of internet and digital applications, it is simply unreasonable to call all candidates back, even after an interview and especially if they are not selected. Or is it?
The majority of callback programs are vehemently disliked by the recruiting staff … regardless of what they may claim in team discussions. But let’s have a look at the numbers. In the U.S. we ended 2017 with around 5.5 million hires per month and 5.2 million separations. Read the Labor Report We’ll use Glassdoor’s 250 resumes per job average as well as their estimation that only 2% are called in for an interview. Those number suggest that there every month there are about 1.375 Billion applications submitted (people obviously apply to more than one job). Of those, around 275 Million are invited for an interview and 5.5 Million are hired.
If we translate that for the average midsize company that hires say 1,000 employees per year, with a team of 5 recruiters, that equals around 5 hours per workday of call time if you were to reach back out to just the applicants that interviewed.
So this brings us to the first role of artificial intelligence in HR. Much of current discusison around AI in HR is focused on selection … but few hiring managers appear to be ready to embrace AI in their talent selection process, given some of the unknowns regarding selection bias and regulatory oversight. Candidate callbacks, then become a prime avenue for both improved outcomes and cost savings. In the emerging era of value-based service, this is the kind of use-case for which HR professionals have been searching.
And the world is ready for it.
People are tuning in to communications technologies at an ever-expanding level.
Some recent indicators:
- Nearly 20 million of the 225 million Twitter users follow 60 or more Twitter accounts and nearly 2 million follow more than 500 accounts.
- There are more than 800 million people now signed up for the social network Facebook; they spend 700 billion minutes using Facebook each month, and they install more than 20 million apps every day.
- Facebook users had uploaded more than 100 billion photos by mid-2011.
- YouTube users upload 60 hours of video per minute and they triggered more than 1 trillion playbacks in 2011 – roughly 140 video views per person on earth.
What if we tap into the power of texting … mobile communication and AI … to bring efficacy to applicant and candidate communications. We have at our disposal, not just messaging, but video, voice, alerts, prompts, vibrations … and so much more … all customizable for a specific candidate at a specific time, location and for a specific purpose. AI driven communications do not need to be inhuman at all, rather, AI techniques provide an opportunity to enhance HR communications both before and after the hire.
Undoubtedly, regulation has slowed the adoption of social strategies in HR, but more than federal and state regulation is a simpler lack of understanding of mobile communication options. Opt-ins, alerts, and push notifications are common functions of messaging applications, as is anonymity and data security. Notifications, prompts or even targeted communications can take advantage of peer to peer (device to device) communications or be delivered without revealing sensitive information about the candidate, and delivered only to the party directed.
The challenge has been implementing these types of solutions at scale and with a high degree of customization and responsiveness. Programmatic solutions combined with deep learning techniques provide powerful options for recruites and HR to stay and get back in touch via the mobile world.
You’re probably missing huge amounts of meaningful and available data
Behind the huge volume of HR-relevant information available online sits an even broader data pool. Piecing together the different sites a candidate is visiting combined (including the company’s website) with offline data (like the application), as well as demographic and geographic details, can present a far richer picture for recruiters in terms of what information an individual candidate might find most useful at each stage during their recruiting and onboarding journey. As an efficient technology, programmatic has proved itself adept at translating data from multiple sources into actionable insights, getting the right info to the right individual more quickly, while maintaining appropriate levels of privacy.
While the benefits of programmatic advertising in recruiting are becoming clearer, the issue of maintaining regulatory compliance remains all-important.
There are longstanding Labor guidelines in place that digital marketers must observe in all recruiting engagement. However, the Network Advertising Initiative went further on programmatic, issuing specific guidance to help advertisers succeed in this environment. This includes a usage and consent framework for data derived from sensitive sources, as well as all other data sources, including data collected by publishers.
We can Augment your efforts to get you up to speed quickly
Our process is simple from an execution standpoint. We partner with recruiters and HR professionals to craft and execute communication “prescriptions”. Candidate agreement is obtained up-front, along with their preferred contact methods, frequency and restrictions. These prescribed conversations can begin as soon as the candidate leaves the website, or be tied to events such as the interview and can include a vast variety of alerts, notices and communications across platforms to optimize applicant nurturing and talent management, and to facilitate eventual onboarding, or an ongoing relationship for when a suitable job is open.
Modern marketing technologies have never been a more powerful support for human resources, and with careful management, can help cut through the clutter of bad data and improve candidate and employee engagement.


My name is David & I am a full-stack developer.
I like making websites and apps that are elegant, effective, and clean - both on the inside and outside. I'm into playful design and serious logic, and the seamless product of the two. Everything is just a part of a whole - this is how I approach all of my work in this world. The internet is a world unto itself, an endless unnamed space ready to be made into places.
Try new things & learn them well.
I believe in flexiblity, experimentation, and learning from failure, but also in practice and fluency.
These days I am most excited about React, React Native, and Meteor. I have experience in both Mongo and MySql, as well as Express and Node. I really like writing my own HTML and CSS, but I also enjoy working with Bootstrap and Materialize. I think a lot about design and UX, how a product looks and feels. Working from both the front and the back at once, I think good code is ultimately greater than the sum of its parts.
Take a look at some projects I've been working on.
FlatFinder
FlatFinder is an app I am currently building with Meteor and React Native. It helps future roommates find the house of their (mutual) dreams. After averaging out everyone's preferences, FlatFinder gives all parties the same feed of listings. Everyone swipes to like or dislike each listing, and the listings that have been liked by everyone are made easily accessible. From there, in-app features such as chat and calendar synchronization helps the future roommates coordinate themselves to see the place and sign the lease.
Beta version coming soon!
Locale
Locale is an app that allows users to earn 'locale points' by using and sharing local businesses. A user can use the app to find any food or service they are looking for in their area, but the only results they get are small, local businesses. When they check in at the business, or share it on social media, they earn a point. Locale points unlock rewards and discounts, and are used on the Community Scoreboard to determine a ranking of how 'local' all the users in the area are. Local businesses are prioritized and get free ads, while users get rewards, have fun, and can see how 'local' they really are.
Locale Beta
Pillr
Pillr is made for both an aging population and the distracted one. Users enter their prescription information, and are reminded to take each of their medicines at the right time. Users can track prescription info, such as amount of days until they need a new refill, doctor's directions, etc. In addition, Pillr checks for any interactions between your prescriptions, and alerts you if any are found. We wanted to make something that can help patients stay healthy, and help doctors and nurses keep them healthy. Pillr makes it easy to email, print, or share the user's prescription list with their healthcare provider, providing them with all the relevant information they might need.
Let's get in touch!
I want to build beautiful things with kind people who are committed to integrity and making products that users will love. I'm always looking to collaborate and talk, and also appreciate freelance or work inquiries. You can reach me at:
In addition, feel free to download my resume.


|
|
Defines | |
| #define | FASTFORMAT_INIT_RC_SUCCESS (0) |
| Specifies that the operation completed successfully. | |
| #define | FASTFORMAT_INIT_RC_OUT_OF_MEMORY (-1) |
| Specifies that the operation failed due to memory exhaustion. | |
| #define | FASTFORMAT_INIT_RC_UNSPECIFIED_EXCEPTION (-2) |
| Specifies that the operation failed because a general, standard-derived, exception was thrown. | |
| #define | FASTFORMAT_INIT_RC_UNKNOWN_ERROR (-3) |
| Specifies that the operation failed because a bespoke, non-standard-derived, exception was thrown. | |
| #define | FASTFORMAT_INIT_RC_UNSPECIFIED_ERROR (-4) |
| Specifies that the operation failed in an unspecified manner. | |
| #define | FASTFORMAT_INIT_RC_NOT_IMPLEMENTED (-5) |
| Specifies that the operation failed because it is not implemented. | |
| #define | FASTFORMAT_INIT_RC_CANNOT_CREATE_TSS_INDEX (-6) |
| Specifies that the operation failed because a Thread-Specific Storage key could not be created. | |
| #define | FASTFORMAT_INIT_RC_CANNOT_CREATE_THREAD (-7) |
| Specifies that the operation failed because a thread could not be created. |
| #define FASTFORMAT_INIT_RC_CANNOT_CREATE_THREAD (-7) |
Specifies that the operation failed because a thread could not be created.
| #define FASTFORMAT_INIT_RC_CANNOT_CREATE_TSS_INDEX (-6) |
Specifies that the operation failed because a Thread-Specific Storage key could not be created.
| #define FASTFORMAT_INIT_RC_NOT_IMPLEMENTED (-5) |
Specifies that the operation failed because it is not implemented.
| #define FASTFORMAT_INIT_RC_OUT_OF_MEMORY (-1) |
Specifies that the operation failed due to memory exhaustion.
| #define FASTFORMAT_INIT_RC_SUCCESS (0) |
Specifies that the operation completed successfully.
| #define FASTFORMAT_INIT_RC_UNKNOWN_ERROR (-3) |
Specifies that the operation failed because a bespoke, non-standard-derived, exception was thrown.
| #define FASTFORMAT_INIT_RC_UNSPECIFIED_ERROR (-4) |
Specifies that the operation failed in an unspecified manner.
| #define FASTFORMAT_INIT_RC_UNSPECIFIED_EXCEPTION (-2) |
Specifies that the operation failed because a general, standard-derived, exception was thrown.
|
|
|
| FastFormat Library documentation © Matthew Wilson, 2006-2012 |


Welcome to Your NBA Players App!
Add Basketball Player
Show List of NBA Players
Get NBA Player By Team
Get NBA Player By Name
Where Amazing Happens


{% extends "base.html" %} {% block head %}
Our Mission is to cultivate an inclusive, creative, and entrepreneurial community that seeks to empower students to develop open-source solutions to real-world problems.
RCOS is a group of RPI students who work on open source projects. Our members work on a variety of projects, which can be seen on the projects page. To see the presentation schedule look check the calendar.
Come talk with us and keep up with important announcements in the official RCOS Mattermost.
Talk with us!The official RCOS wiki full of the knowledge of our members. Add what you know to help others!
View WikiObservatory-New version: {{ version }}
Sponsor logos By Source, Fair Use courtesy of WikiPedia
{% endblock %}


Web Latency Benchmark
Running tests... Press Esc to abort.
Tests complete. Overall score
out of 10 (higher is better).


Examples are not compiled so they consist of many files which is a good thing. For production all scripts and styles are compiled with an unbeatable level of compression automatically. See also Google Closure demos.


@@include('./components/news.html')
@@include('./components/getting_started.html')
@@include('./components/prerequisites.html')
@@include('./components/installing.html')
@@include('./components/demos/index.html')
@@include('./components/usage.html')
@@include('./components/explanation.html')
@@include('./components/options/index.html')
@@include('./components/api/index.html')
@@include('./components/changelog.html')
@@include('./components/credits.html')
@@include('./components/donations.html')


This man married Louise Gilbert and moved to Africa when she was asked
to return to the University of Boutari to take a gorilla census. Before
that, he had climbed Mt. Everest, rode elephants in India during hunting
safaris, assisted Winston Churchill in diplomatic matters, and won a
medal in the Pillsbury bakeoff, but he is perhaps best known for his
years of service in Beaver Falls at the Owens residence. FTP, who is
this character, created by Gwen Davenport, played by Christopher
Hewitt in an ABC sitcom from 1985-1990?
Answer: Mr. Lynn Aloysius _Belvedere_


Before saving, give more details about the failure in the notes section.
{{vehicleTest.testTypeName}}
{{section.sectionName.toUpperCase()}}
Certificate number must be 6 digits.
{{vehicle.techRecord.vehicleType === vehicleTypes.HGV ?
tirCertificateNumberPrefixes.GB_V : tirCertificateNumberPrefixes.GB_T}}
Certificate number must be 5 digits.
DEFECTS
{{ defect.imNumber }}.{{ defect.itemNumber }}
({{ defect.deficiencyId }})
({{ defect.deficiencySubId }})
{{ defect.deficiencyCategory }}
PRS
{{ defect.imNumber }}. {{ defect.imDescription}}
{{ defect.itemNumber }}. {{ defect.itemDescription }}
({{ defect.deficiencyId }})
({{ defect.deficiencySubId }})
{{ defect.deficiencyText }}
DEFECTS
NOTES
(REQUIRED)
Notes will be printed on the certificate.
PROHIBITION
Issued in Mobile Compliance


[
next
] [
prev
] [
prev-tail
] [
tail
] [
up
]
7
Misc content
7.1
Nonlinear process
7.2
Aliasing errors
7.3
Relation between Fourier series coeﬃcients and DFTs
[
next
] [
prev
] [
prev-tail
] [
front
] [
up
]


---
title: National Day Of Civic Hacking
permalink: "/ndoch/"
layout: page
type: hidden
---
The National Day of Civic Hacking brings together people who care about their communities to tackle big problems. This year's theme is "local" - which means that we're looking for Bostonians to bring their concerns and ideas about our own city on September 23rd. Got an idea? Get in touch at<EMAIL_ADDRESS>When: Sept. 23, 2017 11am - 6pm Where: TBD Anyone and everyone can participate! Typically, we see a mix of interests and skills represented, including those who work in technology like developers, designers, and data scientists, and those who are engaged in civic life, like journalists and community activists. We've got some tips on how to frame a project proposal here. Last year's event explored issues around housing, transportation, open data, and the environment, together with the state IT department MassIT. Some examples of past projects:
Event Details
FAQs
Who can participate in the NDoCH?
What kinds of projects are a good fit for NDoCH?
Good question! To us, hacking doesn't just mean coding (our name notwithstanding). It means the whole process of making something that changes how the world works. It also means an ethos of scrappiness, creativity, and drive. Civic hackers are people who use whatever they have on hand - tools, skills, knowledge, relationships - to make things that improve civic life. If that sounds like you, you are welcome here.


# This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. from __future__ import absolute_import, division, print_function import collections import itertools import re from ._structures import Infinity __all__ = [ "parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN" ] _Version = collections.namedtuple( "_Version", ["epoch", "release", "dev", "pre", "post", "local"], ) def parse(version): """ Parse the given version string and return either a :class:`Version` object or a :class:`LegacyVersion` object depending on if the given version is a valid PEP 440 version or a legacy version. """ try: return Version(version) except InvalidVersion: return LegacyVersion(version) class InvalidVersion(ValueError): """ An invalid version was found, users should refer to PEP 440. """ class _BaseVersion(object): def __hash__(self): return hash(self._key) def __lt__(self, other): return self._compare(other, lambda s, o: s < o) def __le__(self, other): return self._compare(other, lambda s, o: s <= o) def __eq__(self, other): return self._compare(other, lambda s, o: s == o) def __ge__(self, other): return self._compare(other, lambda s, o: s >= o) def __gt__(self, other): return self._compare(other, lambda s, o: s > o) def __ne__(self, other): return self._compare(other, lambda s, o: s != o) def _compare(self, other, method): if not isinstance(other, _BaseVersion): return NotImplemented return method(self._key, other._key) class LegacyVersion(_BaseVersion): def __init__(self, version): self._version = str(version) self._key = _legacy_cmpkey(self._version) def __str__(self): return self._version def __repr__(self): return "<LegacyVersion({0})>".format(repr(str(self))) @property def public(self): return self._version @property def base_version(self): return self._version @property def local(self): return None @property def is_prerelease(self): return False @property def is_postrelease(self): return False _legacy_version_component_re = re.compile( r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE, ) _legacy_version_replacement_map = { "pre": "c", "preview": "c", "-": "final-", "rc": "c", "dev": "@", } def _parse_version_parts(s): for part in _legacy_version_component_re.split(s): part = _legacy_version_replacement_map.get(part, part) if not part or part == ".": continue if part[:1] in "0123456789": # pad for numeric comparison yield part.zfill(8) else: yield "*" + part # ensure that alpha/beta/candidate are before final yield "*final" def _legacy_cmpkey(version): # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch # greater than or equal to 0. This will effectively put the LegacyVersion, # which uses the defacto standard originally implemented by setuptools, # as before all PEP 440 versions. epoch = -1 # This scheme is taken from pkg_resources.parse_version setuptools prior to # it's adoption of the packaging library. parts = [] for part in _parse_version_parts(version.lower()): if part.startswith("*"): # remove "-" before a prerelease tag if part < "*final": while parts and parts[-1] == "*final-": parts.pop() # remove trailing zeros from each series of numeric parts while parts and parts[-1] == "00000000": parts.pop() parts.append(part) parts = tuple(parts) return epoch, parts # Deliberately not anchored to the start and end of the string, to make it # easier for 3rd party code to reuse VERSION_PATTERN = r""" v? (?: (?:(?P<epoch>[0-9]+)!)? # epoch (?P<release>[0-9]+(?:\.[0-9]+)*) # release segment (?P<pre> # pre-release [-_\.]? (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview)) [-_\.]? (?P<pre_n>[0-9]+)? )? (?P<post> # post release (?:-(?P<post_n1>[0-9]+)) | (?: [-_\.]? (?P<post_l>post|rev|r) [-_\.]? (?P<post_n2>[0-9]+)? ) )? (?P<dev> # dev release [-_\.]? (?P<dev_l>dev) [-_\.]? (?P<dev_n>[0-9]+)? )? ) (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version """ class Version(_BaseVersion): _regex = re.compile( r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE, ) def __init__(self, version): # Validate the version and parse it into pieces match = self._regex.search(version) if not match: raise InvalidVersion("Invalid version: '{0}'".format(version)) # Store the parsed out pieces of the version self._version = _Version( epoch=int(match.group("epoch")) if match.group("epoch") else 0, release=tuple(int(i) for i in match.group("release").split(".")), pre=_parse_letter_version( match.group("pre_l"), match.group("pre_n"), ), post=_parse_letter_version( match.group("post_l"), match.group("post_n1") or match.group("post_n2"), ), dev=_parse_letter_version( match.group("dev_l"), match.group("dev_n"), ), local=_parse_local_version(match.group("local")), ) # Generate a key which will be used for sorting self._key = _cmpkey( self._version.epoch, self._version.release, self._version.pre, self._version.post, self._version.dev, self._version.local, ) def __repr__(self): return "<Version({0})>".format(repr(str(self))) def __str__(self): parts = [] # Epoch if self._version.epoch != 0: parts.append("{0}!".format(self._version.epoch)) # Release segment parts.append(".".join(str(x) for x in self._version.release)) # Pre-release if self._version.pre is not None: parts.append("".join(str(x) for x in self._version.pre)) # Post-release if self._version.post is not None: parts.append(".post{0}".format(self._version.post[1])) # Development release if self._version.dev is not None: parts.append(".dev{0}".format(self._version.dev[1])) # Local version segment if self._version.local is not None: parts.append( "+{0}".format(".".join(str(x) for x in self._version.local)) ) return "".join(parts) @property def public(self): return str(self).split("+", 1)[0] @property def base_version(self): parts = [] # Epoch if self._version.epoch != 0: parts.append("{0}!".format(self._version.epoch)) # Release segment parts.append(".".join(str(x) for x in self._version.release)) return "".join(parts) @property def local(self): version_string = str(self) if "+" in version_string: return version_string.split("+", 1)[1] @property def is_prerelease(self): return bool(self._version.dev or self._version.pre) @property def is_postrelease(self): return bool(self._version.post) def _parse_letter_version(letter, number): if letter: # We consider there to be an implicit 0 in a pre-release if there is # not a numeral associated with it. if number is None: number = 0 # We normalize any letters to their lower case form letter = letter.lower() # We consider some words to be alternate spellings of other words and # in those cases we want to normalize the spellings to our preferred # spelling. if letter == "alpha": letter = "a" elif letter == "beta": letter = "b" elif letter in ["c", "pre", "preview"]: letter = "rc" elif letter in ["rev", "r"]: letter = "post" return letter, int(number) if not letter and number: # We assume if we are given a number, but we are not given a letter # then this is using the implicit post release syntax (e.g. 1.0-1) letter = "post" return letter, int(number) _local_version_seperators = re.compile(r"[\._-]") def _parse_local_version(local): """ Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve"). """ if local is not None: return tuple( part.lower() if not part.isdigit() else int(part) for part in _local_version_seperators.split(local) ) def _cmpkey(epoch, release, pre, post, dev, local): # When we compare a release version, we want to compare it with all of the # trailing zeros removed. So we'll use a reverse the list, drop all the now # leading zeros until we come to something non zero, then take the rest # re-reverse it back into the correct order and make it a tuple and use # that for our sorting key. release = tuple( reversed(list( itertools.dropwhile( lambda x: x == 0, reversed(release), ) )) ) # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0. # We'll do this by abusing the pre segment, but we _only_ want to do this # if there is not a pre or a post segment. If we have one of those then # the normal sorting rules will handle this case correctly. if pre is None and post is None and dev is not None: pre = -Infinity # Versions without a pre-release (except as noted above) should sort after # those with one. elif pre is None: pre = Infinity # Versions without a post segment should sort before those with one. if post is None: post = -Infinity # Versions without a development segment should sort after those with one. if dev is None: dev = Infinity if local is None: # Versions without a local segment should sort before those with one. local = -Infinity else: # Versions with a local segment need that segment parsed to implement # the sorting rules in PEP440. # - Alpha numeric segments sort before numeric segments # - Alpha numeric segments sort lexicographically # - Numeric segments sort numerically # - Shorter versions sort before longer versions when the prefixes # match exactly local = tuple( (i, "") if isinstance(i, int) else (-Infinity, i) for i in local ) return epoch, release, pre, post, dev, local


this is your admin page
| Brand | Model | Description | Location | Price for a day | Action | |
|---|---|---|---|---|---|---|
|
Update
Delete |
if you want to update or delete the location, move your cars to another department first
| City | Address | Phone number | Cars | Action |
|---|---|---|---|---|
|
Update
Delete |
| User | Car | Rent date | Return date | Rent location | Return location | Price |
|---|---|---|---|---|---|---|
| User | Car | Rent date | Return date | Rent location | Return location | Price |
|---|---|---|---|---|---|---|
| User | Car | Rent date | Return date | Rent location | Return location | Price |
|---|---|---|---|---|---|---|


Hello everyone,
I have been browsing the forums for a while now, trying to find an answer to an issue I am having with a arduino shield, one emontx and one rpi module.
I have set up all three boards, and the emontx+rpi module are working great. values are correct, and it is showing 0W with no load.
However, today I soldered the emontx shield for an arduino uno, and all the CT-s are showing 80-90W of base power. Connecting some load works, but i am uncertain of why the shield shows 80-90W on an empty curcuit, but the emontx module shows the same as 0W.
I have found references to this "background noice" on the forums, but not how to correct for it. I could have accepted this as "normal", but since the emontx is not having the problems, I am sceptical.
I have now hardcoded a -88W adjustment in the code until I figure out what this is.
if (CT1) {
emontx.power1 = ct1.calcIrms(1480) * 240.0 - 88;
Serial.print("ct1: ");
Serial.print(ct1.calcIrms(1480));
Serial.print("A/");
Serial.print(emontx.power1);
Serial.println("W");
}
See screenshots:
http://i.imgur.com/czPFeMf.png
Output from my modified sketch.
http://i.imgur.com/B93Q54P.png
ct1-2-3 and bv are the emontx module, ct4-7 are CT1-4 on the arduino shield. as you can see the ct2 is at 0W, but ct4-7 are all ~80W
Thank you in advance,
Jon
Re: Question about background noise of ~80W
80 W does sound rather high, but you don't say what your full-scale power is. The software is rectifying everything the input sees and presenting it as a current. If the input is biased so that the quiescent level is exactly in the middle of an ADC step, nothing will be registered until there is enough input to cross into an adjacent step. If however the input is biased so that the quiescent level is exactly on the edge of an ADC step, then the slightest whiff of noise will cause it to cross and register a current. Where the quiescent level sits depends on the tolerances of the bias chain resistors.
It has been suggested that a small capacitor from the processor input pin to ground will reduce the effect of noise.
I think you have been exceptionally lucky with the emonTx. It is normal to see up to about 20 W (less if the voltage input is used and real power is calculated) with a full-scale of 24 kW, so it's actually about 0.1% of the maximum reading, which considering the ADC is only 10 bits, is really quite good performance.
There a page in Building Blocks about this.
Re: Question about background noise of ~80W
Hi Robert,
Thank you for the reply. I tried moving the the shield+dino around in my house for a bit, and found that it fluctuates between 40-90W. I will try to insulate the shield a bit to see if i can reduce the readings.
I will try to make a breadboard where I 1) try the capacitor tip, and 2) see if the arduino actually is causing some of this noise. Since I will not be measuring more than 32A, I could try another SCT if I can get hold of one.
Thanks for the tip about the article in building blocks, I cannot believe I missed that one.
/Jon


Copy the webchat_client.js file from the dist folder to your static directory and add the following code
The style parameter can take two options: 0 for popup and 1 for slide


$def with (QUIT)
Try to answer the following questions correctly and quickly. Press the button to proceed and to send input from the text field that will appear. You can also press 'Enter' to send input from the text field. You can quit and show your score by typing '$(QUIT)' into the field.


Food Khan is a restaurant, bar and coffee roastery located on a busy corner site in Farringdon's Exmouth Market. With glazed frontage on two sides of the building, overlooking the market and a bustling London inteon.
delivery order num.
123-59794069Chef Officer
food item
Food Khan is a gret Restaurant from the University of Texas at Austin has been researching the benefits of frequent testing and the feedback leads to. He explains that in the history of the study.
Food Khan is a gret Restaurant from the University of Texas at Austin has been researching the benefits of frequent testing and the feedback leads to. He explains that in the history of the study.
Food Khan is a gret Restaurant from the University of Texas at Austin has been researching the benefits of frequent testing and the feedback leads to. He explains that in the history of the study.
Food Khan is a gret Restaurant from the University of Texas at Austin has been researching the benefits of frequent testing and the feedback leads to. He explains that in the history of the study.
Food Khan is a gret Restaurant from the University of Texas at Austin has been researching the benefits of frequent testing and the feedback leads to. He explains that in the history of the study.
Food Khan is a gret Restaurant from the University of Texas at Austin has been researching the benefits of frequent testing and the feedback leads to. He explains that in the history of the study.


Lawn mowing -- Whether your lawn is in the need of a simple trim, or a long-needed re-envisioning, we provide the manicure your lawn requires.
Fertilizer and weed control -- Surpassing a simple lawn-mowing service, we also can provide fertizlizer and weed control to keep your lawn looking consistent and the right shade of green.
Lawn aeration -- Some areas of Indiana are plagued with too compact of soil. To alleviate this, we can also provide soil aeration, allowing air, water, and soil to reach the grass roots. This provides a thick, luscious lawn where there hasn't been one before.
Mulch and Gravel Delivery -- We'd like to help you create the lawn you've always wanted, because of this we will also deliver your desired type of mulch or gravel to your location.
Snowplowing -- Wanting to take care of our customers year-round, we offer snow-plowing services to provide you with safe access to and from your home.


Eugen Rochko, Saint of Federated Social
Eugen Rochko has spent this year perfecting federated social media in Mastodon – his open source project. We spoke to him just hours before it became a global tech conversation.
The saga of Twitter, Inc. has been rejuvenated in 2017 by Tump's antics, corporate drama, and an amalgam of user and non-user disquiet with its decisions, though its financial viability has been in prominent industry conversation for half a decade. Since its pre-2010 outset, many 'a' feature has accumulated on its original, still-iconic skeletal software, and – though the net is undoubtedly positive – a few have gone.
Last Thursday, the company revised in bravado its poultrian default profile picture and its system of replies to exclude @s on all of Twitter's proprietary services, drastically changing two of its visual mainstays, and prodding a particularly lucent cacophony. Turn your ear, and you'll hear many familiar terms in the chants: limits, chains, strings, harassment, feedback, gamergate, nazis, etc.
These conversations are important, but they've gotten awfully stale.
If you listen a bit more carefully, you'll intercept a new one:
Mastodon.
It's the open source brainchild of Eugen Rochko, who's known colloquially as Gargron.
He's had one hell of a week.
Between the night of our first emails and our conversation, his flagship mastadon.social instance had doubled in users. Less than two hours after we said our goodbyes, his name was on The Verge's front page.
Despite the urgency of it all, he graciously lent me his time just after breakfast on Tuesday to discuss himself and the story behind the project, while the most significant day of his life was building around him.
“I'm perfectly fine with being called Eugene by Americans.”
Though the ink's still fresh on his compsci diploma, he's clearly prepared for the American press.
What's the story behind the project? Do you remember the specific moment when you decided to do this?
Many years ago, I had a friend that was really into federated networks when they were a new thing. That was when identi.ca was first created – at the very beginning of my developer knowledge and career.
A good portion of the stories written so far on his platform have framed it as an alternative to Twitter, which early Masto adopters refer to as “Hellbird,” or “the bird website.” Eugen isn't afraid to acknowledge his investment in the format.
I was a heavy Twitter user and I wasn't happy with where Twitter was going, so I decided to check on how the federated stuff was doing in the meantime. I found it in a very sad state, but thought I could contribute.
He began building on his own, with Tweetdeck's standard in mind.
I thought 'if I'm going to do something, it needs to have realtime updates and it needs to have columns.' I started with a bare-bones prototype while still [at University] in May or April of last year. It had no user interface, only an API that I was using from the command line. And I thought 'okay, it works. that's great.' Then, exams came.
Academics had to come before the project at first, but it soon supplied an ample post-graduation diversion. He focused his energy on building something more complete and eventually launched a Patreon page.
I announced it on HackerNews, and that was the first public release of the project. That's when I got my first users who weren't my friends, and some who were new to federated networks.
That was just over 100 days ago, and it gave way to his first feedback.
I started working on the first feature requests, shaping the project a bit differently. People were a lot more focused on privacy features than I thought they would be, although in retrospect, it makes sense. The previous [federated] project – GNU social – did not really have a focus on privacy features, or anything built in by default.
It compelled him to change things, and his work was well received.
Over time, I kept working on new features, and waves of new users came when it went viral in certain circles. The first was HackerNews and Product Hunt. Aral Balkan – a Twitter user with over 30,000 followers – picked up the project, gave it a shout out, and even did a giveaway of his app. He had a lot of followers from Holland; the Mastodon timelines became mostly Dutch.
Next was Marxist anime Twitter (including Extratone and I.)
Lots of furries; lots of LGBT people. That's when I really focused on privacy features and making sure all blocks worked because these individuals needed a safer platform than Twitter could offer.
Sidekick dashboard background processing jobs as of Tuesday morning.
“As you can see, the first bump is HackerNews, the second is Aral Balkan, and then anime/Marxist Twitter.”
And the last – now a bit out of date – is this week's spike, which is nearly double all previous waves.
Are you responsible for all of the code?
You can look at the GitHub page to see a specific breakdown of who contributed and how many lines of code, each. You'll see I'm at the top by a large margin, but there are [additional] people who've contributed interesting, good features & fixes, localizations, user guides, and documentation.
What's the story behind the name?
It's not particularly interesting. I'm a progressive metal fan, and I listen to Mastodon sometimes. They have a really cool name that refers to a really cool animal. It's a fluffy elephant! What's not to love?
It's also the inspiration for Mastodon's mascot, which was penned by Rochko's YouTuber friend Dopatwo after he realized how urgently he required an error page.
What does “federated” mean to you?
The biggest problem with this term is that it's new for lots of people. People who've come across federated networks in the pastinstantly understand what it means and how it works, and people who are new to the concept have a lot of trouble before it clicks. But when Twitter first started, people didn't understand what 'retweeting' meant, so it's not a unique problem domain.
I don't know where it comes from – maybe BitTorrent – but people seem to think that when something is 'decentralized,' everybody gets the same thing; that it's all synchronized one to one. In actuality, 'federated' means that people in different instances can talk to each other, but the content is different depending on the users there, what they do, and who they follow.
Though instances are infrastructurally independent, they can communicate with one another. On a user level, timelines are still determined by who you do and do not follow across the entirety of all instances.
What if Twitter comes to you in the near future with a job offer?
[Rochko laughs.]
If it was any other company, I would think about it. A job is a staple source of income, and – depending on the company – could involve doing something important, but I have zero faith in Twitter.
Does this all mean that I finally get to live out my serif Twitter dream?
Yes, I suppose on your own instance, you could change the stylesheet...
So if I set up my own instance and started charging for its use, I'd be in the clear, legally?
Yes, that's okay. The code is licensed under AGPL version three, which I picked because other projects in the same space are using it. The difference between AGPL and GPL is that [the former] forces you to contribute back to the appstream code repository if you make any breaking changes.
For example, Eugen explained that WhatsApp originally used XMPP for its chat protocol, which meant that Facebook and Google Talk users could connect to it, too. However, the company progressively locked down the platform over time, leaving virtually nothing visible that was unique to XMPP in its current iteration.
To prevent somebody taking Mastodon code, placing it behind locks, and stripping out the federation part to make Twitter II, I'm using this license.
The thing to remember about free software is that 'free' means freedom of the user, not that it's zero cost. It's perfectly fine to charge for free software because developers need to live, too.
I've seen a lot of multilingual 'tooting' these past few weeks. Can we expect an in-app translate function like Twitter's on Mastodon?
I don't think I could put in a 'translate this toot' button because APIs from Google and Bing are quite expensive at scale. I'm not 100% promising this, but I can probably put something in where people can select which language they post in, and then just filter the timelines. That would at least solve the problem of being confronted with lots of French posts, without knowing any French.
The only complaint about Twitter I remember that hasn't already been addressed here is the capability of editable 'toots.' Is that a possibility?
That won't happen. There's actually a good reason why they don't do that. It's simply because you could make a toot about one thing, have people favorite it and share it, link it from other places, and then suddenly, it says 'Heil Hitler,' or something.
It's a bit preposterous to continue the conversation as if Twitter and Mastodon are interchangeable entities. They exist in separate ideological and mechanical spheres, and will both continue to do so for a very long time.
That said, the fundamental user interface design and current cross-community user saturation do warrant comparisons between their functions. More likely than not, you'll create a Mastodon account because a link found you on Twitter, use it because you prefer its type of ecosystem, and you'll stay after realizing that nearly all of your age-old qualms have been addressed, if not already rectified. While FOSS and Federated may seem at times like jejune ideologies, their advantages are especially tangible in this context. Should you find yourself needing to complain about something, you'll find an audience. Perhaps it'll be your command line.
It's nothing but negligent to describe Mastodon as an alternative or clone.
It's more like Twitter's son.
It's leaner, quicker-to-change, much more flexible & democratized, and less corrupt. Though I didn't ask its creator what he intended to gain from all his effort, I think his commitment itself denotes a preoccupation with progress. Those of you who've been let down by the tools you've been given to control your words' exposure will find startling competence in your ability to determine per-toot privacy, or reserve your raucous photos and terrible memes from followers who are not necessarily complicit consumers. Naturally, it's also much less dependable, though a single instance outage will never leave you truly, completely silent. And the support will come.
It's been a privilege to be observer and participant in the first lightening of a new online community. In the moment, we enjoy our lavender haze -when the spaces are filling primarily with users who are sincerely interested enough in discourse to have sought it out.
Sarah Jeong's account of her Twitter exile is a good, long read if you're craving more specifics, and Eugen's Medium offers a more complete explanation of federation and its place in the industry, straight from the source. Apparently, he's just as articulate with words as he is with code.
If I had to hazard a guess, I'd bet it's not the last we'll hear from him.


FitHub
My Account
Find a Buddy
Events
Log out
My Profile
Spotter
Active Subscription
5 Matches Per Day
10 Messages Per Day
Unlimited App Usage
Close
Account Settings
Change Password
Change Password
Edit Profile
Profile info
Phone number:
Address:
Zipcode:
Birthdate:
Profile Picture:
Delete Account
Click Continue to delete the account
Deactive Account
Click Continue to deactive the account
Notifications
Work out requests
Work out Requests
Age


{% extends "admin/base_site.html" %} {% load i18n admin_urls %} {% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} revert-confirmation{% endblock %} {% block breadcrumbs %}
{% endblock %} {% block content %}{% blocktrans with escaped_object=object %} Are you sure you want to revert the {{ object_name }} "{{ escaped_object }}" to its version of {{ revision_date }}? All of the following related items will also be reverted: {% endblocktrans %}


Paul Hayne
Assistant Professor || Astrophysical & Planetary Sciences Department
|| Laboratory for Atmospheric & Space Physics
|| University of Colorado Boulder
Duane Physics Building, Room D221
391 UCB
Boulder, CO 80309
(303) 735-6399
Welcome!
Our solar system is teeming with diverse and fascinating worlds, from the innermost terrestrial planets, to the gas giants and their icy moons beyond the frost line, to the dynamic denizens of the Kuiper Belt.
I am an assistant professor of astrophysical and planetary sciences at the University of Colorado Boulder. My research focuses on the thermal behavior of terrestrial planets and moons, especially icy worlds. Data from spacecraft and Earth-based observatories enable my group to investigate planetary atmospheres and surfaces. We develop physics-based models and perform quantitative analysis to interpret remote sensing data.
Here, you will find brief summaries of some of my group’s ongoing research, along with tools and sporadic blog entries about how we pursue these projects.
news
| Jul 9, 2019 | NASA selects our infrared camera for flight to the Moon! The Lunar Compact Infrared Imaging System (L-CIRiS) is a collaboration between LASP and Ball Aerospace. |
| Apr 9, 2019 | New JGR publication on the polar ice caps of Mars! |
| Mar 21, 2019 | EPIC group members Andrew Wilcoski and Paul Hayne presented their research at the Lunar and Planetary Science Conference |
| Oct 26, 2018 | EPIC group members Tara Tomlinson, Carlos Gary Bicas, and Paul Hayne presented their research at the annual meeting of the American Astronomical Society’s Division for Planetary Sciences. |
| Sep 4, 2018 | New publication in PNAS on discovery of ice at the Moon’s poles! |


You are not registered on this jmpt.me application. Please sign up at first.
For Print
Use short URL to print your landing page URL. You can use easy to remember characters
{% extends "base.html" %}
{% block nav %}
{% include "nav_for_nonlogin.html" %}
{% endblock %}
{% block content %}
{% if request.args.get('message') == 'not_registered' %}
For Print
Use short URL to print your landing page URL. You can use easy to remember
characters
For Voice
Voice Media like Podcast is hard to communicate with long URL. Short URL is the
solution.
For Social
Social media is important to promote your web content, but without tracking? You can
check performance of your social media link.
Use your own domain You can use your own domain This is application of setting up custom domain. Ex "jmpt.me/anywhere" to
"yourdomain.com/anywhere". Your custom domain has its own name space. Open Source You can run jmpt.me by yourself. You can run jmpt.me on Google App Engine/Python platform. It's easy to setup and no need to care
about infra scalability.
jmpt.me links and tracks the world by short URL
The service for making your own short URL and tracking it
Get Started with jmpt.me for Free
jmpt.me is now on beta release. All user can use full feature fully in beta stage.


Here you find the ParallelRunner for JUnit. The {@link ParallelRunner} can be used together with the {@code @RunWith} annotation provided by JUnit 4. @since 1.0


Data Fields | |
| int | iSize |
| Must be set to the size of the structure. | |
| int | iFlags |
| Fan speed cotrol | |
| int | iMinPercent |
| Minimum possible fan speed value in percents. | |
| int | iMaxPercent |
| Maximum possible fan speed value in percents. | |
| int | iMinRPM |
| Minimum possible fan speed value in RPM. | |
| int | iMaxRPM |
| Maximum possible fan speed value in RPM. |
This structure is used to store information about thermal controller fan speed. This structure is used by the ADL_PM_FanSpeedInfo_Get() function.


Stephen Eick
Publications
Refereed Conference Proceedings
Refereed Workshop Proceedings
Fast Nonlinear Approximation of Pose Graph Node Marginalization [PDF]
Duy-Nguyen Ta, Nandan Banerjee, Stephen Eick, Emily Pittore, and Scott Lenser. 35th International Conference on Robotics and Automation (ICRA 2018). Brisbane, Australia. May 2018.
Refereed Workshop Proceedings
Design for Wearable Interactivity [PDF]
Yaling Liu, Wei Wang, and Stephen Eick. International Design Conference (IDC 2018). New Orleans, LA. September 2018.


 We believe that regardless of their nationality, gender, or social status, everyone around the world should have access to a free, high-quality education. And we need your help to make it happen!
At FLE, you'll work on software platforms that will be used in some of the most remote places on earth. Our offline version of Khan Academy, KA Lite, has been installed in over 120 countries. Hard to believe? Don't worry, we mapped them.
Benefits:
-
Working and living in sunny San Diego, (aka America’s Finest City). We can help out with relocation costs.
-
Flexible schedule and vacation time.
-
Work on a team guided by a strong set of values.
-
Like open source? That’s all we do. Find everything we’ve ever hacked on here and here.
-
A bone-deep sense of purpose that rockets you out of bed in the morning.**please note: degree of rocketing in AM may vary by daily caffeine intake
-
And as if that weren’t enough, you’ll also receive a salary, 401(k) matching, and health care options.
Here are the positions we are looking for:
{% for j in jobs %}
{% if j.active %}
{% endif %}
{% endfor %}
Frequently Asked Questions
- How does the application process work?
- After the application is submitted, we will review your application and be in touch via email within 14 days to schedule an interview and ask specific follow up questions.
- More questions?
- Don't hesitate to send us an email at jobs@learningequality.org.


FUNCTION
Arguments passed by value and by reference.
Until now, in all the functions we have seen, the arguments passed to the functions have been passed by value. This means that when calling a function with parameters, what we have passed to the function were copies of their values but never the variables themselves. For example, suppose that we called our first function addition using the following code:
int x=5, y=3, z; z = addition ( x , y );
What we did in this case was to call to function addition passing
the values of x and y, i.e. 5 and 3 respectively, but not the
variables x and y themselves.
int addition(int a,int b)
z=addition(5,3);
This way, when the function addition is called, the value of its
local variables a and b become 5 and 3 respectively, but any
modification to either a or b within the function addition will not
have any effect in the values of x and y outside it, because
variables x and y were not themselves passed to the function, but
only copies of their values at the moment the function was
called.
But there might be some cases where you need to
manipulate from inside a function the value of an external variable.
For that purpose we can use arguments passed by reference, as in the
function duplicate of the following example:
// passing parameters by reference #include <iostream> using namespace std; void duplicate (int& a, int& b, int& c) { a*=2; b*=2; c*=2; } int main () { int x=1, y=3, z=7; duplicate (x, y, z); cout<<"x="<<x<<", y="<<y<<", z="<<z; return 0; }
output:
x=2, y=6, z=14
The first thing that should call your attention is that in the
declaration of duplicate the type of each parameter was followed by
an ampersand sign (&). This ampersand is what specifies that their
corresponding arguments are to be passed by reference instead of by
value.
When a variable is passed by reference we are not
passing a copy of its value, but we are somehow passing the variable
itself to the function and any modification that we do to the local
variables will have an effect in their counterpart variables passed
as arguments in the call to the function.
void duplicate(int& a,int& b,int& c)
duplicate(x,y,z);
To explain it in another way, we associate a, b and c with
the arguments passed on the function call (x, y and z) and any
change that we do on a within the function will affect the value of
x outside it. Any change that we do on b will affect y, and the same
with c and z.
That is why our program's output, that shows the values stored in x,
y and z after the call to duplicate, shows the values of all the
three variables of main doubled.
If when declaring the following function:
void duplicate (int& a, int& b, int& c)
we had declared it this way:
void duplicate (int a, int b, int c)
i.e., without the ampersand signs (&), we would have not passed the
variables by reference, but a copy of their values instead, and
therefore, the output on screen of our program would have been the
values of x, y and z without having been modified.
Passing by reference is also an effective way to allow a function to
return more than one value. For example, here is a function that
returns the previous and next numbers of the first parameter passed.
example:
// more than one returning value #include <iostream> using namespace std; void prevnext (int x, int& prev, int& next) { prev = x-1; next = x+1; } int main () { int x=100, y, z; prevnext (x, y, z); cout<<"Previous="<< y<<", Next="<<z; return 0; }
output:
Previous=99, Next=101
Default values in parameters.
When declaring a function we can specify a default value for each of the last parameters. This value will be used if the corresponding argument is left blank when calling to the function. To do that, we simply have to use the assignment operator and a value for the arguments in the function declaration. If a value for that parameter is not passed when the function is called, the default value is used, but if a value is specified this default value is ignored and the passed value is used instead. For example:
// default values in functions #include <iostream> using namespace std; int divide (int a, int b=2) { int r; r=a/b; return (r); } int main () { cout<<divide (12); cout<<endl; cout<<divide (20,4); return 0; }
output:
6 5
Overloaded functions.
In C++ two different functions can have the same name if their parameter types or number are different. That means that you can give the same name to more than one function if they have either a different number of parameters or different types in their parameters. For example:
// overloaded function #include <iostream> using namespace std; int operate (int a, int b) { return (a*b); } float operate (float a, float b) { return (a/b); } int main () { int x=5,y=2; float n=5.0,m=2.0; cout<<operate (x,y); cout<<"\n"; cout<<operate (n,m); cout<<"\n"; return 0; }
output:
10 2.5
inline functions.
The inline specifier indicates the compiler that inline substitution
is preferred to the usual function call mechanism for a specific
function. This does not change the behavior of a function itself,
but is used to suggest to the compiler that the code generated by
the function body is inserted at each point the function is called,
instead of being inserted only once and perform a regular call to
it, which generally involves some additional overhead in running
time.
The format for its declaration is:
inline type name ( arguments ... ) { instructions ... }


@import awscala.sts.TemporaryCredentials @import com.gu.googleauth.UserIdentity @import com.gu.janus.model.JanusData @(url: String, accountName: String, credentials: TemporaryCredentials, user: UserIdentity, janusData: JanusData)(implicit assetsFinder: AssetsFinder) @import logic.Date @main("Console URL", Some(user), janusData) {
Your login will expire in @Date.formatInterval(credentials.expiration), at @Date.formatTime(credentials.expiration).
Click here to log in to the AWS console for the @accountName account, or copy the link from below. This link will be valid for 15 minutes.
content_copy copy done report_problem
This URL grants access on your behalf. Treat it as you would your password.


Welcome to Aspdotnet-Suresh.com. Please use above search option which was there in top right side to get help with many of articles. Close


Tracy Mbone is a software developer at Moringa School.previously,Tracy was a student at St.Maria Goretti highschool.Our world today is a website that mostly focused on nature and our natural environment.
When we talk about nature then we will be exploring both our internal and external environment.As we all know nature is diverse.Birds are made of diffrence species and the behave diffrently in our natural environment.There are some birds that fly miles away in such of food and water.Some fly in groups while others fly as individuals. Most importantly is that we should take good care of nature.This is simply because they make part of ourenvironmentsurroundings.When we talk about ocean life then we will get to know the diversity in there.We have different species of fish and ocean plants.We should therefore not pollute this waters for they save some major roles that we might not know unless we take a deep glimps about nature. emphasize
In our world today we have both our natural and artificial environment.When we talk of natural environment this means that it existed by it own.In other words it means that human beings did not take part in its trival. The artificial environment is environment which human being took place in its trival.This may include the planted forests. In both cases of our natural and artificial environment we are human should challenge ourselves in taking good care of them. When we live in a conducive environment we will all be happy because fresh air is used in our respir atory system.We should keep our world today as conducive as possible by not polluting either water,air or sound.


Contents
With our work on Gendering Surveillance, the Internet Democracy Project hopes to make more concrete the multifaceted ways in which widespread surveillance shapes, and harms, our lives.
At the time of writing this, we start with presenting you with three case studies on this site, examining the intersection of gender and surveillance in a variety of situations. Over time, we hope to further add to these. In addition, we share in a fourth piece some of the theory that has guided our explorations - this provides the broader framework that ties all work on this site together.
In this introduction, I explain in some more detail why we decided to look at surveillance from a gender perspective. Why gendering surveillance?
Let’s take a detour.
1. The Fledgling Fight for the Right to Privacy
Our starting point? An observation: while both government and private surveillance practices seem to be expanding all the time, the fight against indiscriminate surveillance and for greater privacy protections is not making much headway in India.
In fact, it seems to be going in the opposite direction. In July 2015, the government explicitly challenged in the Supreme Court that the right to privacy is a fundamental right in India. The Supreme Court was hearing a variety of petitions protesting the government’s move to make the Aadhaar (India’s Unique ID number) compulsory to avail of various benefits and schemes.
Since 1975, a number of judges in the Supreme Court have read the right to privacy into Article 21 of India’s Constitution, which guarantees the right to liberty. But those were small benches, with only two or three judges, and with their interpretation, they seemed to contradict two earlier judgments, pronounced by larger benches (Bhatia 2015). When the government questioned, in 2015, whether people in India have a fundamental right to privacy at all, the Supreme Court agreed that there were tensions between these two sets of judgments and referred the issue to a five-judge bunch to resolve it. As of January 2017, that bench, which was to address a seemingly pressing constitutional matter, has not been constituted (Bhatia 2017).
What is at issue here here is not so much the validity of the question raised, but, as Usha Ramanathan has pointed out,1 the time at which this is raised. Why does the government explicitly argue that we do NOT have a fundamental right to privacy now, after more than forty years have passed since that first judgment?
Because in the digital age, in the age of Aadhaar and Digital India, of Facebook and Uber and Google, the right to privacy - or its absence - matter like never before.
2. ‘If You’ve Got Nothing to Hide, You’ve Got Nothing to Fear’?
A second observation: important as these concerns might be, in public discourse they continue to be marked mostly by their absence.
With safety and security frequently highlighted as surveillance’s goals, one reason for this void seems to be that the harms of surveillance in the digital age continue to remain too abstract for many people. For most people, the costs they pay for government and corporate surveillance are simply not evident enough. ‘If you’ve got nothing to hide, you’ve got nothing to fear’, they continue to believe. And that is that.
If you really have nothing to hide, that speaks rather poorly about the quality of your inner life - and I am not arguing this merely to be provocative. Experiencing doubt, uncertainty and shame is integral to every person’s growth as a human being; it is what makes us human. By making not having anything to hide a matter of pride, we dampen our growth as a society.
But what is perhaps even more important to highlight is that such arguments also hide from view this: being comfortable with revealing things about yourself often requires privilege.
Whether or not you have anything to hide is becoming less and less important in the rhetoric around surveillance, though. Because increasingly the message that indiscriminate surveillance really is to our benefit, is for our own good, seems to also be gaining ground. This is mostly as a consequence of the normalisation of big data driven surveillance. ‘Give us all your data and we will give you… something! For free!’ - that’s basically the adagio of many of the big Internet giants. And increasingly, the government is using a similar discourse: ‘give us your data and we’ll give you government benefits’. Neither is particular interested in guaranteeing the safekeeping of our data. We just have to trust that it will not be misused.
This new thrust of pro-surveillance arguments poses a particular challenge for human rights advocates in developing countries. By advocating for restrictions on surveillance, are we standing in the way of our country’s growth? In India, we see such arguments play out especially in the context of Aadhaar, where the tensions between privacy and big data are overwhelmingly posited as a concern of development. Yet in developing countries as much as anywhere else, we can not overlook that big data can also function as a surveillance mechanism, with all the harms that come with it. Moreover, contrary to what many people believe, anonymising the data does not really resolve these challenges: study upon study has shown that with as little as four fairly simple spatio-temporal data points, the large majority of entries in a database can be de-anonymised, even if the database contains data for hundreds of thousands, even millions of people (see e.g. de Montjoye et al. 2013).
3. Gendering Our Approach
How then to illustrate how deep the harms of surveillance can run?
By gendering surveillance, we can really bring home the harms of surveillance. Indeed, surveillance of women is a long-standing practice in our society as elsewhere - and one that women from all castes, classes and religions are too familiar with, even if it affects them differently. As Richa Kaul Padte has argued so poignantly (2014):
The constant and rigorous emphasis placed on the female body in societies across the world tells us two things: One, our bodies are something that we should hide, and paradoxically two, our bodies are something that are constantly on display. The presence of surveillance cameras in public or private spaces – hidden or otherwise – encapsulates this dichotomy perfectly. […] When it comes to spaces that tend to be male-dominated, your crime is the presence of your body, and the camera is, by extension, justified in capturing what you are supposed to hide’.
This is the then the crux of why we chose to look at surveillance from a gender perspective: the aim of surveillance really is to control people, so that everyone adheres as closely as possible to the norm (whatever that norm is). And for centuries, women’s experiences have provided a wealth of information on what happens to those who are surveilled yet deviate from the norm - online abuse targeted at women exemplifies this today again so very well. By gendering surveillance, as we hope the research on this site will illustrate, the depth and range of the harms of surveillance in the digital age, too, can, thus, really be brought to the fore. (And yes, even if you don’t identify as a woman, this does concern you - as one day, it may well be you who is, willingly or unwillingly, found to be violating the norm).
But by gendering surveillance, we do not only get more vivid, easily-relatable illustrations of the harm that surveillance in the digital age entails. In turn, as we will also see elsewhere on this site in detail,2 gendering surveillance also reshapes the debate on surveillance, since it brings to the fore aspects and dimensions that have so far largely remained absent from debates on surveillance and security in India. Gendering surveillance, in other words, both deepens and sharpens the debate, allowing us to move it forward in new, and what we believe are profoundly empowering ways.
Endnotes
1. At the Digital Empowerment Foundation’s Digital Citizen Summit in Bangalore, on 11 November 2016.
2. Want more on why and how? Read ’Reading Surveillance through a Gendered Lens: Some Theory’.
References
Bhatia, Gautam (2015). The right to privacy and the Supreme Court’s referral: Two constitutional questions. Indian Constitutional Law and Philosophy, 11 August, https://indconlawphil.wordpress.com/2015/08/11/the-right-to-privacy-and-the-supreme-courts-referral-two-constitutional-questions/.
Bhatia, Gautam (2017). ‘O brave new world’: The Supreme Court’s evolving doctrine of constitutional evasion. Indian Constitutional Law and Philosophy, 6 January, https://indconlawphil.wordpress.com/2017/01/06/o-brave-new-world-the-supreme-courts-evolving-doctrine-of-constitutional-evasion/.
de Montjoye, Yves-Alexandre, Cesar A. Hidalgo, Michel Verleysen and Vincent D. Blondel (2013). Unique in the Crowd: The Privacy Bounds of Human Mobility. Scientific Reports, 3, http://www.nature.com/articles/srep01376.
Padte, Richa Kaul (2014). The Not-so-strange Feeling that Someone’s Always Watching You. Richa Kaul Padte, 4 September, https://richakaulpadte.com/2014/09/04/the-not-so-strange-feeling-that-someones-always-watching-you/.
Read next
‘Chupke, Chupke’: Going Behind the Mobile Phone Bans in North India
Since 2010, a number of khap panchayats across north India have pronounced bans on mobile phone use for young women. What drives such orders? Are they really effective? And how do young women themselves respond to the bans and the underlying anxieties? We went to Haryana and western UP to find out.
A Handy Guide to Decide How Safe That Safety App Will Really Keep You
Imagine a world where an army of women’s safety apps scoops you away from danger, and delivers you to safety? That’s the promise made by these apps. How well do they measure up against their own claims? Let’s look at a cackle of apps that act as surveillance assistants, leak your data and look smug, while purporting to keep you safe.
Caution! Women at Work: Surveillance in Garments Factories
Garment factory workers, predominantly women, work in stressful conditions in an exploitative industry where the pay is low. Read on to find out what CCTV cameras have done to the dramatic imbalance of power between workers and the factory management, and what role they can play in workers’ fight for an equitable workplace.


On the Home page of each course site or project site, you will see areas for general information (e.g., Site Information Display) and synoptic views for communication tools (e.g., Recent Announcements, Recent Chat Messages, and notifications of unread messages and forums) used in your site. More...
For instructions about Home/Worksite Information, see:


§571-31.6 Informal adjustment, minor who may be both law violator and status offender. When a child is reasonably believed to come within section 571-11(1) and (2), the intake officer may exercise discretion to process informal adjustment under section 571-31.4. In making that determination, the officer shall be guided by the criteria set out in section 571-31.1(c)(1) to (5) and the criteria in the framework established pursuant to section 571-31.4(b), taking into account the availability of suitable method, program, or procedure for the child. [L 1980, c 303, pt of §5(3); am L 2014, c 201, §12]
Rules of Court
Informal adjustment, see HFCR rule 124.


Saving Private Ryan by Curtis Edmonds --<EMAIL_ADDRESS>Steven Spielberg is, perhaps, the greatest technical moviemaker of our time. He has made us believe in dinosaurs, extra-terrestrials, and that the Ark of the Covenant could melt Nazis. The hallmark of Spielberg movies is that he makes you believe you are there -- whether it's a ruined Egyptian temple or a concentration camp in Poland or a raptor-ridden tropical island. Every scene, every shot, tells us that this is happening, right now, for real. Only the best Hollywood illusionists -- say James Cameron's painstaking recreation of the Titanic, or Ron Howard's extraordinary weightless Apollo capsule -- can be ranked with Spielberg in terms of sheer technical prowess.
However, just as someone can make a great cabinet without there being anything inside, someone can be a great technical moviemaker without making great movies. And Spielberg's last two movies weren't great. Although the dinosaur action in The Lost World was better rendered than in Jurassic Park, the plot was a lifeless retread of the original dino-classic. Both the historical detail and the action scenes in Amistad were outstanding, but the plot bogged down in legalistic courtroom psychodrama. From a technical standpoint, there wasn't anything wrong with either of these two movies -- but they didn't live up to the high standard that Spielberg has set for himself.
There was every reason to anticipate that the opening scene of Saving Private Ryan -- the invasion of Omaha Beach by the Third Ranger Battalion on June 6, 1944 -- would be a technical masterpiece. And so it is. Veterans who were there say that Spielberg does a good job in recreating the horror and agony of the Normandy invasion, and there can be no higher praise. Spielberg conveys the heroism and the confusion of the landing spectacularly well, even recording some of the shots himself with a hand-held herky-jerky camera. With the resources of his own studio behind him, and with Tom Hanks to serve as a visual anchor, Spielberg has created one of the great war scenes in film history.
The "cabinet" of the movie is great. The war scenes, while less spectacular than the Omaha landing, are intricate and stunningly well-designed, just as if Spielberg had personally placed every chunk of rubble and debris in its proper place. The set design is fantastic -- they even manage to recreate an authentic World War II glider, although the originals were mostly smashed to bits on landing. But what makes Saving Private Ryan a great movie isn't the box the movie comes in. This movie turns out to be bigger than its box. Saving Private Ryan is special because the story outshines even the quality of the filmmaking.
The story is simple: Private James Ryan (Matt Damon) has lost two brothers in the Normandy landing, and a third in the Pacific the week before. He is to be found and taken home to comfort his grieving mother. However, Ryan dropped behind enemy lines with an Airborne division which was scattered behind enemy lines like so many spilled needles. Hanks, his top sergeant (Tom Sizemore) and a small crew must infiltrate the German lines, find the lost soldier, and return him safely home.
The quest for Ryan is accompanied by a long string of philosophizing about the mission, punctuated by small-scale combat. Hanks and his crew don't like their task and don't appreciate the implication that Ryan's life is somehow worth more than theirs. This makes the movie sound a bit talky, I know, but Saving Private Ryan frames its discussion of these issues as real-life morality plays: What's the duty of a soldier to non-combatants? Is it OK to shoot prisoners? Is one man's life worth sacrificing your own?
In doing so, Saving Private Ryan focuses on the Big Issues -- life, love, sacrifice, honor, courage (and cowardice), death, defiance, and duty. By focusing on these issues, Spielberg transcends the conventions of the war movie -- both as action movie and as horror movie. Although some of the excitement of combat and most of the horror of war are displayed, the movie really isn't about either. It's a celebration of values -- and war movies should be about values, because the strains of war places those values in sharp relief.
(And one of the things that separates Saving Private Ryan from the other summer blockbusters it is that we can argue what the movie is really about. Try doing that with Armageddon.)
One thing that no one will argue with is the quality of the performances. Damon, so good as the cocky genius Will Hunting and the sincere fledgling trial attorney in The Rainmaker, has a limited role, but he doesn't allow the symbolism of his character to interfere with his effective portrayal of a scared Iowa farmboy. Sizemore is not so much of an actor as he is a medium, bringing back the shades of all the sergeants from every World War II movie ever put on celluloid. The rest of the squad seemingly falls into patterns -- wise guys from Brooklyn, sharpshooter farmboys, sensitive writer -- but the young actors breathe new life into all the old stereotypes. The images of these actors -- the frozen, heartbroken countenance of Jeremy Davies, the hard stare of Edward Burns, the cracker drawl and sharp eye of Barry Pepper -- are the ones that will stay with you long after the last reel ends. (Especially Adam Goldberg, who confronts a line of German prisoners with the mocking call, "Juden! Juden!" as he fingers his Star of David.)
And Hanks? If his competition so far is Jim Carrey's leaden performance in the dismal Truman Show, we can declare the Oscar race over now. There won't be a better performance this year by anybody. The American soldier is first and foremost a citizen, and Hanks uses his Everyman quality to fill this ideal perfectly.  He's able to exhibit a fuller emotional range here than he did as the muffled Forrest Gump or the steely-eyed missile man of Apollo 13, which contributes mightily to the power of the film.
Saving Private Ryan is a fitting tribute to the virtues we hold dear and to the men of our armed forces who exhibit these virtues in war and peace. As I said, no higher praise is needed.
Rating: A+
-- Curtis Edmonds<EMAIL_ADDRESS>Movie Reviews: http://us.imdb.com/M/reviews_by?Curtis+Edmonds
Hollywood Stock Exchange: http://www.hsbr.org/brokers/blueduck/
"Baseball should always be played outdoors, on grass, with wooden bats."
-- Governor George W. Bush
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


CT City down Polokwane in high-scoring affair
Cape Town - Cape Town City halted a six-match winless streak in the Absa Premiership as they stormed to a 5-3 victory over Polokwane City at Cape Town Stadium on Wednesday night.
The Citizens announced a new coach in the hours leading up to Wednesday evening's clash, with Dutch coach Jan Olde Riekerink named as Benni McCarthy's successor.
However, it was caretaker boss Vasili Manousakis who was in the dugout for the Citizens as they went in search of their first Premiership win since the 1-0 triumph over Stellenbosch FC on 10 August.
And the hosts came flying out of the traps, claiming the lead after just six minutes of play as Kermit Erasmus slotted home from close range after Riyaad Norodien fired an inviting cross into the box.
Polokwane were still coming to terms with the opening goal when City struck again six minutes later, Erasmus turning provider for Siphelele Mthembu, who hammered a thunderbolt of a shot into the top-right corner.
Rise and Shine didn't let their heads drop, though, pulling one back in the 22nd minute through Charlton Mashumba after the City defence failed to clear their lines.
But the home side went on to restore their two-goal advantage on the stroke of half-time as Erasmus bagged his second of the evening, Amethyst Ralani providing the assist.
There was more to come from the Citizens after the break, although the opening spell produced little in the way of goalmouth action.
Substitute Terrence Mpho bagged City's fourth of the evening on 71 minutes, after latching onto a neat pass from Thamsanqa Mkhize.
And they added a fifth just two minutes later, Edmilson Dove converting from inside the danger area, with Ralani providing the telling pass once again.
Credit must go to Polokwane, though, as they refused to give up the fight, and their never-say-die approach finally paid dividends as Mashumba scored his second of the night in the 87th minute, before completing his hat-trick two minutes into injury time.
But it was a case of too little, too late as the Citizens held on to record a much-needed victory.