Indices and tables¶
Services¶
Purpose is to divide functionality in small blocks that are usable/testable on their own. The functionality is provided on JSON stream.
There are four functionalities a service can provide:
- Sources
- Creates requests
- Typical server listen socket
- Examples: SPDY, REST, socketIO, graftIO, ….
- Filters
- Filters requests
- Typical blocking or editing some requests
- Can edit returnChannel by adding a filter on the returnChannel
- Examples: Login, JsonValidator, Authorisation, Caching, …
- Targets
- Service that will not pass the same request further and will create a response on the returnChannel
- Gives responses to requests
- Can create requests to other services to be able to answer to a request
- Examples: Marvin, InfluxDB, PerconaDB, SPDY…
- Routers
- Split request channel to multiple request channels
- Can decide own rules to split the messages: randomize, regexp, service name, system load etc.
- One microservice can handle more than 1 functionality
- SPDY server can be both a source and a target
- Validator can forward some messages as a filter, and can act as a target when an invalid message is coming in
There is no strict seperation between the functionalities a service can provide. One service instance can do as many things as he feels responsible for. As the intention is to seperate functionality in reusable small and replaceble parts they shouldn’t. In practice one service should try to do only 1 functionality.
 Each functionlity should be provided in a seperate ‘service’.
Tachi glues microservices together to form an application. The messageflow can be configured by editing the main config file and should allow the routing of messages to the services that have the answers.
The configuration is describing a message flow in the form of a tree structure. There is an inital config needed for startup, but this can be changed at runtime.
The routing is based only on the request messages. The responses go trough a seperate channel. The creator of the request has to provide a returnChannel. This is a stream where the requester will listen for response(s). Each component that handles the request as a filter can replace the returnChannel by adding a transform stream to edit the response before it is handled back to the requester. In this way the response return path is determined by the request path and no further routing configuration is needed.
This messageflow and routing now happens within 1 node process. The concept keeps pretending that services are communicationg over a network even when they aren’t. When not communicating over the network a memory session is used. This makes it possible to scale to different nodes later on without changing the interfaces between components. A link to a remote machine is just a service as any other.
Tachi takes the task to link the services and routers, but in a dumb way without any logic. The configuration and flow of services is configured within the configuration file from samurai and passed to Tashi. Tachi follows this metadata information to creates the application. Internally components are using the target name to address requests. This is done by using the field ‘service’ in the top level request message. The target name will not be called directly, it will just follow the configured message flow.
Note that all services can edit the output by adding a filter stream on the returnChannel. Not only the ‘end’ service that doesn’t forward the request further can edit the response.
- Terms
- Modulename = name as mentioned in package.json, versioning handled by NPM. Code that can create a ‘service’
- Interface = Set of JSON schemas describing a functionality set. Sometimes referred to as a ‘service’
- Instancename = Instance of module with a given name for identification. Sometimes implementing an Interface
- targetInstance = String that describes the instancename that will handle the dependent requests. On module level this will be the stream itself. Tachi will replace the name of the bus by the actual bus.
- Bus = communicationChannel that is shared between all instances that use the same targetInstance
Tachi will handle routing internally on instancenames / bus. Routers can use the busnames to handle routing at runtime. Static code should only rely on service names or other fields in the request message.
Configure service flow¶
Instances from microservices and their settings can be managed by passing a config object to Tashi. Tashi will initiate the different services and configure them.
This can be initiated by Tachi on startup. During runtime all services can be reconfigured / paused / stopped by sending messages to Tachi.
Tachi supports the following actions: configure - pause - stop - listBusTree
- The chain or tree should be kept as easy and parallell as possible. Try to keep most of the service workers parallel after 1 router. This can be done by using 1 main ‘router’ that will handle the most common requests types. For example these router can handle messages that promise that they will
- Plain JSON
- Authorized, having enough permissions to make that request
- Validated
- ...
Client side API¶
Todo: refactor text The customer facing API should expose 1 single service. This service will be a routing hub that resolves requests by passing them to other microservices. This is done to not bother the client with the actual service that is implementing the action in the request. In this way the server components can be reorganised without changing the client API.
Microservice interface¶
Each microservice should provide a JSON schema that is needed to setup the service and provide it on the ‘configSchema’ property. If no config is needed the configSchema property is not needed.
Each microservice should provide a ‘create’ function that takes the specified config as parameter. The microservice can pretend that the config is valid an has all required fields. Fields that supply a default value will contain the default value when no specific value was requested by the creator. The return value should be Promise that indicates the error if the creation of the service failed. If the creation has succeeded the promise should be accepted with an object representing the service. This object can contain a ‘stop’ function to provide cleanup routines. If the instance provides a ‘stop’ function it should return a Promise that indicates when the service is done with cleaning up the resources.
The instance can provide the input request stream on the property ‘input’ if the service can handle requests.
The instance can provide the output request streams on the property ‘output’. This can be a single stream or an array of streams.
If the service provides an Interface it should document it by providing the matching JSON schemas. If the service depends on a Interface further in the tree it should forward the ‘listActions’ and ‘getJsonSchema’ actions. If the service edits the Interface from a service further in the three it should edit the schemas accordingly.
- List of supported action names and the corresponding JSON templates that describe the payload of these messages. There should be a schema for both the request and the answer.
- { action: ‘listActions’ }, retreive a list of actions the service supports
- { action: ‘getJsonSchema’, payload: { action: ‘LookupUser’} }, retreive the schema that defines the request interface for a specific action. This can indicate default values, and should indicate what options are mandatory. This will return a schema for both the request and the expected answer.
- Each microservice should support gulp and implement at least these functionalities:
- Eslint / Jshint
- Mocha
- Nodemon, running the main entry point and watching files. Supports debugging and auto restart.
- Optional: tasks specific to the microservice
The package samura-build-utils has shared code to share gulp task configurations.
Filter services¶
Filter services can help a lot in offloading responsibility from services. In this way the functionality can be reused by different service without making it mandatory.
There are some utility stream helpers that are strongly suggested to use on any microservice. In development and testing environments or for specific use cases these utility functions can be left out of the message chain.
- For all services:
- Validation service
- Will only pass the validated request further in the chain. Will reject other requests and answer on the returnChannel with the validation error.
- For services that are generating client request:
- Authorisation service
- Add user information to the request
- Translation service
- Translate text that is meant to serve to the user
Directory structure¶
- Samurai top level
- docs
sphinx documentation that applies to all packages and javascript coding for Amplidata
- environment
development and runtime dependencies install scripts
- gulp
tasks to execute on all packages at once
- modules
the actual source packages * docs
Non trivial packages should have their own sphinx docs
- gulp
local gulp tasks
- packaging
only for npm packages that become a .deb package for deployment
- Extra directories
As needed for the specific component
Installation¶
First install the dependencies by running
./environment/install.sh
For development
The samurai top level script supports the folowing arguments:
- dev
Install all dependencies for development environment (linked local modules) Alias for init + npm uninstall + npm link + npm install
- jenkins
reinstall dependencies, run linting, tests and create a build.
Gulp commands can be run from this script directly: * [gulpCommand]
Run global gulp command jshint - node:dev - node:prod - build - ... see gulp tasks section below for all available tasks
- modules/[modulename] [gulpCommand]
Same result as cd modules/[modulename] gulp [gulpCommand] see gulp tasks section below for all available tasks
Samurai top level script support also folowing arguments. All these tasks can be executed by using a group/alias command from above. To speed up things if you now what is needed you can call a subtask directly. * init
Install dependencies for top level gulp commands
- npm link
Resolve all local dependencies with symbolic links. This is the recommended way for developing. In this way all ‘latest’ and local sources are used instead of of the fixed version that is provided in the package.json file
- npm install
Run npm install in all modules
- npm uninstall
Undo npm install, remove node_modules folders in all modules
- npm dev
Alias for npm shrinkwrapfix + npm uninstall + npm link + npm install in one run
- npm shrinkwrapfix
Remove inconsistent shrinkwrap data https://github.com/npm/npm/issues/3581
Gulp tasks¶
- test
- Run the tests and generate reports in a single run. Process return code should indicate success or failure. This starts karma and mocha tests. There is no external command needed, karma is starting subset server to serve the client side javascript.
- test:watch
- continous run all automatic code checks on each file change. Leave process running on failures. This starts karma and mocha tests. There should be a server running serving the client app on port 3001.
- lint
- Run the linting tools eslint and jshint in single run. Process return code should indicate success or failure.
- lint:watch
- continous run all code linting on each file change. Leave process running on failures.
- build
- lint and test the source and if tests are successfull build a dist build. Process return code should indicate success or failure.
- serve
- run a development server with autoreload and run the tests on each file change. Serve the client application directly from source. This also starts the dist server on another port.
- serve:dist
- run a auto restarting server in production mode and serving the client application from builded output. This doesn’t start the development server.
- Subtasks
jshint
jshint:watch
eslint
eslint:watch
webpack
node:dev
node:prod
karma
- karma:watch
note: node:dev should be running to serve the js files.
istanbul
istanbul:watch
Packages¶
- Purpose is to divide the code in different node packages.
- To make sure dependencies are managed for each microservice independently
- Makes it possible to replace services and move components to different repositories when needed
- Being sure components can live on their own for deployment and testing
- It forces the developers to to think about dependencies between internal components
- Possible to manage the subcomponents and microservices on a local npm repository (also for components that live in the same git repository)
Naming conventions¶
Package names indicate the scope and intended usage.
samurai- prefix indicates that the code is usable for both tachi and tsuka. This can be for development puproses (ex. gulp helpers) or runtime (ex. logic and data structures, graft pipes, …)
- tachi- prefix indicates that the code is specific to the server side
If the package implements the service interface ‘tachi-service-’ should be used as prefix.
tsuka- prefix indicates that the code is specific to the client side
Package list and responsibilities¶
samurai¶
- Main command line application
- Has Tsuka and Tashi as package.json dependencies
- Has microservices code as dependency in package.json
- Has a config file service.json to specify what service to load
- Can pass one or multiple config files to override the default microservices settings
- Has usable command line options with help. (These don’t map to microservices directly, For example they can map to one or more service at once, use more specific naming, ...)
samurai-build-utils¶
- Default gulp tasks that are usable for all microservices
- Only needed for development/build purposes, not during runtime
samurai-utils¶
- Todo: Command line runner for microservices
- Logging utilities
- Help functions to supply getActions and getSchemas
tachi-utils¶
- Utilities for multiple services
- Contains helper functions to create ‘listActions’ and ‘getSchema’
tachi¶
- taskrunner that loads microservices and wires them up
- responsible for main messagebus
tachi-service-router-name¶
- split requests stream to multiple request streams based on service name
tachi-service-web¶
- customer facing server component with http server (Express based)
- serve all dynamic http content
- load external middleware for static files
- serve websocket endpoint
- Todo: serve JSON RPC endpoint (implementation code can live in other package, ie graft-json)
tachi-service-marvin¶
- responsible for all marvin related actions
tachi-service-influx¶
- responsible for all influx related actions
- interface is functional and not directly coupled to db implementation
tachi-service-spdy¶
- forward requests to other nodes
- receive requests from other nodes
tachi-service-mongodb¶
- responsible for all mongodb related actions
- interface is functional and not directly coupled to db implementation
tachi-service-user-manager¶
- responsible for authorisation and authentication
tachi-service-translation¶
- responsible for translation
- can translate API calls and predefined JSON structures
tachi-service-cache¶
- caches request/response combinations
- max cache size, expiration can be configured
tachi-service-validation¶
- check if the request is valid JSON according to services further in the tree
- collecting the JSON schemas by injecting requests on the output with custom returnChannnel
tsuka¶
- Client application (JavaScript, HTML, CSS) + Middleware
- Middleware for serving the static files in production mode
- Middleware for serving auto reload client application
- Gulp tasks to create dist package
Development¶
Debugging server side - Node.js¶
webstorm - application¶
Configuration: Run -> Run/Debug configurations -> + ‘Node.js Remote Debug’ Enter a name like ‘NodeJsDebug’, keep host and port <IP_ADDRESS>:5858 and apply.
Starting: ./samurai node:dev –debug or ./samurai node:dev –debug-brk
- –debug-brk will break until a debugger is connected, handy to debug startup problems
- –debug will open up a debugger socket, but will run without debugger
Run -> Debug... -> ‘NodeJsDebug’
Webstorm should now connect to the running instance and you are able to set breakpoints etc.
webstorm - mocha tests¶
Install mocha globally with ‘npm install –global mocha’ and start the test with mocha –debug-brk fileToRun.spec.js. Connect with webstorm debugger.
Debugging client side¶
- Make sure to enable source map support in the browser options.
- adding ‘debugger;’ to the source will break the browser and open up the devtools on that line
- A browser with the webstorm plugin is needed to debug from the Websotrm IDe (Chrome or Firefox)
webstorm - applicaton¶
Configuration: Run -> Run/Debug configurations -> + ‘Javascript Debug’ Enter a name like ‘BrowserDebug’ Enter url http://localhost:3000 to the URL input field
In the table ‘Remote URLs of local files’ add the following:
| File/Directory | Remote URL |
|---|---|
| tsuka/assets | http://localhost:3000 |
| tsuka/client | http://localhost:3000/tsuka |
Starting: Run -> Debug... -> ‘BrowserDebug’ A browser will open and the application should be loaded with debugging support. Set breakpoint from the IDE etc.
webstorm - karma tests¶
In a default single run the tests are run without source maps. To debug the tests first run a http server to serve the tests, ie node:dev. Start the kamra tests with karma:watch.
Add a configuration in webstorm Run -> Run/Debug configurations -> + ‘Javascript Debug’ Enter a name like ‘KarmaDebug’ Enter url http://localhost:3001 to the URL input field
| File/Directory | Remote URL |
|---|---|
| tsuka/assets | http://localhost:3001 |
| tsuka/client | http://localhost:3001/tsuka |
Starting: Run -> Debug... -> ‘KarmaDebug’ A browser will open and the application should be loaded with debugging support. Set breakpoint from the IDE etc.
chrome - chromium¶
- If you want to edit source files directly from within chrome on disk specify the source directory in chrome
- Open the devtools
- Open the settings for the devtools
- Go to the workspace tab
- “Add folder...” and add the local ‘scaler_ui/modules/tsuka/client’ folder
CSS - styleguide¶
To create our CSS we use the pre-processor less (http://lesscss.org/). To make our code consisted we use the following rules:
- we use “border-sizing: border-box;” on every element, this is already placed in the general file
- we use flexbox instead of floats
- class naming: no camelCase, but lowercase in combination with_underscores, except for classes from external libraries
- we don’t use a pre-defined architecture methodology for our selectors, we go by common sense: not every class above the element should be listed, and not only the last class should be used
- directives css should be scoped: by using the name of the directive, we make sure we don’t change the css of other components
- we prefer classes over ID’s. ID’s can only be used in the chrome component, forms and javascript generated id’s.
- colors shouldn’t be defined in the page/element/... css file, but belong in an overarching file knows as constants
Tsuka¶
- Webpack
This technology enables us to split the codebase into multiple chunks, so that these can be loaded on demand, reducing the loading time of our application. It takes care of concatenation and bundeling, and helps to manage and bundle other third party library dependencies. Because of webpack, we are able to write the code in a logical structure, and use Node.js module style for client side code.
Webpack also makes it possible to track dependencies at the place they are created, and handles the creation of shared dependencies between pages. Based upon the dependencies needed for a specific page, it will load the needed dependencies only once. Extra dependencies for a new page will be lazy loaded when visiting a new page. The created bundle of shared code (required by multiple pages) can be tweaked by changing the webpack config without the need to change the code structure.
- Unit tests
When writing unit test, preferably write code that doesn’t depend on the browser environment, this makes it easier to re-use and maintain code. An advantage of unit tests that don’t depend on the browser is that these can be run with mocha, which is easier, and faster to test. Files ending on .spec.js are automatically run with mocha, those ending on .webspec.js are run by karma. The coverage report is merged from both unit test tools.
- AngularJS
Angular offers an interface to create directives, services and factories but doesn’t handle code dependencies. We use our own utility functions on top of the Angular functions. These custom utils functions makes it possible to automatically load and register the needed Angular dependencies. They are also linking the Angular units to webpack units, and keeps us less dependant on the AngularJS interface.
Angular is actually mainly used to create re-usable components (directives), modules (providers) and views (controllers). The ui-router takes care of creating the states and handling URL’s, whilst the actual states are rendered from a data structure that provides the needed URL’s and views.
Setup InfluxDB¶
Install InfluxDB locally (depending on operating system: follow site instructions or use a package manager like Homewbrew) Or on a virtual machine (VirtualBox, Vagrant... recommended box: Ubuntu Trusty 64) and use port forwarding to your host machine (8086 and 8083)
Install python & pip on your development machine or use a VM
Install python dependencies for marvin lib (on Ubuntu:) * sudo apt-get update * sudo apt-get install python-virtualenv python-dev libssl-dev libffi-dev
Create/go to a folder to setup a Python virtual environment: * virtualenv venv
Activate the venv: * source venv/bin/activate
Install Marvin libs: * pip install -i http://pypi.amplidata.com/ampli/dev/ marvin-libs
The yaml dependency might be necessary to install while in venv to run the populate script: * pip install pyyaml
Get the populate script & json file and put both in a folder https://support.amplidata.com/browse/MAR-1107?jql=text%20~%20%22influx%20populate%22 If you’re running a VM such as Vagrant, place the populate script on your guest VM and change the parameters to your host machine’s IP
Run the populate script (while still in venv mode): * python populate_influxdb.py
To leave the virtualenv: * deactivate


High elasticity and is extremely soft. Fits according to body with unparalleled and unprecedented comfort.
Browse nowHealth underwear with sports bra design. Latex underwear with breathability, moisture, and support. Helps the body distribute heat and moisture, especially during exercise.
Browse nowUilana is a brand of underwear that focuses on women's health with technology. The company was founded for more than 10 years. The products are made of high-tech fabrics from Austria and other countries, natural high-elastic comfortable fabrics and a unique trackless cut, so that women show confidence and fashion at the same time and have an unprecedented comfortable experience!


Search for "Soft Skills Engineering" in your favorite podcast app.
Soft Skills Engineering is by Dave Smith & Jamison Dance who think you are neat.
Logo & Website by YupGup


The Lion City
Today is my third day (I think?) in Singapore. I am sitting at Starbucks resting my feet, eating a cupcake and drinking some green tea lemonade. The cup cake snickers flavored: a chocolate peanut butter cake with peanut butter frosting and salted caramel and chocolate syrup drizzled with a snicker on top 😍. Best cupcake I’ve ever had. Oh and I just discovered it has a caramel and salted peanuts center!!
Ok I realize I just described the most stereotypical thing I could be doing right now… I promise I’m not being boring. I just ate spicy fish and stirfry and rice at a hawker market (like a food court … same same but different) and tried rambutan (nom nom tropical fruit) with the other girls who are interning at A*STAR this summer.
I’m writing this at Bugis Junction, one of the malls in this neighborhood. Across the street is Bugis+ (another mall) and Bugis Street which is a little market with stands that sell fruits, teas, toys and souvenirs, purses and clothes etc. I wandered through there for the first time yesterday while I was heading back from Sim Lim Square: a six story mall that is entirely dedicated to selling electronics and computer stuff. There must be fifty stores in there selling the same thing. Singapore is pretty much composed of malls and food courts. On my first day here I walked through five different malls. By now I think I have been to 15 or 16 different ones (one entire mall mostly dedicated to lamps). I’d guess I’ve been through three times as many food courts? It is basically impossible to get from point A to point B without walking through a mall or food court or hawker.
Singapore things that are making me feel like I don’t want to go back to America:
- Everything you could ever want comes in a Hello Kitty or Minnie/Mickey Mouse version.
- My deliciouslunch today was S$2.70 ($2.01 USD).
- The MRT (subway) system goes almost everywhere. It’s easy and cheap.
- Kiwis on a stick, sky crackers, pocky sticks and fresh sugar cane juice.
- The whole shopping malls and affordable foodcourts thing is pretty convenient.
- I can fly roundtrip to most places in Asia for around $150
- TWG Tea
- The humidity makes my wrinkly clothes smooth themselves out
- Someone said “touch wood or whatever” today instead of “knock on wood”. Lol
Another thing about Singapore; everything is very structured and systematic. There are always signs and often voices on loudspeakers telling you what you should be doing. Everywhere. It sounds kind of stifling, but so far I don’t mind it and it helps everything run effeciently.
How to Escalator like a Singapore Local:
When riding an escalator, stay on the left side if you are going to stand. This makes room for those who are in a hurry to walk up on the right. So efficient.
At first I didn’t know this escalator convention, but by now I am already rolling my eyes when I see someone standing on the right side and blocking people from walking. Lol.
I’ve become addicted to wandering. On my first day, I asked Mel, a girl who works at my hostel, where I should go. She suggested I take the MRT to Bugis. At first I felt a little strange walking around with no direction. I ended up in a mall and I felt like I didn’t want to be at a mall because I could go to a mall anywhere. This was before I realized that Singapore is mostly malls.
After I explored Bugis for a while, I asked someone else where I should go. They suggested Marina Bay Sands and showed me the way. Every time I started to walk home, I kept finding new things and staying out longer and longer. The next night I went out for dinner in China town where my hostel is. I had already explored quite a bit that day so I was expecting to grab something quick, but I ended up drifting again for hours through Chinatown and downtown to the Fullerton Hotel. It is such a good feeling to be able to explore on your own and find so many exciting new things.
#Some Pictures from My Adventures


Displays a select box, bound to an ng-model.
With a placeholder (label is added dynamically)
With an explicit label
expression
expression
The model!
boolean
boolean
Whether it's multiple.
string
string
Placeholder hint text.


This is a new Template for **ardReveil v7**!
Presentation
Principle
Another clock, but with [[Arduino And Gps|GPS]] this time.
Points of interrest
Implementation
Bill of materials
Schematics
Source code
Pictures
Links
Helpful sources
* [[https://xantorohara.github.io/led-matrix-editor/|That site]] for an online generation of the font. Many thanks for making it!
I generated this URL https://xantorohara.github.io/led-matrix-editor/#7c7c6c6c6c6c7c7c|1818181818181818|7c7c0c7c7c607c7c|7c7c603838607c7c|6060607c7c6c6c0c|7c7c607c7c0c7c7c|7c7c6c7c7c0c0c0c|6060606060607c7c|7c7c6c7c7c6c7c7c|6060607c7c6c7c7c
Inspiration


Industry, thrift and self-control are not sought because they create wealth, but because they create character.
Calvin Coolidge (1872–1933) 30th US President
Programming Triggers
When programming, what are some of your triggers? What causes a disproportionate emotional response?
Firstly, most of my programming has been solo. In my experience, many of my triggers come from other people. I have also taught programming. The teacher-student relationship is different in that it is also a power relationship. From an educational perspective, the main trigger would be students who do not make an effort to write programs and to learn.
Where I’m the programmer, working alone, I invest a lot of myself in my work. I get annoyed when something I have been working on does not run properly. Also, it irritates me when there are parts of a program that I do not understand.
I now realise that when I start the bootcamp, I will be working closely with others. As with the kitchen/restaurant analogy for the bootcamp experience, in the kitchen there needs to be a lot of give and take. The experience of reading and reflecting on Search Inside Yourself will make me more aware of my triggers and how I can better respond to them.
The Siberian North Railroad
How did you find the Siberian North Railroad exercise (Stop, Breathe, Notice, Reflect, Respond)?
The Siberian North Railroad exercise asks you to bring to mind an unhappy event or an experience in which you were triggered. For me, this happened earlier this year. A number of my friends joke about me being a teacher and the excessive holidays we have to endure. I had spent the entire mid-year break (two weeks) writing subject reports. I had been at school nearly every day of the break. I was desperately in need of the holiday, but it had not eventuated. When a friend made a crack about the school holidays, I reacted instinctively to this trigger and said some things that offended my friend and his wife. It was several months before I saw them again and was able to apologise.
Believe it or not, I still have or had some residual emotion from this experience. The exercise helped me to let that go. In future, I have to notice when I am being triggered and to respond mindfully, not instinctively: with a fight or flight reaction.


Java 9
Some new features
Java 9 Introduction
Java 9 was released on 2017-09-21, with a patch 9.0.1 released on 2017-10-17.
Biggest upgrade to Java platform standard edition, coming after 3 and a half years. The last update was Java 8, released in March 2014.
Java 9 introduces over 150 new features and functionalities.
Definitely not possible to cover all of them, here.
Language
Language Changes
The next few slides cover language changes.
Language
Private Methods in Interfaces
Aimed to allow sharing of common code between default
and static
methods.
private abstract
and private default
method signatures result in compile-time errors.
Links:
Language
Collections - Factory Methods
Factory methods on collections allow ease of declaration/instantiation.
Factory methods clean up existing verbose means of construction:
Most developers first instantiate a collection
Then, they invoke add(...)
or put(...)
methods.
Alternatively, some use Collections
factory methods to initialize from an inline Array
.
List.of("one", "two");
Map.of("key1", "val1", "key2, "val2");
Links:
Language
Optional - Enhancements
ifPresentOrElse()
– Checks the presence of a non-null value, else, invokes the Runnable.
or()
– Always return an optional.
Wrap and return an Optional of the current value if not null.
If current value is null, return Optional by invoking the specified Supplier.
stream()
– Returns a sequential stream containing only the value, if the value is non-null.
Links:
Language
Stream - Enhancements
takeWhile()
and dropWhile()
to proces a stream until a condition is met.
ofNullable()
returns a stream of 0 or 1 elements based on the value being null.
iterate()
overloaded to a 3 param method similar to an old-fashioned for
loop.
Links:
Language
Concurrency - Enhancements
Interfaces supporting the Reactive Streams publish-subscribe framework,
New class Flow.Publishers produce items consumed by one or more Subscribers, each managed by a Subscription.
Support for a reactive stream Pub-Sub framework introduced.
Fully complies with the reactive streams manifesto. (http://www.reactive-streams.org/ ):
process a potentially unbounded number of elements in sequence asynchronously passing elements between components with mandatory non-blocking backpressure.
Requires a Publisher
, Subscription
, Subscriber
and a Processor
.
No N/W- or I/O-based java.util.concurrent
components for distributed messaging, in JDK9.
Enhancements to the CompletableFuture
API introduced.
Time-based enhancements enable a future to complete with a value or exceptionally after a certain duration.
Subclass enhancements make it easier to extend from CompletableFuture
.
Links:
Language
Deprecation - Enhancements
History:
Deprecation was a javadoc feature via @deprecated
annotation in the comment.
The javadoc comment was limited in visibility since it was in documentation.
New code annotation @Deprecated
introduced in Java 5.
The annotation has two (optional) parameters since Java 9:
forRemoval
: Boolean indicating a hint to remove from future releases, if true.
since
: String representing version when deprecation was set.
New deprecation parameters clarify if an API may be removed in the near future.
New jdeprscan
scans jars or any other aggregation of classes deprecated API usage.
Links:
Language
New Stack-Walking API
Changed from StackTraceElement
to StackWalker
instance.
StackTraceElement
required an all-or-nothing fetch, and was expensive.
StackWalker
is thread-safe, filter-enabled and skip-enabled.
Stack-walking API enables lazy access and easy filtering in stack traces.
Supports both long and short walks.
long walks - traverse the entire stack.
short walks - filter to - or - skip to specific frame.
The short walks reduce the cost of analyzing all frames.
Caller has an option now to explore only the top frames.
Links:
Language
Compact Strings
Initiated in Java 6 as "compressed strings", deprecated in Java 7 and removed in Java 8.
Flag needed to be enabled (default was off), see the + below.
Old flag: -XX:+UseCompressedStrings
"experimental feature, ... ultimately limited by design, error-prone, ... hard to maintain" - A. Shipilev.
Pointed to a byte[]
if string only had 7-bit ASCII else to char[]
.
String operations depended on char[]
for operations, hence was non-optimal.
Replaced above with Compact Strings .
Every string now a byte[]
representation with an encoding field flag.
Encoding field can determine if conversion from byte[]
to char[]
is needed.
New flag is enabled by default .
-XX:-CompactStrings
to disable.
Links:
Language
Few Other Language Enhancements
Profiled - lightly optimized. Other two - longer lifetime.
There are way too many enhancements to list !
JEP 213 - Milling Project Coin: http://openjdk.java.net/jeps/213 :
Allows @SafeVarargs
on private instance methods (typo in JEP, there is no @SafeVargs
).
Allows final variables as a resource in try-with-resource statement.
Allows diamond operator with anonymous classes if the argument type is denotable.
JEP 197 - Segmented Code Cache: http://openjdk.java.net/jeps/197 :
Segemented code-cache for profiled, non-profiled and non-method code.
Non-method code heap cache (compiler buffers, bytecode interprter etc.)- long lifetime cache .
Non-profiled or more static code (fully optimized code) - long lifetime cache .
Profiled code (lightly optimized) - short lifetime cache .
Process API improvements - https://docs.oracle.com/javase/9/core/process-api1.htm
Comprehensive list of JDK 9 features.
Assorted Changes
Ungrouped Important Features
The next few slides cover a few important features added to Java 9.
Garbage Collection
New Default GC - G1GC
Java 9 makes Garbage-first Garbage Collector (G1GC) as the default.
Originally introduced in Java 7 and targeted for Java 8.
No more PermGen !!!
JVM now uses a metaspace (curtailing usage of available memory).
Heap divided into ~2048 equal sized regions .
Regions get marked as Eden, Survivor or Old as needed.
GC focusses on garbage-heavy regions == STW (Stop-The-World) cycles are shorter.
With very minor or no tweaks, * most * code will see performance gains.
Links:
Versions
Version String Scheme
New version scheme for JDK and JRE releases. Caveat Emptor: Version strings in- and post-Java 9 may vary!
Version string scheme in Java 9 is $MAJOR.$MINOR.$SECURITY_PATCH.
Replaces the confusing collision of version and build numbers in prior versions.
This change may be short-lived due to a newer proposal from Oracle.
Proposal for Long-Term-Support (LTS) versioning based on $YEAR.$MONTH .
Implies a release every six months.
Java 10 may be known as Java 18.3 or Java 18.9 (March or September release).
Links:
Compiler
Compiler Enhancements
Compile For Previous Platforms.
A --release option added as a new compiler directive.
Was not sufficient to just set the -source and -target options to the older value.
The bootclasspath had to also be set to correspond to the older release.
Forgetting the bootclasspath may have resulted in use of unsupported APIs on the target.
The new --release option will prevent any random use of unsupported API.
Single flag (--release
) to cross compile.
Supported releases follow the "one plus three back" policy same as prior versions.
Supported release targets are 6, 7, 8, and 9.
Restrictions apply when using the --release for module support (JDK 9, for instance).
Links:
Language
Few Other Enhancements
New compiler control to issue compiler directives. New TLS, DTLS Support.
New Compiler Control supersedes and is backward compatible with CompileCommand.
New DTLS (Datagram Transport Layer Security) “TLS over Datagram” protocol support.
Compiler Control:
A compiler directive is an instruction that tells the JVM how compilation should occur.
Directives are a powerful tool for writing small, contained, JVM compiler tests.
Compiler Control is useful for creating workarounds for bugs in the JVM compilers.
Modularity
Java Plaform Module System
Java 9 introduces a module system with its distribution specified as Java Platform Module System.
Prior dependency image: https://bugs.openjdk.java.net/secure/attachment/72525/jdk.png
Aims to reduce the large and growing size of the java package ecosystem.
Allows splitting the JDK in smaller units (modules).
Root module called java.base
.
Leads to subsequent deprecation/removal of some vestigial packages.
Dependencies packaged as .jmod
files.
New tools such as jlink
to create custom runtime bundles.
Module path to replace classpath.
Links:
Modularity
JDK 9 Modularity
Java 9 itself is a modular system
Restructures the JDK and JRE runtime images - as modules.
New images improve performance, security, and maintainability.
Modularity allows creation of custom configurations.
New URI scheme for naming modules, classes/resources stored in a runtime image.
No more rt.jar
and tools.jar
in libs.
Links:
Modularity
Java Linker: jlink
jlink
is responsible for assembling and optimizing modules.
jlink
also links transitive dependencies.
Is a descendant of jrecreate
used to build EJDKs.
It produces a custom runtime image that reduces the size and complexity of the deployment.
Java always had dynamic linking, jlink introduces optional static linking.
This optional static linking phase is called link time that occurs between compile and run time.
Links:
Tooling
Tooling Changes
The next few slides cover tooling changes.
Tooling
JShell
A read-eval-print-loop (REPL) for a transcript evaluation on a command prompt.
Tooling
Enhanced JavaDoc
Upgraded the user experience in API documentation.
Tooling
Better Java Control Panel (Oracle JDK)
Upgraded the user experience in the control panel.
Improved presentation and grouping of options in the control panel.
Information easier to locate, no modal dialog boxes, search field is available.
Less useful APIs deprecated - web browsers removed Java browser plugin support.
Links:
Challenges
Migration Challenges
The next few slides list challenges adopting JDK 9 due to deprecation or fixing of prior "features ".
Migrating is non-trivial if you use reflection or private internal APIs (e.g. sun.misc packages
).
Other challenges could usage of experimental features in prior JDKs.
Module System Risks and Assumptions is a good read: http://openjdk.java.net/jeps/261#Risks-and-Assumptions
Excellent resource that helped understand these challenges is from Nicolai Parlog's blog: https://blog.codefx.org/java/java-9-migration-guide/
Challenges
Illegal Access to internal APIs
When you see the dreaded: WARNING: An illegal reflective access operation has occurred
Most obvious fix is to stop depending on internal APIs.
If depending cannot be avoided, at least acknowledge and set a flag to:
--add-exports $module/$package=$mymodule
This will allow all public types of the module to be accessed by mymodule.
--add-opens $module/$package=$mymodule
This will allow all public (and otherwise, deep reflection ) types of the module to be accessed by mymodule.
Use jdeps
to track down dependencies on internal APIs.
Special search is needed for reflective access: --illegal-access=
$parameter
--illegal-access=
permit
default for JDK 9. Access to all unnamed modules.
--illegal-access=
warn
warning message for each illegal reflective-access operation.
--illegal-access=
debug
warning and stack trace for each illegal reflective-access operation.
--illegal-access=
deny
disable all illegal reflective-access operations except for those enabled by above command-line options. Future default.
Challenges
Java EE module separation
Java EE modules are not included in the module path.
java.activation
with javax.activation
package.
java.corba
with javax.activity
, javax.rmi
, javax.rmi.CORBA
, and org.omg.*
packages.
java.transaction
with javax.transaction
package.
java.xml.bind
with all javax.xml.bind.*
packages.
java.xml.ws
with javax.jws
, javax.jws.soap
, javax.xml.soap
and all javax.xml.ws.*
packages.
java.xml.ws.annotation
with javax.annotation
package.
Work towards declaring a regular dependency in the module's declaration.
Until you have that, --add-modules $module
is the tactical fix.
Either add individual modules as you need them.
Or add java.se.ee
to get access to all Java EE modules.
Challenges
Split package handling
A module is not allowed to read the same dependency package from more than one module.
In fact, no two modules are allowed to contain same package (think duplicate dependencies).
The module system complains if it finds split packages. Two pathways exist here:
Rather than a few classes, the code needs a replacement for an entire existing module.
Tactical fix for a few classes, is to patch the artifact classes into current module.
Use the --patch-module $module=$artifact
to patch the module.
An example is the @Nonnull
(JSR 305) and java.xml.ws.annotation
module.
Use --patch-module java.xml.ws.annotation=
path/to/
jsr305-3.0.2.jar
.
As a strategic fix, determine how to remove such split.
Challenges
Deprecation of Internal API
Divided into two broad categories:
Non-critical internal APIs : Functionality available either in public JDK or via third-party libs.
Critical internal APIs : Functionality cannot be available outside of the JDK.
Critical APIs with replacements in JDK9 are deprecated in JDK9.
Such replaced API will either be encapsulated or removed in a future version of JDK.
Marked for deprecation (with no replacements in Java 9):
Links:
Challenges
New Version strings
Several tools both open source and bespoke depend on java versions.
More than likely one of the following properties is used to check versions:
java.version
java.vm.version
java.runtime.version
java.specification.version
java.vm.specification.version
Replace above with the new Runtime.Version
class.
Compatibility to older versions of java can be retained by aiming to build a multi-release jar.
Links:
Java 9
That's all we have time for!
HAPPY CODING !


Git comes standard on all Macs. If you're running Windows, you'll have to intall git yourself first. To check what version of git you have installed, run this helpful command:
git --version
A repository is simply a location where all your project files are stored. Git allows us to version control these files, to allow for a cleaner workflow. There are two ways you can create a repository with git.
Let's say you want to create a new project called "timeless_nightfall". To get started, all you need to do is type this command:
git init timeless_nightfall
A new folder will be created in your chosen directory with the name "timeless_nightfall".
What if you had already started the project? No worries. You can easily convert any exisiting project folder to a git repository by running this command. (Just be sure you are in that project's home directory).
git init
Using the git init command will create a hidden .git file in your folder. To see this and other hidden files, run ls -a.
Let's make a quick addition to our project. First, let's make sure we're in our project file's home directory. Let's use the project we just created.
cd timeless_nightfall
cd stands for "Change Directory". We're telling our terminal to take us into the project folder "timeless_nightfall".
Now that we're in our project's home directory, let's create a readme file.
touch README.md
Now that we've created a new file, we're ready to push that up and make it available to everyone on the team.
It's always good practice to check the status of your changes. Running this show us what files we've altered.
git status
Let's say we no longer wanted that README.md file for some reason. Using this command, you can easily remove any file right from your terminal.
rm -r README.md
Let's say we didn't remove that file. We put a lot of work into this, and actually want to get this pushed up to our team. There are a few ways you can add, or stage, files to be comitted.
git add README.md
If you had multiple changes to your project, you can just add them all at once.
git add .
  Type this command to send it up.
git push
Because other teammates may be working on the same project, you'll want to make sure to pull in their changes. This will make sure you're always up to date.
git pull


| Home | Trees | Indices | Help |
|---|
|
|
Node.getColor
and
Node.setColor
(e.g.
s
for the application.
RGBA
(Red, Green, Blue, Alpha) color.
s
to an object.
s
which defines a path.
s
which defines a path.
s
which defines a polygon.
s
for the application.
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Fri Apr 9 14:54:57 2010 | http://epydoc.sourceforge.net |


1 kg of gold seized from passenger
by Staff ReporterThe Air Intelligence Unit of Customs Department seized 1,100 grams of gold worth ₹ 42.08 lakh from a passenger from Singapore who arrived in Madurai airport on Friday morning.
The passenger, J. Shahul Hameed of Aruppukottai, had allegedly concealed the gold in the handle of his stroller suitcase.
Based on a tip-off, the Customs officials screened the passengers alighting from the Air India Express flight from Singapore. The passenger was arrested.


Diary of a Ghetto Priest | A powerful alliance for life
Thank God there are bishops, pastors, and outstanding laypeople meeting with their church brothers and sisters to counter abortion and to respond to the needs of women who are pregnant and in distress.
I give thanks that the following are moving towards a union of hearts and mind in, which I know is of God:
n Most Reverend Kenneth Richards – Archbishop of Kingston
n Reverend Dr Peter Garth – Hope Gospel Assembly – chairman of the Jamaican Evangelical Alliance;
n Reverend Adinhair Jones – executive chairman of Church of God in Jamaica and immediate past president of the Jamaica Umbrella Group of Churches (JUGC);
n Bishop Alvin Bailey – chairman of JEA, Portmore Holiness Church, and bishop of the Holiness Church;
n Bishop Rowan Edwards – Lighthouse Assembly, Spanish Town Ministers’ Fraternal and 10,000 Men and Family March;
n Bishop Everton Thomas – the Jamaica Pentecostal Union, Emmanuel Apostolic Church;
n Bishop Delford Davis – Power of Faith and the Full Gospel Churches;
n Bishop Neville Owens – Love & Faith and the Independent Churches of Jamaica;
n Bishop Conrad Pitkin – Assemblies of God and president of the JUGC;
n Pastor Harry Walcott – Jamaica House of Prayer;
n Reverend George Lynch – district superintendent of Wesleyan Holiness Church;
n Dr Peter Burnett – St James Ministers’ Fraternal;
n Reverend Donovan Cole – Portmore Gospel Assembly;
n Dr Daniel Thomas – Love March Movement;
n Christina Milford – head of the Pregnancy Resource Centre of Jamaica.
Women are our hope against the culture of death. Love will disappear if a woman will pay to murder the baby in her womb – that’s the end of love!
I can’t bear the idea of a woman paying to murder the baby in her womb.  Their love mitigates the harshness of life and the great struggles for existence in our beloved island.
I’d really rather die than see the womanhood – the femininity – lost in our Jamaican society.  Shame on our men for losing our masculinity in this era of feminism!
Father Richard Ho Lung is a Roman Catholic priest and founder of charity organisation Missionaries of the Poor.


--- title: Home ---
Welcome to Coding 42!
Anything you find here is my personal view and it might not represent reality in the slightest, please apply your critical thinking
…or you can find more in the archives.


IMechanismState.h.
Copyright 2019 Lake Orion Robotics FIRST Team 302
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. File Description: This is the interface for all subsystem states
- Percent Output
- Position Control
- Velocity Control Class: IMechanismState Description: Interface for subsystem states
Definition at line 44 of file IMechanismState.h.


[§438-8.5] Medical clearance. The board, at its discretion may request any barber to submit to such medical clearance tests, including blood tests, as the board deems appropriate to protect the public health. [L 1986, c 138, §8]


Elect ME
Home
News
Contact Us
Name
Email
Reason for Contact
Suggestion
Complaint
Want to volunteer
Message


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
Hierarchy For All Packages
Package Hierarchies:
com.thebluealliance.api.v3
,
com.thebluealliance.api.v3.models
,
com.thebluealliance.api.v3.requests
Class Hierarchy
java.lang.Object
com.thebluealliance.api.v3.requests.
APIResponse
com.thebluealliance.api.v3.models.
Award
com.thebluealliance.api.v3.models.
Award.AwardRecipient
com.thebluealliance.api.v3.
Constants
com.thebluealliance.api.v3.requests.
DataRequest
com.thebluealliance.api.v3.
Deserializer
com.thebluealliance.api.v3.models.
District
com.thebluealliance.api.v3.models.
DistrictRanking
com.thebluealliance.api.v3.requests.
DistrictRequest
com.thebluealliance.api.v3.models.
EliminationAlliance
com.thebluealliance.api.v3.models.
EliminationAlliance.AllianceBackup
com.thebluealliance.api.v3.models.
EliminationAlliance.PlayoffStatus
com.thebluealliance.api.v3.models.
Event
com.thebluealliance.api.v3.models.
Event.Webcast
com.thebluealliance.api.v3.models.
EventDistrictPoints
com.thebluealliance.api.v3.models.
EventDistrictPoints.Tiebreaker
com.thebluealliance.api.v3.models.
EventPoints
com.thebluealliance.api.v3.models.
EventRankings
com.thebluealliance.api.v3.models.
EventRankings.SortOrderInfo
com.thebluealliance.api.v3.requests.
EventRequest
com.thebluealliance.api.v3.requests.
MatchRequest
com.thebluealliance.api.v3.models.
MatchScoreBreakdown2018Alliance
com.thebluealliance.api.v3.models.
MatchScoreBreakdown2019Allliance
com.thebluealliance.api.v3.models.
Media
com.thebluealliance.api.v3.models.
OPRs
com.thebluealliance.api.v3.models.
Ranking
com.thebluealliance.api.v3.models.
Robot
com.thebluealliance.api.v3.models.
ScoreBreakdown
com.thebluealliance.api.v3.models.
SimpleEvent
com.thebluealliance.api.v3.models.
SimpleMatch
com.thebluealliance.api.v3.models.
Match
com.thebluealliance.api.v3.models.
SimpleMatch.Alliance
com.thebluealliance.api.v3.models.
SimpleTeam
com.thebluealliance.api.v3.models.
Team
com.thebluealliance.api.v3.
TBA
com.thebluealliance.api.v3.models.
TeamEventStatus
com.thebluealliance.api.v3.models.
TeamEventStatus.Alliance
com.thebluealliance.api.v3.models.
TeamEventStatus.Alliance.AllianceBackup
com.thebluealliance.api.v3.models.
TeamEventStatus.PlayoffStatus
com.thebluealliance.api.v3.models.
TeamEventStatus.Rank
com.thebluealliance.api.v3.requests.
TeamRequest
com.thebluealliance.api.v3.models.
WLTRecord
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


decorating an adobe fireplace with candles
Flameless Candles in the Fireplace - YouTube
Nov 25, 2011 . I got tired of buying candles every year at $10 each, so I decided to try out these battery operated candles in our fireplace. They're on a timer, so . You need Adobe Flash Player to watch this video. Download it from Adobe. . Decorating tips- Floating candlesby mel1408 480,157 views; 6:16. Watch Later .
http://www.youtube.com/watch?v=XakZjtc5XPw
Faux Fireplace : Video : Home & Garden Television
Create easy ambiance using an old mantel, a mirror and candles. Filed under: Candles . Add the beauty of a fireplace, minus the chimney, with a faux fireplace .
http://www.hgtv.com/video/faux-fireplace-video/index.html
Introducing Fireplace Log Set w/ Candles - YouTube
Dec 21, 2011 . Introducing Gaslog Candles Fireplace Log Sets Our new fireplace log sets are specifically . You need Adobe Flash Player to watch this video. . Frank Fontana on How to Make and Decorate a Fake Fireplace Mantelby .
http://www.youtube.com/watch?v=9J5UjlE7KA0
Things You'll Need
- Certified copies of public records evidence in your case
Instructions
-
-
1
How to Decorate an Adobe Fireplace with Candles | eHow.com
How to Decorate an Adobe Fireplace with Candles. Using candles to decorate an adobe fireplace highlights the warm tone of the natural adobe. Groups of .
http://www.ehow.com/how_5771610_decorate-adobe-fireplace-candles.htmlHow to Decorate a Fireplace With Candles | eHow.com
When you think of decorating with candles, decorative candle gardens and beautiful . Particularly for those who live in a warm climate, decorating a fireplace with . How to Decorate an Adobe Fireplace with Candles · Fireplace Candle Ideas .
http://www.ehow.com/how_4557849_decorate-fireplace-candles.html -
2
SEI GA0002 Fireplace Candle Holder Reviews - YouTube
Mar 23, 2011. Holder Reviews. Select the best SEI GA0002 Fireplace Candle... . Sign in . Alert icon. You need Adobe Flash Player to watch this video.
http://www.youtube.com/watch?v=QnkKUQzeQxgFireplaces
Hi, Thanks for stopping by. As you can tell, I have a wide variety .
http://pinterest.com/hermitshouse/fireplaces/Fireplace and mantel ideas: decorating and safety both - National ...
Fireplace and mantel ideas: decorating and safety both. fireplace mantel; October 17, 2010; By: Andrea . Use soy candles to avoid the danger of blacking the ceiling. But then you can invest in . Get Adobe Flash player. Advertisement .
http://www.examiner.com/article/fireplace-and-mantel-ideas-decorating-and-safety-both -
-
3
Hearth Styles
Your fireplace deserves to be surrounded with style. . decorating & home ideas . Top off your fireplace with an arrangement that covers both the mantel and .
http://www.bhg.com/decorating/fireplace/mantels/decorating-ideas-for-old-hearths/Design Tips : How to Decorate Fireplace Mantels With Candles ...
Jan 26, 2012 . Decorate fireplace mantels with candles with help from a celebrity interior designer and . You need Adobe Flash Player to watch this video.
http://www.youtube.com/watch?v=h-VGKxcKx3g -
4
Studio 5 - Candle Warmers Etc.
Nov 15, 2011 . Candle Warmers Etc. offers festive, holiday designs and fragrances to . Classy Decorating Using Pumpkins. October 7, 2009. To view this video, you need to download the latest version of Adobe Flash Player. . Before you go to sleep, make sure your fireplace fire is out completely, candles are blown out, .
http://studio5.ksl.com/?nid=71&sid=18098162
-
1
References
Resources
- Photo Credit Justice image by MVit from furniture moving pads for sale


public class PLibGrantFlow
extends java.lang.Object
| Constructor and Description |
|---|
PLibGrantFlow() |
| Modifier and Type | Method and Description |
|---|---|
static void |
removeAllFlowDecisions(android.content.Context context)
Removes all made persistent decisions from the plib.
|
static void |
requestDataFlow(android.app.Activity uiActivity,
PLibDataSource dataSource,
PLibFlowCallback flowCallback)
Requests permission for data flow by the user at runtime.
|
public static void removeAllFlowDecisions(android.content.Context context)
context
- the contextpublic static void requestDataFlow(android.app.Activity uiActivity, PLibDataSource dataSource, PLibFlowCallback flowCallback)
THIS METHOD IS REGARDED AS A LEGAL SINK THROUGH THE PLIB!
uiActivity
- Since a popup is shown to the user, an ui in form of an activity is required.dataSource
- A generous wrapper for the data, for which a flow is requested. See
PLibDataSource
.flowCallback
- A PLibFlowCallback
callback, in which in dependeny of the user
selection, represented data will be available: null
when flow is not
permited, the original content if it is permited or an anomyzed representation, if
the user selected grant.


Examples showing how to use the angular-esri-map directives.
Simplest possible map - simply setting the
Loading webmaps from ArcGIS Online
Shows how to use angular binding to link a select list to the basemap property of the map.
Demonstrates two-way binding of the center, and zoom properties.
Loads two feature layers into the map.
Add a legend via to the map. Also shows a directive that is not an element.
Shows how to listen for events raised by the map directive.
Shows how to get a reference to the map by using a registry.
Shows how to load a map with additional map options as attributes.


Hi there, thanks for checking out my website! My name is Johnny Po and I love to eat, sleep, and code. I also enjoy photography along with music. The photo you see above of the milky way and the night sky was taken by me at the Vista House Viewpoint located in Oregon.
I currently work as a Software Engineer at CDK Global. I moved to Oregon when I was six years old, and have not left since. In my free time, I always find myself catching up with and learning about the latest and greatest in the tech industry. I enjoy working on side projects that include web and mobile applications with a focus on Android.
Cross platform app to track COVID-19 related cases across the world
Work In Progress
Track safety recalls for your vehicles based on its VIN using the Fortellis Open Safety Recall API
Hacakthon Project
Course catalog application for Android for OSU students, based on the Classmere API
Alternative to Canvas by Instructure, a RESTful API developed with NodeJS for a class final project.
For a full list of my professional experience and personal projects, please check out my resume!
Download ResumeInterested? Questions? Let's get in touch!
po.johnny@gmail.com


What is Mebo ?
Mebo is an experimental framework focused in providing a unified interface across multiple domains.
The idea behing mebo is to provide a platform where evaluations and their requirements are defined in a simple matter. The way it is done lets you to build strict specifications with validations in a fairly expressive way.
Evaluations in Mebo are exposed by promoting implementations that don't need to be too coupled to a specific domain instead, most of the boilerplate code needed when bridging a domain (for instance on the web: request & response) to an evaluation is avoided and automatically handled by mebo (DRY).
By using mebo you can easily expose your evaluations through the web via REST/middlewares and also without much effort expose them through command-line (CLI coming handy during development/debugging to interact with your evaluations quickly).
So, you can use Mebo for building web apps, command-line apps or all together.
Key features
Flexible architeture. Mebo can be integrated to existing applications. Also, it's designed from ground up to be customizable and extendable
Reliable executions. Mebo enforces validating the data used prior the execution of evaluations by performing a wide range of verifications
Agnostic execution platform. Implementations using Mebo can be executed easily across different domains
Integrated caching system. Mebo provides out-the-box integrated caching system
Express integration. The web support in Mebo is done through express, embracing the most popular web framework for Node.js
RESTful support. Evaluations can be executed through REST automatically
CLI support. By using Mebo your evaluations can be executed through command-line interfaces following docopt specifications.
Documentation
API Documentation
Full Examples
- Hello World
- RESTful using Express and Mongodb
- Middleware integration
- Authentication
- Uploads
- Command-line integration
- JSON serialized actions
Requirement
Mebo is built using modern specs ES6/ES7, it requires Node.js version 8 or greater
Install
npm install mebo --save
Getting help
Use the GitHub issues for tracking bugs and feature requests. Also, feel free to talk about Mebo at:
- Gitter meboHQ
Issues
Mebo development discussions and bug reports are collected on Issues
Contributing
Contributions are welcome to Mebo. It can be made through many different forms depending on your level of interest:
- Participating in gitter discussions
- Proposing features
- Reporting issues
- Making improvements (adding new features, improving the existing features, adding tests, adding testutils, clarifying wording and fixing errors)
Acknowledgements
Mebo was inspired by:
Licensing
Mebo is free software; you can redistribute it and/or modify it under the terms of the MIT License


This topic explains the different application execution modes that are available for deploying your Java and JavaFX applications.
One of the main features of the Java application model is that you can write one application and easily deploy it several different ways. The user can experience the same application running on the desktop, in a browser, or starting from a link in a browser.
However, differences exist among the execution modes and need to be considered while developing the application.
This topic contains the following sections:
Table 3-1 describes the execution modes in which Java applications can be deployed.
Table 3-1 Java Execution Modes
| Execution Mode | Description |
|---|---|
|
Run as a standalone program |
The application package is available on a local drive. Users launch it using a Java launcher, such as |
|
Launched from a remote server using Java Web Start |
Users click a link in a web page to start the application from a remote web server. Once downloaded, a Java Web Start application can also be started from a desktop shortcut. |
|
Embedded in a browser |
Java content is embedded in the web page and hosted on a remote web server. |
|
Launched as a self-contained application |
Application is installed on the local drive and runs as a standalone program using a private copy of the JRE. The application can be launched in the same way as other native applications for that operating system, for example, using a desktop shortcut or menu entry. |
Each execution environment has its drawbacks. For example, for remote applications the loading phase can be very long because the application has to be loaded from the network. This is less of an issue for applications that run on a local drive.
Figure 3-1 lists some of the features that behave differently in the different environments. The following sections describe the figure in more detail.
The preloader is a small JavaFX application that receives notifications about application loading and initialization progress. The preloader is used with all execution modes, but depending on the execution mode, the preloader implementation receives a different set of events and optimal behavior may be different.
For example, in self-contained application or standalone execution mode or when launched from a shortcut, the preloader does not get any loading progress events, because there is nothing to load. See Chapter 13, "Preloaders for JavaFX Applications" for information about preloader implementation and differences in behavior.
Properly packaged Java applications have proxy settings initialized according to JRE configuration settings. By default, proxy settings are taken from the current browser, if the application is embedded in a web page. Otherwise, system proxy settings are used. Proxy settings are initialized by default in all execution modes.
Most of the operating systems allow applications to simplify subsequent launches and integrate with the user's desktop by creating a desktop shortcut or adding a link to the programs menu or dock.
Built-in support for desktop shortcuts is available for self-contained and web-deployed applications.
By default, Java applications that are launched from a browser or are embedded in a web page run in a restricted environment, known as a sandbox. Restricting applications to the sandbox provides the following benefits:
Users are protected against malicious code that could affect local files.
Enterprises are protected against code that could attempt to access or destroy data on networks.
Applications that are restricted to the sandbox cannot perform the following operations:
Access client resources such as the local file system, executable files, system clipboard, and printers.
Connect to or retrieve resources from any third-party server (in other words, any server other than the server it originated from).
Load native libraries.
Change the SecurityManager.
Create a ClassLoader.
Read certain system properties. See System Properties for a list of forbidden system properties.
Java applications that run in a browser or were earlier installed from a web page automatically check for updates to the application at the original location where the application is loaded. This check is made every time an application starts, and, by default, the update runs in the background. The application is automatically updated if updates are detected.
For standalone and self-contained applications, you are responsible for handling updates.
The Deployment Toolkit performs two important functions:
Simplifies web deployment of Java applications by managing updates.
Improves the user's experience while waiting for applications to start.
These two functions are connected, because the application startup phase is a critical component of user satisfaction. For example, the Deployment Toolkit verifies that the user has the JRE installed, and if not, it offers to install it before trying to run the application, requiring little effort on the user's part.
The Deployment Toolkit provides a JavaScript API and is only available for applications embedded in a web page or launched from a browser.
For more information about the Deployment Toolkit, see Chapter 19, "Deployment in the Browser."
Applications that are embedded in a web page can communicate with the web page using JavaScript. To initiate communication, a JavaFX application must get the web context from the JavaFX HostServices
API. For any other execution environment, an attempt to get a reference to web context returns null.
Example 3-1 shows an example of using JavaScript to go to a new page:
Example 3-1 Using JavaScript to Go to a New Page
final HostServices services = getHostServices(); JSObject js = services.getWebContext(); js.eval("window.location='http://javafx.com'");
For JavaFX applications, see Chapter 16, "Java and JavaScript" for information about using JavaScript to communicate with the browser.
For Java applets, see Invoking JavaScript Code From an Applet for information about using JavaScript to communicate with the browser.
To run Java content, a recent version of the JRE is required. Unless the application is self-contained, the JRE must be installed on the user's system.
If users do not have the required version of the JRE, they are directed to install it. However, situations exist in which system installations of the JRE and the auto-update functionality are not sufficient, for example:
The user does not have admin permissions to install the JRE.
The user requires an older version of the JRE for other applications.
You want to set the exact version of the JRE to be used by your application.
Your distribution channel disallows dependencies on external frameworks.
Deploying your application as a self-contained application resolves these issues. The JRE is included in the application package, and users do not need to install it separately. The self-contained application package can be as simple as a .zip file distribution, or it can be wrapped into an installable package using technology that is native to the target operating system. See the topic Section 5, "Packaging Basics" for more details about self-contained application packages.


--- layout: default title: Page Not Found! ---
Please check the URL.
If you followed a link in this same website please file an issue!


--- title: new blog location author: '' date: '2018-02-25' slug: new-blog-location categories: [] tags: [] ---
##Hey All
I have a few new ideas for little data projects and will be posting here from now on. Eventually this will be louismaiden.com.


{% extends "templates/layout-question.html" %} {% block body_classes %}version-7{% endblock %} {% block page_title %} Email address confirmed {% endblock %} {% block next_url %}date-of-birth{% endblock %} {% block continue_button_text %}Continue signing up{% endblock %} {% block question_content %}
You've confirmed {{email}} as your email address.
You can cancel or unsubscribe at any time by clicking the 'unsubscribe' link in the email.
{% endblock %}


Why Has Seagate’s Operating Margin Grown More Than 3.5x, Despite A Drop In Revenue?
by Trefis TeamSeagate’s (NASDAQ: STX) operating margin has grown from 4% in 2016 to around 14.3% in 2019. This comes as a huge surprise, given that total revenue has dropped from $11.16 billion to $10.39 billion over the same period.You can view our interactive dashboard- A Look At The Trend In Seagate’s Operating Margin– to find out more about what drove this rapid growth.
Why did this happen?
- Seagate’s total operating expenses have dropped from $10.71 billion in 2016 to $8.9 billion in 2019.
- This has largely been due to a drop in the cost of revenue from $8.54 billion in 2016 to $7.46 billion in 2019, on the back of an overall semiconductor supply glut driving down raw material prices.
- A drop in memory demand has also led to a drop in product development and marketing costs, which have dropped by around $200 million each.
What does this mean?
- Apart from the semiconductor glut, Seagate’s revenues have also taken a hit due to a large-scale migration toward cloud storage and streaming services.
- With the semiconductor market expected to recover from its state of oversupply, Seagate needs to invest in research toward more relevant technology, or even consider making the switch to retail cloud services.
- This would, in the near-term, drive up both research and marketing expenses, and may weigh on operating margins going forward.
What’s behind Trefis? See How It’s Powering New Collaboration and What-Ifs For CFOs and Finance Teams| Product, R&D, and Marketing Teams More Trefis Data Like our charts? Explore example interactive dashboards and create your own


{% extends "partials/tooltips/base.html" %}
{% block title %}
Children of the Marriage
{% endblock %}
{% block inner %}
The Divorce Act defines child of the marriage as:
Child of the marriage means a child of two spouses or former
spouses who, at the material time,


Name
HPL_send Send a message.
Synopsis
#include "hpl.h"
int
HPL_send(
double *
SBUF
,
int
SCOUNT
,
int
DEST
,
int
STAG
,
MPI_Comm
COMM
);
Description
HPL_send
is a simple wrapper around MPI_Send. Its main purpose is
to allow for some experimentation / tuning of this simple routine.
Successful completion is indicated by the returned error code
MPI_SUCCESS. In the case of messages of length less than or equal to
zero, this function returns immediately.
Arguments
SBUF (local input) double *
On entry, SBUF specifies the starting address of buffer to be
sent.
SCOUNT (local input) int
On entry, SCOUNT specifies the number of double precision
entries in SBUF. SCOUNT must be at least zero.
DEST (local input) int
On entry, DEST specifies the rank of the receiving process in
the communication space defined by COMM.
STAG (local input) int
On entry, STAG specifies the message tag to be used for this
communication operation.
COMM (local input) MPI_Comm
The MPI communicator identifying the communication space.
See Also
HPL_recv,
HPL_sdrv.


NEWS.md
Updates documentation formatting and corrects minor issues
Uses curl
to download XML files before parsing them, rather than reading directly from the server. curl
gives more flexibility in handling the server connections
Uses curl::curl_download()
in place of utils::download.file()
for a newer implementation of the same protocols
Correct formatting of DESCRIPTION file to conform with CRAN guidelines
Replaces \dontrun{}
with \donttest{}
for examples in documentation
Spellcheck package and correct spelling where necessary
get_historical()
now fetches data for any station with historical data available corrected an issue where previously it only fetched data for stations that currently reported
Enforce standardised output for get_coastal_forecast()
. In some cases BOM does not report all fields available, bomrang will always report these with NA
if empty
Add new functionality to interact with and download radar imagery from BOM, get_available_radar()
and get_radar_imagery()
When using update_station_locations()
or update_forecast_towns()
the user is now prompted with a message about reproducibility before proceeding
Update code of conduct statement in README to reflect that it only applies to the bomrang
project
Update authors’ list in vignette to include Dean Marchiori
Add links to on-line versions of vignettes from README
Standardise use of vocabulary in README
Reorder vignette to have output from functions before maps
Add maps of historical data completeness and availability to vignette, Appendix 7
Move copyright information from start-up message into CITATION file
get_coastal_forecast()
, which fetches the BOM coastal waters forecastAdd spaces between sentences in some error messages when interacting with the BOM servers
Enhance testing for get_historical()
Handle checking multiple imagery files gracefully without returning warning message if more than one file is to be loaded in current session
Update citations for package to reflect current package and paper citation
Fix corrupted zip file download issue for get_historical()
on Windows
Reduce R requirement back to >= 3.2.0 from 3.5.0
Related to above, check for R version in get_precis_forecast()
and adjust field names according to the R version due to tidyr
’s behaviour
Clean up and reformat documentation, standardise references to packages, links and author e-mail addresses
Remove deprecated functions
Correct field names in get_precis_forecast()
where maximum_temperature
and minimum_temperature
were reversed
Move rappdirs to Suggests to fix NOTEs on https://cran.rstudio.com/web/checks/check_results_bomrang.html
get_historical()
retrieves historical daily rainfall, min/max temperatures, or solar exposure. (@jonocarroll)get_precis_forecast()
handles states/territories with no/missing precipitation data gracefullysf::st_join()
The internal stations_site_list
now is checked against GADM (Global Administrative Areas), http://www.gadm.org/ to ensure state listed is correct. This is in response to an error where Alice Springs Airport was reported in South Australia in the March 2018 update from BOM. There may be others. The original BOM values for state are in an org_state
column. However, bomrang
will use the corrected state
column values.
Update code to be compliant with current and future versions of janitor
Vignettes no longer evaluate code on-the-fly that requires BOM servers to respond in response to CRAN rejecting bomrang
for a failure of a vignette to build due to this issue
Correct issue with converting the timzeone in ag bulletin to character where the conversion resulted in a vector of numerals, not the expected string of characters, e.g. “EST”
Remove redundant functionality in update_station_locations()
where data were fetched using tryCatch()
and then again without
Enhanced documentation for the cached files in satellite imagery
Update internal databases of metadata for station locations and URLs
get_precis_forecast()
and get_ag_bulletin()
where they failed to work properly. This fix lessens internal dependencies on dplyr and removes rlang usage from package.Fix typo in DESCRIPTION, Scott’s ORCID wasn’t given as a full URL
Update authors in vignettes to credit everyone who helped write them
Update vignette style to use normal vignette style with table of contents
Fix error in vignette that referred to update_forecast_locations()
, it should instead refer to update_forecast_towns()
Update internal stations list with latest data from BOM
Document get_current_weather()
functionality in Appendix 4 of bomrang vignette, thanks @mpadge
Spell checking
Ready for submission to JOSS
Update codemeta json file
Ensure authorship order is the same order in all files
Recommended station_name
values are separated by spaces in get_current_weather()
Station names and location names are more consistent in the supplied data and returned data frames.
Lat/Lon values for get_current_weather()
results are now reported using the values from the internal database, which has a higher degree of accuracy. The json file values are rounded while the values from the stations list has four decimal places
Fetch BOM satellite images available through public FTP
New use-case vignette, using bomrang for the WINS project
Welcome message included with statement regarding BOM copyright
Concatenate vignettes into a single file with appendices for descriptions of data returned by functions
Product IDs are included in outputs from get_*()
functions that return a tidy dataframe
Full station names are reported along with BOM’s current name used to refer to a station location. In some cases a station “name” may be the same for both a current and retired station.
Fuzzy matching is used for all functions now when user enters a value for a desired state, station or the whole country for functions that require a state
argument
Data (c) Australian Government Bureau of Meteorology,,
Creative Commons (CC) Attribution 3.0 licence or,
Public Access Licence (PAL) as appropriate.,
See http://www.bom.gov.au/other/copyright.shtml
is displayed
the bomrang vignette now contains instructions for use along with appendices that document the data fields and units, rather than separate vignettes
ramifications of updating station lists are now stated clearly in the vignette and help files for applicable functions
a map of BOM stations is included in an appendix of the bomrang vignette
Lat/Lon values are specified to be in decimal degrees in get_current_weather()
help and vignette
Databases station locations and other metadata are internal an not exposed to the user
Use file.path()
in place of paste0()
The package has been linted,
line lengths are <80 chars,
best practice naming conventions are followed (where possible)
Lint md files
Spellchecking in all files
agrep
is now used in all functions where the user enters state or Australia values to query BOM data
best practices for programming with dplyr 0.7
using rlang
are now employed, which reduces the need for the # CRAN NOTE avoidance
“JSONurl_latlon_by_station_name” has been shortened to “JSONurl_site_list”.
The DESCRIPTION file now states minimum package versions for packages that are undergoing rapid development
Code has been re-factored to be shorter, e.g., xml_bulletin_url
in get_ag_bulletion()
.get_obs()
has been moved out of the .parse_bulletin()
function for easier reading/maintenance
fixed a repeat of return(tidy_df)
in get_precis_forecast()
Wrap examples for get_precis_forecast()
in a \dontrun{} tag due to CRAN NOTE taking too long to run
Use proper GitHub URL in DESCRIPTION file
Run examples for all get_*
functions in package
update_precis_locations()
is now update_forecast_towns()
Add vignettes describing the data returned from get_precis_forecast()
and get_ag_bulletin()
, remove this from function help files
Correct documentation reference in README file
Include internal databases of station locations and metadata for get_current_weather()
and get_ag_bulletin()
both derived from the same BOM station master list
The new database includes a more complete list of JSON URLs and ag bulletin station locations
Generation of the JSON URL list is much faster, now can be updated by the user in a few seconds as desired using the new update_station_locations()
function
Hugh Parsonage has joined as a contributor
Added a new function get_current_weather()
to retrieve weather data from specified BOM weather stations
Added a new function sweep_for_stations()
to find stations used in get_current_weather()
function, based on distance from a specified latitude and longitude
Renamed existing functions for more clarity.
get_forecast()
is now get_precis_forecast()
get_bulletin()
is now get_ag_bulletin()
update_locations()
is now update_precis_locations()
All functions will return a data.frame
object, not a tibble
If a server is not responding, the function returns a more meaningful error message on exit
All date/times are returned in POSIXct format
UTC offset is returned in a separate UTC_offset
field for get_precis_forecast()
for both start_time_local
and end_time_local
fields
Spelling and typo corrections
Enhanced documentation


| Opcode/Instruction | Op/En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
| VEX.L0.0F.W0 90 /r KMOVW k1, k2/m16 | RM | V/V | AVX512F | Move 16 bits mask from k2/m16 and store the result in k1. |
| VEX.L0.66.0F.W0 90 /r KMOVB k1, k2/m8 | RM | V/V | AVX512DQ | Move 8 bits mask from k2/m8 and store the result in k1. |
| VEX.L0.0F.W1 90 /r KMOVQ k1, k2/m64 | RM | V/V | AVX512BW | Move 64 bits mask from k2/m64 and store the result in k1. |
| VEX.L0.66.0F.W1 90 /r KMOVD k1, k2/m32 | RM | V/V | AVX512BW | Move 32 bits mask from k2/m32 and store the result in k1. |
| VEX.L0.0F.W0 91 /r KMOVW m16, k1 | MR | V/V | AVX512F | Move 16 bits mask from k1 and store the result in m16. |
| VEX.L0.66.0F.W0 91 /r KMOVB m8, k1 | MR | V/V | AVX512DQ | Move 8 bits mask from k1 and store the result in m8. |
| VEX.L0.0F.W1 91 /r KMOVQ m64, k1 | MR | V/V | AVX512BW | Move 64 bits mask from k1 and store the result in m64. |
| VEX.L0.66.0F.W1 91 /r KMOVD m32, k1 | MR | V/V | AVX512BW | Move 32 bits mask from k1 and store the result in m32. |
| VEX.L0.0F.W0 92 /r KMOVW k1, r32 | RR | V/V | AVX512F | Move 16 bits mask from r32 to k1. |
| VEX.L0.66.0F.W0 92 /r KMOVB k1, r32 | RR | V/V | AVX512DQ | Move 8 bits mask from r32 to k1. |
| VEX.L0.F2.0F.W1 92 /r KMOVQ k1, r64 | RR | V/I | AVX512BW | Move 64 bits mask from r64 to k1. |
| VEX.L0.F2.0F.W0 92 /r KMOVD k1, r32 | RR | V/V | AVX512BW | Move 32 bits mask from r32 to k1. |
| VEX.L0.0F.W0 93 /r KMOVW r32, k1 | RR | V/V | AVX512F | Move 16 bits mask from k1 to r32. |
| VEX.L0.66.0F.W0 93 /r KMOVB r32, k1 | RR | V/V | AVX512DQ | Move 8 bits mask from k1 to r32. |
| VEX.L0.F2.0F.W1 93 /r KMOVQ r64, k1 | RR | V/I | AVX512BW | Move 64 bits mask from k1 to r64. |
| VEX.L0.F2.0F.W0 93 /r KMOVD r32, k1 | RR | V/V | AVX512BW | Move 32 bits mask from k1 to r32. |
| Op/En | Operand 1 | Operand 2 |
| RM | ModRM:reg (w) | ModRM:r/m (r) |
| MR | ModRM:r/m (w, ModRM:[7:6] must not be 11b) | ModRM:reg (r) |
| RR | ModRM:reg (w) | ModRM:r/m (r, ModRM:[7:6] must be 11b) |
Copies values from the source operand (second operand) to the destination operand (first operand). The source and destination operands can be mask registers, memory location or general purpose. The instruction cannot be used to transfer data between general purpose registers and or memory locations.
When moving to a mask register, the result is zero extended to MAX_KL size (i.e., 64 bits currently). When moving to a general-purpose register (GPR), the result is zero-extended to the size of the destination. In 32-bit mode, the default GPR destination’s size is 32 bits. In 64-bit mode, the default GPR destination’s size is 64 bits. Note that REX.W cannot be used to modify the size of the general-purpose destination.
KMOVW
IF *destination is a memory location* DEST[15:0] (cid:197) SRC[15:0] IF *destination is a mask register or a GPR * DEST (cid:197) ZeroExtension(SRC[15:0])
KMOVB
IF *destination is a memory location* DEST[7:0] (cid:197) SRC[7:0] IF *destination is a mask register or a GPR * DEST (cid:197) ZeroExtension(SRC[7:0])
KMOVQ
IF *destination is a memory location or a GPR* DEST[63:0] (cid:197) SRC[63:0] IF *destination is a mask register* DEST (cid:197) ZeroExtension(SRC[63:0])
KMOVD
IF *destination is a memory location* DEST[31:0] (cid:197) SRC[31:0] IF *destination is a mask register or a GPR * DEST (cid:197) ZeroExtension(SRC[31:0])
KMOVW __mmask16 _mm512_kmov(__mmask16 a);
None
None
Instructions with RR operand encoding See Exceptions Type K20.
Instructions with RM or MR operand encoding See Exceptions Type K21.


Wierd/Gruesome Day
Met this bloke today called Chris, who started off by telling us he was a Christian, then went on to describe his 7 month captivity at the hands of the Iraquis, after being captured whilst on a mission as part of the Aussie SAS.  Then it was on to how he used to play pro rugby league for Wigan, and was nicknamed "The Rock". Same as me at uni - but they were taking the piss.
So was it truth or bollocks? I have no idea.
That rock jump that I did the other day - some bloke was air ambulanced out from there today after smacking his head on some rocks on the way down. Same 40ft one that I did.
Back to the main page


Where the Money Is Rated [PG-13], 89 minutes Starring Paul Newman, Linda Fiorentino Screenplay by E. Max Frye and Topper Lilien & Carroll Cartwright; Story by E. Max Frye Directed by Marek Kanievska website: www.wherethemoneyismovie.com
IN SHORT: Start-up sparks fizzle, but not a dud.
Before we start, this is the kind of review Cranky hates to write because a flick with more positives is going to get what appears to be a negative rating, if you are a new reader and don't understand how we work. If that's you Click here now.
So . . . what's wrong with this picture? Nothing, actually. It's a perfectly average story with an OK script and direction. It is pleasing, intelligent, humorous and there's good chemistry between stars Linda Fiorentino and Paul Newman. Once the sparks get pulled out of the story mix, everything settles way down. The sense of elation that we expect from an underdog getting away with the big score "caper" flick just isn't here.
We start on a high school Prom night, for soon to be marrieds Carol Ann and Wayne McKay (Linda Fiorentino and Dermot Mulroney), the highpoint of their lives, before and after. Fifteen or so years later, Carol is a rehab therapist in a nursing home and Wayne works the night shift at an unspecified job. The fire is almost gone from their marriage, unless a certain song by The Cars reminds them of what was probably the biggest thrill of their lives.
Into the home, whose population seems to be 99 per cent elderly ladies, comes Henry Manning (Paul Newman). Manning, a notrious bank robber, suffered such a severe stroke in prison that he has been temporarily transferred out. Slumped in his wheel chair, with only the twitch of his left hand to indicate that anything at all is functioning within his body, Manning is essentially dead to the world. Except that Carol starts to notice things, coincidences if you will, that indicate to her that Manning isn't the vegetable that he appears to be. She makes it her duty to try to get a rise out of the man. Literally. (OK, guys. Linda Fiorentino in a nurse's uniform. Go to town. The flick does...) Until the lady manages to crack the man's shell, this flick is a very sexy and very funny good time. And Newman never speaks a word.
Carol's ultimate goal is to put the thrill back in her and Wayne's life. She's determined to get Manning to teach her how to rob the local bank, and get away with it. Oh, and Wayne, too. When the hubbie senses that something naughty may be going on between his wife and the con, he lays down the law, and Manning says "No problem." From that point on, the sexual sparks fizzle and we're left with an average caper flick.
Why didn't Manning flee the home? It's covered in the script. How did he pull off the stroke? It's covered in the script. How does the caper come about and is it logical that it could succeed? It's covered in the script. Is there an inevitable twist that puts the plans in jeopardy? It's covered in the script, a couple of times to keep things interesting. Where's the elation you're supposed to feel when the inevitable occurs? Heck if I know. The script has everything it's supposed to. The direction gets from point A to point B, but all the pizazz goes out of the story early on. It's up to the director to keep that chemistry sparking; in this case not letting the leads have any kind of flirtatious back and forth is deadly.
On average, a first run movie ticket will run you Eight Bucks. Were Cranky able to set his own price to Where the Money Is, he would have paid...
$4.00
Pay per view level. My parents, retired and eligible for dirt cheap tickets, would love this kind of flick. To those of us for whom Paul Newman is still a big star name (like me), if there's nothing else out there of interest you might risk first run ticket prices, if they're not too much above what your cable system will charge down the line.
Cranky Critic® is a Registered Trademark of, and Copyright © 2000 by, Chuck Schwartz. All Rights Reserved. Cranky on the web at www.crankycritic.com
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


ProbYX: Inference for the Stress-Strength Model R = P(Y<X)
Confidence intervals and point estimation for R under various parametric model assumptions; likelihood inference based on classical first-order approximations and higher-order asymptotic procedures.
| Version: |
1.1-0 |
| Depends: |
R (≥ 3.0-0), rootSolve |
| Imports: |
stats, graphics |
| Published: |
2015-12-21 |
| Author: |
Giuliana Cortese |
| Maintainer: |
Giuliana Cortese <gcortese at stat.unipd.it> |
| License: |
GPL-2 |
| NeedsCompilation: |
no |
| CRAN checks: |
ProbYX results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=ProbYX
to link to this page.