How to Make a Navy Grog
In 1993 the Bum was living on the beach at Playa Del Rey, California, and hanging out at a place called the Sampan. Once a posh Chinese restaurant frequented by flush suburbanites, its clientele had dwindled to a trickle of bikers, surfers, and the occasional displaced tourist. The owner, a grouchy old guy named Dennis Quan, had little time for them or us, but one afternoon he made a Navy Grog that was so good, by the time we finished it we could swear there was a halo over his head. Quan wouldn’t tell us his secret, but when we watched him make our next one, we saw him heat a teacup full of honey in his toaster oven, then pour a measure of the honey -- now in a more cocktail-friendly liquid state -- into his blender.
Aha! We’d seen drink recipes calling for honey, but none of them explained how to use it without leaving a sticky, undissolved clump in your glass. So we happily applied Quan’s method to drinks in the 1998 Grog Log, even though having to heat the stuff was inconvenient -- as was having to pre-mix it with other ingredients before blending, to avoid it solidifying again on contact with ice. Four years later, we found a 1950 U.S. Navy charity cookbook to which Don The Beachcomber had donated this formula: heat equal parts honey and water till the honey dissolves, then cool it, bottle it, and store it in the fridge, where it will remain in a liquid state. Voila: easy-to-use honey, available at a moment’s notice. We revised the Log’s Navy Grog recipe to take advantage of this syrup; now you can quickly shake up your honeyed Grog, instead of having to use heat and a blender.
To make a Navy Grog, place in your shaker 3/4 ounce each fresh lime juice, white grapefruit juice, and club soda; 1 ounce each gold Demerara rum, dark Jamaican rum, and white Cuban or Puerto Rican rum; and 1 ounce honey mix (see above). Shake with ice, then strain into a glass containing your ice cone.
“Ice cone,” you say? This was the signature garnish for the Navy Grog in Tiki bars and restaurants around the country for many years, but no one ever bothered to publish how it’s done. In the mid-1990s, an ex-Don The Beachcomber bartender named Tony Ramos told the Bum to pack a pilsner glass with finely shaved ice, run a chopstick through the middle to make a hole for the straw, gently remove the cone from the glass, and then freeze the cone overnight. Almost a decade later, another veteran Tiki bartender named Bob Esmino revealed that the Kon-Tiki restaurant chain had a metal cone-mold made specifically for the Navy Grog, to make a perfect cone every time -- one that fit perfectly in to a double old-fashioned glass, which the pilsner cone did not do. The Bum passed this secret along to the folks at Cocktail Kingdom, who have now faithfully re-created the bespoke mold.
For more on the Cocktail Kingdom Navy Grog ice-cone mold:


The Hurricane (1999) Reviewed by Eugene Novikov http://www.ultimate-movie.com Member: Online Film Critics Society
Starring Denzel Washington, John Hannah, Deborah Kara Unger, Liev Schreiber, Dan Hedaya, Vicellous Reon Shannon. Rated R.
Some movies' pre-release buzz is so insistent on their high Oscar potential that when they're finally released, everyone just goes along with it. Thus sometimes, films unworthy of any award sans the Razzie become Oscar hopefuls and some even score nominations. Last year it was The Thin Red Line. This year's "winner" is The Hurricane, pure unadulterated tripe that is all of a sudden being received with critical plaudits and votes in the office Oscar pool.
Acclaimed director Norman Jewison's biopic retreads all the conventions of courtroom movies without any of the fun. And that's supposed to be ok because, see, it's a true story. It's about Rubin "Hurricane" Carter (Denzel Washington), a legendary African American prizefighted who is unjustly convicted of triple homicide with the help of a ghastly (racist!) detective (Dan Hedaya) who's had it in for the "big-shot" Hurricane ever since he arrested him for stabbing a white man with a knife (in self-defense but who cares, right?) when Rubin was only ten. He is to serve three life sentences with no possibility of parole. Most of the film takes place when he is in his 15th year in prison.
To the rescue -- Lesra Martin (Vicellous Reon Shannon) and his team of wanna-be detectives. Lesra is an African American teenager taken in by three well-off Canadian white people (Hanna, Unger, Schreiber) to get an education. Lesra and his buddies go to a book sale where Lesra picks out his very first book -- "The Sixteenth Round," Rubin's autobiography. Immediately thereafter, Schreiber's character tells Lesra "Sometimes we don't pick the books we read, they pick us." Hmmm.
After a few visits to the prison, they become convinced of Rubin's innocence and launch their own full-scale investigation even though two juries have convicted him. They meticulously go through all the files and revisit all the old witnesses (I wonder if any of them might be cranky old women who slam the door in their faces?) and in the course of their relentlessy tedious sleuthing uncover obvious evidence confirming the Hurricane's innocence that was either ignored or never seeked out during the first two proceedings. Of course, we're already told that he's innocent.
A movie like this is especially frustrating because we're not being shown everything significant that happened to Carter during this period in his life. All too obviously, we're getting the Hollywood watered- down version. That would be ok except that the parts we are getting is milked for every single drop of melodrama that the filmmakers could possibly squeeze out of it. It's almost cruel. The melodrama isn't of the entertaining kind either; it's the hokey, rammed-down-your-throat variety where every emotion is exaggerated to the point of absurdity. Witness the villain ferociously grinding his teeth at the final trial or the constant pseudo-saintliness of our four protagonists.
The Hurricane is your basic courtroom movie except it's a no-frills courtroom movie. It's formula stripped to the bare necessities. You have your wrongly accused black man. You have your melodramatic final courtroom scene. But there's nothing else. You'd expect some sort of involving investigation. But that's not necessary since we're implicitly informed of his innocence. Thus the whole middle portion of the movie is reduced to the protagonist brooding. Brooding to himself. Brooding to other inmates. Brooding to Lesra. Brooding to Lesra's Canadian friends. Brooding in letters. I don't think I'll ever look at brooding the same way again. It wasn't long before I got tired of hearing the Hurricane's exceedingly deep meditations on his condition. I wanted something to happen.
As for Washington's performance in the title role -- I figured I'd have to address it sooner or later considering the amount of attention it's received -- he is top notch, though still boring. How is that possible? Well, he does what Jewison wanted him to do perfectly.  What a waste of a great performer.
Speaking of wastes, why the hell did John Hannah agree to do this? He's an extremely talented actor and I love him dearly, but what is he doing here? To call his character (along with Schreiber's and Unger's) a stick figure would be a gross understatement. All three of them come off as veritable Mother Theresas, as benevolent as do-gooders come. If they're to play a major part in this movie, why not make them real people, with real feelings and emotions?
Look: if you're going to make a formula movie, don't undermine the formula. Courtroom dramas can be fun, but this is ridiculous. Not only is it trite, it's boring.
Grade: D
©1999 Eugene Novikov
Sent via Deja.com http://www.deja.com/ Before you buy.
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


The mat-table
provides a Material Design styled data-table that can be used to display rows of
data.
This table builds on the foundation of the CDK data-table and uses a similar interface for its
data input and template, except that its element and attribute selectors will be prefixed
with mat-
instead of cdk-
. For more information on the interface and a detailed look at how
the table is implemented, see the
guide covering the CDK data-table.
Begin by adding the

component to your template and passing in data.
The simplest way to provide data to the table is by passing a data array to the table's dataSource
input. The table will take the array and render a row for each object in the data array.

...

Since the table optimizes for performance, it will not automatically check for changes to the data
array. Instead, when objects are added, removed, or moved on the data array, you can trigger an
update to the table's rendered rows by calling its renderRows()
method.
While an array is the simplest way to bind data into the data source, it is also
the most limited. For more complex applications, using a DataSource
instance
is recommended. See the section "Advanced data sources" below for more information.
Next, write your table's column templates.
Each column definition should be given a unique name and contain the content for its header and row cells.
Here's a simple column definition with the name 'score'
. The header cell contains the text
"Score" and each row cell will render the score
property of each row's data.
<ng-container matColumnDef="score">
 Score
 {{user.score}}
</ng-container>
Note that the cell templates are not restricted to only showing simple string values, but are flexible and allow you to provide any template.
If your column is only responsible for rendering a single string value for the header and cells,
you can instead define your column using the mat-text-column
. The following column definition is
equivalent to the one above.
<mat-text-column name="score"></mat-text-column>
Check out the API docs and examples of the mat-text-column
to see how you can customize the header
text, text alignment, and cell data accessor. Note that this is not compatible with the flex-layout
table. Also, a data accessor should be provided if your data may have its properties minified
since the string name will no longer match after minification.
Finally, once you have defined your columns, you need to tell the table which columns will be rendered in the header and data rows.
To start, create a variable in your component that contains the list of the columns you want to render.
columnsToDisplay = ['userName', 'age'];
Then add mat-header-row
and mat-row
to the content of your mat-table
and provide your
column list as inputs.

Note that this list of columns provided to the rows can be in any order, not necessarily the order in which you wrote the column definitions. Also, you do not necessarily have to include every column that was defined in your template.
This means that by changing your column list provided to the rows, you can easily re-order and include/exclude columns dynamically.
The simplest way to provide data to your table is by passing a data array. More complex use-cases
may benefit from a more flexible approach involving an Observable stream or by encapsulating your
data source logic into a DataSource
class.
An alternative approach to providing data to the table is by passing an Observable stream that emits the data array to be rendered each time it is changed. The table will listen to this stream and automatically trigger an update to the rows each time a new data array is emitted.
For most real-world applications, providing the table a DataSource
instance will be the best way to
manage data. The DataSource
is meant to serve as a place to encapsulate any sorting, filtering,
pagination, and data retrieval logic specific to the application.
A DataSource
is simply a class that has at a minimum the following methods: connect
and
disconnect
. The connect
method will be called by the table to provide an Observable
that emits
the data array that should be rendered. The table will call disconnect
when the table is destroyed,
which may be the right time to clean up any subscriptions that may have been registered in the
connect
method.
Although Angular Material provides a ready-made table DataSource
class, MatTableDataSource
, you may
want to create your own custom DataSource
class for more complex use cases. This can be done by
extending the abstract DataSource
class with a custom DataSource
class that then implements the
connect
and disconnect
methods. For use cases where the custom DataSource
must also inherit
functionality by extending a different base class, the DataSource
base class can be
implemented instead (MyCustomDataSource extends SomeOtherBaseClass implements DataSource
) to
respect Typescript's restriction to only implement one base class.
Each table cell has an automatically generated class based on which column it appears in. The format for this
generated class is mat-column-NAME
. For example, cells in a column named "symbol" can be targeted with the
selector .mat-column-symbol
.
Event handlers and property binding on the row templates will be applied to each row rendered by the table. For example,
adding a (click)
handler to the row template will cause each individual row to call the handler when clicked.
The MatTable
is focused on a single responsibility: efficiently render rows of data in a
performant and accessible way.
You'll notice that the table itself doesn't come out of the box with a lot of features, but expects that the table will be included in a composition of components that fills out its features.
For example, you can add sorting and pagination to the table by using MatSort and MatPaginator and mutating the data provided to the table according to their outputs.
To simplify the use case of having a table that can sort, paginate, and filter an array of data,
the Angular Material library comes with a MatTableDataSource
that has already implemented
the logic of determining what rows should be rendered according to the current table state. To add
these feature to the table, check out their respective sections below.
To paginate the table's data, add a <mat-paginator>
after the table.
If you are using the MatTableDataSource
for your table's data source, simply provide the
MatPaginator
to your data source. It will automatically listen for page changes made by the user
and send the right paged data to the table.
Otherwise if you are implementing the logic to paginate your data, you will want to listen to the
paginator's (page)
output and pass the right slice of data to your table.
For more information on using and configuring the <mat-paginator>
, check out the
mat-paginator docs.
The MatPaginator
is one provided solution to paginating your table's data, but it is not the only
option. In fact, the table can work with any custom pagination UI or strategy since the MatTable
and its interface is not tied to any one specific implementation.
To add sorting behavior to the table, add the matSort
directive to the table and add
mat-sort-header
to each column header cell that should trigger sorting. Note that you have to import MatSortModule
in order to initialize the matSort
directive (see API docs).

<ng-container matColumnDef="position">
 Name
 {{element.position}}
</ng-container>
If you are using the MatTableDataSource
for your table's data source, provide the MatSort
directive to the data source and it will automatically listen for sorting changes and change the
order of data rendered by the table.
By default, the MatTableDataSource
sorts with the assumption that the sorted column's name
matches the data property name that the column displays. For example, the following column
definition is named position
, which matches the name of the property displayed in the row cell.
Note that if the data properties do not match the column names, or if a more complex data property
accessor is required, then a custom sortingDataAccessor
function can be set to override the
default data accessor on the MatTableDataSource
.
If you are not using the MatTableDataSource
, but instead implementing custom logic to sort your
data, listen to the sort's (matSortChange)
event and re-order your data according to the sort state.
If you are providing a data array directly to the table, don't forget to call renderRows()
on the
table, since it will not automatically check the array for changes.
For more information on using and configuring the sorting behavior, check out the matSort docs.
The MatSort
is one provided solution to sorting your table's data, but it is not the only option.
In fact, the table can work with any custom sorting UI or strategy since the MatTable
and
its interface is not tied to any one specific implementation.
Angular Material does not provide a specific component to be used for filtering the MatTable
since there is no single common approach to adding a filter UI to table data.
A general strategy is to add an input where users can type in a filter string and listen to this input to change what data is offered from the data source to the table.
If you are using the MatTableDataSource
, simply provide the filter string to the
MatTableDataSource
. The data source will reduce each row data to a serialized form and will filter
out the row if it does not contain the filter string. By default, the row data reducing function
will concatenate all the object values and convert them to lowercase.
For example, the data object {id: 123, name: 'Mr. Smith', favoriteColor: 'blue'}
will be reduced
to 123mr. smithblue
. If your filter string was blue
then it would be considered a match because
it is contained in the reduced string, and the row would be displayed in the table.
To override the default filtering behavior, a custom filterPredicate
function can be set which
takes a data object and filter string and returns true if the data object is considered a match.
If you want to show a message when not data matches the filter, you can use the *matNoDataRow
directive.
Right now there is no formal support for adding a selection UI to the table, but Angular Material does offer the right components and pieces to set this up. The following steps are one solution but it is not the only way to incorporate row selection in your table.
Get started by setting up a SelectionModel
from @angular/cdk/collections
that will maintain the
selection state.
const initialSelection = [];
const allowMultiSelect = true;
this.selection = new SelectionModel<MyDataType>(allowMultiSelect, initialSelection);
Add a column definition for displaying the row checkboxes, including a main toggle checkbox for the header. The column name should be added to the list of displayed columns provided to the header and data row.
<ng-container matColumnDef="select">

<mat-checkbox (change)="$event ? toggleAllRows() : null"
[checked]="selection.hasValue() && isAllSelected()"
[indeterminate]="selection.hasValue() && !isAllSelected()">
</mat-checkbox>

<mat-checkbox (click)="$event.stopPropagation()"
(change)="$event ? selection.toggle(row) : null"
[checked]="selection.isSelected(row)">
</mat-checkbox>

</ng-container>
Implement the behavior in your component's logic to handle the header's main toggle and checking if all rows are selected.
/** Whether the number of selected elements matches the total number of rows. */
isAllSelected() {
const numSelected = this.selection.selected.length;
const numRows = this.dataSource.data.length;
return numSelected == numRows;
}
/** Selects all rows if they are not all selected; otherwise clear selection. */
toggleAllRows() {
this.isAllSelected() ?
this.selection.clear() :
this.dataSource.data.forEach(row => this.selection.select(row));
}
Finally, adjust the styling for the select column so that its overflow is not hidden. This allows the ripple effect to extend beyond the cell.
.mat-column-select {
overflow: initial;
}
A footer row can be added to the table by adding a footer row definition to the table and adding footer cell templates to column definitions. The footer row will be rendered after the rendered data rows.
<ng-container matColumnDef="cost">
 Cost
 {{data.cost}}
 {{totalCost}}
</ng-container>
...

By using position: sticky
styling, the table's rows and columns can be fixed so that they do not
leave the viewport even when scrolled. The table provides inputs that will automatically apply the
correct CSS styling so that the rows and columns become sticky.
In order to fix the header row to the top of the scrolling viewport containing the table, you can
add a sticky
input to the matHeaderRowDef
.
Similarly, this can also be applied to the table's footer row. Note that if you are using the native

and using Safari, then the footer will only stick if sticky
is applied to all the
rendered footer rows.
It is also possible to fix cell columns to the start or end of the horizontally scrolling viewport.
To do this, add the sticky
or stickyEnd
directive to the ng-container
column definition.
Note that on Safari mobile when using the flex-based table, a cell stuck in more than one direction will struggle to stay in the correct position as you scroll. For example, if a header row is stuck to the top and the first column is stuck, then the top-left-most cell will appear jittery as you scroll.
Also, sticky positioning in Edge will appear shaky for special cases. For example, if the scrolling container has a complex box shadow and has sibling elements, the stuck cells will appear jittery. There is currently an open issue with Edge to resolve this.
When using the multiTemplateDataRows
directive to support multiple rows for each data object, the context of *matRowDef
is the same except that the index
value is replaced by dataIndex
and renderIndex
.
By default, MatTable
applies role="table"
, assuming the table's contains primarily static
content. You can change the role by explicitly setting role="grid"
or role="treegrid"
on the
table element. While changing the role will update child element roles, such as changing
role="cell"
to role="gridcell"
, this does not apply additional keyboard input handling or
focus management to the table.
Always provide an accessible label for your tables via aria-label
or aria-labelledby
on the
table element.
display: flex
The MatTable
does not require that you use a native HTML table. Instead, you can use an
alternative approach that uses display: flex
for the table's styles.
This alternative approach replaces the native table element tags with the MatTable
directive
selectors. For example,

becomes <mat-table>
;

becomes
<mat-row>
. The following shows a previous example using this alternative template:
<mat-table [dataSource]="dataSource">

<ng-container matColumnDef="username">
<mat-header-cell *matHeaderCellDef> User name </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.username}} </mat-cell>
</ng-container>

<ng-container matColumnDef="age">
<mat-header-cell *matHeaderCellDef> Age </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.age}} </mat-cell>
</ng-container>

<ng-container matColumnDef="title">
<mat-header-cell *matHeaderCellDef> Title </mat-header-cell>
<mat-cell *matCellDef="let row"> {{row.title}} </mat-cell>
</ng-container>

<mat-header-row *matHeaderRowDef="['username', 'age', 'title']"></mat-header-row>
<mat-row *matRowDef="let row; columns: ['username', 'age', 'title']"></mat-row>
</mat-table>
Note that this approach means you cannot include certain native-table features such colspan/rowspan or have columns that resize themselves based on their content.
MatRipple
By default, MatTable
does not set up Material Design ripples for rows. A ripple effect can be
added to table rows by using the MatRipple
directive from @angular/material/core
. Due to
limitations in browsers, ripples cannot be applied native th
or tr
elements. The recommended
approach for setting up ripples is using the non-native display: flex
variant of MatTable
.
More details about ripples on native table rows and their limitations can be found in this issue.


XPages and Validation
In our XPages workshop we have a number of exercises that deal with validation. XPages allows you 4 different approaches when and how to validate (not counting the on-field-exit validation which is a very bad habit anyway - never validate on exit, just hint, that this will not submit):
When you look at applications you typically find validation code in the submit button or attached to the submit event (that would be the second from left). While that is wide spread it is not the best way to do that in XPages. Looking at the possibilities we have 2 discussions: server vs. client, validator vs. Button/Event code. You have to be clear about the execution sequence: when a validator fails the submission code isn't executed. If the client validation (by any means) fails no server validation takes place.
When you look at applications you typically find validation code in the submit button or attached to the submit event (that would be the second from left). While that is wide spread it is not the best way to do that in XPages. Looking at the possibilities we have 2 discussions: server vs. client, validator vs. Button/Event code. You have to be clear about the execution sequence: when a validator fails the submission code isn't executed. If the client validation (by any means) fails no server validation takes place.
- Client side validation has the clear advantage to give faster feedback, since no round-trip to the server is required. However it only can be used as a measure for user convenience since it can be canceled out using the appropriate tools (Firebug anyone) easily. Client side validation needs all information for the validation downloaded into the client. So you are limited to simple validations like required fields, consistency checks, data types etc. Anything that requires server information (e.g. Is there budget left, is this the right approver) better lives on the server side. Also currently the client side validation in XPages relies on a simple alert() to notify of validation failures and users are fast as lightning to click away prompts without reading them.
- Server side validation requires a round trip to the server (full page or a ajax call), so it will take longer. On the server side you can rely on any resources or lookups to protect data integrity. Also server side validation is less prone to manipulation (you would need access to the server sources). In XPages you also have better UI capabilities.
- Validation in code (a button, the submit event etc.) is a typical way validation is done. Being the prevalent way doesn't make it right <g>. You need to roll your own notification mechanism (like updating a label) and tend to tie your validation into the UI. Also when you remove a field the validation routine is likely to break. Last not least: you have a hard time documenting what gets validated and why. (You see where I'm going with that)
- Validators are defined together with a field and open a series of posibilities. XPages offers 9 different validators.
You can write JavaScript, regular expressions, check for data types or roll your very own. All you can do in a button/event code you can do in a validator. Since the validators themselves don't interact with the UI the designer can decide how to surface the messages without changes to the validation code. When you remove a field all its validation code goes with it, so maintenance gets much easier. Last not least: you can run an XSLT report against your XPages source and render a report that shows a field with all the defined validators, which makes documentation easier. - Form Validation are the @Formulas defined in your classic Notes form. They only fire when you have specified "Run form validation" as "On Save" or "Both". Typically you would use those when upgrading existing applications.
Posted by Stephan H Wissel on 25 March 2009 | Comments (3) | categories: Show-N-Tell Thursday XPages


vignettes/listing_cansim_tables.Rmd
listing_cansim_tables.Rmd
This vignette details how to use the internal table search functions
in the cansim
package with a simple example using
employment data for economic regions in British Columbia.
The list of available tables is cached in the current R session to avoid repeated downloading of data.
Calling list_cansim_cubes
returns a data frame with
useful metadata for available tables. There are 21 fields of metadata
for each table including title, in English and French, keyword sets,
notes, and table numbers.
library(cansim)
names(list_cansim_cubes())
#> Retrieving cube information from StatCan servers...
#> [1] "cansim_table_number" "cubeTitleEn" "cubeTitleFr"
#> [4] "productId" "cansimId" "cubeStartDate"
#> [7] "cubeEndDate" "releaseTime" "archived"
#> [10] "subjectCode" "surveyCode" "frequencyCode"
#> [13] "corrections" "dimensionNameEn" "dimensionNameFr"
#> [16] "surveyEn" "surveyFr" "subjectEn"
#> [19] "subjectFr"
The appropriate table can be found by subsetting or filtering on the properties we want to use to find the appropriate tables.
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
list_cansim_cubes() %>%
filter(grepl("Labour force characteristics",cubeTitleEn),
grepl("economic region",cubeTitleEn)) %>%
select(cansim_table_number,cubeTitleEn)
#> Retrieving cube information from temporary cache.
#> # A tibble: 2 × 2
#> cansim_table_number cubeTitleEn
#> <chr> <chr>
#> 1 14-10-0090 Labour force characteristics by province, territory and e…
#> 2 14-10-0293 Labour force characteristics by economic region, three-mo…
The search came up with two tables. In this example we are interested
in the unemployment rate for 2015 onwards for the Lower Mainland,
Vancouver Island, and Okanagan economic regions from the Labour Force
Characteristics table. We use the tidyr
package here to
reshape data from a long format to a wider format.
library(tidyr)
selected_table <- "14-10-0293"
data <-get_cansim(selected_table) %>%
filter(grepl("Mainland|Vancouver Island|Okanagan", GEO),
Date>=as.Date("2015-01-01"),
`Labour force characteristics`=="Unemployment rate") %>%
select(Date, GEO, Statistics, val_norm) %>%
spread(key="Statistics", value=val_norm)
#> Accessing CANSIM NDM product 14-10-0293 from Statistics Canada
#> Parsing data
We can visualize then results with ggplot2
.
library(ggplot2)
ggplot(data, aes(x=Date, group = GEO,y=Estimate)) +
geom_ribbon(aes(ymin=Estimate - `Standard error of estimate`,
ymax=Estimate + `Standard error of estimate`, fill=""),
alpha=0.8) +
geom_line(aes(color=GEO)) +
scale_y_continuous(labels=scales::percent) +
scale_fill_manual(name = "", values="grey80", label="Standard error") +
theme_bw() +
labs(title = "Comparison of unemployment rate by economic region",
y = "Unemployment Rate",
x = "",
color = "",
caption=paste0("CANSIM ", selected_table))


Feedback wanted: JETM 1.2.0 SNAPSHOT
JETM 1.2.0 has come a long way last days. It is pretty close to be finished, so far the migration to RRD4j is missing only. As of today we are planning to release 1.2.0 end of January - early February 2007.
In the meantime please try out the current daily snapshot and report issues with it.
The snapshot contains the following changes:
- Improved spring configuration using the Spring 2.x namespace support
- Persistent aggregation results - shipping with file based persistence (it's extensible though)
- Improved HTTP Console I: now supporting sort and switch between collapsed/expanded mode during runtime
- Improved HTTP Console II: servlet based HTTP console for better web integration
- JMX Integration
- Lots of minor changes, such as improved error reporting, web demo improvements, extended plugin and aggregator lifecycle and more...
Please check Using JETM HTTP Console, Web application integration, Springframework integration and Aggregation persistence in the snapshot documentation section for updated documentation.
Attention: Migrating to the new release should be a matter of switching to the new libraries unless you implemented a custom Aggregator or Plugin. In this case you need to alter your implementation and adapt the new interfaces containing an additional lifecycle method init(EtmMonitorContext ctx). For plugins move logic in EtmPlugin#setMonitor() to this method.


Quasars are massive black holes that exist in the center of distant, and therefore ancient, galaxies. They have masses millions and sometimes billions of times greater than the sun. They are also the most luminous beacons in the sky across the entire electromagnetic spectrum. As stars and interstellar matter fall toward the quasar’s gravitationally inescapable center, the surrounding region lights up in an intense release of energy.
Quasars first became mysteries to scientists in the 1960s. Radio towers were pointed to the sky, but radio waves weren't the only things that were picked up. Also detected were tiny but incredibly dense objects.
Due to the diversity in the conditions of the regions close to their centers, quasars exhibit a wide range of outward appearances when viewed by astronomers from Earth.
To best understand vacuum energy, first think of the concept of free energy, which is something we should all be familiar with. Free energy is simply energy we harness from sources like the sun with solar panels or the wind from windmills. Vacuum energy is also free energy, but it is more abundant than those other forms of free energy. Vacuum energy is essentially infinite..
When we think about how the universe is constantly expanding and that the major portion of the universe is dark energy, this makes sense. As two polar-charged particles—matter and antimatter for example—are created, they inevitably collide and destroy each other in the process. The energy released from this explosion is pushing the universe outward. This energy could be vacuum energy.
Neutrinos are tiny subatomic particles that carry no electrical charge and thus weakly interact with other particles. The idea of neutrinos was first proposed by Wolfgang Paul in 1930.neutrinos are so plentiful in the universe that they help to account for the mysterious 27% of the universe.
Galactic cannibalism is the collision of two galaxies and the subsequent absorption of parts of one into the other.
When galaxies collide, their individual gravitational forces reach out and pull the other in. You can picture a massive “gravity arm” reaching out and grabbing a chunk of the other galaxy. Except this is a two-way event. However, the larger galaxy—the one with the greater gravitational pull—almost always wins the fight and causes more distortion to the smaller galaxy.
It is the thermal radiation leftovers from such an incomprehensibly massive event. In other words, it is the side effect of the universe changing from a plasma into a gas. This radiation fills the universe and can be detected everywhere we look with the right tools.
Arno Penzias and Robert Wilson discovered the CMB in 1963. While analyzing faint microwave signals from the Milky Way, they picked up noises which they originally thought were due to interference from pigeon droppings on their equipment. This noise, of course, actually turned out to be the radiation from the CMB.
Antimatter can be seen as the opposite of everything we see in our visible world.
In the same way that 2 and -2 cancel each other out to equal 0 in math, when matter and antimatter collide, they destroy each other in an explosion of sorts. This makes antimatter very hard to work with, and scientists have only been to create a small amount at any given time. This, combined with the relatively small amount of antimatter that naturally exists in the universe, has made it difficult to study.
Perhaps the biggest question surrounding antimatter besides its potential uses is why we have so little of it in the universe. If antimatter and matter are essentially mirror images of each other, why did the Big Bang create so much more matter than antimatter?
An exoplanet is what we call planets that orbit a star other than the sun. The earth, for example, would be an exoplanet to aliens from another planet. Since the first exoplanets were found in the 1990s, scientists have discovered that exoplanets are actually very common.
Identifying exoplanets is done through five primary methods: the Doppler technique, direct imaging, light curves, transit timing variations, and microlensing. One of the most common methods monitors light blockage from the stars. Telescopes in space look at thousands of stars at the same time. They’re able to track “blips” when the sun’s light is less than normal. If the blips are in repeatable patterns, it is safe to infer that the blip of less light is an orbiting planet passing.
Content: Highbrow Course- Strangest Things In Space
Framework: Reveal.js
Source Code: @Github
THANK YOU


Wake up happy to rise.
Fall asleep exactly when you intend.
Find your perfect sleep amount.
Start tracking today!
Improved Learning
A good night's sleep improves learning. Whether you're learning math, how to play the piano, how to perfect your golf swing, or how to drive a car, sleep helps enhance your learning and problem-solving skills. Sleep also helps you pay attention, make decisions, and be creative.
[nhlbi.nih.gov]
Productivity Improves
Getting enough quality sleep at the right times helps you function well throughout the day. People who are sleep deficient are less productive at work and school. They take longer to finish tasks, have a slower reaction time, and make more mistakes.
[nhlbi.nih.gov]
Mood Improves
Sleep deficiency alters activity in some parts of the brain. If you're sleep deficient, you may have trouble making decisions, solving problems, controlling your emotions and behavior, and coping with change. Sleep deficiency also has been linked to depression, suicide, and risk-taking behavior.
[nhlbi.nih.gov]


You can even pretty drop-caps with :first-letter, but make sure to apply it to p:first-of-type so your site not too ugly.
This is a second paragraph. If it had a drop-cap this site would be ugly!


Flow Rate Predictions¶
Module for ARIMA modeling.
- Classes:
Arima: contains functions to retrieve data and build ARIMA model for given river run
- Functions:
get_data: retrieves needed data for selected run
daily_avg: takes time series with measurements on different timeframes and creates a dataframe with daily averages for flow rate and exogenous predictors
arima_model: creates flow rate predictions using statsmodel package functions
get_min_max: use get_all_runs function to query database and then pull min and max runnable flow rate for given run
-
class
riverrunner.arima.
Arima
[source]¶ Creates predictions for future flow rate using ARIMA model
-
get_data
(run_id, metric_ids=None)[source]¶ Retrieves data for selected run from database for past four years from current date using Repository.get_measurements function.
Parameters: - run_id (int) – id of run for which model will be created
- metric_ids ([str]) – list of metric ids to include
Returns: containing four years of measurements up to current date for the given run
Return type: DataFrame
-
daily_avg
(run_id)[source]¶ Creates dataframe needed for modelling
Calls Arima.get_data to retrieve measurements for given run and creates a dataframe with daily averages for flow rate and exogenous predictors.
Parameters: run_id (int) – id of run for which model will be created Returns: containing daily measurements Return type: DataFrame
-
arima_model
(run_id)[source]¶ Creates flow rate predictions using ARIMA model.
Calls Arima.daily_avg to retrieve data for given run, then creates flow rate predictions by using statsmodels functions arma_order_select_ic and ARIMA. Three weeks of past flow rate data are also returned for plotting purposes.
Parameters: run_id (int) – id of run for which model will be created Returns: containing time-series flow rate predictions for next 7 days and historical flow rate for past 21 days Return type: DataFrame
-


Introduction¶
The distex package provides a distributed process pool that uses asyncio to efficiently manage the local and remote worker processes.
Features:
- Scales to 1000’s of processors;
- Can handle in the order of 50.000 small tasks per second;
- Easy to use with ssh (secure shell);
- Full asynchronous support;
- Maps over unbounded iterables;
- Choice of
pickle
,dill
orcloudpickle
serialization for functions and data; - Backward compatible with
concurrent.futures.ProcessPool
(PEP3148).
Installation¶
pip3 install -U distex
Dependencies:
- Python version 3.6 or higher;
- On Unix the
uvloop
package is recommended:pip3 install uvloop
- SSH client and server (optional).
Examples¶
A process pool can have local and remote workers in any combination. Here is a pool that uses 4 local workers:
from distex import Pool
def f(x):
return x*x
pool = Pool(4)
for y in pool.map(f, range(100)):
print(y)
To create a pool that also uses 8 workers on host maxi
, using ssh:
pool = Pool(4, ['ssh://maxi/8'])
There is full support for every asynchronous construct imaginable:
import asyncio
from distex import Pool
def init():
# pool initializer: set the start time for every worker
import time
__builtins__.t0 = time.time()
async def timer(i=0):
# async code running in the pool
import time
await asyncio.sleep(1)
return time.time() - t0
async def ait():
# async iterator running on the user side
for i in range(20):
await asyncio.sleep(0.1)
yield i
async def main():
async with Pool(4, initializer=init, qsize=1) as pool:
async for t in pool.map_async(timer, ait()):
print(t)
print(await pool.run_on_all_async(timer))
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
High level architecture¶
Distex does not use remote ‘task servers’. Instead it is done the other way around: A local server is started first; Then the local and remote workers are started and each of them will connect on its own back to the server. When all workers have connected then the pool is ready for duty.
Each worker consists of a single-threaded process that is running an asyncio event loop. This loop is used both for communication and for running asynchronous tasks. Synchronous tasks are run in a blocking fashion.
When using ssh, a remote (or ‘reverse’) tunnel is created from a remote Unix socket to the local Unix socket that the local server is listening on. Multiple workers on a remote machine will use the same Unix socket and share the same ssh tunnel.
Documentation¶
Changelog¶
Version 0.5.7¶
- distex_proc entry point is now used to allow various Python setups
Version 0.5.6¶
- Fixed issue #5
Version 0.5.5¶
- Optimizations; some logging issues fixed.
Version 0.5.4¶
- Fixed issue #4
Version 0.5.3¶
- Small scheduling improvements
Version 0.5.2¶
- Optimizations for large data
- Better error handling when result can’t be pickled
Version 0.5.1¶
- Fixes for Windows


ATCocoaKit
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Requirements
Installation
ATCocoaKit is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'ATCocoaKit'
Documentation
https://jingxuetao.com/ATCocoaKit/
Author
Adrift001<EMAIL_ADDRESS>License
ATCocoaKit is available under the MIT license. See the LICENSE file for more info.


--- layout: page title: 422 - The change you wanted was rejected permalink: 422.html ---
Maybe you tried to change something you didn't have access to.
Fulcrum requires cookies to function correctly. Make sure you have cookies enabled in your browser.
If you are the application owner check the logs for more information.


models
requests
package
requests
Visibility
Public
All
Type Members
abstract
class
AuthenticatedRequest
[
T <:
AuthenticatedRequest
[
T
]
]
extends
QueryStringBindable
[
T
]
class
EventsRequest
extends
AuthenticatedRequest
[
EventsRequest
]
class
LoginRequest
extends
QueryStringBindable
[
LoginRequest
]
class
ReservationRequest
extends
AuthenticatedRequest
[
ReservationRequest
]
Ungrouped


--- layout: post title: Blackwing Descent - Maloriak tags: - 10 man - 10-man - blackwing descent - bwd - instance - maloriak - paladin - raiding - tankadin status: publish type: post published: true meta: aktt_tweeted: '1' aktt_notify_twitter: 'yes' _aktt_hash_meta: '' _edit_last: '4' --- We finally got Maloriak down last night, yay for us. I found this encounter quite challenging, mainly because I was on add duty and rounding those buggers up can be a tad annoying. As you can see in the video, selecting them took me a while sometimes and luckily it was never after a Scorching Blast or the healers would have been toast. And there's a tip, they always go for the healers, so stand close to them when they spawn and it'll save you heaps of running round (this only really works if they don't pop during Scorching Blast - if they do, time for some running round).
Maloriak from Greg Stewart on Vimeo.
We had the help of team 1 alts (which always goes a long way so big thanks to them). Our initial tactic was to wait for 9 aberrations to be released before AOE-ing them down. While the first round never was a problem, come the second round, I'd invariably die as soon the next 9 were all on me. T1 suggested we go for 12/6 and boom we got him down. When you have 12 adds up it really helps if you have a mage in your group to cast Ring of Frost and if you have a DK, use Hungering Cold as well.


WATCH | #BlackFriday crowd chaos outside Nike Factory Store
by Zama LuthuliBlack Friday was nothing short of crazy at the Nike Factory Store at Woodmead Value Mart in Johannesburg.
Some bargain-hunters said they had been up since 2am and travelled long distances to get there as early as possible.
What began as an orderly queue turned into a rowdy crowd, with people jumping security fences to get close to the entrance. This caused some commotion among the Black Friday hopefuls.
Soon the area in front of the store was so full that the crowd could not step back to allow security guards to open the door. Some simply did not want to move out of fear that they would lose their place.
Sarah Ndimande was there with her family. She says she was hoping to get some Christmas clothes for her children, but had accepted that her chances of getting into the shop were slim.
Eventually the store's door was damaged, resulting in security guards allegedly pepper-spraying people in the crowd. Several hours into the wait, the pressured security workers threatened to not open the store at all.
The situation remained volatile, with police and guards trying different methods to maintain order.


Configuration
Basic
Rotation Interval
5
10
30
Portrait orientation.
Submit failed.
Portable Document Format (PDF) File
File must be a PDF file.
Submit failed.
Browse
Delete
Logout


Trader Leon:
Man, you are really a dependable person. Don't forget. You must take the box of supplies to
Messenger Wahkan of Ketra
at the Ketra Orc base.


General information
| Brand | Bianchi |
| Model | Infinito Athena Compact (2012) |
| Weight | - |
| Released on the market | 2012 |
| For women | No |
| For kids | No |
| Frame material | Carbon |
| Frame type | Closed |
| Collapsible frame | - |
| Color | Green |
| Fork type | Tough |
| Shock absorber type | - |
| Shock absorber pressure | - |
| Fork name | - |
| Wheel drive | Rear |
| Drive type | Chain |
| Transmission type | With an external switch |
| Number of speeds | 22 |
| System name | Campagnolo Athena |
| Cassette name | Campagnolo Chorus |
| Front derailleur gears name | Campagnolo Athena |
| Rear derailleur gears name | Campagnolo Athena |
| Shifters type | Trigger |
| Shifters name | Campagnolo Athena Power |
| Front brakes | Rim mechanical |
| Front brakes name | Campagnolo Athena |
| Rear brakes | Rim mechanical |
| Front brakes name | Campagnolo Athena |
| Number of wheels | 2 |
| Wheels diameter | 28 " |
| Double rim | - |
| Rim material | Aluminium |
| Rims name | Fulcrum Racing 5 |
| Tyres pattern | Mud |
| Tyres name | Hutchinson Fusion |
| Handlebar type | Road |
| Handlebar name | Road |
| Seat type | Sports |
| Seat suspension | No |
| Seat name | fi'zi:k Aliante Delta |
| Pedals type | - |
| Pedals name | - |
| Front panel | No |
| Rear panel panel | No |
| Trunk | No |
| Rearview mirror | No |
| Horn | No |
| Basket | No |


A | |
| abstrContext [Types] |
Context
|
| abstrD [Types] |
Abstract domain
|
| abstrEnvironment [Types] |
Environment
|
| arguments [Types] |
Definition of the arguments of C functions
|
| arithOpArithBin [Types] |
Binary operators which are of type int -> int -> int
|
| arithOpArithUna [Types] |
Unary operators which are of type int -> bool
|
| arith_expr [Types] |
C arithmetic expression
|
| asm_expr [Types] |
ASM expression aka operands of ASM statements
|
B | |
| boolOpArithBin [Types] |
Binary operators which are of type int -> int -> bool
|
| boolOpBoolBin [Types] |
Binary operators which are of type bool -> bool -> bool
|
| boolOpBoolUna [Types] |
Unary operators which are of type bool -> bool
|
| bool_expr [Types] |
C boolean expressions
|
C | |
| callStack [Types] |
Call stack (which is really a stack)
|
E | |
| except [Exceptions] |
The informations which will be stored about an exception
|
| exception_type [Exceptions] |
The possible types of the exceptions
|
F | |
| functionContext [Types] |
Map which associates locations to their C functions (and contexts) associated
|
G | |
| generic_stat_loc [Types] |
Statement with its location associated
|
| global_statement [Types] |
Statements which are globals.
|
L | |
| loc [Types] |
Locations of statements in programs
|
| loc_stat_a [Types] |
Located ASM block
|
| loc_stat_c [Types] |
Located C block
|
M | |
| memoryStack [Types] |
Memory stack
|
N | |
| name_var [Types] |
Name of variables, functions and labels
|
P | |
| program [Types] |
C program with inline assembly
|
| ptr_var [Types] |
Pointer induction to a variable name
|
R | |
| realD [Types] |
Real domain
|
| reg32 [Types] |
Registers actually implemented in the analyser
|
S | |
| stat_a [Types] |
ASM statements
|
| stat_c [Types] |
C statements
|
T | |
| type_c [Types] |
Type of C variables
|


The calculated sentiment of each news source's tweet using Vader
A bar graph comparing average sentiment of each news source


array array_replace_recursive ( array &$array , array &$array1 [, array &$... ] )
array_replace_recursive() replaces the values of the first array with the same values from all the following arrays. If a key from the first array exists in the second array, its value will be replaced by the value from the second array. If the key exists in the second array, and not the first, it will be created in the first array. If a key only exists in the first array, it will be left as is. If several arrays are passed for replacement, they will be processed in order, the later array overwriting the previous values. array_replace_recursive() is recursive : it will recurse into arrays and apply the same process to the inner value. When the value in array is scalar, it will be replaced by the value in array1, may it be scalar or array. When the value in array and array1 are both arrays, array_replace_recursive() will replace their respective value recursively.
Returns an array, or NULL if an error occurs.


Max's ability to travel through time allows her to alter anything she wants. This means that she can constantly alter the course of both her past and future. This can have fatal effects on both herself and others.
Max catches Nathan in the girls bathroom with a gun. When confronted by Principal Wells, Max can either tell on Nathan which will put her in danger or hide the truth which will keep Nathan off her back, but could keep others at danger.
A bucket of paint is dropped onto Victoria as she was blocking Max from entering the dorms. This leaves Victoria red-faced and Max can either comfort her, which will help Max gain Victoria's trust, or she can make fun of her. This will make their relationship even worse.
Max notices David harrassing Kate and has to choose whether to take a photo and use it as evidence, or intervene and help Kate. If you decide to take a photo Kate will become annoyed, while she will be thankful and trust you more if you intervene.
David returns home and questions Chloe about the weed he finds in her room. Max is hidden in the closet and must decide to take the blame or stay hidden. If you take the blame, David will grow suspicious of you and will act aggressive towards you. If you hide, Chloe will feel let down by you.
When Kate tells Max that she thinks she was drugged by Nathan Prescott at the Vortex Club party, Max must decide to tell the police or look for proof. If you decide to tell the police, Kate will try to include you as a witness which Max doesn't like. If you tell Kate to look for proof, she becomes annoyed and questions your trust.
Kate calls Max as she is about to leave the diner with Chloe. If Max answers, Chloe feels offended as she believes Max cares more about Kate than her. If Max doesn't answer, Kate becomes bitter towards Max and believes that she is not a real friend.
Frank confronts Chloe and Max about the money Chloe owes him. Max pulls a gun on Frank and he dares her to shoot him. If Max decides to shoot, the gun doesn't fire as it isn't loaded. This makes Frank angry and puts Max in danger. If Max doesn't shoot, Frank takes the gun and Chloe feels disappointed in Max.
Kate is about to commit suicide on the roof of the dorms. Max reaches her and pleads with her to come down. If you have been nice to Kate and helped her when she needed you, then you can convince her to come down. However, if you have not been a good friend to her she will jump and kill herself.
Max is taken to the principal's office to tell him what led Kate to the rooftop. Max can choose to blame David, Nathan or Mr. Jefferson. If she blames David, he may bring up the fact that she was caught with weed. If she blames Nathan, he will say it was Kate's fault and if she blames Jefferson, he will be removed from hosting the Everyday Heroes content in San Francisco.
Max and Chloe find a bag with $5,000 in it. It is supposed to go towards the handicapped fund, but Chloe wants to take it to payback Frank. If you steal the money Chloe can use it to bargain with Frank when getting information about Rachel. If you leave it, Frank will be difficult to persuade.
 If Max kisses her, Chloe will feel a much closer bond to Max and will be given the option to kiss her again later in the game. If Max doesn't kiss Chloe, Chloe will claim that Max probably kissed her and rewinded time.
David and Chloe argue about the surveillance camera's in the house. If you side with David, Chloe will become upset with Max and ask you to rewind the situation. If you side with Chloe David will eventually be kicked out of the house and will not speak to Max again.
Frank's dog Pompidou runs towards you when you enter his RV. If you throw the bone towards the road, Pompidou will be hit by a truck and eventually die resulting in Max feeling extremely guilty. If you throw the bone into the parking lot, Pompidou will not be hurt and Frank will not get angry.
If Max did not attempt to shoot Frank, she will have the option to steal a gun from David to give to Chloe. If Max takes the gun, Frank can be killed in the meeting at the beach. If Max leaves the gun it is more difficult to kill Frank as Chloe must take a gun from Nathan if he is beaten up by Warren.
Max finds herself in an alternate universe where Chloe is seriously ill. Chloe asks Max to end her life and leaves Max with a heart-breaking decision. If Max accepts, Chloe will congratulate her for following her dreams and die. If she refuses, Chloe will get angry and ask her to leave, giving Max a chance to return to her real reality.
Nathan confronts Max and Chloe when he finds them in the boys dorm. When Nathan takes out a gun Warren jumps on him and starts beating him up. If Max decides to stay out of it, Warren will continue to hit Nathan until he drops his gun, which Chloe picks up. If Max stops Warren, Nathan will not drop his gun.
Max and chloe go to see Frank to ask him about Rachel. As the coversation progresses Max and Chloe can end up killing, harming or not harming Frank. If they kill Frank, Chloe will take the code from Frank before leaving. If they harm Frank, Chloe will take the code and the gun from Frank. If they do not harm Frank, he will trust them and give them the code and maybe David's gun.
At the Vortex club party, Max runs into Victoria and has the chance to warn her about the Dark room. If Victoria believes Max's warning, she will be drugged and killed. If she does not believe Max's warning she will not be drugged or killed. If Max doesn't warn her, Victoria will not be drugged or killed.
When David free's you from the Dark room, he asks you about Chloe. If you tell him that Chloe is dead, David will become enraged and shoot Jefferson who is lying handcuffed and unconcious on the floor. If you hide the truth, David will feel relieved and will not kill Jefferson.
Max meets Joyce at the diner and talks to her about David. If Max tells Joyce that David saved her life, Joyce will take him back to the house. If Max convinces Joyce to not take David back, she will not let him back into the house, claiming that he sometimes scares her.
When Max and Warren meet in the diner, Max has the chance to show affection towards Warren. If Max kisses him, Warren will try to confess his feelings but Max will interrupt him. If Max hugs Warren, he will appear in her nightmare complaining that she didn't kiss him. If Max does not show affection, she will ask him to take care of Joyce before focusing on the photo.
The final choice of the game forces Max to choose between going back in time to let Chloe die, thus saving Arcadia Bay. Or tearing up the butterfly polaroid and destroying the town. If you sacrifice Chloe, Max will travel back to the bathroom and let Nathan shoot her, this will prompt a funeral cutscene which ends the game. If you save Chloe, Max and Chloe will leave Arcadia Bay in ruins and drive away together.


| UDHCPC6(1) |
User Commands |
UDHCPC6(1) |
udhcpc6 - manual page for udhcpc6 1.31.1
udhcpc6 [-fbnqvodR] [-i IFACE] [-r IPv6] [-s
PROG] [-p PIDFILE]
BusyBox v1.31.1 (2020-04-30 13:38:01 EDT) multi-call binary.
- [-x OPT:VAL]... [-O OPT]...
- -i IFACE
- Interface to use (default eth0)
- -p FILE
- Create pidfile
- -s PROG
- Run PROG at DHCP events (default
/usr/share/udhcpc/default.script)
- -B
- Request broadcast replies
- -t N
- Send up to N discover packets
- -T N
- Pause between packets (default 3 seconds)
- -A N
- Wait N seconds (default 20) after failure
- -f
- Run in foreground
- -b
- Background if lease is not obtained
- -n
- Exit if lease is not obtained
- -q
- Exit after obtaining lease
- -R
- Release IP on exit
- -S
- Log to syslog too
- -O OPT
- Request option OPT from server (cumulative)
- -o
- Don't request any options (unless -O is given)
- -r IPv6
- Request this address ('no' to not request any IP)
- -d
- Request prefix
- -x OPT:VAL
- Include option OPT in sent packets (cumulative) Examples of string,
numeric, and hex byte opts: -x hostname:bbox - option 12 -x
lease:3600 - option 51 (lease time) -x 0x3d:0100BEEFC0FFEE - option
61 (client id) -x 14:'"dumpfile"' - option 14
(shell-quoted)
- -v
- Verbose
- USR1
- Renew lease
- USR2
- Release lease


I'm Gilbert Lavergne-Shank, a software developer that specializes in front-end development and all things web.
I am a graduate of Carleton University's Computer Science program currently residing in Ottawa, Canada. Although I do specialize in front-end development, I am often involved and definitely enjoy working on the full web development stack.
On my own time, I can be found biking or trying to lift heavy objects. I also enjoy reading, some of my favourite books being Brave New World and Ender's Game.
A movie tracking application for both the web and Android devices. This application allows users to discover movies, rate them, and track them. Both versions of the app were made in JavaScript (React and React Native), which allowed for 30% of the code base to be shared.
A collaboration tool which allows users to draw and chat in real time. WebRTC was used to offload the transfer of data which permits the app to have very minimal back-end.
A visual representation and implementation of a 2-approximation algorithm which solves the traveling salesman problem with a solution which is at most twice that of the optimal.
A competitive ladder website that was used by the Tribes Ascend gaming community to organize tournaments and matches. I was tasked with adding extra functionality to the site such as administration tools and quality of life features.


Demo by Kate Currie
Email Kate
Meet our Fellows
- a demo website -
-- filter by --
Fellowship
Active/Inactive
Alphabetically
filter
search


--- layout: post title: "almost always auto (batched)" permalink: /:title/ tags: [tensorflow] ---
In this post I have a look at the JointDistributionCoroutineAutoBatched class in TensorFlow Probability. The title is based on this C++ article.
I'm going to attempt to show the difference between JointDistributionCoroutineAutoBatched and JointDistributionCoroutine by displaying the code differences and runtime speed.
For the official release notes about this feature, see here.
As per usual, I use some football data from football-data.co.uk, you can see some code to download it and process it here.
num_teams = len(team_names) home_team = soccer_data["home_team"].to_numpy() away_team = soccer_data["away_team"].to_numpy() observed_home_goals = soccer_data["home_goals"].to_numpy() observed_away_goals = soccer_data["away_goals"].to_numpy() print(soccer_data.head())
home_team_name away_team_name home_goals away_goals home_team away_team 0 Aston Villa West Ham 3 0 1 32 1 Blackburn Everton 1 0 3 12 2 Bolton Fulham 0 0 5 13 3 Chelsea West Brom 6 0 10 31 4 Sunderland Birmingham 2 2 27 2
Nothing new here, just a simple Poisson model for the observed home and away goals using an an intercept and home advantage terms, along with a measure of attacking and defensive capabilities for each team in the data.
In writing the model is:
\begin{align*} \sigma &\sim HalfNormal(1) \\ \alpha &\sim Normal(0, \sigma^2) \\ \beta &\sim Normal(0, \sigma^2) \\ \psi &\sim Normal(0, 1^2) \\ \gamma &\sim Normal(0, 1^2) \\ H &\sim Poisson(\exp(\psi + \gamma + \alpha_i + \beta_j)) \\ A &\sim Poisson(\exp(\psi + \alpha_j + \beta_i)) \end{align*}where team \(i\) plays at home to team \(j\). This is a heirarchical model since it has "parameters which depend on parameters" - the attack (\(\alpha\)) and defence (\(\beta\)) depend on the scale (\(\sigma\)). For completeness, \(H\) and \(A\) are the home and away goals respectively, \(\psi\) is an intercept term, and \(\gamma\) is a home advantage term.
I use greek letters in this sort of stuff as it is common practice and takes up less space, but I prefer to look at the code to see what is going on now, where I try to write descriptive names for the parameters.
Previously, I'd write the above model in code using something like this:
import tensorflow as tf import tensorflow_probability as tfp tfd = tfp.distributions tfl = tf.linalg Root = tfd.JointDistributionCoroutine.Root @tfd.JointDistributionCoroutine def joint_dist(): team_ability_scale = yield Root(tfd.HalfNormal(scale=1.0)) unit_attack = yield Root( tfd.MultivariateNormalLinearOperator( loc=0.0, scale=tfl.LinearOperatorIdentity(num_rows=num_teams), ) ) unit_defence = yield Root( tfd.MultivariateNormalLinearOperator( loc=0.0, scale=tfl.LinearOperatorIdentity(num_rows=num_teams), ) ) intercept = yield tfd.Normal(loc=0.0, scale=1.0) home_advantage = yield tfd.Normal(loc=0.0, scale=1.0) attack = team_ability_scale[..., tf.newaxis] * unit_attack defence = team_ability_scale[..., tf.newaxis] * unit_defence home_log_rate = ( intercept + home_advantage + tf.gather(attack, home_team, axis=-1) - tf.gather(defence, away_team, axis=-1) ) away_log_rate = ( intercept - home_advantage + tf.gather(attack, away_team, axis=-1) - tf.gather(defence, home_team, axis=-1) ) yield tfd.Independent( tfd.Poisson(log_rate=home_log_rate), reinterpreted_batch_ndims=1 ) yield tfd.Independent( tfd.Poisson(log_rate=away_log_rate), reinterpreted_batch_ndims=1 )
which has a bunch of stuff in it I'd rather not need to deal with:
Root
MultivariateNormalLinearOperator
[..., tf.newaxis]
tfd.Independent
step forward JointDistributionCoroutineAutoBatched:
@tfd.JointDistributionCoroutineAutoBatched def auto_joint_dist(): team_ability_scale = yield tfd.HalfNormal(scale=1.0) unit_attack = yield tfd.Normal(loc=tf.zeros(num_teams), scale=1.0) unit_defence = yield tfd.Normal(loc=tf.zeros(num_teams), scale=1.0) intercept = yield tfd.Normal(loc=0.0, scale=1.0) home_advantage = yield tfd.Normal(loc=0.0, scale=1.0) attack = team_ability_scale * unit_attack defence = team_ability_scale * unit_defence home_log_rate = ( intercept + home_advantage + tf.gather(attack, home_team, axis=-1) - tf.gather(defence, away_team, axis=-1) ) away_log_rate = ( intercept - home_advantage + tf.gather(attack, away_team, axis=-1) - tf.gather(defence, home_team, axis=-1) ) yield tfd.Poisson(log_rate=home_log_rate) yield tfd.Poisson(log_rate=away_log_rate)
Now isn't that a lot nicer to read? But I have a question - what's the downside?
When running MCMC or similar, we spend most of the time evaluating the log-probability (and it's gradient) of some parameters conditioned on the observed data - so this is the function I test in the post. Really I should test the gradients as well but I don't have loads of time at the moment.
observed_goals = [observed_home_goals, observed_away_goals] @tf.function(autograph=False) def target_log_prob_fn(*state): return joint_dist.log_prob(list(state) + observed_goals) @tf.function(autograph=False) def auto_target_log_prob_fn(*state): return auto_joint_dist.log_prob(list(state) + observed_goals) state = joint_dist.sample()[:-2] print(f"old: {target_log_prob_fn(*state):.6f}") print(f"new: {auto_target_log_prob_fn(*state):0.6f}")
old: -16304.628906 new: -16304.628906
So no evidence of anything going wrong.
import time as tm warmup = 5 iterations = 10_000 def benchmark(fn): for _ in range(warmup): _ = fn() start = tm.time() for _ in range(iterations): result = fn() end = tm.time() return end - start, result old_time, old_result = benchmark(lambda: target_log_prob_fn(*state)) new_time, new_result = benchmark(lambda: auto_target_log_prob_fn(*state)) print(f"old: {old_time:0.2f} seconds, result: {old_result:.6f}") print(f"new: {new_time:0.2f} seconds, result: {new_result:.6f}")
old: 5.32 seconds, result: -16304.628906 new: 5.16 seconds, result: -16304.628906
Hmmm! I ran this a few times and it looks like the old way could be a little faster, but this is not really conclusive, and the speed of the gradient calculation is probably the bottleneck anyway.
I really like this new way of writing models and I would use it wherever possible. The downsides are that it might be slower and it relies on tf.vectorized_map - so some operations might not be supported. There may also be memory issues but I didn't look at that here.
I'd even happily give up some runtime performance if it reduced the number of shape errors I get in my code.


EU launches ‘infringement’ action over UK refusal to appoint new commissioner
by By Press AssociationThe European Commission has launched “infringement proceedings” against Britain after Boris Johnson refused to nominate a new British EU commissioner.
In a statement, the commission said that it considered that the UK was “in breach of its EU treaty obligations”.
It said that the Government had until November 22 to respond to the notice.
Mr Johnson has repeatedly said he would not appoint a new commissioner – even though all member states are legally obliged to do so.
Incoming commission president Ursula von der Leyen has said she wants to form a new College of Commissioners on December 1.
But in a letter to the commission on Wednesday, the Government said official pre-election guidance meant it could not make international appointments ahead of polling day on December 12.


23:41
Hello,
Hustler
*
!
* click underlined to edit
Mark all as completed
Hey! Do you like this tool? You can help the developer to keep it alive (e.g. cost of the domain).
Donate some satoshis to 1AYLrvxxtUANbfPH9vxmtY5xvNZoMbgoyX or leave a feedback at email oskar @ (domain stays the same)


My name is Nathan Ortiz. I am 27 years old and was born in Santa Fe, New Mexico
Some of my hobbies include:


Accordions
The standard way of implementing accordions with Boostrap makes them very hard to use on mobile devices. E.g. opening the second item will cause the first item to close, and the content to shift up by the height of the forst item, disorientating the user.
Collapsible Group Item #1
Collapsible Group Item #2
Collapsible Group Item #3
Removing the 'data-parent' attribute means that opening one item does not close another, which works much better on mobile devices
Collapsible Group Item #1
Collapsible Group Item #2
Collapsible Group Item #3
To get the best experience on both mobile and other devices I have added some javascript that removes the 'data-parent' attribute only if a mobile device is detected. To enable this add the class 'responsive-accordion' to the accordion parent.


?BOTANICAL
s.
o
-
e
A
R
D
Diciembre
2003
L.
Catasus
PLANTS
OF
CUBA
SOUTHERN
ORIENTE
AND
PICO
TURQUINO
E,
L,
Ekman
No,
Fre.
Leon
No.
New
Yoik
Botanical
Garden
JULY
1922
ItOSDOM
1605004
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


ScratchVerifier
Log In/Sign Up
Login
Continue
Login
Comment this code on your profile:
Continue
Copy code


The backup dialogue presents a somewhat simplified interface to the PostgreSQL pg_dump tool. You can backup a single table, a schema or a complete database, dependent on the object you select when starting the backup tool.
pg_dump does not support all options for all backup file formats. Particularly, to backup blobs the PLAIN format can not be used. Also, a PLAIN file can not be interpreted, and can not be restored using pgAdmin. The PLAIN format will create an SQL script that can be executed using the psql tool. For standard backup and restore purposes, the COMPRESS and TAR options are recommended.
In order to use backup, the pg_dump tool must be accessible by pgAdmin. This can be accomplished by having it locatable using the path, or by copying it into the same directory where the pgadmin3 executable resides.


About
We’re INK studio.
Our clients hire us to design and build their products.
We focus on user experience and simplicity.
We write code for iOS, Android, and the web.
Android App
iOS/iPhone App
UX/UI Design
Ecommerce System
Campaign Websites
Other Service
3D Interior Design
Interactive Multimedia Design
Illustration
Campaign Video
Activity Record
Product Manager
Full-Stack Web Developer
Web/iOS Developer
Android Developer
Designer/AS3 Developer
Illustrator
3D Interior Designer
Director
Android App
WEB DESIGN
WEB DESIGN
Android App
WEB DESIGN
iOS APP Android APP
Illustration
Illustration
Multimedia System Design
3D Interior Design
3D Interior Design
SMART TV UI DESIGN
Activity Record
Campaign Video
Web Design
Contact Us
<EMAIL_ADDRESS>02-22308069
台北市文山區興隆路3段207巷14弄15號


Toggle navigation
BIT Patna
EVENTS
TEAM
REGISTER
CONTACTS
TMSD(BITP) Club Presents
AAGHAZ'19
09th NOV-10th NOV 2019
Days
Hours
Minutes
Sec


--- layout: page category: spec title: "Web MIDI API" ---
| Current Status: | Working Draft (WD) |
|---|---|
| Canonical URI: |
http://www.w3.org/TR/webmidi
|
| Abstract: | Some user agents have connected music devices, such as synthesizers, keyboard and other controllers, and drum machines. The widely adopted Musical Instrument Digital Interface (MIDI) protocol enables electronic musical instruments, controllers and computers to communicate and synchronize with each other. MIDI does not transmit audio signals: instead, it sends event messages about musical notes, controller signals for parameters such as volume, vibrato and panning, cues and clock signals to set the tempo, and system-specific MIDI communications (e.g. to remotely store synthesizer-specific patch data). This same protocol has become a standard for non-musical uses, such as show control, lighting and special effects control. This specification defines an API supporting the MIDI protocol, enabling web applications to enumerate and select MIDI input and output devices on the client system and send and receive MIDI messages. It is intended to enable non-music MIDI applications as well as music ones, by providing low-level access to the MIDI devices available on the users' systems. At the same time, the Web MIDI API is not intended to become a semantic controller platform; it is designed to expose the mechanics of MIDI input and output interfaces, and the practical aspects of sending and receiving MIDI messages, without identifying what those actions might mean semantically. To some users, "MIDI" has become synonymous with Standard MIDI Files and General MIDI. That is not the intent of this API; the use case of simply playing back a .SMF file is not within the purview of this specification (it could be considered a different format to be supported by the HTML5 <audio> element, for example). The Web MIDI API is intended to enable direct access to devices that respond to MIDI - external synthesizers or lighting systems, for example, or even the software synthesizers that are built in to many common operating systems. The Web MIDI API is also explicitly designed to enable a new class of applications on the web that can respond to MIDI controller inputs - using external hardware controllers with physical buttons, knobs and sliders (as well as musical controllers like keyboard, guitar or wind instrument controllers) to control web applications. The Web MIDI API is also expected to be used in conjunction with other APIs and elements of the web platform, notably the Web Audio API and High-Resolution Time. This API is also intended to be familiar to users of MIDI APIs on other systems, such as Apple's CoreMIDI and Microsoft's Windows MIDI API. |
Web MIDI APIUpdates:


Press release
Announcement of taskforce to look at improving accessibility of apprenticeships for people with learning disabilities
A new taskforce announced today will help more people with learning disabilities to access apprenticeships.
The taskforce comes as part of the government’s goal to create 3 million apprenticeships by 2020, and to halve the disability employment gap.
The taskforce has been created by the Department for Work and Pensions, the Department for Business, Innovation and Skills, and the Department for Education.
Minister for Disabled People Justin Tomlinson said:
After visiting Foxes Academy in Bridgewater, a hospitality and training hotel for young adults with learning disabilities featured on Channel 5 in September, I was convinced of the value of a vocational approach and the need for targeted policy intervention in this area. Apprenticeships offer fantastic opportunities for individuals to learn whilst they earn, developing the skills and knowledge they need to progress their careers in a wide variety of occupations and at a range of levels.
Skills Minister Nick Boles said:
Our commitment to apprenticeships is giving people everywhere the chance to develop vital skills while working in a real job and being paid. This taskforce will focus on how apprenticeships can be more accessible to people with learning disabilities so everyone can be part of the apprenticeships success story.
Only 6% of people with learning difficulties are currently in employment. Making apprenticeships and training opportunities more accessible will support many more people into work.
The taskforce will meet 3 times throughout May and June: once to identify issues, then to explore solutions and finally to form recommendations to make to ministers. It will be led by Paul Maynard MP and include employers, training providers, charities and educational experts.
Media enquiries for this press release 020 3267 5130
Follow DWP on:


First of all: I'm a really big fan of the series. I was awake until 2:00 am to see the season finale and ... at the moment I think at the school tomorrow (or today :P) my teacher would like to kill me for my tiredness - anyway. I have the happy message: Carter Bays revealed the mother: CRISTIN MILIOTI


{% extends "base_site.html" %} {% load staticfiles %} {% block title %}Change Log - Talking Scores (Beta){% endblock %} {% block meta-description %}Overview of updates to Talking Scores - an open source project to convert MusicXML files to a spoken representation.{% endblock %} {% block content %}
This page details various updates made to this project. The dates represent the approximate date when particular changes were committed in Git. The actual date that the changes became live on this site will most likely be different. Progress is gradually being made - so please do retry files that may not have worked before.
For more information about specific changes - see the history on Github.
Current State
This project currently may produce an acceptable output for fairly simple piano music - ie one instrument with 2 staves (treble and bass clef).
27th June 2021
Initial release of analysing the score to identify bars (or groups of bars) that have the same pitch and rhythm, or just the same rhythm, or just the same intervals - in order to provide output such as 'Bars 1 to 4 are used almost all of the way through'.
Also attempts to provide a summary of what might be noticeable when glancing at the music; and its distribution throughtout the score - eg 'lots of chords (some Perfect Fifth, almost all minims, mostly 2 notes)' or 'many accidentals (near the end)'.
The lists of repeating bars / groups are not very easy to read at present (especially as they are shown the Score Options page as opposed to the actual Talking Score output page) - so in a later update, they will probably be moved into the main description as eg 'first used at bar 5; most recently used at bar 9'.
28th December 2020
Upgraded Music21 from 5.5.0 to 6.3.0. One of the benefits is increased performance when creating MIDI files.
1st December 2020
Grace notes are described - but maybe not played correctly.
Note ornaments / expressions are described - just using Music21 names so may need to elaborate the description.
2nd September 2020
Rests are now described.
Semibreves are no longer described as "Unkown duration".
31st August 2020
If the score has a pickup bar / anacrusis - it is included in the output.
30th August 2020
The developers are now notified if an error occurs and the user requests to be notified by email when this is fixed.
25th May 2020
If there are no tempo changes at the start of a segment - MIDI files now include the last tempo chnage before the segment.
For example, if there is a tempo mark of 80 bpm in bar 5 and no other tempo changes in the score. If you play bars 8 to 11, the MIDI file will include the tempo change from bar 5 at the start; so that bars 8 to 11 will play at the correct speed.
26th April 2020
Added Change Log, Contact Us and Privacy Policy pages with basic title and description for SEO purposes.
22nd April 2020
Fixed error when long name for Dynamics is not known.
19th April 2020
Tempos are inserted in midi files for the 2nd stave. To-do: - insert current tempo at the start of segments.
13th April 2020
Added Google Analytics. Configured robots.txt and noindex so that completed scores are not indexed or tracked.
5th April 2020
Fixed CORS error so that midi files are played - ie we can listen to the score - or sections of it.
19th January 2020
Use 'bars at a time' from Options screen.
28th July 2019
Fixed 'unknown duration' for notes smaller than quavers.
27th July 2019
Fixed key signature in preamble.
21st July 2019
Fixed pitch ordering within beats and chords.


A repository may contain several modules for use. As a general guide, modules with very disparate functionality should not be grouped into the same repository. The idea is to group modules that are going to be developed, maintained and released as a set (e.g. uart_rx and uart_tx).
If you have looked around, and are satisfied that your design warrants a new repository, you will need to request that one is added. At present new repositories can only be added by the community manager on github, but don’t worry - the community manager won’t reject reasonable requests. To request a repository, file an issue on the Community Repository.
Before asking for a new repository you should try and create the new structure locally and start work on the project. Follow the instructions in Repository usage to see how to do this.
As well as creating a repository, the community manager will create a team with the same name, the members of which will have push and pull rights to that repo. This will normally just have the requestor on it in the first instance.
When filing your issue requesting a new repo, please make the subject line read:
repo request \<repo_name\>
The repo_name should begin with one of the following prefixes:
Of course before requesting a new repo, please first consider whether it might better belong as part of an existing repo.
The maintainer can request that a committer is added to their repo by filing an issue on the Community Repository. The committer will be placed in the repo Team alongside the maintainer and other committers.
In time, we plan to provide an automated nightly build system. For a successful build, your design must follow the structural guidelines defined for its repository class (see Classes of Repositories). Build status will be updated daily on the Repository index.
The community manager will announce when this facility is available and how to add your repository.
In time, we plan to provide an automated nightly regression system. For a successful regression, your design must follow the structural and test guidelines defined for its repository class (see Classes of Repositories). Regression status, which will also provide basic metrics like code coverage, will be updated daily on the Repository index.
The community manager will announce when this facility is available and how to add your repository.
Note that while we plan to offer these automation facilities as a service to the community, that does not mean that they are mandatory. The intention is to allow our users to subscribe to these services (and thus have the resulting status visible for their project) on a service by service basis as and when they feel ready, or perhaps, not at all.


--- layout: post title: Remove page numbers to make WebDrawer faster categories: [] tags: webdrawer serviceapi status: publish type: post published: true meta: {} ---
I have previously discussed ExcludeCount and search result page numbers and how we can improve WebDrawer search performance, especially for large databases. In HPRM 82 this is all much simpler.
WebDrawer 82 will adjust its paging model to use back and next, rather than numbered pages, if the search routes are set to show results only. To do this you need to add resultsOnly="true" to the two record search routes in hptrim.config. For example:
<add name="FormSearch" model="FormSearch" resultsOnly="true"/> <add name="Record" model="Records" resultsOnly="true" ... />
When


WITNESS LIST Health Services Committee March 2, 1999-1:30P SB 44 For: Alexander, Larry (Texas College of Emergency Physicians / Texas Medical Assn.), Plano Against: Mitchell, Beth (Advocacy, Inc.), Austin On: Pettigrew, Karen (Texas Commission on Alcohol and Drug Abuse), Austin Registering, but not testifying: For: Coles, Jim (Texas College of Emergency Physicians), Austin SB 310 Registering, but not testifying: For: Gelfand, Augusta (Texas Occupational Therapy Association), Austin Hennigan, Mary (Texas Occupational Therapy Association), Austin Kants, Kevin, Dr. (Texas Chiropractic Association), Austin SB 314 For: Taylor, Clare (Private School Member, Texas Cosmotology Commission), Corsicana On: Alspaugh, Delores (Texas Cosmetology Commission), Austin Registering, but not testifying: For: Woolbert, Lynda (Coalition for Nurses in Advanced Practice), West Columbia Written materials submitted: For: Hutto, Kathy (Coalition for Nurses in Advanced Practice), Austin SB 556 For: Hutto, Kathy (Texas Occupational Therapy Association), Austin Registering, but not testifying: For: Gelfand, Augusta (Texas Occupational Therapy Association), Austin Hanners, Sally (Texas Dental Association), Austin Hennigan, Mary (Texas Occupational Therapy Association), Austin Kants, Kevin, Dr. (Texas Chiropractic Association), Austin Taylor, Des (Texas Chiropractic Association), Austin


SLACathon@Olin is Olin College’s first official design, hacking, and maker marathon. hosted by Olin’s dedicated Stay Late And Create (SLAC) student organization. SLAC is passionate about providing opportunity for people to come together to foster new ideas and projects.
Encompassing more than conventional hacking, SLACathon @Olin aims to bring together diverse flavors of skills and experiences to create. In the spirit of SLAC, this first SLACathon will be focused on community building.
75 Olin College and 50 Wellesley University and Babson College students will be combining their skills and passion on March 22nd to create awesome projects, and we would love for you to be a part of this experience.
Who can attend the event?
All undergraduate students from any university are welcome. Non-BOW students must be 18 or older. Unfortunately, high school students and graduate students cannot attend.
What should I bring with me?
All attendees are required to bring their valid student ID for admission (name must match registration) and a laptop for hacking. For hardware hacks, we will have hardware for you to hack on.
How much does attending cost?
Admission is free, and includes food, drinks, and miscellaneous swag for the entire hackathon!
What food will you provide?
We will have food and drinks throughout the event. Anything from waffles to pizza and massive supply of fruits.


FILM TITLE: ERMO DIRECTOR: ZHOU XIAOWEN COUNTRY: CHINA/HONG KONG CINEMATOGRAPHY: LU GENGXIN MUSIC: SHAO XIAOWEN, HANG LI CAST: Ailiya, Liu Peiqui, Ge Zhijun, Zhang Haiyan, Yan Zhenguo, Yang Xiao SUPER FEATURES: The story
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERMO is one of those films that we just about expect to see in the western countries. And, really, it may signal either a commentary on the outside world, or it may display something about human nature and its fickle way and style.
It is a story that can best be described as "keeping up with the Jones' and doing it a step better".
Ermo, is a young married housewife that is a bit frustrated, because her husband is disabled and she has to do the work. She spends much of her time making noodles and taking them to town to sell them. In comes up a neighbour, whose own wife he doesn't get along with. And he helps her go to town to sell her stuff.
Ermo's child is constantly going to the neighbor's house to watch TV, something that irks her to no end, and she resolves to get the biggest TV that she can find. And instead of selling noodles, she ends up getting another job and also giving away blood for various causes.
And although most things in this film happen accidentally, like the blood giving, it is clear that Ermo is decided that she is going to go one up on her neighbour. And she will do whatever it takes to get there.
And get there she does. And the whole town is now parked in her house watching TV, and her disabled husband is no longer made fun of, except lightly. And the film ends in a note that is disconcerting to say the least, although it may not mean anything. Ermo got it, but did not expect to catch the "snow" on it in the middle of the night, when the stations are signed off.
It is a really well done, and written satire in many aspects, and it spares no ideas when it decides to make fun of the people that are so dedicated to the world of television. But above it all, the film, is really a knock on the new life style, that is TV ridden, and not work oriented. Everything seems to be planned that way. Work so hard to get to this point? It becomes a subtle statement about an empty society, and it is presumed that the west is looked at this way..... but the people are seeing this stuff in a totally new light, and this time in color, although we were never shown the neighbor's TV, which is obviously smaller. To them, the outside is a brand new world.
While this is not a great film, with outstanding values in production like Zhang Yimou, or Chen Kaige, it still is a sign that the vitality of the Chinese film industry has been active, and not wasting its time. And it should hit a much more lucrative larger market, as soon as China learns to work with the west a little better, through Hong Kong, if this is the path that it takes.
Other than that, this is a nice film where the eccentric live, and the poor come and watch. But it has some rather nice moments. And the dedication to its goal, in Ermo's mind are worth the sight.
Very enjoyable film, although there really is nothing fancy, or artistic about it... it just is.
3.5 GIBLOONS Copyright (c) Pedro Sena 1997. All Rights Reserved. Member of the Internet Movie Critics Association
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


Please refer to the description of the enclosing sub-package Force for a description of all elements of this package.
Leakage flux around a prismatic or cylindric air gap between to poles can be described with this model. Due to its constant radius of the leakage field r, the model is rather simple. Whereas in reality the leakage radius is approximately constant for air gap lengths l greater than this radius, it decreases with air gap lengths less than the leakage radius. This decrease for small air gaps is neglected here, since the influence of the leakage flux tube compared to that of the enclosed main air gap (connected in parallel) decreases for decreasing air gap length l.
Note that in [Ka08] the equation for G_m is accidentally swapped with that of a similar element.


--- layout: post authors: ["Stephen Crouch", "Christina Koch", "Karin Lagesen", "Aleksandra Pawlik", "Fiona Tweedie", "Greg Wilson"] title: "Three Flavors of Instructor Training" date: 2015-12-18 time: "01:00:00" tags: ["Instructor Training"] ---
It's been a busy few months for instructor training: along with a two-day class at the University of Manchester, we also wrapped up a pilot of a new kind of multi-week course and a two-day version of the same material. We have also been training four new trainers, and have put the first complete draft of the training materials online. Here's some of what we think we've learned so far.
The multi-week online class met every week instead of every second week (as it had in the past). 54 people started with us in October, and 45 stayed with us until the end, which is the highest completion rate we've ever had for an online class this size. We used Piazza to manage homework and discussion; it's a nice tool, but wasn't noticeably better for our purposes than the shared WordPress blog we used to use. (Both are much easier to manage than the GitHub-based blog we used in the winter, though.) We used BlueJeans for the hour-long meetings, which worked as well as web conferencing ever does.
For the two-day version of the pilot we had people apply in groups. One reason was so that each site would have enough learners to do the video recorded teaching exercise that has become such an important part of the in-person course. Another was so that there'd be critical mass to run workshops after the training: participants have said in the past that this is one of the big challenges. Nine groups took part in total:
| Team | Location | Size |
|---|---|---|
| Team 1 | Townsville | 4 |
| Team 2 | Thessaloniki | 4 |
| Potsdam | 5 | |
| Paris | 7 | |
| Team 3 | Toronto | 14 |
| Curitiba | 3 | |
| Team 4 | Middleton | 7 |
| Arlington | 10 | |
| Vancouver | 5 |
Each team used one Google Hangout; there were a few glitches, but it was mostly reliable. (A DDoS attack on UK academic networks during the training didn't help matters, but Team 2 managed nonetheless.)
Around the same time (23-24 November) we also run a face-to-face instructor training at the University of Manchester. This session was supported by ELIXIR UK and the places for trainees were offered to members of the ELIXIR project, which meant that we had a very international group present. This did not make a significant difference to the training itself, but it was great for instructors in training to meet their counterparts from other countries and organisations.
Having the whole group in one physical location means that there is a lot of discussion and interaction, but the trainer still has to facilitate that, especially at the beginning. It also means that for the practical exercises the trainers can ensure that people swap the partners and groups which increases interaction and knowledge exchange.
Overall, we think that the two-day versions worked as well as the multi-week version, and were less effort for both instructors and learners. A few of the learners in the two-day version may have been less enthusiastic than usual (we think they may have been roped in by friends to get numbers up for applications), but on the other hand, all but a couple of the people who started the two-day version finished it. There wasn't much inter-group discussion—sessions tended to be hub-and-spoke with the trainer as the hub—but there seemed to be plenty of conversation within each group. The biggest drawback of the two-day version was that instructors couldn't give the same quality of feedback on exercises as in either the live version or the multi-week version: there wasn't as much time to do so as in the latter, and there wasn't the hands-on aspect of the former (particularly for the live coding exercise). On the other hand, the online live course made a lot more use of the Etherpad, which meant there were good collaboratively-produced notes at the end.
We won't be able to compare the two pilots fully until participants have finished qualifying and started teaching, but until then, we'd be grateful for feedback from people who took part.


---
layout: post
title: couldnt execute command evolution verify that
date: '2008-12-04T09:39:43+01:00'
tags:
- evolution
- ac
- plug
- 'on'
- acpi
- script
- chmod
- ubuntu
- linux
- eee
- eeepc
- corrente
- alimentazione
- photomadebyme
tumblr_url: http://blog.alezzandro.com/post/62966779/couldnt-execute-command-evolution-verify-that
---
Couldn’t execute command: evolution
Verify that this is a valid command.
This is what you can see if you’ve removed evolution from your ubuntu distro and it will appear every time you’ve plugged in the AC of your notebook.
You can simply avoid this problem by remove execute permission to the script file responsable of this action:
root@dothan:/# chmod -x /etc/acpi/mailbtn.sh
If you have evolution installed, you can also do this command to avoid to launch it every time you will plug AC on your notebook.
gbye,