JEFFREY A film review by Lee Harrington Copyright 1995 Lee Harrington
1995, Orion Classics. Dir.: Christopher Ashley. Screenplay: Paul Rudnick, adapted from his play.
 Russo quotes directors and stars over and over again asserting that their films were "not about homosexuality -- they are about loneliness." It is not until we get into the Age of AIDS that we get gay directors making films for gay audiences which assume a gay point of view or "sensibility," which he describes thus:
People say that there can be no such thing as a "gay sensibility" because the existence of one would mean that there is a straight sensibility, and clearly there is not. But a gay sensibility can be many things; it can be present even when there is no sign of homosexuality, open or covert, before or behind the camera. Gay sensibility is largely a product of oppression, of the necessity to hide so well for so long. It is a ghetto sensibility, born of the need to develop and use a second sight that will translate silently what the world sees and what the actuality may be. It was gay sensibility that, for example, often enable some lesbians and gay men to see at very early ages, even before they knew the words for what they were, something on the screen that they knew related to their lives in some way, without being able to put a finger on it.... It said, this has something to do with your life, and it was a voice that could not be ignored, even though the pieces did not fall into place until years later."
While there have been a number of lesbian films released recently, cinema today still has difficulty in dealing with male homosexuality. That this is true may have to do with the way straight males fantasize about lesbians, or with the fact that Hollywood is still a bastion of power for straight men who cannot accept male homosexuality -- or their own -- because "gays are the manifestation of what stands between men's complete love for other men and their acceptance of women as friends." (In a curious way, then, it's linked to misogyny.)
Paul Rudnick's JEFFREY means to change all that. In one of the sliest bits of reflexivity I've seen in films, director Christopher Ashley turns the camera on the "audience" after a very hot male-male kissing scene early in the film and catches the reactions of two teenage couples. (It's a wondrous assumption that they might consider JEFFREY a "date movie.") The guys are gagging, the girls are going "Aw...," which is exactly what you might expect, and the actual audience at the benefit screening last night was on the floor in hysterics. (Rudnick confided to me at the post-screening reception that this was his favorite bit in the film, too.) While there have been several noteworthy films and teleplays dealing with AIDS (like AN EARLY FROST, LONGTIME COMPANION and PHILADELPHIA), they have dealt in a mostly serious way with the tragedy and loss so many of us have endured, and they take the HIV+ point of view.
JEFFREY inverts all that, taking an HIV- point of view to a degree, and using (as Jeffrey says to muggers who ask him if he has any weapons) "irony, adjectives and eyebrows" to make its life-affirming point, as weapons against despair. The hero is a gay man who is afraid of commitment, and who's equally afraid of AIDS; he's afraid of relationships partly because he doesn't want to invest any emotion in someone he's going to lose, but that's just copping out. His promiscuity before he decides to give up sex "because it's too dangerous" merely reflects on his inability to connect with another person at all.
WINGS' Steven Weber does an excellent job of portraying Jeffrey's anxiety and superficiality. Michael T. Weiss, playing his would-be boyfriend, radiates head and life while giving poignancy to the hurt and frustration of being rejected because of his HIV status. STAR TREK: THE NEXT GENERATION's Patrick Stewart lends grace and authority to Sterling, Jeffrey's "grand old queen" of a best friend, and practically steals the movie without resorting to shallow stereotypes. Bryan Batt is touching as Sterling's chorusboy lover. Cameos by Nathan Lane as a priest-on-the-prowl; Olympia Dukakis as the mother of a male-to-female transsexual lesbian; Sigourney Weaver as a Marianne Williamson-type in-your-face televangelist; and Kathy Najimy as one of her followers are all wildly funny.
But the real star of JEFFREY is Rudnick's writing. He adapted the play to the screen himself, and does an outstanding job of interweaving exterior scenes, fantasies and stage-like asides into a cohesive, brilliantly funny, and very insightful screenplay. While he never loses sight of the tragedy of AIDS, and the very real toll it takes on human life and relationships, he manages to find humor in situations often treated seriously (if not dismally) in other films.
From the opening montage of Jeffrey attempting to have safe sex with a number of men (look for the man protected by Saran Wrap for a real belly laugh); to the phone call to his parents (who are so much cooler than he is, so much more knowledgeable about safe sex, phone sex and the rest, that he hangs up, mortified), and Jeffrey's encounter with his priest (who shows him the face of God on the cover of the original cast album of MY FAIR LADY), Rudnick's screenplay and Ashley's direction take us on a relentless, wildly comic ride for nearly two hours. While much of this film may go over the heads of straights, there is enough here done with love and affection to please most audiences.
When I was talking with Rudnick at the reception, we lamented the lack of male-male kissing even in gay films, and he said that while writing the play he pondered what would be the most objectionable thing to a straight audience (male-male kissing, of course), and decided to put it in as early as possible, so that people could get over it and into the real text. That device really works here, and by the end of the film, what you have seen is a story about life, love and relationships. An inability to commit to a relationship is hardly confined to gays; or, as they have always said, "This film is not about homosexuality -- it's about loneliness."
1 August 1995 San Francisco, CA
-- Lee Harrington
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


Vendor Name:
SAMSON & ASSOCIATES
Reference Number:
4500272104
Contract Date:
2011-15-11
Description of Work:
Training consultants
Contract Period:
2011-15-11 to 2011-12-12
Delivery Date:
2011-12-12
Original Contract Value:
$0.00
Current Contract Value:
$13,230.00


--- layout: post esbma_id: 1153 title: The .NET Abstraction Pile date: 2003-04-22 14:02:23 keywords: dev teaser: This success stands as a testimony to how incredible .NET really is. We built a reasonably full-featured version control system in 14 months, and it works. Sure, we had some trouble. Layers 25, 37 and 40 didn't always behave like they should. But layer 11 was problem-free, quite unlike its Java counterpart. Considering the productivity gains we received, I never expected things to go so smoothly. ---
An abstraction is a boundary with two sides. On the top side, the abstraction presents a simplified view. Below, there is something more complex and more real. The purpose of the abstraction is to obscure what is really going on.
The world hidden underneath an abstraction is quite likely to be yet another abstraction. In fact, it is typical to have many abstractions stacked together, each one attempting to present an illusion which is even further from the truth. If you stack them up vertically, the ones at the bottom are more real than the ones at the top.
This is what programmers do. We build piles of abstractions. We design our own abstractions and then pile them up on top of layers we got from somebody else. Abstractions can be great. We use them because they save us a lot of time. But abstractions can also cause lots of problems. They're never perfect, as Joel Spolsky explains in his excellent article on "The Law of Leaky Abstractions".
But you can't have the benefits of an abstraction without its risks. We need to make wise decisions about our piles of abstractions. I'll start by offering three rules to keep in mind:
Abstractions contain bugs.
Using somebody else's code can save a lot of time. For example, a special GUI component allows you to program at a higher level of abstraction. Why write your own?
You have to remember that you are accepting a tradeoff. By using somebody else's code you are inheriting somebody else's bugs. Often you are accepting risks that are not under your control.
Abstractions reduce performance.
Writing in Java is faster than writing in C. But C code runs much faster than Java code. It's a tradeoff that you cannot avoid. All you can do is make the right choice.
Abstractions increase overall complexity.
The goal of each abstraction is to decrease complexity by presenting a simplified view of something else. However, by the time you pile them all up, you've got a lot of complexity which you may have to deal with. In fact, the more layers of abstraction you have, the more complexity you've got involved.
A Really Tall Pile
Let's work through an example. Suppose that I am working from my home and I am ready to checkin some really important code changes to a source code file. I'm using the SourceGear Vault client to connect to our server back at SourceGear's main office. Below is a list of [almost] all the abstractions which are in play.
Control Flow:
Memory:
The Check In Button:
Architecture of the Vault Client:
Architecture of the Vault Server:
So there you have it -- 46 layers of abstraction which are all involved when I try to checkin my code. That means there are 46 layers in which something might go wrong.
Actually the truth is that several of these abstractions are almost perfect. For example, I've actually never had to worry about the layer between Assembly and Microcode. As far as I am concerned, Assembly is an abstraction that always Just Works.
But it would be terribly wrong to ignore all those layers. Yes, SourceGear's implementation of Vault required us to only write the code for a few of the layers above. However, when it's time for QA and Tech Support, all 46 layers are fully in play. Stuff Happens. When a customer has a problem with Vault, the actual problem could be almost anywhere. We have to figure out what's gone wrong, even if it's in one of the layers we didn't create. Ask our tech support team how often layer 29 causes trouble. :-)
How to Kill Your Project
When you build software, you're going to end up making a lot of decisions about abstractions:
You have lots of alternatives. For example, you can often make a tradeoff by choosing to work at a lower level of abstraction. By doing so, your development process will move more slowly, but more of the risks will be under your control. For example, if I had a really small magnet and really fine motor control skills, I could skip layers 1 through 45, drive to my office and modify those platters myself. :-)
The stakes are higher than you might think. You can kill your project by making the wrong decisions about abstractions. Do you remember the word processor called WriteNow? This product was my favorite word processor back when I was a Macintosh fanatic. WriteNow was really fast and had just the right mix of features.
Today, WriteNow is dead because somebody got burned by the decisions they made regarding abstractions. You see, WriteNow was really fast because it was written in 68000 assembly language. When Apple moved the Macintosh product line to the PowerPC, WriteNow had nowhere to go.
These choices are hard, and learning from your mistakes is an excellent (but painful) way to learn. But over the years, I've gathered the following guidelines which help me make abstraction-related decisions:
Consider your context.
Developing a server operating system is different from developing an web-based HR application so employees can check their vacation days. There is no formula which works well for all kinds of projects. You need to understand what kinds of risks are appropriate for the kind of software you are trying to build.
As a general rule, developers of internal corporate applications tend to use more third party components than ISVs. If you're writing code for the IT department of a company whose primary business is not software, then your salary is an expense, not an investment. Your employer wants you to get the app done FAST, because it costs less to get it done that way. Corporate IT developers want every decent abstraction they can get.
ISVs like SourceGear face a different set of problems. If a third-party component brings even a minor loss of quality to the app, it can severely affect our sales as prospective customers look at our competitors. But that same competition is tugging you in the other direction, reminding you that time-to-market can be critical. Using third-party apps may be the only way to get your product to market within the window of opportunity, but the risks need to be studied closely.
The size of your company should affect your choices as well. Nothing is more frustrating than being unable to ship a product because of a bug that you can't fix because it's in a third-party library. For a very small company, the financial damage of a situation like this can be severe. These are the times when you wish you had chosen to put more of your risks inside your own circle of control.
Place your trust carefully.
I recommend approaching third party code with a great deal of suspicion. Never assume that an unknown component or platform will Just Work.
When picking the pieces of your platform, as a general rule, "older is better". You can walk with less worry on a path which has been well trodden by many people for years. As an extremely obvious example, C is old and mature enough to be a platform which will yield very few surprises.
Evaluating newer technologies is harder. Try to figure out who else is using the abstraction successfully. Grab the technology and take it for a test drive. In the end, you may not get enough evidence to lead to a completely confident decision. If you really need the convenience offered by the abstraction, you may have to jump out with a little faith.
Learn to see through the abstractions.
The most important point in this whole article is this: You need to understand what's going on inside all your abstraction layers. Each abstraction presents an illusion, but the best decisions happen when you can see through the illusion.
If you have a deep understanding of all the technology abstractions that are involved with your software, then you have two big advantages:
You can quickly isolate problems.
You can develop an intuition which will help you avoid those problems in the first place.
The first point is fairly obvious. Troubleshooting goes much better when you know what's going on. Have you ever watched someone try to solve a problem in the presence of several abstractions they didn't understand? They feel helpless. Usually, they start making wild guesses about where the problem could be. I call this "stab in the dark debugging". :-)
More importantly, if you can see through most abstractions then you can develop an intuition to make much better technology decisions. Choosing the right libraries and components in your platform can prevent lots of problems before they ever happen.
Don't assume that this kind of deep technical knowledge becomes less valuable as you climb the management ladder. Understanding this stuff can be a huge advantage in many kinds of decisions, right up to the most executive levels. I believe the technical prowess of Bill Gates was a major reason why Microsoft beat every competitor in the eighties and nineties, even though Bill probably wrote no code, no specs, and no design documents.
Failures and Successes
It wouldn't be fair to only mention the mistakes of others when I've made so many excellent and instructive mistakes of my own. :-)
My most recent blunders in this area happened when we built SourceOffSite Collab on a pile of abstractions which was way too short.
Better decisions would have gotten SOS Collab to market sooner and we would have fewer code maintenance problems now.
Not all of our decisions went badly. We made a great choice when we decided to build Vault using .NET.
From the beginning, I hoped that .NET was "Java done right". I've used Java extensively, and I loved the productivity gains we got during the beginning and middle of the development cycle. But things got ugly at the end. All those layers of abstraction started contributing to our bug list. I've been involved in a couple of projects which completely failed because Java was chosen. (Yes, this is merely my opinion, and yes, there were other factors in the failure of those projects.)
Given our bad experiences with Java, our decision to use .NET took a fair amount of courage. Early experiments looked promising, but we knew that we would have to wait for the endgame to really know if .NET could really be trusted all the way through.
As I write this, SourceGear Vault 1.0 has been shipping for over two months. We have no regrets. For an abstraction pile as large as the one described above, it's remarkable that this product works at all. :-)
But the fact that it works well is nothing short of amazing. We have test applications which continuously try to abuse Vault in ways that are abusive and profane. If something goes wrong in any layer of abstraction, the whole test will come to a halt. But we can let these tests run for days at a time without any problems whatsoever.
This success stands as a testimony to how incredible .NET really is. We built a reasonably full-featured version control system in 14 months, and it works. Sure, we had some trouble. Layers 25, 37 and 40 didn't always behave like they should. But layer 11 was problem-free, quite unlike its Java counterpart. Considering the productivity gains we received, I never expected things to go so smoothly.
Note: In response to the controversy generated by this article, I posted some followup remarks.


Writes beautifully formatted cross tabulations to Excel using 'openxlsx'. It has been developed to help automate the process of publishing Official Statistics. The user provides a dataframe, which is outputted to Excel with various types of rich formatting which are automatically detected from the structure of the cross tabulation. Documentation can be found at the following url <https://github.com/moj-analytical-services/xltabr>.
| Version: | 0.1.2 |
| Imports: | magrittr, openxlsx |
| Suggests: | testthat, reshape2 |
| Published: | 2017-11-28 |
| Author: | Robin Linacre [aut, cre], Karik Isichei [aut] |
| Maintainer: | Robin Linacre <robinlinacre at hotmail.com> |
| BugReports: | https://github.com/moj-analytical-services/xltabr/issues |
| License: | GPL-3 |
| URL: | https://github.com/moj-analytical-services/xltabr#readme |
| NeedsCompilation: | no |
| CRAN checks: | xltabr results |
| Reference manual: | xltabr.pdf |
| Package source: | xltabr_0.1.2.tar.gz |
| Windows binaries: | r-devel: xltabr_0.1.2.zip, r-release: xltabr_0.1.2.zip, r-oldrel: xltabr_0.1.2.zip |
| OS X binaries: | r-release: xltabr_0.1.2.tgz, r-oldrel: xltabr_0.1.2.tgz |
| Old sources: | xltabr archive |
Please use the canonical form https://CRAN.R-project.org/package=xltabr to link to this page.


Lung diseases
Your task:
Find out about lung diseases, and write your findings in a short report.
(Do not just print out all the pages of interest you find but summarise the key points in your report.)
Use the 'Information finder', or to use the internet click the heart.


Note Kitchen is like a search engine and laboratory for exploring musical chords and scales. Simply type the name of a chord or a scale in the text field and see the notes light up on the keyboard.
You can also hear what the notes sound like by adding the keyword 'play sequence' or 'play chord' to your search. See below for a full list of commands and options.
Feature requests? Bugs? Questions?
Message me on Facebook: @notekitchenapp
Type the following commands and press "RETURN" to confirm. When you type a valid settings command the text color will change temporarily.
Show note letters on the keyboard.
Hide note letters from the keyboard.
Include these keywords in addition to chords or scales in your query to enable additional features.
When the 'play sequence' phrase is present in the query the notes will begin playing and looping in a sequence. Be sure to turn your speakers up! To stop playback either remove the 'play sequence' phrase or press 'RETURN'.
When the 'play chord' phrase is present in the query the notes will begin playing and looping as a chord. Be sure to turn your speakers up! To stop playback either remove the 'play chord' keyword or press 'RETURN'.
When the 'root' keyword is present in the query only the root notes of the chords or scales will be shown. This is a convenient way to isolate the root notes if you have multiple chords in your query.
Keyboard shortcuts and commands.
Pressing the up arrow key will transpose the query up by 1 semitone. This works for both chords and scales and even works if you have multiple chords in your query.
Pressing the down arrow key will transpose the query down by 1 semitone. This works for both chords and scales and even works if you have multiple chords in your query.
If a valid settings command is present in the query (indicated by yellow text), pressing 'RETURN' will confirm and execute that command and clear the text. In all other cases the query will be cleared and all notes will be reset on the keyboard. This will also cause playback to stop.
When you type a query you'll notice a "Link" link appear on the bottom left of the screen. This is a shareable link that contains your current query. This is a convenient way for saving chords or scales or sharing them with others.
Chord notes appear as soon as you type them in. To show chords start by typing a root note followed by a series of modifiers. All the common chord symbols are supported. Try being creative and experimenting with chord names.
A simple C major chord.
Make it minor by adding an 'm'.
All standard modifiers are available too, e.g. 6, M7, etc.
You can select different roots like Bb, C#, Gb, etc.
You can add accidentals by typing (b, #, +, -) followed by a number.
You can also use text modifiers like 'dim' and 'aug'.
Scales appear as soon as you type them in. Simply type a root note followed by a valid scale name. The full list of supported scales is found below.
My name's Nebs and I run the synthesizer YouTube channel once upon a synth.
I built Note Kitchen because I wanted a simple tool for quickly searching for scales and chords. I hope to expand this tool to include many more features.
This is a passion side-project which combines two of my main passions: programming and music. I hope you enjoy using it!


|
|||||
|
When it comes to selecting and getting into a college, guidance counselors are invaluable. But they can't help you unless they know what you're looking for. Help them give the guidance you need by following these tips from counselors across the country. Visit early and often. Get to know your counselor during your freshman year. Check back with them at least once a year to discuss courses and extracurricular activities. Start discussing colleges during your junior year and keep your counselor informed throughout your college search. Let your counselor get to know you. When meeting with your counselor, be prepared to talk about yourself. Provide them with a list of your extracurriculars, jobs and summer experiences. Greet them and remind them of your name as often as you can—in the halls, at after-school functions, etc. "You don't want to be a student the counselor barely knows," says Paul Marthers, Dean of Admissions at Reed College. "The result will be a generic recommendation." Prepare for meetings. Know what issues you want help with and compile a list of questions you want answered. "I always like it when my students come with specific questions prepared ahead of time," says Bonnie Laughlin, director of college counseling at Francis Parker School in San Diego, CA. With questions in hand, your counselor can focus your work to make your meeting as productive as possible. Do your own legwork. Start reading college guides during your junior year. Check out the Web sites of colleges that interest you. Then visit your counselor for help narrowing down your choices. Attend workshops and seminars. Guidance counselors frequently organize workshops and seminars to discuss college admissions. Participate! Many of your questions will be answered there. You'll then be able to devote your one-on-one time to more specific concerns. Provide materials well before the due date. "Give your counselor all forms (school report, recommendation, mid-year, etc.) early and, preferably, all at once," says Nancy Scarci, former counselor at Roosevelt High School. Be sure to include information about deadlines. Recommendations that require no specific forms should be requested in writing with the address and deadline clearly noted. Show them your best. You'll get better advice and better letters of rec if your counselor really knows what makes you tick. Show your counselor what motivates and inspires you, and impress them with your motivation. Pay attention. Listen carefully to what your counselor says. Even if you don't agree with what they're saying, listen closely and make your own decision. Thank them. Be sure to thank your counselors for their help. Send a written thank you note after your counselor writes a letter of recommendation. Your guidance counselor is a very busy person—but not too busy to help you with your biggest education decision. Get the guidance you need by helping them help you. Source: Fastweb |
|||||
| If investment, financial, mortgage or insurance planning and/or products are required, College and Retirement Solutions, LLC may refer you to one of its affiliates, including The Ziering Insurance Agency. Any discussion of the Tax implications of planning is strictly for general purposes. Neither "CRS" nor its representatives may give specific tax advice. One should seek the advice and counsel of their accountant and/or tax advisor for information regarding their particular situation. |


How To Work With WebGoat
Welcome to a brief overview of WebGoat
Environment Information
WebGoat uses the Apache Tomcat server but can run in any application server. It is configured to run on localhost although this can be easily changed, see the "Tomcat Configuration" section in the Introduction.
The WebGoat Interface
- 1. Lesson Categories in WebGoat. Click on a Category to see specific Lessons.
- 2. This will show the underlying source code.
- 3. This will show the complete solution of the seleted lesson.
- 4. This will show goals and objectives of the lesson.
- 5. This will show technical hints to solve the lesson.
- 6. This shows the HTTP request data.
- 7. If you want to restart a lesson you can use this link.
Solve The Lesson
Always start with a lesson plan. Then try to solve the lesson and if necessary, use the hints. The last hint is the solution text if applicable. If you cannot solve the lesson using the hints, you may view the solution for complete details.


RAIDAR provides you with an opportunity to search for, preview and license the musical work(s) of the Berklee community. The sole purpose of this access to RAIDAR is for you to find and license musical work(s) for your student films and other visual media projects. You are not authorized to use the work(s) on RAIDAR for any other purpose; commercial or non-commercial.
By accessing RAIDAR you agree:


about
cc
visual
Jacky saw all. It was
visual
Jumble
Witness Needed
Analytics
By visiting this site, you agree to its use of
Cloudflare Analytics
. No identifiable information is transmitted to Cloudflare. See
Cloudflare Analytics user privacy
.


{% extends "layout.html" %} {% block page_title %} Claim for Housing Possession Court Duty {% endblock %} {% block content %} Management tools for operational assurance Work report - version 1 Work report - version 2 for contract managers, central commissioning Providers {% endblock %}


Carter Schoenfeld
Web Application & Integration Specialist, Kenyon College
It's a complete re-write of original framework
Faster and has simpiler syntax
Embraces the Component paradigm
Server-side rendering or run application as a web worker
It's been in development for a long time (2014-2016)
Go to https://angular.io for most update docs and tutorials
The concepts remain same
Still have Directives, Services, Filters (Pipes)
Things that are gone:
.controller
, .factory
$scope, $apply, $digest, $watch
ng-show, ng-hide, ng-click, and more
Built with Typescript (Google's preferred method)
Javascript compiler created by Microsoft
Transpile to ES5, ES6(ES2015), and others in future
Allows for more OOP with classes, implements, interfaces, and annotations
Allows for optional variable typing
Better tooling for IDE’s to catch problems earlier
interface Person {
firstName : string,
lastName : string
}
class SayHello{
greeting: string;
constructor(person : Person) {
this.greeting = "Hello ";
this.greeting += person.firstName + " ";
this.greeting += person.lastName;
}
greet() {
return this.greeting;
}
}
let p = {
firstName : "Donyell",
lastName : "Marshall"
};
let hello = new SayHello(p);
document.write(hello.greet());
var SayHello = (function () {
function SayHello(person) {
this.greeting = "Hello ";
this.greeting += person.firstName + " ";
this.greeting += person.lastName;
}
SayHello.prototype.greet = function () {
return this.greeting;
};
return SayHello;
}());
var p = {
firstName: "Donyell",
lastName: "Marshall"
};
var hello = new SayHello(p);
document.write(hello.greet());
Single location to declare all components, directives, services for an application
Import external modules
Declare which components, service, etc are publically available
Specify a Root Component to bootstrap an application
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.comp';
import { TodoInputComponent } from './todo-input.comp';
import { TodoListComponent } from './todo-list.comp';
import { TodoDataService } from './todo-data.serv';
@NgModule({
declarations: [
AppComponent,
TodoInputComponent,
TodoListComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [TodoDataService],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic }
from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
Represents a visual element of an application
Pairing of logic and a template
Use annotations (decorators) to define metadata
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `

>NG2 Todo

<todo-list></todo-list>
`
})
export class AppComponent {
}
import { Component, OnInit } from '@angular/core';
import { TodoDataService } from '../todo-data.service';
@Component({
selector: 'todo-list',
templateUrl: './todo-list.component.html',
styleUrls: ['./todo-list.component.css']
})
export class TodoListComponent implements OnInit {
todos : any;
some-img : string = "my-image";
constructor(private todoService : TodoDataService) {
this.todos = this.todoService.getTodos();
}
todoStatus(todo){
return todo.done ? "complete" : "incomplete";
}
doneTodo(todo){
todo.done = !todo.done;
}
...
ngOnInit() {
}
}
Fewer rules and terms to learn
Template Syntax closely tied to DOM API
(Properties, Events, Methods)
[ ]
to bind to Property
( )
to bind to Event
{{ }}
to bind to data interpolation
*ngIf, *ngFor
to manipulate HTML

Add Item
<input class="todo-input"
placeholder="Add Item"
type="text" name="todo-task"
[(ngModel)]="todo.task" />

<button class="btn"
[disabled]="hasInput()"
(click)="addTodo()">Add</button>

...

Based on Ember CLI
Create a project with ng new project_name
Adds all the supporting packages and folder structure
Create a component with ng g component name
View your project with ng serve
Build your project with ng build
Uses Webpack for packaging


Feedback received
| Name | Job title | Department | Internal/External | Project | Status |
|---|---|---|---|---|---|
| Ani Hakobyan | Regional marketing manager - CIS & Mongolia | Member firm development | Internal | CyberSecurity Standards implementation in CIS | Feedback pending |
| Ani Hakobyan | Regional marketing manager - CIS & Mongolia | Member firm development | Internal | CyberSecurity Standards implementation in CIS | Feedback received |
| Ani Hakobyan | Regional marketing manager - CIS & Mongolia | Member firm development | Internal | CyberSecurity Standards implementation in CIS | Feedback received |
Feedback provided
| Name | Job title | Department | Internal/External | Project | Status |
|---|---|---|---|---|---|
| Vladislav Muradyan | Regional marketing manager - CIS & Mongolia | Member firm development | Internal | CyberSecurity Standards implementation in CIS | Feedback received |
| Vladislav Muradyan | Regional marketing manager - CIS & Mongolia | Member firm development | Internal | CyberSecurity Standards implementation in CIS | Feedback received |
Team member’s feedback
| Name | Job title | Department | Feedback |
|---|---|---|---|
| Vladislav Muradyan | Regional marketing manager - CIS & Mongolia | Member firm development | View report |
| Vladislav Muradyan | Regional marketing manager - CIS & Mongolia | Member firm development | View report |


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
boolean
$_enabled= 'false'
Stores enabled state of the profiler. If set to False, calls to queryStart() will simply be ignored.
false
Detailsinteger
$_filterElapsedSecs= 'null'
Stores the number of seconds to filter. NULL if filtering by time is disabled. If an integer is stored here, profiles whose elapsed time is less than this value in seconds will be unset from the self::$_queryProfiles array.
null
Detailsinteger
$_filterTypes= 'null'
Logical OR of any of the filter constants. NULL if filtering by query type is disable. If an integer is stored here, it is the logical OR of any of the query type constants. When the query ends, if it is not one of the types specified, it will be unset from the self::$_queryProfiles array.
null
Details__construct(
boolean $enabled
=
false
)
:
void
Class constructor. The profiler is disabled by default unless it is specifically enabled by passing in $enabled here or calling setEnabled().
| Name | Type | Description |
|---|---|---|
| $enabled | boolean |
clear(
)
:
\Zend_Db_Profiler
Clears the history of any past query profiles. This is relentless and will even clear queries that were started and may not have been marked as ended.
| Type | Description |
|---|---|
| \Zend_Db_Profiler | Provides a fluent interface |
getEnabled(
)
:
boolean
Get the current state of enable. If True is returned, the profiler is enabled.
| Type | Description |
|---|---|
| boolean |
getFilterElapsedSecs(
)
:
integer|null
Returns the minimum number of seconds for saving query profiles, or null if query profiles are saved regardless of elapsed time.
| Type | Description |
|---|---|
| integernull |
getFilterQueryType(
)
:
integer|null
Returns the types of query profiles saved, or null if queries are saved regardless of their types.
getLastQueryProfile(
)
:
\Zend_Db_Profiler_Query|false
Get the Zend_Db_Profiler_Query object for the last query that was run, regardless if it has ended or not. If the query has not ended, its end time will be null. If no queries have been profiled, false is returned.
| Type | Description |
|---|---|
| \Zend_Db_Profiler_Queryfalse |
getQueryProfile(
integer $queryId
)
:
\Zend_Db_Profiler_Query
Get a profile for a query. Pass it the same handle that was returned by queryStart() and it will return a Zend_Db_Profiler_Query object.
| Name | Type | Description |
|---|---|---|
| $queryId | integer |
| Type | Description |
|---|---|
| \Zend_Db_Profiler_Query |
| Exception | Description |
|---|---|
| \Zend_Db_Profiler_Exception |
getQueryProfiles(
integer $queryType
=
null, boolean $showUnfinished
=
false
)
:
array|false
Get an array of query profiles (Zend_Db_Profiler_Query objects). If $queryType is set to one of the Zend_Db_Profiler::* constants then only queries of that type will be returned. Normally, queries that have not yet ended will not be returned unless $showUnfinished is set to True. If no queries were found, False is returned. The returned array is indexed by the query profile handles.
| Name | Type | Description |
|---|---|---|
| $queryType | integer | |
| $showUnfinished | boolean |
| Type | Description |
|---|---|
| arrayfalse |
getTotalElapsedSecs(
integer $queryType
=
null
)
:
float
Get the total elapsed time (in seconds) of all of the profiled queries.
Only queries that have ended will be counted. If $queryType is set to one or more of the Zend_Db_Profiler::* constants, the elapsed time will be calculated only for queries of the given type(s).
| Name | Type | Description |
|---|---|---|
| $queryType | integer | OPTIONAL |
| Type | Description |
|---|---|
| float |
getTotalNumQueries(
integer $queryType
=
null
)
:
integer
Get the total number of queries that have been profiled. Only queries that have ended will be counted. If $queryType is set to one of the Zend_Db_Profiler::* constants, only queries of that type will be counted.
| Name | Type | Description |
|---|---|---|
| $queryType | integer | OPTIONAL |
| Type | Description |
|---|---|
| integer |
queryClone(
$query
)
:
integer
| Name | Type | Description |
|---|---|---|
| $query |
| Type | Description |
|---|---|
| integer | or null |
queryEnd(
integer $queryId
)
:
void
Ends a query. Pass it the handle that was returned by queryStart().
This will mark the query as ended and save the time.
| Name | Type | Description |
|---|---|---|
| $queryId | integer |
| Exception | Description |
|---|---|
| \Zend_Db_Profiler_Exception |
queryStart(
string $queryText, integer $queryType
=
null
)
:
integer|null
Starts a query. Creates a new query profile object (Zend_Db_Profiler_Query) and returns the "query profiler handle". Run the query, then call queryEnd() and pass it this handle to make the query as ended and record the time. If the profiler is not enabled, this takes no action and immediately returns null.
| Name | Type | Description |
|---|---|---|
| $queryText | string | SQL statement |
| $queryType | integer | OPTIONAL Type of query, one of the Zend_Db_Profiler::* constants |
| Type | Description |
|---|---|
| integernull |
setEnabled(
boolean $enable
)
:
\Zend_Db_Profiler
Enable or disable the profiler. If $enable is false, the profiler is disabled and will not log any queries sent to it.
| Name | Type | Description |
|---|---|---|
| $enable | boolean |
| Type | Description |
|---|---|
| \Zend_Db_Profiler | Provides a fluent interface |
setFilterElapsedSecs(
integer $minimumSeconds
=
null
)
:
\Zend_Db_Profiler
Sets a minimum number of seconds for saving query profiles. If this is set, only those queries whose elapsed time is equal or greater than $minimumSeconds will be saved. To save all queries regardless of elapsed time, set $minimumSeconds to null.
| Name | Type | Description |
|---|---|---|
| $minimumSeconds | integer | OPTIONAL |
| Type | Description |
|---|---|
| \Zend_Db_Profiler | Provides a fluent interface |
setFilterQueryType(
integer $queryTypes
=
null
)
:
\Zend_Db_Profiler
Sets the types of query profiles to save. Set $queryType to one of the Zend_Db_Profiler::* constants to only save profiles for that type of query. To save more than one type, logical OR them together. To save all queries regardless of type, set $queryType to null.
| Name | Type | Description |
|---|---|---|
| $queryTypes | integer | OPTIONAL |
| Type | Description |
|---|---|
| \Zend_Db_Profiler | Provides a fluent interface |


__mitmproxy__ is a console tool that allows interactive examination and
modification of HTTP traffic. It differs from mitmdump in that all flows are
kept in memory, which means that it's intended for taking and manipulating
small-ish samples. Use the _?_ shortcut key to view, context-sensitive
documentation from any __mitmproxy__ screen.
## Flow list
The flow list shows an index of captured flows in chronological order.
- __1__: A GET request, returning a 302 Redirect response.
- __2__: A GET request, returning 16.75kb of text/html data.
- __3__: A replayed request.
- __4__: Intercepted flows are indicated with orange text. The user may edit
these flows, and then accept them (using the _a_ key) to continue. In this
case, the request has been intercepted on the way to the server.
- __5__: A response intercepted from the server on the way to the client.
- __6__: The event log can be toggled on and off using the _e_ shortcut key. This
pane shows events and errors that may not result in a flow that shows up in the
flow pane.
- __7__: Flow count.
- __8__: Various information on mitmproxy's state. In this case, we have an
interception pattern set to ".*".
- __9__: Bind address indicator - mitmproxy is listening on port 8080 of all
interfaces.
## Flow view
The __Flow View__ lets you inspect and manipulate a single flow:
- __1__: Flow summary.
- __2__: The Request/Response tabs, showing you which part of the flow you are
currently viewing. In the example above, we're viewing the Response. Hit _tab_
to switch between the Response and the Request.
- __3__: Headers.
- __4__: Body.
- __5__: View Mode indicator. In this case, we're viewing the body in __hex__
mode. The other available modes are __pretty__, which uses a number of
heuristics to show you a friendly view of various content types, and __raw__,
which shows you exactly what's there without any changes. You can change modes
using the _m_ key.
## Grid Editor
Much of the data that we'd like to interact with in mitmproxy is structured.
For instance, headers, queries and form data can all be thought of as a list of
key/value pairs. Mitmproxy has a built-in editor that lays this type of data
out in a grid for easy manipulation.
At the moment, the Grid Editor is used in four parts of mitmproxy:
- Editing request or response headers (_e_ for edit, then _h_ for headers in flow view)
- Editing a query string (_e_ for edit, then _q_ for query in flow view)
- Editing a URL-encoded form (_e_ for edit, then _f_ for form in flow view)
- Editing replacement patterns (_R_ globally)
If there is is no data, an empty editor will be started to let you add some.
Here is the editor showing the headers from a request:
To edit, navigate to the key or value you want to modify using the arrow or vi
navigation keys, and press enter. The background color will change to show that
you are in edit mode for the specified field:
Modify the field as desired, then press escape to exit edit mode when you're
done. You can also add a row (_a_ key), delete a row (_d_ key), spawn an
external editor on a field (_e_ key). Be sure to consult the context-sensitive
help (_?_ key) for more.
# Example: Interception
__mitmproxy__'s interception functionality lets you pause an HTTP request or
response, inspect and modify it, and then accept it to send it on to the server
or client.
### 1: Set an interception pattern
We press _i_ to set an interception pattern. In this case, the __~q__ filter
pattern tells __mitmproxy__ to intercept all requests. For complete filter
syntax, see the [Filter expressions](@!urlTo("filters.html")!@) section of this
document, or the built-in help function in __mitmproxy__.
### 2: Intercepted connections are indicated with orange text:
### 3: You can now view and modify the request:
In this case, we viewed the request by selecting it, pressed _e_ for "edit"
and _m_ for "method" to change the HTTP request method.
### 4: Accept the intercept to continue:
Finally, we press _a_ to accept the modified request, which is then sent on to
the server. In this case, we changed the request from an HTTP GET to
OPTIONS, and Google's server has responded with a 405 "Method not allowed".


About Me
Hi there. My name is Keita Kurita and I am a masters student studying machine learning and NLP at CMU.
I received my bachelors degree in electrical engineering and computer science from the University of Tokyo where I graduated at the top of my class with honors.
My interests are in building machine learning-powered products that operate on large-scale, real-life data. I'm currently looking for full-time opportunities after graduation starting in 2020.


CSGO Win Big
loading…
Deposit skins
Logout
Loading chat, please wait…
Items:
/100 | Total Pot Price:


Build a Supercomputer and program with MPI Progress: {{completed_percentages['Build a Supercomputer and program with MPI']}}%
{{curTitle}} for Raspberry Pi Supercomputer
What you'll need to build your own supercomputer:
2+ Raspberry Pis. One of the Pis will be the master node, the rest are worker nodes. You can "simulate" a full supercomputer on a single computer as well, but then it's not really a supercomputer.
2+ power supplies (cellphone chargers) for the pis
2+ SD cards with preferably 8gb+ in storage.
2+ cat5 or cat6 cables
Depending on the amount of nodes you have, and your router/modem, you may also need to buy a switch.
You may also want to opt for some stack-able Raspberry Pi cases if you have many nodes.


| ssh_askpass {askpass} | R Documentation |
This returns the path to the native askpass executable which can be used by git-credential or ssh-agent. Most users don't have worry about this.
ssh_askpass()
On Windows and MacOS the package automatically sets the SSH_ASKPASS
and
GIT_ASKPASS
variables on load (if not already set). If these are set
you should be able to run e.g. sys::exec_wait("ssh-add")
and you should
be prompted for a passphrase if your key is protected.


iotop
Display a table of current I/O usage by processes or threads.
More information: home page
- Start top-like I/O monitor:
sudo iotop
- Show only processes or threads actually doing I/O:
sudo iotop --only
- Show I/O usage in non-interactive mode:
sudo iotop --batch
- Show only I/O usage of processes (default is to show all threads):
sudo iotop --processes
- Show I/O usage of given PID(s):
sudo iotop --pid=PID
- Show I/O usage of a given user:
sudo iotop --user=user
- Show accumulated I/O instead of bandwidth:
sudo iotop --accumulated


| Modifier and Type | Method and Description |
|---|---|
ParseQuery<T>
|
ParseQuery.addAscendingOrder(String key)
Also sorts the results in ascending order by the given key.
|
ParseQuery<T>
|
ParseQuery.addDescendingOrder(String key)
Also sorts the results in descending order by the given key.
|
ParseQuery<T> |
ParseQueryAdapter.QueryFactory.create()
|
ParseQuery<T>
|
ParseQuery.fromLocalDatastore()
Change the source of this query to all pinned objects.
|
ParseQuery<T>
|
ParseQuery.fromPin()
Change the source of this query to the default group of pinned objects.
|
ParseQuery<T>
|
ParseQuery.fromPin(String name)
Change the source of this query to a specific group of pinned objects.
|
static ParseQuery<ParseUser>
|
ParseUser.getQuery()
Constructs a query for
ParseUser . |
static ParseQuery<ParseSession>
|
ParseSession.getQuery()
Constructs a query for
ParseSession . |
static ParseQuery<ParseRole>
|
ParseRole.getQuery()
Gets a
ParseQuery over the
Role collection.
|
ParseQuery<T> |
ParseRelation.getQuery()
Gets a query that can be used to query the objects in this relation.
|
static ParseQuery<ParseInstallation>
|
ParseInstallation.getQuery()
Constructs a query for
ParseInstallation . |
static <T extends ParseObject> |
ParseQuery.getQuery(Class<T> subclass)
Creates a new query for the given
ParseObject
subclass type.
|
static <T extends ParseObject> |
ParseQuery.getQuery(String className)
Creates a new query for the given class name.
|
static ParseQuery<ParseUser>
|
ParseQuery.getUserQuery()
Deprecated.
Please use
ParseUser.getQuery()
instead. |
ParseQuery<T>
|
ParseQuery.ignoreACLs()
Ignore ACLs when querying from the Local Datastore.
|
ParseQuery<T>
|
ParseQuery.include(String key)
Include nested
ParseObject s
for the provided key.
|
static <T extends ParseObject> |
ParseQuery.or(List<ParseQuery<T>> queries)
Constructs a query that is the
or of the given queries.
|
ParseQuery<T>
|
ParseQuery.orderByAscending(String key)
Sorts the results in ascending order by the given key.
|
ParseQuery<T>
|
ParseQuery.orderByDescending(String key)
Sorts the results in descending order by the given key.
|
ParseQuery<T>
|
ParseQuery.selectKeys(Collection<String> keys)
Restrict the fields of returned
ParseObject s
to only include the provided keys.
|
ParseQuery<T>
|
ParseQuery.setCachePolicy(ParseQuery.CachePolicy newCachePolicy)
Change the caching policy of this query.
|
ParseQuery<T>
|
ParseQuery.setLimit(int newLimit)
Controls the maximum number of results that are returned.
|
ParseQuery<T>
|
ParseQuery.setMaxCacheAge(long maxAgeInMilliseconds)
Sets the maximum age of cached data that will be considered in this
query.
|
ParseQuery<T>
|
ParseQuery.setSkip(int newSkip)
Controls the number of results to skip before returning any results.
|
ParseQuery<T>
|
ParseQuery.setTrace(boolean shouldTrace)
Turn on performance tracing of finds.
|
ParseQuery<T>
|
ParseQuery.whereContainedIn(String key,
Collection<? extends Object> values)
Add a constraint to the query that requires a particular key's value to
be contained in the
provided list of values.
|
ParseQuery<T>
|
ParseQuery.whereContains(String key,
String substring)
Add a constraint for finding string values that contain a provided
string.
|
ParseQuery<T>
|
ParseQuery.whereContainsAll(String key,
Collection<?> values)
Add a constraint to the query that requires a particular key's value
match another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereDoesNotExist(String key)
Add a constraint for finding objects that do not contain a given key.
|
ParseQuery<T>
|
ParseQuery.whereDoesNotMatchKeyInQuery(String key,
String keyInQuery,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value does
not match any value
for a key in the results of another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereDoesNotMatchQuery(String key,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value does
not match another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereEndsWith(String key,
String suffix)
Add a constraint for finding string values that end with a provided
string.
|
ParseQuery<T>
|
ParseQuery.whereEqualTo(String key,
Object value)
Add a constraint to the query that requires a particular key's value to
be equal to the
provided value.
|
ParseQuery<T>
|
ParseQuery.whereExists(String key)
Add a constraint for finding objects that contain the given key.
|
ParseQuery<T>
|
ParseQuery.whereGreaterThan(String key,
Object value)
Add a constraint to the query that requires a particular key's value to
be greater than the
provided value.
|
ParseQuery<T>
|
ParseQuery.whereGreaterThanOrEqualTo(String key,
Object value)
Add a constraint to the query that requires a particular key's value to
be greater than or
equal to the provided value.
|
ParseQuery<T>
|
ParseQuery.whereLessThan(String key,
Object value)
Add a constraint to the query that requires a particular key's value to
be less than the
provided value.
|
ParseQuery<T>
|
ParseQuery.whereLessThanOrEqualTo(String key,
Object value)
Add a constraint to the query that requires a particular key's value to
be less than or equal
to the provided value.
|
ParseQuery<T>
|
ParseQuery.whereMatches(String key,
String regex)
Add a regular expression constraint for finding string values that match
the provided regular
expression.
|
ParseQuery<T>
|
ParseQuery.whereMatches(String key,
String regex,
String modifiers)
Add a regular expression constraint for finding string values that match
the provided regular
expression.
|
ParseQuery<T>
|
ParseQuery.whereMatchesKeyInQuery(String key,
String keyInQuery,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
matches a value for a key
in the results of another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereMatchesQuery(String key,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
match another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereNear(String key,
ParseGeoPoint point)
Add a proximity based constraint for finding objects with key point
values near the point
given.
|
ParseQuery<T>
|
ParseQuery.whereNotContainedIn(String key,
Collection<? extends Object> values)
Add a constraint to the query that requires a particular key's value not
be contained in the
provided list of values.
|
ParseQuery<T>
|
ParseQuery.whereNotEqualTo(String key,
Object value)
Add a constraint to the query that requires a particular key's value to
be not equal to the
provided value.
|
ParseQuery<T>
|
ParseQuery.whereStartsWith(String key,
String prefix)
Add a constraint for finding string values that start with a provided
string.
|
ParseQuery<T>
|
ParseQuery.whereWithinGeoBox(String key,
ParseGeoPoint southwest,
ParseGeoPoint northeast)
Add a constraint to the query that requires a particular key's
coordinates be contained within
a given rectangular geographic bounding box.
|
ParseQuery<T>
|
ParseQuery.whereWithinKilometers(String key,
ParseGeoPoint point,
double maxDistance)
Add a proximity based constraint for finding objects with key point
values near the point given
and within the maximum distance given.
|
ParseQuery<T>
|
ParseQuery.whereWithinMiles(String key,
ParseGeoPoint point,
double maxDistance)
Add a proximity based constraint for finding objects with key point
values near the point given
and within the maximum distance given.
|
ParseQuery<T>
|
ParseQuery.whereWithinRadians(String key,
ParseGeoPoint point,
double maxDistance)
Add a proximity based constraint for finding objects with key point
values near the point given
and within the maximum distance given.
|
| Modifier and Type | Method and Description |
|---|---|
static Task<Void> |
ParsePush.sendDataInBackground(JSONObject data,
ParseQuery<ParseInstallation> query)
A helper method to concisely send a push to a query.
|
static void |
ParsePush.sendDataInBackground(JSONObject data,
ParseQuery<ParseInstallation> query,
SendCallback callback)
A helper method to concisely send a push to a query.
|
static Task<Void> |
ParsePush.sendMessageInBackground(String message,
ParseQuery<ParseInstallation> query)
A helper method to concisely send a push message to a query.
|
static void |
ParsePush.sendMessageInBackground(String message,
ParseQuery<ParseInstallation> query,
SendCallback callback)
A helper method to concisely send a push message to a query.
|
protected void |
ParseQueryAdapter.setPageOnQuery(int page,
ParseQuery<T> query)
Override this method to manually paginate the provided
ParseQuery .
|
void |
ParsePush.setQuery(ParseQuery<ParseInstallation> query)
Sets the query for this push for which this push notification will be
sent.
|
ParseQuery<T>
|
ParseQuery.whereDoesNotMatchKeyInQuery(String key,
String keyInQuery,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
does not match any value
for a key in the results of another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereDoesNotMatchQuery(String key,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
does not match another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereMatchesKeyInQuery(String key,
String keyInQuery,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
matches a value for a key
in the results of another
ParseQuery .
|
ParseQuery<T>
|
ParseQuery.whereMatchesQuery(String key,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
match another
ParseQuery .
|
| Modifier and Type | Method and Description |
|---|---|
static <T extends ParseObject> |
ParseQuery.or(List<ParseQuery<T>> queries)
Constructs a query that is the
or of the given queries.
|


Welcome To Profile Page
Employee Full Name : {{emp_data.full_name}}
Employee Email Address :
{{emp_data.employee_email}}
Employee Id :
{{emp_data.id}}
Organization Name :
{{emp_data.org_name}}


{% extends "base.html" %} {% block title %}Scorekeepers{% endblock %} {% block content %}
Choose from one of the scorekeepers below to view their appearance details.


Custom Back Button
Right Button
Push Other View
Push Yet Another View
This is some other view.
4
3
2
1
Push Root View Again
This is yet another view.


Your pizza will have slices.
That will be $. At our Vancouver location?
Thank you for pizza partying with us!
Sorry, but we only have a 48-inch oven.
Sorry, but while we DO use a real brick oven, it's still conventional in the sense of 3-dimensional space.
pssst...try entering a number


About this project
{{ .Params.synopsis }}
Work on this project started in {{ .Date.Format "January 2006" }} {{ if .Params.ongoing }} and is still ongoing. {{ else if .Params.duration }} and it took approximately {{ .Params.duration }} to complete. {{ end }} {{ if .Params.github }} The source code for the project can be seen on Github. {{ end }} {{ if .Params.liveurl }} The project can be seen live here. {{ end }}
{{ .Content }}


|
BiriBiriBeat
An Arduboy Otoge/Rhythm Game
|
File defining small button and arrow sprites. More...
#include "bitmaps/sprites_buttons.h"
Go to the source code of this file.
Variables | |
| const unsigned char | upArrow [] |
| const unsigned char | upArrowFilled [] |
| const unsigned char | downArrow [] |
| const unsigned char | downArrowFilled [] |
| const unsigned char | leftArrow [] |
| const unsigned char | leftArrowFilled [] |
| const unsigned char | rightArrow [] |
| const unsigned char | rightArrowFilled [] |
| const unsigned char | aTile [] |
| const unsigned char | aTileFilled [] |
| const unsigned char | bTile [] |
| const unsigned char | bTileFilled [] |
| const unsigned char | abTileMask [] |
File defining small button and arrow sprites.
Definition in file sprites_buttons.cpp.
| const unsigned char abTileMask[] |
Definition at line 106 of file sprites_buttons.cpp.
| const unsigned char aTile[] |
Definition at line 74 of file sprites_buttons.cpp.
| const unsigned char aTileFilled[] |
Definition at line 82 of file sprites_buttons.cpp.
| const unsigned char bTile[] |
Definition at line 90 of file sprites_buttons.cpp.
| const unsigned char bTileFilled[] |
Definition at line 98 of file sprites_buttons.cpp.
| const unsigned char downArrow[] |
Definition at line 26 of file sprites_buttons.cpp.
| const unsigned char downArrowFilled[] |
Definition at line 34 of file sprites_buttons.cpp.
| const unsigned char leftArrow[] |
Definition at line 42 of file sprites_buttons.cpp.
| const unsigned char leftArrowFilled[] |
Definition at line 50 of file sprites_buttons.cpp.
| const unsigned char rightArrow[] |
Definition at line 58 of file sprites_buttons.cpp.
| const unsigned char rightArrowFilled[] |
Definition at line 66 of file sprites_buttons.cpp.
| const unsigned char upArrow[] |
Definition at line 10 of file sprites_buttons.cpp.
| const unsigned char upArrowFilled[] |
Definition at line 18 of file sprites_buttons.cpp.


I discovered salvia about 1 month ago. The complexity of the salvia experience seemingly grows with each use. A running theme I have found through my brief but facinating trips, are visuals in which I fall from 1 vision, spin/shift/rotate and find myself slipping though another portal to another vision. This typically happens several times. The relation of these types of trips to lucid dreams is also unmistakeable.
Early one morning, I sat myself on the porch and did two modest sized hits of a 20X extract. I found that anything more than that limits my ability to recall. One cannot underestimate the reverse tolerance effect of the drug.
With the sun still down and birds chirping in the background, I slipped into a salvia vision. I was in a summer time scene. Lots of people walking, bicycling etc. The hills were alive with trees and a pastel colored grass. I then felt the entire periphery of my view begin to ripple like waves. Slowly, the vision began to
sink into a vortex a few 100 yards ahead of me. I started to float backwards, slowly but steadily to view the rippling and sinking of this vision. When I broke the horizen of the view I could see the field slowly getting sucked into a wrinkled tan colored funnel. As I floated back further I noticed this funnel narrowed and terminated on the head of a human bust(basically head and shoulders). The man had his eyes closed. He was very old. There were also several other off shoots of funnels leading up to other parallel realities.
When I reflected on this trip, it seemed to me to indicate that the dream state may actually be a singular view into one of many, perhaps thousands of simultaneous stories playing within the mind at all times. I had a view to 3 such concurrent realities (dream or sub conscious realities) but perhaps there are more. How or when those realities commence is for further speculation.
How's that for a profound experience?
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


It's pretty self explanitory it's just youtubers i find interesting.
3Blue1Brown
CGP_Grey
Hannah Witton


WITNESS LIST Appropriations-S/C on Education Committee November 16, 2000-9:00A Interim On: de la Rosa, Dr. Manuel (Texas Tech Health Sci Center) Althoff, Margaret (Thomason Hospital) Natalicio, Dr. Diana (University of Texas at El Paso)


Home
Log Out
My Profile And Address/Phone Information
Change Password
Employee name:
UserName:
Password:
Address-1:
Address-2:
City:
State:
Zip-Code:
Home Phone:
Cell Phone:
Work Phone:
Work Email:
Personal Email:


1 Lab 1: Light
1.1 Getting the lab template
In RStudio, you’ll find the R Markdown template that you will update with your own results by following along with the GIF below:
I’ve also created a new folder called Lab1-Light
in my CHEM101_ChesterIsmay
folder and named the resulting R Markdown file that was loaded in from the R Markdown template in chemistr
the same thing: Lab1-Light.Rmd
. You are highly encouraged to follow this same convention for all of your labs. (Note that as I mentioned earlier in this manual I do not have any spaces in the folder names or in the names of files here.) This will allow you to remember exactly where you stored the files and allow Danielle and I to easily find your files on the RStudio Server. Note that this folder was also created in the CHEM101_ChesterIsmay
folder where the Rproj
file resides. If you put your lab in the Home
directory instead, Danielle and I won’t be able to access it since Home
is the parent directory of CHEM101_YourName
.
1.2 The parts of the lab template
1.2.1 The YAML header
I’ve already entered some values into my R Markdown file. First I gave a title to the R Markdown file: “Lab 1 - Light”. I then entered my name and the current date. All of these are in quotation marks since they all correspond to character strings and not numbers. It will likely still work if you don’t put quotation marks around the entries here, but it is recommended that you use the quotation marks to help you understand the use of quotation marks when you begin working with R code. (R won’t be as nice as YAML is on forgetting quotation marks when they are needed.)
This portion of the R Markdown file is called the YAML header. It stores metadata about your document. It is separated by ---
before and ---
after on their own lines. RStudio will warn you by coloring the ---
red if you accidentally add a space before them.
You’ll need to make sure to include a space after each of the YAML entries. You’ll receive an error if you have something like that below, for example:
title: "Light Lab"
author: "Chester Ismay"
date:"August 30, 2016"
output: chemistr::chem_lab_word
There needs to be a space after the :
for the date
field.
The last line here corresponds to the type of output that will be produced. In this case, I’ve created a nice way for you to output this R Markdown file to a DOCX (Word document) format. The chem_lab_word
document format in chemistr
creates a Word document with figure captions enabled by default and images with size 3 inches in height and 6 inches in width by default.
1.2.2 Initial R Chunk
On line 8 of the Light R Markdown template, you’ll see three backticks starting the line. This tells R Markdown to expect a block/chunk of code. This code is R code by the next designation {r
. Next we give this R chunk a name setup
and then specify chunk options immediately after the name and a comma. Here we have specified include=FALSE
. We then close the specifications for the chunk with a }
. This include=FALSE
chunk option will run the R code when we press Knit button near the top of the code editor will not put the R code or its output into the document. We’ll press the Knit button in a bit to understand what it accomplishes.
You’ll see this setup
chunk in all of the lab templates. It’s good practice to load any package you’ll need for your analysis at the top in a chunk like this. You may not initially understand why chemistr
is needed but it will be needed when we create a table using the chem_table
function, which resides in the chemistr
package, in the table
chunk beginning on line 21.
1.2.3 Headers
Immediately below this first R chunk is two hash tags. This corresponds to creating a header in our resulting document. The font immediately following the hash-tags will be larger and act as a divider in our document. The number of hash-tags you enter corresponds to how large you’d like to make the header. One hash-tag is the largest and six is the smallest. It is recommended that you use between one and three hash-tags for headers.
1.2.4 Enter data chunk
If you press the Knit button at this moment, you’ll receive an error. Let’s look into what this error means:
Danielle has created lab templates that might not necessarily build without errors immediately for you. You should carefully read over the directions in each chunk (The comments after the #
in the R chunks.) before pressing Knit. Here we see that the error occurs near line 15 of our R Markdown file. The Color
and WavelengthRange
vectors need to have some values entered. These results will correspond to what you observed in lab. I will enter some demo results in here and also show you how to use the R Console to check your results. You’ll see that the Color
and WavelengthRange
vectors must be of the same length when we create a data_frame
to combine them together into “spreadsheet” format in the variable named Q1_data
:
You should use the R Console to check your results in the R chunks by either entering the R code line by line into the Console or by pressing the Run Current Chunk button (the green Play button). We see here that Q1_data
is 6 rows by 2 columns and stores our results in “spreadsheet” form as a data_frame
.
Note that you’ll also receive an error if you have a different number of entries for WavelengthRange
and Color
. Data frames must have an equal number of rows when you combine the columns together via data_frame
.
The chemistr
package also loads the dplyr
package where the data_frame
function resides. If you are running the chunks by pressing the green “play” button, which sends the current chunk into the R console, you’ll need to remember to load all previous chunks as well. If you receive an error message such as
Error: could not find function "data_frame"
this means that you have not loaded the chemistr
package by sending the library(chemistr)
code into the Console BEFORE you run the declarations for Color
, Wavelength
, and Q1_data <- data_frame(Color, WavelengthRange)
. The code chunks read like a book so if you are receiving errors of the “could not find” variety, it probably means you haven’t run all chunks up to the point of your current chunk in the Console. These sorts of errors are also referenced in Chapter 6 of “Getting Used to R, RStudio, and R Markdown”(???).
1.2.5 A nice table R chunk
The chem_table
function will result in a nicely formatted table being produced in your resulting Word document. You’ll need to specify a caption inside the parentheses instead of the "A lovely caption for the table"
default. You’ll also see that RStudio will create a second quotation mark when you might not want one. Carefully look over your document if you have errors and make sure there aren’t two quotation marks when you only wanted one. You’ll see this below:
After fixing our error, we have now created a DOCX file that will have our nice table showing the Q1_data
. Feel free to open up this Lab1_Light.docx
file now and see that the table was created with the caption “Light Source Table”. You should probably enter a different and more specific caption instead though.
If you scroll down the R Markdown file, you’ll see that there are many more spots where we will be inserting pictures. R Markdown has nicely skipped over these chunks when we pressed Knit instead of halting and giving lots of confusing errors and we see that in the R Console window under the R Markdown tab.
1.3 Uploading and inserting external pictures
You’ll frequently be asked to add pictures into your lab reports that weren’t necessarily created using R. (We will see how to include plots created inside R in later labs though.) If you look over Q2 in the lab it is asking you to include a picture of the “Absorbance spectrum of water in a 1 cm cuvette”. Note that this is specified as the figure caption here for the first R chunk after Q2.
Mathematical text is also included by surrounding the mathematical expression with dollar signs. This is using LaTeX to produce nicely formatted math text. Here we see the expression \(H_{2}O\) is given using $H_{2}O$
.
In order to include a picture, you’ll need to first upload it to the RStudio Server into the directory where the R Markdown file is located. The GIF below shows you how to do so. Remember that you’ll need to know where you saved your image on your computer to specify it here. This example GIF is recorded on a Mac but similar procedures should be done on a Linux or Windows machine.
The Water.jpg
file has been uploaded to my Lab1-Light
folder on the RStudio Server. The include_graphics
function requires that you add the name of the file and its extension here. We now press the Knit button to see the resulting Word document:
1.3.1 The remainder of the lab
In the remaining portions of the lab you’ll be asked to include other pictures from your lab sessions and also include a discussion of your results. This discussion will proceed in much the same way as you would add a discussion into a Word document or Google Doc. You’ll be able to immediately discuss what occurred in your R chunks right below them. This allows for the reader to easily follow your work.
1.4 Note on white space
As you look over the R Markdown document you’ll see that there is always a new line of white space between the discussion and the R chunks and also between each of the R chunks. It is highly recommended that you also follow this workflow. You’ll receive some strange errors at times if you try to stack everything together and it’s also much harder to follow for another reader of your document if you have everything bunched together. White space is your friend!
1.5 Spell-check
Just as I’m sure your English teachers have told you to spell check your documents before submitting, you are also encouraged to do so here. There is a built-in spell check option found near the Knit button.
Please run this and carefully read over your lab report before converting it to a PDF and submitting it to Moodle.
1.6 Converting your Word document to PDF
The directions for each lab on Moodle say to upload a PDF version of your lab. You’ll see how to create this PDF from inside Microsoft Word for Mac. A similar procedure can be done using LibreOffice (https://www.libreoffice.org/download/libreoffice-fresh/) on Linux, Mac, or Windows machines or Microsoft Word on a PC. You may also have the option to Save As a PDF there and you can get to this option by going to File -> Save As -> File Format: -> PDF on the Mac if you prefer.


Monkey.ts playground
Monkey.ts is an implementation of the Monkey programming language.
Here is the github repository.
let hello = "monkey";
Run
output is


Golab|sign in
{% csrf_token %}
username:
password:
verification code:
{% load static %}
sign up
forget password


[HOME]
[CLOCK]
[FAQ]
Font Size:
[-5]
[+5]
[50]
[75]
[100]
[125]
[150]
[175]
[200]
[225]
[250]
New Year (
)
Loading...
(Days : Hours : Minutes : Seconds)


upkeeper
1
Main Page
Modules
Data Structures
Files
Data Structures
Data Fields
Data Fields
v0_repl_svcinfo_t Struct Reference
#include <
upk_v0_protocol.h
>
Collaboration diagram for v0_repl_svcinfo_t:
[
legend
]
Data Fields
upk_msgtype_t
msgtype
uint32_t
svcinfo_len
v0_svcinfo_t
svcinfo
uint32_t
svc_id_len
char
svc_id
[2048]
UPK_V0_REPL_SVCINFO_T_FIELDS
Field Documentation
upk_msgtype_t
v0_repl_svcinfo_t::msgtype
char
v0_repl_svcinfo_t::svc_id
uint32_t
v0_repl_svcinfo_t::svc_id_len
v0_svcinfo_t
v0_repl_svcinfo_t::svcinfo
uint32_t
v0_repl_svcinfo_t::svcinfo_len
v0_repl_svcinfo_t::UPK_V0_REPL_SVCINFO_T_FIELDS
The documentation for this struct was generated from the following files:
controller/
tp.c
libupkeeper/upkeeper/
upk_v0_protocol.h
tp.c
Generated on Wed Dec 7 2011 for upkeeper by
1.7.4


Blog I
Blog II
Blog III
Blog IV
Blog V
About me
Technical Blog I
Technical Blog II
My resume
Projects
Funny


---
layout: post
title: ! 'VIM Plugin of the week: NERDtree'
tags:
- vim
- vim plugins
- plugin
- nerdtree
- project
- explorer
---
VIM Plugin of the week: NERDtree
I was at Hack n’ Jill last week and a friend told me about NERDtree, a VIM plugin for easily exploring any project hierarchy in vim. It’s super easy to install, there’s no reason not to try this out. Definitely take advantage of the bookmark feature which acts like shortcuts to your favorite project files/directories.


Kia Ora
I am Radhika Menon, a student at Enspiral Dev Academy, in the Manaia cohort (June - October 2021), aspiring to be a full-stack developer. I welcome you to visit my blogs to follow my journey through this programme as I learn web development and enhance my human skills.


*Discount Applies to:
Children (under 42 inches) are free
Transfer cards are issued at no charge
(Customer must request transfer ticket upon boarding)
4615 Tranter Street, Lansing
420 South Grand Avenue, Lansing
368 Park, Mason
500 East Michigan
Avenue Suite 180, Lansing
Parking Services Gannon Building, Lansing
6200 South Pennsylvania Ave, Lansing
982 East Grand River Avenue, Okemos
Concierge Services, Main Floor
421 East Grand River Avenue, East Lansing
Sparty Store
Sparty Store
Sparty Store
Sparty Store
International Center Room 170
Coffee Shop
Sparty Store
CATA Student ID cards are available through local middle and high schools at no cost. Showing your CATA Student ID entitles you to pay a discounted 60¢ student fare in Zone 1, $1.25 in Zone 2, or buy a student pass or discount Zone 2 card. All students in grade 6 and above are eligible for a CATA Student ID card. There is a $5.00 fee to replace a card. Call<PHONE_NUMBER> for details.
Show a valid ID card from your school enables you to to pay a discounted 60¢ student fare in Zone 1, $1.25 in Zone 2, or buy a student pass or discount Zone 2 card.
CATAClub is a free membership program exclusively for CATA customers who have a disability (temporary or permanent) or are 62 years of age or older. This card entitles you to discounted CATA cash fares and bus passes on most CATA services. Discounts do not apply to Spec-Tran or Shopping bus services. There are two types of CATAClub cards. To get a card, you must apply and be approved.
CATAClub Annual cards are issued to persons with a temporary disability. They are valid for a calendar year.
 They are valid for up to ten years depending on when you apply. There is a $5.00 fee to replace a lost or stolen CATAClub card.
Anyone showing a valid Medicare Card qualifies to ride at the discounted rate of 60¢ in Zone 1 or $1.25 in Zone 2, Medicare cards can also be shown to purchase a discount Zone 2 card or a Value Pass.
Persons with disabilities may show their ADA (Americans with Disabilities) Card to ride at the discounted rate of 60¢ in Zone 1, $1.25 in Zone 2 and can purchase a discount Zone 2 card or a Value pass. This applies only to fixed-route service.


CreateMail()
Syntax
Result = CreateMail(#Mail, From$, Subject$ [, Encoding])Description
Create a new, empty mail.
Parameters
A number to identify the new mail. #PB_Any can be used to auto-generate this number. From$ The sender address for the mail. Subject$ The subject line for the mail. Encoding (optional) The encoding for the mail. It can be one of the following values: #PB_Ascii : The mail body will be in ascii (default) #PB_UTF8 : The mail body will be in UTF-8
Return value
Returns nonzero if the mail was created successfully and zero if not. If #PB_Any was used as the #Mail parameter, then the auto-generated number is returned in case of success.
Remarks
SetMailBody(), SetMailAttribute(), AddMailAttachment() and AddMailAttachmentData() can be used to change the content of the #Mail.
Note: According to the RFC 2822 standard a line break in an e-mail need to be done always using the CRLF chars.
Example
InitNetwork() If CreateMail(0<EMAIL_ADDRESS>"Hello") SetMailBody(0, "This is a body !" + #CRLF$ + "Second line") Debug "Mail created" Else Debug "Can't create the mail" EndIf
See Also
InitNetwork(), SetMailBody(), SetMailAttribute(), AddMailAttachment(), AddMailAttachmentData(), SendMail(), FreeMail()
Supported OS
All


Session-record Class
Reference for DEVELOPERS of new frames only!
A mixin that can be used to add basic support for video recording to a particular experiment frame
You will also need to set sessionRecorderElement
if the recorder is to be housed other than
in an element identified by the ID sessionRecorder
.
The properties sessionRecorder
, sessionRecorderReady
, and
sessionVideoId
become available to the consuming frame. The recorder object has fields
that give information about its state: hasWebCam
, 'hasCamAccess,
recording,
connected, and
micChecked- for details, see services/video-recorder.js. These can be accessed from the consuming frame as e.g.
this.get('recorder').get('hasWebCam'). If starting recording, the function
onSessionRecordingStarted` will be called
once recording begins. If you want to do other things at this point, like proceeding
to a test trial, you can add this hook in your frame.
See 'methods' for the functions you can use on a frame that extends SessionRecord.
Events recorded in a frame that extends SessionRecord will automatically have additional
fields sessionVideoId (video filename), pipeId (temporary filename initially assigned by
the recording service),
and streamTime (when in the video they happened, in s).
Item Index
Methods
Methods
destroySessionRecorder
()
Destroy recorder and stop accessing webcam
onSessionRecordingStarted
()
Function called when session recording is started automatically. Override to do frame-specific actions at this point (e.g., beginning a test trial).
setupRecorder
-
element
Set up a video recorder instance
Parameters:
-
element
NodeA DOM node representing where to mount the recorder
Returns:
A promise representing the result of installing the recorder
startSessionRecorder
()
Start recording
Returns:
Promise Resolves when recording has started
startSessionRecorder
()
Stop recording
Returns:
Promise Resolves when recording has started
whenPossibleToRecordSessionObserver
()
Observer that starts recording once session recorder is ready.
Properties
endSessionRecording
Number
Whether to end any session (multi-frame) recording at the end of this frame.
Default: false
sessionAudioOnly
Number
Whether to do audio-only (vs also video) recording for session (multiframe) recording. Only used if starting session recording this frame.
Default: 0
sessionMaxUploadSeconds
Number
Maximum time allowed for whole-session video upload before proceeding, in seconds. Can be overridden by researcher, based on tradeoff between making families wait and losing data.
Default: 10
startSessionRecording
Number
Whether to start a session (multi-frame) recording as soon as possible upon loading this frame. This allows you to conduct video recording across multiple frames, simply specifying which frame to start and end on. Individual frames may also provide frame-specific recording capabilities; it is best NOT to conduct both a multiframe 'session' recording and frame-specific recording simultaneously as multiple video streams will eat up bandwidth. If you decide to use session recording, turn off recording for any frames that would otherwise record. There can be multiple session recordings in an experiment, e.g. from frames 1-3 and 5-10.
Default: false
Events
sessionRecorderReady
When session video recorder has been installed
stoppingCapture
Just before stopping webcam video capture
videoStreamConnection
When recorder detects a change in video stream connection status
Event Payload:
-
status
Stringstatus of video stream connection, e.g. 'NetConnection.Connect.Success' if successful


Home
Resume
Contact
Projects
Technical Blog
On The Map
[Introduction to the Ruby Enumerable#map Method]
December 10, 2015
Blog Index
Previous Post


--- layout: post status: publish published: true title: Public recording for the podcast tonight. author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 1173 wordpress_url: http://ivyenvy.com/?p=1173 date: '2009-08-03 14:21:51 +0000' date_gmt: '2009-08-03 20:21:51 +0000' categories: - Ivy Envy - Podcast tags: - Quad Cities - Moline - Twenty comments: [] ---
We will be recording for the podcast tonight and if you are in the Quad Cities, we'd like to invite you down to Twenty Sports Bar in Moline. We've mentioned Twenty many times on here and the podcast as the best place in the QC to watch the Cubs.
Twenty is now a sponsor for the podcast and we will be doing a test run down there tonight to get a feel for recording at the place and we will eventually do some live shows down there where you can call in and gripe about things with us.
 That's how they roll at Twenty. We'll watch some of the Cubs game...record a show...and then hang out some more.


SoCal Fall 2014: Programming Languages and Systems
Registration: A $30 registration fee will be collected at the workshop to cover the costs of food and incidentals. We can only accept cash or checks; please make checks payable to Sorin Lerner.
Schedule: 9:30 to 5:00, Saturday, Dec 6, 2014.
Location: CSE 1202, UC San Diego, 9500 Gilman Drive, La Jolla, CA 92103. Map CSE 1202 is on the ground floor.
Parking: Parking is free on the weekends, so park anywhere unless it explicitly says it
is reserved. The nearest location is P502
just off Voigt Dr or Hopkins.


 WOULD YOU?
Subscribe here to our email listing for updates on the Moblie App.
CEO - Product Development Strategist
An electrical engineer practicing in the aerospace industry, an MBA practicing in healthcare, manufacturing and automotive. After several failed startups, a strong interest in healthcare mobile apps has lead to starting Health-e-Bound.
CTO - Principal Backend Developer
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut porro veritatis, ea illum aliquam nemo est illo cupiditate incidunt minus dignissimos ipsam itaque expedita aliquid, repellendus provident. Autem, quod pariatur.
CIO - Principal Front-End Developer
An CompTIA A+ Certified Computer Support Technician turn software developer with over 5 years of experience in Information Technology. Has worked for Detroit based medical companies such as Henry Ford and Detroit Medical Center.


In 1996, James Gosling, Bill Joy, and Guy Steele wrote for the First Edition of The Java® Language Specification:
"We believe that the Java programming language is a mature language, ready for widespread use. Nevertheless, we expect some evolution of the language in the years to come. We intend to manage this evolution in a way that is completely compatible with existing applications."
Java SE 8 represents the single largest evolution of the Java language in its history. A relatively small number of features - lambda expressions, method references, and functional interfaces - combine to offer a programming model that fuses the object-oriented and functional styles. Under the leadership of Brian Goetz, this fusion has been accomplished in a way that encourages best practices - immutability, statelessness, compositionality - while preserving "the feel of Java" - readability, simplicity, universality.
Crucially, the libraries of the Java SE platform have co-evolved with the Java language. This means that using lambda expressions and method references to represent behavior - for example, an operation to be applied to each element in a list - is productive and performant "out of the box". In a similar fashion, the Java Virtual Machine has co-evolved with the Java language to ensure that default methods support library evolution as consistently as possible across compile time and run time, given the constraints of separate compilation.
Initiatives to add first-class functions to the Java language have been around since the 1990s. The BGGA and CICE proposals circa 2007 brought new energy to the topic, while the creation of Project Lambda in OpenJDK circa 2009 attracted unprecedented levels of interest. The addition of method handles to the JVM in Java SE 7 opened the door to new implementation techniques while retaining "write once, run anywhere." In time, language changes were overseen by JSR 335, Lambda Expressions for the Java Programming Language, whose Expert Group consisted of Joshua Bloch, Kevin Bourrillion, Andrey Breslav, Rémi Forax, Dan Heidinga, Doug Lea, Bob Lee, David Lloyd, Sam Pullara, Srikanth Sankaran, and Vladimir Zakharov.
Programming language design typically involves grappling with degrees of complexity utterly hidden from the language's users. (For this reason, it is often compared to an iceberg: 90% of it is invisible.) In JSR 335, the greatest complexity lurked in the interaction of implicitly typed lambda expressions with overload resolution. In this and many other areas, Dan Smith at Oracle did an outstanding job of thoroughly specifying the desired behavior. His words are to be found throughout this specification, including an entirely new chapter on type inference.
Another initiative in Java SE 8 has been to enhance the utility of annotations, one of the most popular features of the Java language. First, the Java grammar has been extended to allow annotations on types in many language constructs, forming the basis for novel static analysis tools such as the Checker Framework. This feature was specified by JSR 308, Annotations on Java Types, led by Michael Ernst with an Expert Group of myself, Doug Lea, and Srikanth Sankaran. The changes involved in this specification were wide-ranging, and the unstinting efforts of Michael Ernst and Werner Dietl over many years are warmly recognized. Second, annotations may be "repeated" on a language construct, to the great benefit of APIs that model domain-specific configuration with annotation types. Michael Keith and Bill Shannon in Java EE initiated and guided this feature.
Many colleagues in the Java Platform Group at Oracle have provided valuable support to this specification: Leonid Arbouzov, Mandy Chung, Joe Darcy, Robert Field, Joel Borggrén-Franck, Sonali Goel, Jon Gibbons, Jeannette Hung, Stuart Marks, Eric McCorkle, Matherey Nunez, Mark Reinhold, Vicente Romero, John Rose, Georges Saab, Steve Sides, Bernard Traversat, and Michel Trudeau.
Perhaps the greatest acknowledgement must go to the compiler
engineers who turn the specification into real software. Maurizio
Cimadamore at Oracle worked heroically from the earliest days on the
design of lambda expressions and their implementation
in javac
. Support for Java SE 8 features in Eclipse
was contributed by Jayaprakash Arthanareeswaran, Shankha Banerjee,
Anirban Chakraborty, Andrew Clement, Stephan Herrmann, Markus Keller,
Jesper Møller, Manoj Palat, Srikanth Sankaran, and Olivier Thomann;
and in IntelliJ by Anna Kozlova, Alexey Kudravtsev, and Roman
Shevchenko. They deserve the thanks of the entire Java
community.
Java SE 8 is a renaissance for the Java language. While some search for the "next great language", we believe that programming in Java is more exciting and productive than ever. We hope that it continues to wear well for you.


 Instead of reading what you're writing, you just keep writing.
Easily sync with your favorite cloud storage.
Client side encryption ensures no one can ever read your private entries.
Don't worry about people reading what your write. Don't worry about typos. Just write.


Articles, tutorials, books, and contributions including:
Technical tutorial videos for O'Reilly including:
Conference presentations including: