THE PRINCESS DIARIES
Reviewed by Harvey Karten Walt Disney Pictures Director: Garry Marshal Writer: Gina Wendkos, novel by Meg Cabot Cast: Julie Andrews, Anne Hathaway, Hector Elizondo, Heather Matarazzo, MandyMoore, Caroline Goodall, Robert Schwartzman, Terry Wayne
As Roger Ebert so wisely tells us, it's not the what of a movie: it's the how. In other words, don't decide whether you want to see a picture based on its subject: think of how well the team may have executed the project. Take, for example, the subject of the ordinary person who is transformed into someone transcendent. The Broadway musical "My Fair Lady" not only did the job splendidly but the cast featuring Julie Andrews and Rex Harrison, using the music and lyrics of Frederick Loewe and Alan Jay Lerner, turned in what is arguably the greatest staged musical of all time. It helped that the play was based on the writing of George Bernard Shaw. Now, it would be a mite unfair to expect Garry Marshal, however remarkable his resume ("Pretty Woman, "Frankie & Johnny," "The Flamingo Kid" and others) using a screenplay by Gina Wendkos from Meg Cabot's novel to come close to Shaw's "Pygmalion." In fact "The Princess Diaries," about the transformation of a high-school geek into royalty, is so loaded with sugar and fatuous dialogue that one can scarcely believe that Mr. Marshal would risk holding the attention of his targeted market, girls 8-13 years old, for an overlong 115 minutes. Though Julie Andrews at sixty-five years of age looks magnificent, she is asked to display all the charm that her English upbringing had given her to hold the story together. All things considered, she succeeds admirably. Without her, "The Princess Diaries" could barely last a weekend at the box office.
Heather Matarazzo, who so dead-on showed us what life is like in the Seventh-Grade-from Hell in Todd Solondz's "Welcome to the Dollhouse" five years ago, is reduced to a supporting role as Lilly, best friend of Mia (Anne Hathaway in her feature film debut), both performing in the role of tenth graders at an preppy San Francisco high school featuring the usual scenarios of bullies, nerds and jocks. Mia, who had recently lost her father in an accident, lives with her mother Helen (Caroline Goodall) in a modest home and rides her scooter to school each day. Invited to the stately home of her grandmother, Clarisse (Julie Andrews)- -who happens as well to be the queen of a European nation- state-- she is startled to be asked to fulfill the dream of every adolescent girl: she is offered the job of princess of the fictional little pear-producing country of Genovia situated between France and Spain (Andorra?). Burdened by her weaknesses as a public speaker and her nerdy appearance (thick eyebrows, ghastly hair), she is certain she could never fulfill the role. But the determined Clarisse puts her make-up guy (Larry Miller) to work on her, shows her how to walk, talk and carry utensils, et voila--a radiant beauty that subverts the essence of Andrew Adamson and Victoria' Jenson's "Shrek." Once again, as is typical of just about every fairy tale, only the most beautiful can find her dream, in this case a kingdom, should she so desire one, and a prince charming to dance with. (Two connivers, in fact, who would be destined to take over the country should Clarisse refuse, are the ugliest people in the film.)
"The Princess Diaries" features the excellent Hector Elizondo as the queen's chauffeur, who enjoys a Queen Victoria-Mr. Brown relationship to her royal highness but Elizondo is a fish out of water. So wonderful in "Tortilla Flat," the actor has now appeared in all of Garry Marshal's movies and has a difficult time maintaining an upper-class accent and bearing.
"The Princess Diaries" is not a bad movie: mediocre would be the best way to describe it, and for all we know it could go over with the teen and sub-teen audience for whom it's directed. Yet given the changes that have been made in our society over the past few decades, I'd be surprised if the young attending this G- rated feature would consider it less than cornball, giving it perhaps a lower rating than the more understanding and indulgent adults who accompany them to the multiplexes.
Rated G. Running time: 115 minutes. (C) 2001 by Harvey Karten<EMAIL_ADDRESS>========== X-RAMR-ID: 29020 X-Language: en X-RT-ReviewID: 240634 X-RT-TitleID: 1109228 X-RT-SourceID: 570 X-RT-AuthorID: 1123
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


Amsterdam named the world's most tourist-friendly city
Amsterdam in the Netherlands has been named the world's most tourist-friendly city not to mention it also boasts some of the world's happiest locals in a new survey
by Julie Delahaye, https://www.facebook.com/juliedjournoAmsterdam is the world's most tourist-friendly city according to a new survey.
The Dutch capital has topped a list of tourist hotspots, impressing across a host of factors including how much accommodation is on offer and the overall happiness of those in the destination.
The research, conducted by Authentic Vacations, analysed 10 major cities and looked at factors including tourist to local ratios, airports close to the city, the quality of the local airport, overall happiness of the destination, English proficiency, how much accommodation is available, and safety ratings.
Amsterdam can make for a brilliant city break. For a start, there are heaps of brilliant things to see and do in the day whether you want to explore the museums or take a leisurely stroll along the canals.
When the sun sets, the city's bustling bars, clubs and restaurants come to life - check out our round-up of Amsterdam's best bars for a taste of what's on offer.
It can also be quite a budget-friendly break - there are plenty of cheap hotels to be found - and it's also been named one of Europe's cheapest winter city breaks .
There have been some efforts to combat overtourism in the city, for example by banning beer bikes and banning guided tours of the Red Light District.
However there is a generally friendly atmosphere towards tourists - and it could be to do with the fact that the city also boasts some of the happiest locals in the world, according to the research.
Second place on the list went to Vienna, which offers up some storybook-worthy streets and landmarks (the Opera house is a particular highlight) while Dubai took the third spot.
Never been before? Check out our Dubai city guide and round-up of the best cheap hotels to get you started.
You can also see the full list of the world's top 10 most tourist-friendly cities below...
World's top 10 tourist-friendly cities
- Amsterdam
- Vienna
- Dubai
- London
- Copenhagen
- New York
- Berlin
- Sydney
- Hong Kong
- Vancouver


Your browser does not support JavaScript!
In order to consume our website you need to enable JavaScript, we are sorry for the inconvenience.


A brief background about me
Audio clips from homilies I've given
Things that come into my head
Other things I find interesting
Upcoming services
How to get in touch with me
Adam Curtis- super chill dude


del
ins
These elements let you provide indications that specific parts of the text have been altered.


I’m a UX Designer! Right now, I am working as a Customer Support Engineer at Real Geeks & the co-host at Chasers Podcast. You can find me on Twitter, LinkedIn, download my resume, or shoot me an eMail!
F.O.W.L. - Fantasy Overwatch League
June 2019
UX/UI
HAVEN - Your Safe Place
October 2019
UX/UI
Secret Family Recipe
August 2019
UX/UI
I'm a UX Designer that ❤s to make technology easy to use and accesible to everyone. Say Hello!


nips nips2005 nips2005-132 nips2005-132-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Amir Navot, Lavi Shpigelman, Naftali Tishby, Eilon Vaadia
Abstract: We present a non-linear, simple, yet effective, feature subset selection method for regression and use it in analyzing cortical neural activity. Our algorithm involves a feature-weighted version of the k-nearest-neighbor algorithm. It is able to capture complex dependency of the target function on its input and makes use of the leave-one-out error as a natural regularization. We explain the characteristics of our algorithm on synthetic problems and use it in the context of predicting hand velocity from spikes recorded in motor cortex of a behaving monkey. By applying feature selection we are able to improve prediction quality and suggest a novel way of exploring neural data.
[1] R. Kohavi and G.H. John. Wrapper for feature subset selection. Artiﬁcial Intelligence, 97(12):273–324, 1997.
[2] I. Guyon and A. Elisseeff. An introduction to variable and feature selection. JMLR, 2003.
[3] A.J. Miller. Subset Selection in Regression. Chapman and Hall, 1990.
[4] L. Devroye. The uniform convergence of nearest neighbor regression function estimators and their application in optimization. IEEE transactions in information theory, 24(2), 1978.
[5] C. Atkeson, A. Moore, and S. Schaal. Locally weighted learning. AI Review, 11.
[6] O. Maron and A. Moore. The racing algorithm: Model selection for lazy learners. In Artiﬁcial Intelligence Review, volume 11, pages 193–225, April 1997.
[7] R. Gilad-Bachrach, A. Navot, and N. Tishby. Margin based feature selection - theory and algorithms. In Proc. 21st (ICML), pages 337–344, 2004.
[8] D. M. Taylor, S. I. Tillery, and A. B. Schwartz. Direct cortical control of 3d neuroprosthetic devices. Science, 296(7):1829–1832, 2002.
[9] V. Vapnik. The Nature Of Statistical Learning Theory. Springer-Verlag, 1995.
[10] J. R. Quinlan. Induction of decision trees. In Jude W. Shavlik and Thomas G. Dietterich, editors, Readings in Machine Learning. Morgan Kaufmann, 1990. Originally published in Machine Learning 1:81–106, 1986.
[11] R. Paz, T. Boraud, C. Natan, H. Bergman, and E. Vaadia. Preparatory activity in motor cortex reﬂects learning of local visuomotor skills. Nature Neuroscience, 6(8):882–890, August 2003.


Economists upgrade Singapore GDP expectations: Reuters poll
Singapore's economy in the third quarter is expected to have expanded much more than initially thought and is likely to stabilise in the coming quarters, helped by a recovery in manufacturing, a Reuters poll found yesterday.
Final gross domestic product (GDP) is forecast to have grown a seasonally adjusted and annualised 2.1 per cent from the second quarter, a Reuters poll of 13 economists showed, much more than the 0.6 per cent growth in the Government's advance estimates. The economy contracted 2.7 per cent in the quarter earlier.
"Final third quarter GDP is expected to be materially upgraded," said Maybank Kim Eng economist Lee Ju Ye.
"Manufacturing came in much stronger than expected in September and services growth likely picked up speed, particularly in finance, business and tourism-related services,"she added.
Singapore has been hit hard by the US-China trade war and a broader global slowdown.
From the year earlier, economic growth is expected to be revised to 0.5 per cent, higher than the 0.1 per cent seen in advance estimates and the quarter earlier.
Singapore's growth is also likely to stabilise in the fourth quarter and recover next year.
"The tension between the near-term stabilisation if not modest pick-up in trade and lacklustre global capex remains, limiting the upside to final demand," JP Morgan economist Sin Beng Ong said, adding weakness in electronics output could complicate outlook.
Singapore exports last month shrank for the eighth straight month as shipments of electronics continued to slide, official data showed on Monday.- REUTERS


Match Info Form
What are you entering?
Match Assignments
Match Scores
Red Alliance
Submit Alliances!
Score
Points:
0
Breach
Capture
Submit Scores!
Blue Alliance
Score
Points:
0
Breach
Capture


{% ckan_extends %} {% block action_buttons %}
{{ _('Data Protection') }}
{{ _('The Natural History Museum will use your personal data in accordance with data protection legislation to process your requests. For more information please read our') }} privacy notice.


McDonald’s CEO Fired for Relationship With Employee
by ASSOCIATED PRESSNEW YORK (AP) — McDonald’s chief executive officer has been pushed out of the company for violating company policy by engaging in a consensual relationship with an employee, the corporation said Sunday.
The fast food giant said former president and CEO Steve Easterbrook demonstrated poor judgment, and that McDonald’s forbids managers from having romantic relationships with direct or indirect subordinates.
In an email to employees, Easterbrook acknowledged he had a relationship with an employee and said it was a mistake.
“Given the values of the company, I agree with the board that it is time for me to move on,” Easterbrook said in the email.
McDonald’s board of directors voted on Easterbrook’s firing Friday after conducting a review. Details of Easterbrook’s separation package were to be released Monday in a federal filing, according to a company spokesman. He will also leave the company’s board. Easterbrook had been CEO since 2015.
McDonald’s would not provide details about the employee with whom Easterbrook was involved, and an attorney for Easterbrook declined to answer questions.
The board of directors named Chris Kempczinski, who recently served as president of McDonald’s USA, as its new president and CEO.
Two weeks ago, McDonald’s reported a 2% drop in net income for the third quarter, as it spent heavily on store remodeling and expanded delivery service. The company’s share price has dropped by 7.5% since then, though it’s still up 9.2% for the year. The burger chain also has been plagued by declining restaurant traffic.
The leadership transition is unrelated to the company’s operational or financial performance, the company said in a news release.
McDonald’s decision to act may be a sign of progress on workplace issues that have come to light in the #MeToo era, said Carl Tobias, a law professor at the University of Richmond.
“Other companies don’t always act on that kind of information or fire their CEO for that, and so it seems like they are trying to enforce a pretty strict policy in this situation,” Tobias said.
Among other challenges at its restaurants, McDonald’s has faced workplace harassment charges. In May, McDonald’s said it was enhancing training and offering a new hotline for workers after a labor group filed dozens of sexual harassment charges against the company.
Fight for $15, the group that filed the charges, said McDonald’s response to its sexual harassment complaints has been inadequate, and “the company needs to be completely transparent about Easterbrook’s firing and any other executive departures related to these issues.”
At least 51 lawsuits involving sexual harassment have been filed against the company in the past two years, according to the Courthouse News database.
Kempczinski joined McDonald’s in 2015. He was responsible for approximately 14,000 McDonald’s restaurants in the United States. He was instrumental in the development of McDonald’s strategic plan, said Enrique Hernandez, chairman of McDonald’s board.
(Courthouse News contributed to this report.)
Copyright © 2019 courthousenews.com


I make content
Really Neat Content!
In the world of Emotus, heroes of all shapes and sizes emerge from the jaws of obscurity and become honoured, championed, legends! Then there’s your character.  Forge your own pathway in this strange new world, explore the land and meet the strange citizens of the land, protect them from those who seek to disrupt the peace, or leave them be and guarantee your safety. What kind of hero will you be?
There are those in the land who seek power in many ways, some through honest work and heroism, but in acts of sheer desperation, many turn to darker magic. Twisted by feverish hate, these lost souls wander the land aimless, attacking those unfortunate enough to cross paths. Many heroes accept the call to action due to the untold riches those may claim by slaying one of these foul creatures. Although, it does beg the question, what is the origin of such disturbing creatures?
Emotions. The very essence of a person. Thousands of years ago humanity discovered that through feeling an emotion so intense and passionate, they can conjure powerful spells, mighty apparitions, and bend the very shape of reality. Or you know, do fairly impressive magic tricks at parties. Most larger societies beyond small villages believe that the true path to power is to dedicate ones own life into one of the core 8 emotions. You however, hail from a quaint river cottage. Having never heard of Emotion Magic before, you can discover the complex world of Emotus through your character’s eyes!


Provides a thread-local transactional wrapper around the root Engine class.
The threadlocal module is invoked when using the strategy="threadlocal" flag with create_engine(). This module is semi-private and is invoked automatically when the threadlocal engine strategy is used.
An Engine that includes support for thread-local managed transactions.
The TLEngine relies upon its Pool having "threadlocal" behavior, so that once a connection is checked out for the current thread, you get that same connection repeatedly.


Trudeau pressed to ensure less restrictive assisted-dying law a priority
by The Canadian Press, StaffOTTAWA - Even before he swears in his new cabinet, Justin Trudeau is being urged to ask his new justice minister to move swiftly to make Canada's assisted-dying law less restrictive.
The prime minister has said he'll comply with a September court ruling that struck down as unconstitutional the requirement that only those near death can qualify for medical help to end their suffering.
In her ruling, Quebec Superior Court Judge Christine Baudouin gave the government six months -- until early April 2020 -- to amend the law.
Dying with Dignity Canada is urging Trudeau to have his next justice minister give priority to amending the law and go further than the ruling demands.
The group wants the government to get rid of the requirement that a person's natural death must be reasonably foreseeable in order to qualify for a doctor-assisted death.
It also wants the government to drop the requirement that someone must be able to give consent for an assisted death immediately prior to receiving the procedure -- a provision that has stripped the right from some people who lose the capacity to consent as their condition deteriorates.


Welcome to the Jeddict! This tutorial provides a very simple and quick introduction to the Dockerize Java EE Application
by walking you through the creation of a complete application.
By the end of this article, you should have a basic understanding of Docker and have it working on your computer!
Software builds should be portable, predictable and painless, whether deploying to a local testing or staging server, or production server. But sometimes it seems like shipping code is half the battle, we spend countless hours configuring the infrastructure instead of delivering critical updates to our users.
Minimizing the differences between your local environment and production help us to avoid last minute changes because of configuration differences. Working with Docker containers on local environment is a true productivity booster and saves you some last minute hassle. Containerizing your applications will not only make your deployment faster but also a lot easier.
Docker is one of the most popular virtualization approaches that uses Linux containers rather than virtual machines as a way of isolating application data and computing on shared resources. Docker simplifies software delivery by making it easy to build and share images that contain your application’s entire environment, or application operating system. Docker is basically an interface to Linux Containers (LXC), a feature of the linux kernel that was introduced in the 3.8 release. If Docker is not already setup on your machine, then as a first step, you need to set it up : Install Docker.
Docker Compose is a tool for defining and running complex applications with Docker. With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.
Docker Machine can be configured to use with multiple drivers, such as Amazon Web Services, Google Compute Engine, Microsoft Azure, and Oracle VirtualBox. On a developer laptop, Virtual Box is a convenient option. Virtual Box 4.3.20 is the minimum requirement. So make sure you’ve the correct version installed.
Create a Docker Host using VirtualBox provider and call the machine as “dev”. This downloads boot2docker with the Docker daemon installed, and will create and start a VirtualBox VM with Docker running.
Find IP address of the machine as:
Note down this IP address, this will be used for accessing the application.
Check the environment of newly created machine as:
Images in Docker are read-only – once committed, any changes to a container’s state will become part of a new image. When you have a stable build on one instance of Docker (on your development machine, staging server, or a cloud), reproducing the exact same build is as simple as :
In this competitive age, you can't afford to live without incorporating Docker in your development workflow. By eliminating the need to repeatedly install and uninstall complex interdependent developer packages and tools, Docker can shorten your development and exploration time.
Have fun with your Dockerized Java EE application :)


YOUR FRIENDS AND NEIGHBORS A movie review by Joe Barlow (c) Copyright 1998
STARRING: Jason Patric, Ben Stiller, Aaron Eckhart, Amy Brenneman, Catherine Keener, Nastassja Kinski DIRECTOR: Neil LaBute WRITERS: Neil LaBute RATED/YEAR: R/1998
RATING: *** 1/2 (out of a possible *****)
To call "Your Friends and Neighbors" a dark film is to call The Beatles a moderately successful band. This feature, the second from writer/director Neil LaBute, continues his tradition of placing despicable characters in unpleasant situations, a motif he introduced with last year's "In the Company of Men."
The story revolves around the lives of three couples (identified in the film's end credits as Jerry, Cheri, Terri, Cary, Barry and Mary, though their names are never spoken in the film). All six of our characters are unhappy with their love life, and several of them decide to make a change... though none of them realize the others are also miserable. They don't know it at the time, but their actions will actually leave them more unfulfilled than they were before.
The casting is interesting. Jason Patric, the villain from "Speed 2," is the film's most loathesome character: a doctor who practices "sex talk" when he's alone so he can sound sincere in bed. He berates his lover for daring to have her period, fondly recalls raping a high-school classmate, and absently plays "catch" with a plastic fetus while talking on the phone, eventually drop-kicking it down the hospital hallway. (I was reminded of Ike from "South Park": "Don't kick the baby!")
 Her coldness doesn't bother him, though, since he's got the hots for Amy Brenneman, a beautiful writer who's working on an article about the art of lovemaking. She's obviously attracted to Ben as well, and all would be well if she didn't happen to be the wife of his best friend.
Aaron Eckhart, the most twisted person from "In the Company of Men," is one of this film's most likeable characters. He's the only guy who doesn't really do anything wrong: he loves his wife and would never dream of being unfaithful, although he is frustrated with her conservative approach to sex. He confesses to his friends that although he adores her, she is unable to provide him with the kind of pleasure he can achieve with his own hand.
Stiller's girlfriend, played by Catherine Keener, meets Nastassja Kinski, an assistant artist employed at a local gallery. Their friendship quickly grows complicated, progressing from strangers to buddies to lesbianism over the course of three scenes. Kinski is the closest thing to a voice of reason contained in the film: all five of the other characters wander into the art gallery at some point and engage in frightfully similar (and hilarious) conversations with her. Along with Eckhart, Kinski is the only truly likeable character. Sweet and loyal, she's determined to do everything she can to make her new lesbian lover happy... to the point of smothering her with kindness.
That's our cast and storyline, and in case you missed it, I'll reiterate: this is a BLEAK film. It's a train-wreck: the sight is horrible and appaling, but you can't turn away. LaBute has crafted a movie so shocking that it can't really qualify as entertainment; however, the message is an important one. If you've ever thought about cheating on the one you love, I promise, this film will change your mind.
LaBute wants the audience to squirm, and he achieves his goal by grabbing our noses and pulling us into his world. We have no distance from any of the characters; the film is shot almost entirely with close- ups, a little touch that made me fidget uncomfortably in my seat. This, coupled with the fact that none of the characters' names are given in the course of the story, provides an intimate yet anonymous portrait of six lives on the fast track to disaster.
I watched the "lesbian" portions of the film with some amusement. Since the release of "Chasing Amy," it seems that all independent movies are required to include a character who suddenly realizes that he or she is either gay or bisexual midway through the show. "Your Friends and Neighbors" does not disappoint in that regard. I'd criticize this trend a little more if my own indie screenplay, "Four Sides of the Triangle," didn't have the exact same problem. Oops.
I've awarded this film three and one-half stars out of a possible five, which is surely the highest rating I've ever given to a movie that I did not particularly enjoy. But this is not a mistake: I don't think LaBute intends for us to LIKE the film. He wants to make us miserable, and thereby warn us of the effects that cheating and dishonesty can have on a relationship. He accomplishes his goal: no one who sees this movie will forget the lesson. I truly believe that every person in the world should watch "Your Friends and Neighbors" at least once. It would do much to solve society's marital problems.
(Oh, one interesting thing I noticed. In "There's Something About Mary," Ben Stiller plays a really nice guy obsessed with a woman named Mary. In "Your Friends and Neighbors," Ben Stiller plays a really creepy guy obsessed with a woman named Mary. I've heard of typecasting an actor, but this is ridiculous.)
E-Mail<EMAIL_ADDRESS>Joe Barlow on Film: http://www.ipass.net/~jbarlow/film.htm
If you'd like to receive new film reviews by e-mail, please write to the above address and ask to be put on my mailing list.
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


Page maintained by Ke-Sen Huang.
If you have additions or changes, send an e-mail.
Information here is provided with the permission of the ACM.
Note that when possible I link to the page containing the link to the actual PDF or PS of the preprint.
I prefer this as it gives some context to the paper and avoids possible copyright problems with direct linking.
Thus you may need to search on the page to find the actual document.
ACM Digital Library: Proceedings of the 2014 ACM SIGGRAPH/Eurographics Symposium on Computer Animation
Eurographics Digital Library: Proceedings of the 2014 ACM SIGGRAPH/Eurographics Symposium on Computer Animation
the ACM Digital Library (DOI) Link for the paper
the Eurographics Digital Library Link for the paper
Paper Abstract
Author Preprint
Paper Video
Paper Presentation
Paper Images
Paper Data
Demo Program or Source Code
Related Links
Changelog
Big Water
- Coupling 3D Eulerian, Height Field and Particle Methods for the Simulation of Large Scale Liquid Phenomena
-
Nuttapong Chentanez,
Matthias Muller,
Tae-Yong Kim
- Ocean Waves Animation using Boundary Integral Equations and Explicit Mesh Tracking
-
Todd Keeler,
Robert Bridson
Bending and stretching
- Position-based Elastic Rods
-
Nobuyuki Umetani,
Ryan Schmidt,
Jos Stam
- Optimization Integrator for Large Time Steps
-
Theodore F. Gast,
Craig Schroeder
- Stable Orthotropic Materials
-
Yijing Li,
Jernej Barbic
Fracture
- A Peridynamic Perspective on Spring-Mass Fracture
-
Joshua A. Levine,
Adam W. Bargteil,
Christopher Corsi,
Jerry Tessendorf,
Robert Geist
- Adaptive Tetrahedral Meshes for Brittle Fracture Simulation
-
Dan Koschier,
Sebastian Lipponer,
Jan Bender
Potpourri
- Fast Grid-Based Nonlinear Elasticity for 2D Deformations
-
Rajsekhar Setaluri,
Yu Wang,
Nathan Mitchell,
Ladislav Kavan,
Eftychios Sifakis
Mesh abuse
- An Adaptive Virtual Node Algorithm with Robust Mesh Cutting
-
Yuting Wang,
Chenfanfu Jiang,
Craig Schroeder,
Joseph Teran
- Efficient Denting and Bending of Rigid Bodies
-
Saket Patkar,
Mridul Aanjaneya,
Aric Bartle,
Minjae Lee,
Ronald Fedkiw
Crowds
- DenseSense: Interactive Crowd Simulation using Density-Dependent Filters
-
Andrew Best,
Sahil Narang,
Sean Curtis,
Dinesh Manocha
- Holonomic Collision Avoidance for Virtual Crowds
-
Rowan Hughes,
Jan Ondrej,
John Dingliana
- SteerFit: Automated Parameter Fitting for Steering Algorithms
-
Glen Berseth,
Mubbasir Kapadia,
Brandon Haworth,
Petros Faloutsos
Mechanical characters
- ChaCra: An Interactive Design System for Rapid Character Crafting
-
Vittorio Megaro,
Bernhard Thomaszewski,
Damien Gauge,
Eitan Grinspun,
Stelian Coros,
Markus Gross
- Interactive Design of Modular Tensegrity Characters
-
Damien Gauge,
Stelian Coros,
Sandro Mani,
Bernhard Thomaszewski
Skin and cloth
- Steklov-Poincare Skinning
-
Ming Gao,
Nathan Mitchell,
Eftychios Sifakis
- Strain Based Dynamics
-
Matthias Muller,
Nuttapong Chentanez
Tae-Yong Kim,
Miles Macklin,
- View-Dependent Adaptive Cloth Simulation
-
Woojong Koh,
Rahul Narain,
James F. O'Brien
Humans and cameras
- Efficient Unsupervised Temporal Segmentation of Human Motion
-
Anna Vogele,
Bjorn Kruger,
Reinhard Klein
- Camera Motion Graphs
-
Cunka Bassirou Sanokho,
Clement Desoche,
Billal Merabti,
Tsai-yen Li,
Marc Christie
kesen.huang@gmail.com


Home
Kitchen
Music
Home
Kitchen
Music
Lamp
Switch with decoupled state - wait after press
Temperature:
I am just normal text
Button
Pres Me
This is another page
Also another page.


My junior year of highschool I was unfortunate enough to injure myslef pretty seriously. After months of trying to convince my parents there there was a problem with my knee they finally sent me to a doctor. You can guess what he said. Over the next 2 years I underwent 3 surgeries to fix the problem. Each one of these surguries came with a minimum of 2 months of immobility, the longest was close to 6 months. Also, with each came an unlimited supply of percoset. And so began my long love affair with percoset.
Before my first surgery I had never experimented with any painkillers of any sort. The first time I took 2 of them I was in so much pain I wanted to die, and felt like I was probably going to. After they kicked in about a half hour or so I was amazed at what was happening.  It was like pain couldn't touch me anymore as long as I just didn't think about it. I layed on the couch watching tv, playing video games and taking my percoset when it started wearing off for countless days. After a while I lost all perception of time. I never knew what day of the week it was. All I knew for so long was the walls of my livingroom where I was living since my bedroom was on the second floor which would have made things too difficult and boring.
After one perscription ran out and things looked good for my knee the doctors said I needed surgery again and I remember that that didn't bother me because it meant that I got more percoset. Of course at the time I was so addicted that I didn't see how wrong that was. I was willing to get hurt again just to get more of this drug. The same thing happened again. Almost like clockwork as soon as thing were looking up I needed surgery again. But once again, it didn't matter because I was getting more percoset.
Finally after 2 years of an almost constant percoset binge the doctors said I was all better. My perscriptions ran out, my knee didn't hurt anymore but I still needed percoset. I started buying them off of people who could get them, spending half of a paycheck on percosets just so I wouldn't have to go without. But then I ran into a bump, I had to go to college. I knew that I wouldn't be able to handle a job and college at the same time (I'm not a bad student, I'm just not a great one). I ran out of percoset and money to buy it.
Just like that I had to quit. I was in a terrible mood all the time, I couldn't eat, I couldn't sleep, I couldn't remember anything, I took lazy to an entirely new level. To this day I am a different person because of the extent I took the addiction to. I have trouble expressing myself verbally, I lose my train of thought in the middle of a thought. At this point you're probably thinking 'How long did this take to write?' your answer is probably too long. I have to say that the worst thing that has changed about me since this experience is that I cannot trust anyone. I have a constant paranoia that peoples intentions are not what they seem.   I'd like to think that that's not true.
My final word to anyone who has actually cared enough to read this entire thing is: percoset is a great thing when you control it. For anyone how is into cars I'll put it this way, it's like a drift. It can go nice and smooth but it can also get out of control, at which point you either regain control or you crash and burn.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Reloading previous state...
1
2
1
3
console.log and tracing status output
Click on this panel to refresh trace
(hack for now)
Control+o to change file viewed
Editors opened with ItemSelector (control+o)
*1
2


Pset 2: Exploring the Trade of Nations, 2012
Default
Show by Population and GDP
Show by GDP and Population
Life Expectancy and GDP
Latitude and Longitude
Single Point
Complete Circle
Horizontal Grouping
Pie Grouping
Circular Layout
Small Circles
Remove Links (It's a lot faster without them)
Reinstate Links


fun entityRemoved(entity: Entity?): Unit
Removes the actor that corresponds to the entity
entity -
entity


See getting started for a complete setup.
Steps to get started:NgbAccordionModule
(if you're not including NgbModule
)Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.


The mean rate of movement of the sun in one day (that is, twenty four hours) is fifty nine minutes and eight seconds, in symbols - 59′8″. It follows that its movement in ten days is nine degrees fifty one minutes and twenty three seconds, in symbols - 9°51′23″. It also follows that its movement in a hundred days is ninety eight degrees thirty three minutes and fidty three seconds, in symbols - 98°33′53″. It also follows that remainder of its movement in a thousand days, after you subtract all [multiples of] 360° (as was explained) is two hundred sixty five degrees thirty eight minutes and fifty seconds, in symbols - 265°38′50″. It also follows that the remainder of its movement in ten thousand days is one hundred thirty six degrees twenty eight minutes and twenty seconds, in symbols - 136°28′20″.
And in this way you can multiply and calculate its movement for any number [of days] that you want. Similarly, if you want to make known to you values of its movement for two days, three, four and so on to ten - do it. Similarly, if you want for to have known and ready values of its movement for twenty days, thirty, fourty and so on to a hundred - do it. This is clear and known once you know its movement in 1 day.
And you should have ready and known to you mean movement of the Sun for twenty nine days and for three hundred and fifty four (which is the number of days in the lunar year when its months are "regular" (TODO link), and it is called "regular year"). The reason is: if you have those movement values ready, this calculations of the visibility of the moon will be easy, because there are twenty nine complete days from the night of observation to the night of observation of the following month, and so it is every month: no less than twenty nine days and no more. Since our sole desire in all those calculations is exclusively to determine visibility [of the moon]. And between the night of sighting of this month and night of sighting of the same month next year there is either a regular year or a year and 1 day; and the same every year. Mean movement of the Sun in twenty nine days is twenty eight degrees thirty five minutes and one second, in symbols - 28°35′1″. Its movement in a regular year is three hundred forty eight degrees, fifty five minutes and fifteen seconds, in symbols - 348°55′15″.


lock
Login
face
vpn_key
Remember Me
Forgot your password?
Privacy Policy
Don't have an account yet?
Register here


YOU CAN COUNT ON ME (director/writer: Kenneth Lonergan; cinematographer: Stephen Kazmierski; editor: Anne McCabe; cast: Laura Linney (Sammy Prescott), Mark Ruffalo (Terry Prescott), Matthew Broderick (Brian), Jon Tenney (Bob), Rory Culkin (Rudy), J. Smith- Cameron (Mabel), Josh Lucas (Rudy Sr.), Gaby Hoffmann (Sheila), Adam LeFevre (Sheriff Darryl), Kenneth Lonergan (Priest); Runtime: 111; Paramount Classics/A Shooting Gallery release; 2000)
Reviewed by Dennis Schwartz
An impactful and meaningful personal human interest drama about the anxious relationship between two adult siblings who will always remain close despite their differences because of their tragic upbringing that made them cling to each other for comfort, when as youngsters their parents died in a car accident. This film offers a literate script and is sensitively directed, it's a brilliant debut as a director for playwright Kenneth Lonergan (co-scripted "Analyze This!"). Besides writing the screenplay and directing it, he also has a minor part in the film as a religious counselor. It is so well-conceived a work that it never feels stagy, as many other films of this type tend to be. The film was a co-winner of this year's Sundance grand jury prize and recipient of the Waldo Salt Screenwriting Award.
Laura Linney gives a smashing performance as a single mother of an eight year old, whose conservative lifestyle in the fictional small upstate New York town of Scottsville becomes challenged when her younger brother visits after being away for a few years. He is a drifter who pictures himself as an outsider, who is happiest when he's on the move to far off places like Alaska. He is played with deep feelings by Mark Ruffalo.
The film opens with Terry (Ruffalo) leaving his impregnated and suicidal girlfriend Sheila in Worcester, Mass., unable to tell her convincingly that he loves her, as he heads by bus to see his sister Sammy (Linney), hoping that he can borrow money from her to help him straighten out the situation with Sheila and while here reestablish some lost links with his concerned sister.
The siblings meet in a restaurant, with Sammy worried that she has recently lost contact with her brother, while he feels out of place and very edgy to be back in his hometown, a place he finds narrow and dull. He can't stop fidgeting and acting nervous, dressed in a torn T-shirt while she's more formally dressed, wearing an outfit she would normally wear when working at the local bank where she's a loan officer. The siblings have different personalities and have gone down different roads, and even though there is a strong bond between them, what this restaurant meeting highlights is how different they also are, as this scene brilliantly sets the tense tone for the remainder of the film.
Sammy accepts the limitations of her provincial life, trying to raise her child the right way, but is instead smothering the sheltered child. She attends church services regularly, as she seeks out her priest for daily guidance and wants to believe wholeheartedly in the Catholic dogma. Sammy refuses to talk to her son about his father or how she was wild as a youth and one of her mistakes was in marrying the wrong guy, which resulted in a bitter divorce and her son Rudy (Rory Culkin) never knowing his redneck father or how rotten a person he really is, as he instead imagines his missing father in a more glorious light. She also has an unsatisfying relationship with her on-again, off-again boyfriend Bob (Jon Tenney), a real nice guy but who doesn't turn her on, and she is a very sexually turned on woman.
Living a life that is opposite to his sister's, Terry believes what the church has to offer is a fairy tale. He is someone who can't take responsibility for having a family of his own or to find direction in his life, and often gets in trouble because he makes bad decisions, which results in frequent fights, one of those barroom brawls resulted in a three month jail sentence in Florida, which is why he lost contact with his sister, not wanting her to worry that he was in jail.
The sheer beauty in the film is in the natural bonding that develops between the curiously bright but lonely Rudy and the irresponsible Terry. An intimacy develops between them that benefits both in their need to grow up. Their unsettling yet intimate friendship grows from conversations that seem so natural and from the child needing a different perspective to chew on besides having only his mother's. The bad decisions Terry makes are not selfish ones, but are the one's he makes because he means well but doesn't always know how to do the right thing. For example, he sneaks Rudy into the local bar to play pool without his mother knowing about it and gets him to lie to her about where he was. Terry will, also, on a whim, take Rudy to the nearby town of Auburn to meet his real father (Josh Lucas), who is living with another woman. As Rudy Sr. refuses to admit that Rudy is his son, his anger grows against Terry for bringing him around and the two get into a brawl, which results in Terry's arrest.
Sammy's life grows confusing as an adulterous relationship develops with a new bank manager, Brian (Broderick), whose unfriendly wife is pregnant. He's a twit that no one in the bank likes, as he tries to enforce in a stiffly polite way petty and meaningless rules. Somehow Sammy has a penchant for being vulnerable for the wrong type of man, and mistakes her pity for romance.
Sammy and Rudy touch something about themselves in Terry's short summertime visit, something they wouldn't have touched that was so real without Terry being there as a catalyst for change. What the three of them are all looking for, is something real to believe in. This subtle drama is satisfying in almost every respect, but mainly as a realistic presentation of working-class characters who are struggling with the mundane problems of everyday existence. Their small problems are seen by them as being gigantic, and their way of resolving them are different for each. Sammy wants the church to tell her authoritatively what is right or wrong instead of giving her their feel-good evasive answers, afraid that in her wildest feelings she can be tempted to secretly smoke grass or cigarettes, or to have an illicit affair. Her wild nature leaves her feeling guilty and unsure of what to believe in, as she is looking for someone to love but can't find anyone in her limited environment, as she acts outwardly conservative in the hope that she can be perceived as a good mother to Rudy. While Terry wants answers to come to him which relate to his particular situation, as he's trying to get in touch with how he really feels inside himself. In the meantime, Rudy awakens from his sheltered childhood as he sees for the first time how the real world can be both a cruel and loving place. He will be through looking for his real father as a role model, whom he now realizes is not as he imagined he would be and that he will have to find something else that is real to believe in or someone else to look up to.
This is a superbly acted and subtle work, whose only flaws are in the unbelievable romance between boss and worker and the artificial lovemaking depicted between Sammy and her townie boyfriend, both of which had no ring of truth to it. But, otherwise, this is one of the best films of 2000, and indie type of art film with an intensity and a strong sense of realistic dramatics that brings out the complex emotional problems of the main characters.
REVIEWED ON 3/24/2001 GRADE: A-
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


For better, open, easier funding of scholarship
The FundFind website has actual funding data and runs on the fundfind software.
This site is about the fundfind software itself.
FundFind is a piece of software which allows users to share funding opportunities with each other and search through them.
Scholars can share data with each other or explore funding in their field. Funders can submit their opportunities or improve the records, as well as explore what other funders are offering.
Because there was nothing which encourages publishing current (not historical) funding data openly.
There are commercial databases which allow scholars to look for funding opportunities. However, these require whole institutions to agree to expensive licensing terms. But this data should be Open in line with the Open Definition principles and the general Open Knowledge movement.
Most of scholarship (in the UK) is funded by public bodies. Something as essential as what funding is available should be available in an openly licensed, machine-friendly format.
Open funding data means a better deal for scholars (transparency, potential for huge time savings) as well as funders (reach more scholars).
It also means a better scholarship sector overall, with a transparent flow of money and plenty of opportunities for visualisation, exploration, analysis and ultimately, improvement of the sector. A lot of potential innovation is simply not happening now.
Young scholars find it difficult to learn about funding in their field as it is difficult to navigate funding information - it is fragmented across multiple funders' websites and no overviews are available.
The scholarly funding sector could use a gentle touch of modernisation, removing some of the obstacles which impede learning.


Blackout
Blackout is a movie starring Jeffrey Wright, Zoe Saldana, and Melvin Van Peebles. Chain of events that unfolds in a forgotten Brooklyn neighborhood during the blackout of 2003.


Spider tab
The Spider tab shows you the set of unique URIs found by the Spider during the scans.
The 'New Scan' button launches the Spider dialog which allows you
to specify exactly what should be scanned.
The Spider can be run on multiple Sites in parallel and the results for each scan are
shown by selecting the scan via the 'Progress' pull-down.
The toolbar shows information about a scan and allows to control it. It provides a
set of buttons which allows to:
-
Pause (and resume) the
selected Spider scan;
- Stop
the selected Spider scan;
-
Clean completed scans;
-
Open the Spider Options screen.
The progress bar shows how far the selected Spider scan has progressed. It is also shown
the number of active Spider scans and the number of URIs found for the selected scan.
For each URI found you can see:
- Processed - Whether the URI was processed by the Spider or
was skipped from fetching because of a rule (e.g. it was out of
scope)
- Method - The HTTP method, e.g. GET or POST, through which the
resource should be accessed
- URI - the resource found
- Flags - any information about the URI (e.g. if it's a seed or
why was it not processed)
For each Spider message, shown under the Messages tab, you can see details of the request sent and response
received. The Processed
column, indicates whether:
- Successfully
- the response was successfully received and parsed
- Empty
Message - the response was not parsed because it was empty
- I/O
Error - an input/output error occurred while fetching the response
- Max
Children - the response was not parsed because the corresponding parent Sites node
already has more child nodes than the maximum allowed
- Max
Depth - the response was not parsed because it passed the maximum depth allowed
- Max
Size - the response was not parsed because its size is not under the maximum allowed
- Not
Text - the response was not parsed because it's not text, for example, an image
- Spider
Stopped - the response was not fetched or parsed because the Spider was already stopped
See also


@(grades: List[Grade])
Course: @grade.title
Student Name: @grade.student
Course ID: @grade.id
Score: @grade.score
Professor Name: @grade.professor
Class: @grade.classroom
Semester: @grade.semester
Major: @grade.major


The data from a keyboard comes mainly in the form of scancodes, produced by key presses or used in the protocol with the computer. ( Different codes are used by the keyboard firmware internally, and there also exist several sets of scancodes. Here in this section we only talk about the default codes - those from translated scancode set 2. Less common modes are discussed below.) Each key press and key release produces between 0 and 6 scancodes.
Below I'll only mention the scancode for key press (`make'). The scancode for key release (`break') is obtained from it by setting the high order bit (adding 0x80 = 128). Thus, Esc press produces scancode 01, Esc release scancode 81 (hex). For sequences things are similar: Keypad-/ gives e0 35 when pressed, e0 b5 when released. Most keyboards will repeat the make code (key down code) when the key repeats. Some will also fake Shift down and Shift up events during the repeat.
The keys PrtSc/SysRq and Pause/Break are special. The former produces scancode e0 2a e0 37 when no modifier key is pressed simultaneously, e0 37 together with Shift or Ctrl, but 54 together with (left or right) Alt. (And one gets the expected sequences upon release. But see below.) The latter produces scancode sequence e1 1d 45 e1 9d c5 when pressed (without modifier) and nothing at all upon release. However, together with (left or right) Ctrl, one gets e0 46 e0 c6, and again nothing at release. It does not repeat.
See below for a report on keys with a different behaviour.
There are many reports of laptops with badly debounced key-up events. Thus, unexpected key-up events should probably be regarded as not unusual, and be ignored. Another source of key-up events without preceding key-down can be the fake shift.
Most scancodes indicate a key press or release. Some are used in the communication protocol.
| 00 | Keyboard error - see ff |
| aa | BAT (Basic Assurance Test) OK |
| ee | Result of echo command |
| f1 | Some keyboards, as reply to command a4:Password not installed |
| fa | Acknowledge from kbd |
| fc | BAT error or Mouse transmit error |
| fd | Internal failure |
| fe | Keyboard fails to ack, please resend |
| ff | Keyboard error |
Three common causes for keyboard error are: (i) several keys pressed simultaneously, (ii) keyboard buffer overflow, (iii) parity error on the serial line used by keyboard and keyboard controller for communication. The error reported is ff in scancode mode 1, and 00 in scancode modes 2 and 3. If translation is on, both 00 and ff are translated as ff.
Usually these codes have the protocol meaning. However, they also occur as actual scancodes, especially when prefixed by e0.
The codes e0 and e1 introduce scancode sequences, and are not usually used as isolated scancodes themselves (but see below).
(The prefix e0 was originally used for the grey duplicates of keys on the original PC/XT keyboard. These days e0 is just used to expand code space. The prefix e1 used for Pause/Break indicated that this key sends the make/break sequence at make time, and does nothing upon release.)
This, and the above, means that the values 00, 60, 61, 6e, 71, 7a, 7c, 7e, 7f are unavailable to signify key presses (on a default keyboard). Nevertheless they also occur as scancodes, see for example the Telerate and Safeway SW23 keyboards below.
Also other prefixes occur, see below.
Logitech uses an e2 prefix for the codes sent by a pointing device integrated on the keyboard.
The scancodes in translated scancode set 2 are given in hex. Between parentheses the keycap on a US keyboard. The scancodes are given in order, grouped according to groups of keys that are usually found next to each other.
00 is normally an error code
01 (Esc)
02 (1!), 03 (2@), 04 (3#), 05 (4$), 06 (5%E), 07 (6^), 08 (7&), 09 (8*), 0a (9(), 0b (0)), 0c (-_), 0d (=+), 0e (Backspace)
0f (Tab), 10 (Q), 11 (W), 12 (E), 13 (R), 14 (T), 15 (Y), 16 (U), 17 (I), 18 (O), 19 (P), 1a ([{), 1b (]})
1c (Enter)
1d (LCtrl)
1e (A), 1f (S), 20 (D), 21 (F), 22 (G), 23 (H), 24 (J), 25 (K), 26 (L), 27 (;:), 28 ('")
29 (`~)
2a (LShift)
2b (\|), on a 102-key keyboard
2c (Z), 2d (X), 2e (C), 2f (V), 30 (B), 31 (N), 32 (M), 33 (,<), 34 (.>), 35 (/?), 36 (RShift)
37 (Keypad-*) or (*/PrtScn) on a 83/84-key keyboard
38 (LAlt), 39 (Space bar),
3a (CapsLock)
3b (F1), 3c (F2), 3d (F3), 3e (F4), 3f (F5), 40 (F6), 41 (F7), 42 (F8), 43 (F9), 44 (F10)
45 (NumLock)
46 (ScrollLock)
47 (Keypad-7/Home), 48 (Keypad-8/Up), 49 (Keypad-9/PgUp)
4a (Keypad--)
4b (Keypad-4/Left), 4c (Keypad-5), 4d (Keypad-6/Right), 4e (Keypad-+)
4f (Keypad-1/End), 50 (Keypad-2/Down), 51 (Keypad-3/PgDn)
52 (Keypad-0/Ins), 53 (Keypad-./Del)
54 (Alt-SysRq) on a 84+ key keyboard
55 is less common; occurs e.g. as F11 on a Cherry G80-0777 keyboard, as F12 on a Telerate keyboard, as PF1 on a Focus 9000 keyboard, and as FN on an IBM ThinkPad.
56 mostly on non-US keyboards. It is often an unlabelled key
to the left
or
to the right
of the left Alt key.
57 (F11), 58 (F12) both on a 101+ key keyboard
59-5a-...-7f are less common. Assignment is essentially random. Scancodes 55-59 occur as F11-F15 on the Cherry G80-0777 keyboard. Scancodes 59-5c occur on the RC930 keyboard. X calls 5d `KEY_Begin'. Scancodes 61-64 occur on a Telerate keyboard. Scancodes 55, 6d, 6f, 73, 74, 77, 78, 79, 7a, 7b, 7c, 7e occur on the Focus 9000 keyboard. Scancodes 65, 67, 69, 6b occur on a Compaq Armada keyboard. Scancodes 66-68, 73 occur on the Cherry G81-3000 keyboard. Scancodes 70, 73, 79, 7b, 7d occur on a Japanese 86/106 keyboard.
Scancodes f1 and f2 occur on Korean keyboards.
Apart from the Pause/Break key, that has an escaped sequence starting with e1, the escape used is e0. Often, the codes are chosen in such a way that something meaningful happens when the receiver just discards the e0.
| e0 1c (Keypad Enter) | 1c (Enter) | |
| e0 1d (RCtrl) | 1d (LCtrl) | |
| e0 2a (fake LShift) | 2a (LShift) | |
| e0 35 (Keypad-/) | 35 (/?) | |
| e0 36 (fake RShift) | 36 (RShift) | |
| e0 37 (Ctrl-PrtScn) | 37 (*/PrtScn) | |
| e0 38 (RAlt) | 38 (LAlt) | |
| e0 46 (Ctrl-Break) | 46 (ScrollLock) | |
| e0 47 (Grey Home) | 47 (Keypad-7/Home) | |
| e0 48 (Grey Up) | 48 (Keypad-8/UpArrow) | |
| e0 49 (Grey PgUp) | 49 (Keypad-9/PgUp) | |
| e0 4b (Grey Left) | 4b (Keypad-4/Left) | |
| e0 4d (Grey Right) | 4d (Keypad-6/Right) | |
| e0 4f (Grey End) | 4f (Keypad-1/End) | |
| e0 50 (Grey Down) | 50 (Keypad-2/DownArrow) | |
| e0 51 (Grey PgDn) | 51 (Keypad-3/PgDn) | |
| e0 52 (Grey Insert) | 52 (Keypad-0/Ins) | |
| e0 53 (Grey Delete) | 53 (Keypad-./Del) | |
These escaped scancodes occur only on 101+ key keyboards. The Microsoft keyboard adds
| e0 5b (LeftWindow) |
| e0 5c (RightWindow) |
| e0 5d (Menu) |
Other escaped scancodes occur - see below under the individual keyboards.
The ten grey keys Insert, Home, PgUp, Delete, End, PgDn, Up, Left, Down, Right are supposed to function regardless of the state of Shift and NumLock keys. But for an old AT keyboard the keypad keys would produce digits when Numlock was on or Shift was down. Therefore, in order to fool old programs, fake scancodes are sent: when LShift is down, and Insert is pressed, e0 aa e0 52 is sent; upon release of Insert e0 d2 e0 2a is sent. In other words, a fake LShift-up and fake LShift-down are inserted.
If the Shift key is released earlier than the repeated key, then a real Shift-up code occurs (without preceding fake Shift-down) so that a program ignoring e0 would see one more Shift-up than Shift-down.
When NumLock is on, no fake Shifts are sent when Shift was down, but fake Shifts are sent when Shift was not down. Thus, with Numlock, if Insert is pressed, e0 2a e0 52 is sent and upon release e0 d2 e0 aa is sent. The keyboard maintains a private NumLock mode, toggled when NumLock is pressed, and set when the NumLock LED is set.
In the same way, when Shift is down, the Grey-/ key produces fake Shift-up and fake Shift-down sequences. However, it does not react to the state of NumLock. The purpose of course is to fool programs that identify Grey-/ with ordinary /, so that they don't treat Shift-Grey-/ like Shift-/, i.e., ?.
On a Toshiba notebook, the three Windows keys are treated like the group of ten keys mentioned, and get fake shifts when (left or right) Shift is down. They do not react to NumLock.
On my 121-key Nokia Data keyboard there are function keys F1, ..., F24, where F1, ..., F12 send the expected codes 3b, ..., 58, and F13, ..., F24 send the same codes together with the LShift code 2a. Thus, F13 gives 2a 3b on press, and bb aa on release. Similarly, there are keys with added LCtrl code 1d. But there are also keys with added fake shifts e0 2a.
Delorie reports that the "Preh Commander AT" keyboard with additional F11-F22 keys treats F11-F20 as Shift-F1..Shift-F10 and F21/F22 as Ctrl-F1/Ctrl-F2; the Eagle PC-2 keyboard with F11-F24 keys treats those additional keys in the same way.
On some motherboards the LCtrl-LAlt-GreyPlus and LCtrl-LAlt-GreyMinus switch Turbo mode on/off, respectively. For these, the motherboard may generate the same scancode sequence when the Turbo button is pushed: Turbo Switch (High->Low): 1d 38 4a ce b8 9d and Turbo Switch (Low->High): 1d 38 4e ce b8 9d.
Other peculiar combinations in this style include LCtrl-LAlt-LShift-GreyMinus and LCtrl-LAlt-LShift-GreyPlus to turn system cache off/on.
If Green PC system power saving mode is enabled in AMIBIOS Setup, the AMI MegaKey keyboard controller recognizes the combinations Ctrl-Alt-\ (put the system into immediate power down mode), Ctrl-Alt-[ (disable the Green PC power savings mode temporarily), Ctrl-Alt-] (enables the Green PC power down mode).
Thio Yu Jin<EMAIL_ADDRESS>> complains that on his Toshiba 4010CDS
the Ctrl-Alt-Shift-T key combination brings up the Toshiba user manual.
(04 Mar 1999 - not April 1.)
Microsoft recommends: "i8042-based keyboards should deploy the following scan codes for power management buttons, i.e., POWER and SLEEP buttons:
| Set-1 make/break | Set-2 make/break | |
| Power | e0 5e / e0 de | e0 37 / e0 f0 37 |
| Sleep | e0 5f / e0 df | e0 3f / e0 f0 3f |
| Wake | e0 63 / e0 e3 | e0 5e / e0 f0 5e |
The Power, Sleep, and Wake event scan codes are the i8042 equivalents to the System Power Down, System Sleep, and System Wake Up HID usages".
Many keyboards have Power/Sleep/Wake keys that have to be activated by a fourth key (unlabeled, or labeled FN): pressing one of these four keys does not produce any scancodes, but when the FN key is pressed simultaneously, the Power/Sleep/Wake keys give the codes listed above.
Many keyboards have more keys and buttons than the standard ones. Sometimes these additional keys produce scancode combinations that were unused before. But on other keyboard such additional keys do not produce any code at all, until some initializing action is taken.
Sometimes that action consists of writing some bytes to keyboard registers. See, for example, the IBM Rapid Access keyboard, and the Omnibook keyboard.
Some keyboards have additional LEDs, and in a few cases we know how to manipulate those.
The Chicony keyboard needs command sequences eb 00 xy, with xy = 01 for the Moon LED and xy = 02 for the zzZ LED.
The IBM EZ Button keyboard needs command sequences eb 00 xy, with xy = 01 for the Msg LED, xy = 02 for the CD LED, xy = 04 for the Power LED, xy = 10 for the Talk LED, and xy = 20 for the Message Waiting LED.
The IBM Rapid Access keyboard needs command sequences eb 00 xy, with xy = 04 for the Suspend LED and xy = 20 for the Mute LED.
The IBM Rapid Access keyboard II needs the command sequences eb 71 and eb 70 to switch the Standby LED on and off.
The Logitech Internet Keyboard has an additional amber LED. It is turned on by sending eb, and then blinks about once a second. It is turned off again by ec.
Laptops have no room for all nonsensical keys one usually find on a regular keyboard. So, the number pad and other keys are folded into the main part of the keyboard. A key without label, or labelled FN is often used to modify the meaning of other keys. This FN does not produce scancodes itself, it only modifies the scancodes produced by other keys.
Neil Brown reports about his Dell Latitude D800 laptop that it has five key combinations that do not produce proper break codes. The five combinations FN+F2, FN+F3, FN+F10, FN+Down, FN+Up (labelled Wireless, Brighter, Darker, Battery, CDEject) produce make codes e0 08, e0 07, e0 09, e0 05, e0 06, respectively. The first three do not produce any break code. The last two have a break code that is identical to the make code.


This is a router that is designed for pro gaming and steaming. It is an Ac2600 router with a max wifi speed of 800 Mbps on 2.4Ghz and 1733 on 5Ghz,nd has 4 Lan wired coneection
$284.99
Buy it on BestbuyThis is one of the strongest router on the market. It is an Ac5400 tri band router with a max wifi speed of 1000 Mbps on 2.4Ghz and 2167 on 2 5Ghz band
$365.6
Buy it on AmazonThis is a router designed by norton for people who want a safe and fast internet.It is an Ac2600 router with built-in dual core processor running anti-virus system all day long.
$149.99
Buy it on NortonHi, I am a line
I am another line.
Hi, I am a line
I am another line.
Hi, I am a line
I am another line.
Hi, I am a line
I am another line.
This is a router that is designed for people that do not use internet a lot. It is an Ac1000 router with a max wifi speed of 250 Mbps on 2.4Ghz and 750 on 5Ghz
$54.99
Buy it on BestbuyThis is a router with a phone app that control the newwork from anywhere. It is an Ac1200 router with a max wifi speed of 300 Mbps on 2.4Ghz and 866 on 5Ghz
$66.36
Buy it on AmazonThis is one of the cheapest router on the market. It has a max speed of 300 Mbps
$19.99
Buy it on Amazon


<booklist>
The <booklist>
element is a general purpose element, designed for use in
specializations, that references a topic or map containing a list of items within the book.
For example, it could be used to reference a topic that contains a list of authors for the
book. When a more specific element is already available, such as
<tablelist>
for a list of tables, that element should be used
instead.
Category: Bookmap content elements


{% extends "layout.html" %} {% set active_page = "index" %} {% block title %}Tandr - Employee Shift Ratings{% endblock %} {% block body %}
The Tandr experience seeks to optimize your schedule by generating the most ideal compatibility and productivity paring available, benefiting employee and employer alike.
{% endblock %}


This is a fork of jashkenas's Ember/Backbone with 500 circles and some stats around.
Note: speed differences are more visible using Chrome.
Note2: since Bobril delegates the computing to `window.requestAnimationFrame()` under the wood, the benchmark is not accurate for it.
VDOM based:
DOM based:


|
BitMagic-C++
|
Data Structures | |
| struct | vect_addr |
Public Types | |
| typedef bm::sparse_vector< unsigned, bm::bvector<> > | sparse_vector_type |
| typedef std::map< unsigned, vect_addr > | map_type |
| typedef std::vector< std::pair< uint64_t, unsigned > > | delta_sum_map_type |
Public Member Functions | |
| void | get_vector (unsigned id, std::vector< unsigned > &vect) const |
Data Fields | |
| sparse_vector_type | sv_storage_ |
| sparse_vector_type | sv_storage1_ |
| map_type | idx_ |
Definition at line 165 of file xsample01.cpp.
| typedef std::vector< std::pair<uint64_t, unsigned> > sparse_vect_index::delta_sum_map_type |
Definition at line 175 of file xsample01.cpp.
| typedef std::map<unsigned, vect_addr> sparse_vect_index::map_type |
Definition at line 174 of file xsample01.cpp.
| typedef bm::sparse_vector<unsigned, bm::bvector<> > sparse_vect_index::sparse_vector_type |
Definition at line 173 of file xsample01.cpp.
| void sparse_vect_index::get_vector | ( | unsigned | id, |
| std::vector< unsigned > & | vect | ||
| ) | const |
Definition at line 186 of file xsample01.cpp.
References sparse_vect_index::vect_addr::offset, and sparse_vect_index::vect_addr::size.
Referenced by convert_bv2sv(), and speed_test_sv_index().
| map_type sparse_vect_index::idx_ |
Definition at line 183 of file xsample01.cpp.
Referenced by convert_bv2sv(), and speed_test_sv_index().
| sparse_vector_type sparse_vect_index::sv_storage1_ |
Definition at line 182 of file xsample01.cpp.
Referenced by convert_bv2sv().
| sparse_vector_type sparse_vect_index::sv_storage_ |
Definition at line 181 of file xsample01.cpp.
Referenced by convert_bv2sv().


You will be given a randon number at the start of the game.
There are four crystals above. By clicking on a crystal you will add a specific amount to your final score.
You win the game by matching your total score to random number, you lose the game if your total score goes above the random number.
The value of each crystal is hidden from you until you click on it.
Each time when the game starts, the game will change the value of each crystal.


Oral Presentations
Poster Presentations
- Dual-Primal Graph Convolutional Networks, Federico Monti, Oleksandr Shchur, Aleksandar Bojchevski, Or Litany, Stephan Günnemann and Michael Bronstein
- Proximity Preserving Nonnegative Matrix Factorization, Yuya Ogawa, Koh Takeuchi, Yuya Sasaki and Makoto Onizuka
- Which way? Direction-Aware Attributed Graph Embedding, Zekarias Kefato, Nasrullah Sheikh and Alberto Montresor
- On the Necessity of Graph Kernel Baselines, Till Hendrik Schulz and Pascal Welke
- Clustering graphs using random trees, Kevin Dalleau, Miguel Couceiro and Malika Smail-Tabbone
- A Similarity-Driven Sequential Model for Predicting Medical Treatment Initiation via Graph Laplacian, Tong Wu, Yue Wang, Yunlong Wang, Cao Xiao, Emily Zhao, Lucas Glass and Jimeng Sun
- Mixed-Order Spectral Clustering for Networks, Yan Ge, Haiping Lu and Pan Peng
- Client Network: An Interactive Model for Predicting New Clients, Massimiliano Mattetti, Akihiro Kishimoto, Adi Botea, Elizabeth M. Daly, Inge Vejsbjerg, Bei Chen and Oznur Alkan
- Graph Embeddings for Enrichment of Historical Data, Jurian Baas, Mehdi Dastani and Ad Feelders
- What can structural characteristics of networks tell us about the quality of link predictions?, Maksim Koptelov and Albrecht Zimmermann
- Multi-layered Graph Representation Learning with Edge Restructured Pooling, Atsushi Miyamoto, Koji Fukuda and Yicheng Du


@(clients: List[models.Client]) @* * Call the `main` template with two arguments. The first * argument is a `String` with the title of the page, the second * argument is an `Html` object containing the body of the page. *@ @main("Clients") {
No clients to display - get some in your mongo db!
} else {| Client Name | Action |
|---|---|
| @client.name | | Edit | Show | Delete | |


--- layout: post date: 2012-04-12 time: "09:00:00" authors: ["Greg Wilson"] title: Solution to Data Merging with Dictionaries tags: ["Tutorial"] ---
This week's tutorial problem was to merge the data from a set of input files to show how often different species were observed on different dates. The shell pipeline, Python code, and two sample input files follow the video.
{% assign video_title="Data Merging with Dictionaries" %} {% assign video_slug="S-dqlYWs4S0" %} {% assign video_time="00:09:18" %} {% include youtube %}shell command
grep -h -v '#' *.txt | sort | uniq -c
merge.py
import sys # Read and merge data. results = {} filenames = sys.argv[1:] for f in filenames: reader = file(f, 'r') for line in reader: if line.startswith('#'): pass else: date, species = line.split() key = (date, species) if key not in results: results[key] = 1 else: results[key] += 1 reader.close() # Format output. all_combos = results.keys() all_combos.sort() for key in all_combos: count = results[key] print count, key[0], key[1]
cousteau.txt
# Jacques Cousteau 2012-03-27 marlin 2012-03-29 tuna 2012-03-29 tuna 2012-03-29 turtle
haddock.txt
# Steve Haddock 2012-03-28 squid 2012-03-28 marlin 2012-03-28 marlin 2012-03-29 eel 2012-03-29 squid 2012-03-29 turtle 2012-03-29 turtle 2012-03-30 squid 2012-03-31 turtle


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Ed's.20question.20barrage.html ---
Massive thanks to @Mario Carneiro for helping me. I'll buy you beers next time we are in the same physical location to within 100m.
In the constructor for mvar
for expr
, are the arguments pretty name, unique name, type? You said that local_const
s type argument shouldn't be trusted because its sometimes a placeholder. Is that true for mvar
s type arg too?
Also in expr
what is macro
used for?
Are they macros in the same sense as C macros?
I am not sure about the reliability of mvar
types; they aren't found in the local context so probably that's the only place the data is stored, meaning it has to be reliable
still, infer_type
should always work
expr.macro
is a C++ thing. Those are basically "promises" to build an expr by some C++ code, you can't build them in lean
You can unfold a macro and force it to evaluate
They are used for sorry
, meta recursive calls (which are not compiled to recursors like the non-meta versions), builtin projections, and they also are ephemeral structures in some specialized tactics
What are some examples of meta recursive calls?
meta def rec := rec
meta def rec : nat -> nat | x := rec (x + 1)
What is a builtin projection?
structure foo := (mynat : ℕ) #print foo.mynat -- @[reducible] -- def foo.mynat : foo → ℕ := -- λ (c : foo), [foo.mynat c]
the thing in brackets is a macro
cool
I am reading decalaration.lean
. And I came across
Reducibility hints are used in the convertibility checker.
When trying to solve a constraint such a(f ...) =?= (g ...)where f and g are definitions, the checker has to decide which one will be unfolded.
If f (g) is opaque, then g (f) is unfolded if it is also not marked as opaque,
Else if f (g) is abbrev, then f (g) is unfolded if g (f) is also not marked as abbrev,
Else if f and g are regular, then we unfold the one with the biggest definitional height.
Otherwise both are unfolded.
Is there a way I can get programmatic access to the "definitional height" of a declaration (other than expanding it and calculating it myself)?
Ah it's an argument to regular
sorry was on the next line.
So to get the definitional height you would do
env <- tactic.get_env defn _ _ _ _ (regular h _ _) _ <- environment.get env my_name return h
Is the convertability checker the same thing as the unifier?
What's the best way of adding some arbitrary data to the environment?. Eg, I've calculated a table for a tactic and I don't want to regenerate this table for every invocation of the tactic, I just want to retrieve it from the environment somehow.
You can make a def
containing the data
makes sense.
That is so much more straightforward than the Isabelle way!
your ability to store arbitrary data in the environment is limited; for the most part it's just expr
s
Ideally you would want to store any vm_obj in the environment, but I don't know any way to do that besides reflecting it to an expr
I'd make a def with mk_local_def
right?
no, that's for local constants
add_meta_definition
?
oh, I didn't know that one was there, that's useful
yes
When I reflect to an expr
, that means it actually has to build an expr
tree which represents the data in some way right? It sounds like one would get performance issues if you wanted to save a gigantic rewrite table or similar.
The simp_lemmas
data structure is designed for handling big rewrite tables
You can cache data in special types inside user attributes as well
simp_lemmas
looks good but I can only access the data through calls to simp_lemmas.rewrite
so I am stuck with simp
s implementation. Not necessarily a showstopper but I can't retrieve arbitrary exprs from it.
Please could you give some examples of this?
You can cache data in special types inside user attributes as well
I'm referring to the cache_ty
and param_ty
in user_attribute
, but it's not really a solution - param_ty
has to be reflectable (so it is probably just stored as an expr
) and cache_ty
needs to be pure-functionally created from the list of all defs with the attribute in the environment (so it can only depend on things that are ultimately expr
s). Still that cache has some promise
I'm not positive this is actually working the way you would want, but here's the general idea:
structure mydata := (n : nat) @[user_attribute] meta def mydata_attr : user_attribute (name_map mydata) unit := { name := `mydata, descr := "stuff", cache_cfg := ⟨λ l, l.mfoldl (λ m n, do d ← get_decl n, v ← eval_expr mydata d.value, return (m.insert n v)) (name_map.mk _), []⟩ } @[mydata] def X : mydata := ⟨500^2⟩ run_cmd do m ← mydata_attr.get_cache, v ← m.find ``X, trace v.n
pexpr
, has it already disambiguated overloaded operators such as +
pexpr -> expr
called "elaboration"?pexpr
is the same problem as finding a proof. So does it make sense to think of the process pexpr -> expr
as a kind of tactic driven by the structure of the pexpr
?pexpr -> expr
without recursively infering the types of the subpexprs of the pexpr
. Is this right? In which case why not cache all of the types and then you never have to call infer_type
? My guess would be that it would take up too much space.eval_expr α e
tactic need to be given the type of e
as well?target
tactic the same as get_goals >>= (list.head >> return)
?intro
ismeta def intro (n : name) : tactic expr := do t ← target, if expr.is_pi t ∨ expr.is_let t then intro_core n else whnf_target >> intro_core n
But I can't figure out what I am doing wrong in the last two examples below:
example : a -> b -> a := begin intro hello, sorry end example : a -> b -> a := begin intro_core hello, -- errors here "unknown identifier 'hello'" sorry end example : a -> b -> a := begin whnf_target, intro_core hello, -- errors here "unknown identifier 'hello'" sorry end
get_unused_name n
just check if n
is currently being used, and if not, sticks an _1
/ _2
/... on the end?local_context
, will that always be a list of local_const
s or are there ways of getting other forms of expr
in the context?I can try to save Mario some time and answer a few of these....
- In
pexpr
, has it already disambiguated overloaded operators such as+
No. But note that +
isn't "overloaded," exactly. +
is notation for has_add.add
which applies to any type with a has_add
type class instance. A pexpr
using +
hasn't filled in the implicit type or the instance yet. And for notation that really is overloaded, a pexpr
will represent the ambiguity with a macro, I think.
- is the process
pexpr -> expr
called "elaboration"?
Yes.
- Filling in the implicit arguments of a
pexpr
is the same problem as finding a proof. So does it make sense to think of the processpexpr -> expr
as a kind of tactic driven by the structure of thepexpr
?
Yeah, I guess. Notice the tactic to_expr
does exactly this.
- It seems that you can't do
pexpr -> expr
without recursively infering the types of the subpexprs of thepexpr
. Is this right? In which case why not cache all of the types and then you never have to callinfer_type
? My guess would be that it would take up too much space.
Are you asking why each expr
object doesn't store its type? Yeah, this would take up a huge amount of space.
- Why does the
eval_expr α e
tactic need to be given the type ofe
as well?
I'm not 100% clear on how eval_expr
works, but here's my intuition, anyway. If you didn't give the expected type, you'd have to "guess" it by inferring the type of e
, which would give you an expr
, not a type. You need a way to go from this expr
to a type, which is why you have the [reflected α]
instance.
example : a -> b -> a := begin intro_core hello, -- errors here "unknown identifier 'hello'" sorry end
- Is the
target
tactic the same asget_goals >>= (list.head >> return)
?
I think, roughly. It's the type of the first goal metavariable.
- The definition of
intro
ismeta def intro (n : name) : tactic expr := do t ← target, if expr.is_pi t ∨ expr.is_let t then intro_core n else whnf_target >> intro_core nBut I can't figure out what I am doing wrong in the last two examples below:
example : a -> b -> a := begin intro hello, sorry end example : a -> b -> a := begin intro_core hello, -- errors here "unknown identifier 'hello'" sorry end example : a -> b -> a := begin whnf_target, intro_core hello, -- errors here "unknown identifier 'hello'" sorry end
You've noticed the difference between the tactic monad and "interactive mode." When you're using tactics for proofs, in begin/end blocks, they get parsed differently than when you're writing tactics. The intro
in begin/end is actually tactic.interactive.intro.
I think, roughly. It's the type of the first goal metavariable.
The docs for target
confused me because they say it returns the "main goal" but this seems to always be the first goal.
intro_core
isn't an interactive tactic. It expects a name, which you'd have to give in the form `hello
.
tactic.intro
expects the same. tactic.interactive.intro
expects some text to follow that it will parse into a name.
example : a -> b -> a := begin intro_core hello, -- errors here "unknown identifier 'hello'" sorry end
The intro
in a begin end
block is tactic.interactive.intro
not tactic.intro
. I don't know if this helps or whether you're already way ahead of this, but it was something that confused me for a while.
PS just beaten to it by Rob :-)
the "main goal" is the first goal
- If I invoke
local_context
, will that always be a list oflocal_const
s or are there ways of getting other forms ofexpr
in the context?
I think it's only local_const
exprs, yes.
- Does
get_unused_name n
just check ifn
is currently being used, and if not, sticks an_1
/_2
/... on the end?
This one I'm not sure, I've never really paid attention. It will give you a name that starts with n
that won't conflict with anything.
Why does the eval_expr α e tactic need to be given the type of e as well?
This is done for typechecking purposes. You are given e
which is an expr
, but you want to return something of type α
. What is α
? You would need to have a function e.type : expr -> Type
to define "the type of e
", but that doesn't work because of universe issues. So instead you just assert the type you want and lean checks it (I think, maybe it just crashes if you got it wrong)
could has_one.one
be an example of an expr
? Or some such thing? I'm wondering when Lean decides that 1
should be a natural if it can't think of any better ideas.
has_one.one
has a big pi type, but `(has_one.one)
is an expr
I think it's specifically numerals that default to nat
if there's no other information, right? This happens at elaboration time.
What's the best way to discover if expr
e has form Exists (a : A), B a
? Or alternatively Exists p
?
One simple way is to do:
do `(Exists %%p) <- pure e | fail "e is in bad shape", -- do stuff with `p`
rbtree
doesn't come with function to remove items from it?I... guess you're right
that's a bit annoying, I was hoping not to have to touch rbtree
Could I use rb_map
, which does have this?
If I do a <|> b
for the option
type, will the VM not evaluate b
if a
is some _
?
Is anyone doing 23 trees in mathlib?
I've started coding it up
Is it maths?
It's a datastructure
like rbtree
Is there a way to have conditionals in match
statements? Eg something like:
match x with |(some y) where y > 5 := "hello" |_ := "nope" end
"nope"
No conditions built into match
If I do a <|> b for the option type, will the VM not evaluate b if a is some _?
It will evaluate both sides, unless option.orelse
is inlined. If you want to avoid this, you can make an option.orelse'
that takes a thunk (option A)
for its second argument
Is anyone doing 23 trees in mathlib? I've started coding it up
I have no current plans for this, go ahead. We would be happy to take it
Is there a way to have conditionals in match statements?
No, as Simon said; although in this case you can write the following:
match x with | (some (y+6)) := "hello" | _ := "nope" end
I would recommend just using if
though.
What if he gets tired towards the middle of the task, and ends up with 11 trees instead of 23?
That's a linked list. We won't be so welcoming because we have those.
Damn it. What was the probability that roughly cutting in half the number 23 would lead to another meaningful sentence?
Btw, why do we want 2-3 trees while we have red-back trees? What do you get from 2-3 trees that you don't get from red-black trees?
I guess with 12 trees he will have a trie
different performance characteristics... I'm okay with implementing datastructures for their own sake because of this
but it's true that rb trees already implement the same API as it were, so if you are a programmer who needs a map type and doesn't want to bother with writing data structures you can use them instead
As I understand it, a red-black tree is basically a 2-3 tree where the balancing invariant is formulated in terms of tree height instead of node degree, that's why I'm surprised it would get a different performance profile
From https://www.cs.purdue.edu/homes/ayg/CS251/slides/chap13b.pdf , it seems like 2-3 trees or 2-3-4 trees are actually just simpler versions of rb trees
the advantage of rb trees is normalizing the node layout, but this doesn't matter when you are writing inductives in lean
Huh, that's an interesting slide format
Huh, that's an interesting slide format
Judging by the name of the pdf, this might be a chapter from a book, and books are still traditionally in portrait format I guess.
Those are definitely slides, but more like old-school ones for overhead projectors.
Maybe Sebastian was referring to the Batman delirium at the end
Yes I'm just treating making 23 trees as another exercise. I copied the implementation details from Isabelle and then added dependent types to it. I managed to prove that my trees are balanced using just dependent types (each node has a height param in its type). It was fun to see that it worked and I learned a lot. I made no considerations for performance so rbtree
is still better and more concise. The deletion algo for 23 trees is horrifying so there is likely a mistake in there, but at least I proved that it's balanced!
Here is a link to the source but I've made no attempt to make it readable yet. I haven't even tested it.
https://github.com/EdAyers/mathlib/blob/tree23/data/tree23.lean
Some thoughts from doing this,
- It can be difficult to decide which typeclasses to use. Should I use linear_order
? decidable_rel
? And so on.
- The coercions from decidable
to if statements are kind of magical.
- There is a lemma lt_min_key_imp_outside
which I basically did by taking a random walk through the space of valid tactics until no goals
appeared. Any tips on how this can be tightened up would be appreciated.
- Proving anything about the del
method will be a nightmare. So if the deletion method for rb trees is simpler then I am happy to abandon these.
- The main thing I learnt is that you are much better off using non-dependent-type driven datatypes and then restricting with propositions at the end. Using dependent types just makes coding too tedious.
I also had an attempt at proving some things about rbtree
s but it is very tedious. I think that I am not using the automation very effectively.
I'm going to use native.rb_tree
in the future instead, but I don't regret implementing this because it taught me a lot about Lean.
My dream was that I wouldn't have to write tests for my code, because I could just prove that it is correct!
Have you put your code somewhere on github. We can look at it to see if we can make your proving more effective
yes see link above in this thread
https://github.com/EdAyers/mathlib/blob/tree23/data/tree23.lean
I'll push the rbtree experiments in a few hours.
Why is it that #check λ x, x + 1
is ℕ → ℕ
and not [has_add ?m] [has_one ?m] ?m -> ?m
What is causing the elaborator to default to nat
?
(deleted)
I think 1
is default to nat
Right but where is the defaultness set?
At some point in the elaboration process, Lean sometimes says "if I can't figure out what that 1 is, I'm going to assume it's a nat". I think the point this occurs is near the end, if at all. Maybe you can even concoct something where example
behaves differently to definition
using this sort of thing.
(deleted nonsense)
Perhaps 1
is always nat
, and there is a type coercion from nat
to all of the other kinds of numbers?
That's not how it works, I'm pretty sure.
Unfortunately, as I found out earlier this week, it's very difficult to switch the number literal parser off.
1
is has_one.one
The thing I can't figure out is if the nat
default is set somewhere in init
or whether it is baked in to the elaborator.
I think it is baked into the elaborator. I think that #check
cannot possibly return [has_add ?m] [has_one ?m] ...
because I don't think Lean thinks these are part of the expression.
So eventually it gets to a point where it can't figure out where this type class inference thing is coming from and at that point it decides it's going to go for nat. You should check all this with an expert.
The nat default is baked into the elaborator, but it is not necessary for it to operate
it could just as easily return ?m -> ?m
, and there would be (hidden) subgoals for those typeclasses
Perhaps 1 is always nat, and there is a type coercion from nat to all of the other kinds of numbers?
Lean used to work like this, but the current version uses a polymorphic 1 function
I find the nat default distateful precisely because it's the only thing about lean definitions which is not configured within lean
if kevin decided to write his own core.lean with xnat
, lean would probably complain
https://github.com/leanprover/lean/blob/master/src/frontends/lean/elaborator.cpp#L3609-L3610
I can see why Leo did this though, since nat
is initial with respect to has_one
and has_add
so you don't really lose any generality by doing this and 90% of the time you mean nat
anyway.
note again that lean does not use anything like nat.cast
to get an arbitrary value of type A
from a nat
If you type 4 : A
, it is translated by the parser to bit0 (bit0 1)
, where bit0
and has_one.one
are polymorphic functions
this term will make absolutely no reference to nat
The reason this was done, I believe, is that without a default type being assigned as a last resort, you can never write a numeral without a type ascription somewhere, so a beginner will type #eval 2 + 2
and get a weird error message instead of the obvious answer
What is the difference between synthesizing and elaborating?
My guess is synthesizing is when the elaborator tries to guess an expr for a given type sig
I'm not sure there is a difference, they are both fairly general terms
elaboration is broadly the process of taking a parsed pre-expression, an AST, and including and inferring all missing type information to make it a valid term of the formal logic
synthesis is just what you call putting data into one of these holes
Ok. So when you make the proof to a lemma by writing out a proof term. Making that a valid expr
is elaboration. Does the process of making a valid proof term using begin ... end
also count as elaboration?
There are multiple methods used by the elaborator to synthesize expressions, but the major workhorses are unification and typeclass inference
I'm not sure I would call tactic evaluation a part of elaboration, but it occurs in the middle of the elaboration cycle, yes
you could view the tactic framework as a giant plugin to the elaborator
Yes that's how I'm viewing it. It's a beautiful way of doing it.
When I write def asdf (myarg : mytype . mytactic) : ... := ...
. I can't quite figure out what the tactic is doing. Is Lean making a tactic state with the goal as mytype
and myarg
as a local constant?
So I use this by writing asdf (myvalue)
. Or is the idea that the mytactic
should be used to synthesize myarg
if it is not provided explicitly?
Also, expr
has the argument elaborated := tt
. I am guessing that expr tt
is a term that has been elaborated, and hence is valid. Whereas a expr ff
has not been checked to be valid, eg I just made a nonsense term myself from the expr
constructors. So expr ff
/expr tt
is like term
/cterm
in Isabelle.
But then I can make expr tt
from the expr
constructors too, so that can't be it.
But in that case I can't see what the difference could be between expr tt
and expr ff
.
Or is the idea that the mytactic should be used to synthesize myarg if it is not provided explicitly?
this
it is a variant on optional parameters where the default value is synthesized by a tactic
Whereas a expr ff has not been checked to be valid, eg I just made a nonsense term myself from the expr constructors.
Not quite. expr ff
is the same as pexpr
, and it represents those pre-expressions I mentioned
So an expr ff
can have wildcard holes in it?
They actually differ from expr
structurally, i.e. if I write x + y
then the pexpr
for this is has_add.add x y
with 2 arguments, and the expr
is has_add.add ?m1 ?m2 x y
or has_add.add nat nat.has_add x y
with 4 arguments
nice
they could have been defined as separate inductive types, but they share enough of the major structure that it seemed redundant
lean 4 will have these separate, with pexpr
becoming syntax
which is completely different
it will be much more like an AST for lean
Ah I just found @[reducible] meta def pexpr := expr ff
in source
meta constant pexpr.mk_placeholder : pexpr
seems to be the magic constant
that lets you do placeholders. You can't use metavariables because you might not be in a tactic monad so you can't make fresh ones.
mk_placeholder is basically the AST corresponding to _
as a token
Am I right in thinking that the placeholder is distinct from metavars, but elaborating a pexpr
turns these into metavars?
there is only one, and it is elaborated to a new metavariable every time
Will the elaborator for Lean 4 be written in Lean rather than C++?
parser yes, elaborator maybe
That would blow my mind
I think the idea is to completely self host
I can't wait for Lean 4
but it's hard, not the least because the lean VM is currently not efficient enough to support this
so they will need to implement a real lean compiler to machine code
To do the elaborator in Lean you would need some kind of super simple bootstrap elaborator in C++ with everything explicit and build up from there.
even in core lean for much of the files you don't have the tactic framework set up yet so it's all explicit terms
I don't know exactly how the full bootstrap process would work, it might just run itself on the previous version of lean to avoid messy business
Right but then you can't build Lean from scratch which would be sad, you would then need to maintain both C++ and Lean elaborators.
@Sebastian Ullrich can tell you more about the extent of current bootstrapping plans
I'm reading through the kernel code. Let me just write down what I think is happening and then I can be corrected.
- expr.cpp
is doing roughly the same thing as expr.lean
, just a big inductive type with helper methods.
- type_checker
infers the type for a given expr
or throws if it isn't a valid expr. Saying that a given expr
typechecks is equivalent to saying that the expr
can be built just using the inference rules of CIC (up to being able to synthesize metavars later).
- You inject a normalizer_extension
into the kernel to dictate how the typechecker should put terms in WHNF. If there is a bug in the injected normalizer_extension
then the kernel will be compromised too. So quotients and inductives are normalizer_extensions.
- So the kernel is happy when it is given an environment, which is an ordered dictionary of declarations indexed by name
, and all of the declarations' expr
s typecheck.
In the system description for Lean it says that the typechecker can also produce unification constraints, but this feature doesn't seem to be in thetype_checker.h
, although I could not be reading thoroughly enough, where is the code that does type_checking and also spits out some unification constraints?
@Edward Ayers You have to go back in time to see the unification constraints :) https://github.com/leanprover/lean/blob/CADE25/src/kernel/type_checker.h
We abandoned this approach in Lean 3. Now, the kernel type checker is simpler and has no support for meta-variables (unification variables). The elaborator uses a different module for inferring types and solving unification constraints.
@Mario Carneiro
I don't know exactly how the full bootstrap process would work, it might just run itself on the previous version of lean to avoid messy business
Yes, this is how all bootstrapping compilers work. But instead of a binary file, we want to store the previous version as extracted C++ code, which should be at least slightly more inspectable and git-friendly
Thanks Leo. Also elab_context.h
is confusing me. The comment talks about tactic_context
. But I can't find any other mentions of tactic_context
. I also can't spot the definition of type_context
, only type_context_old
I'm really keen to see the C++ code that is used to keep track of metavariables, local context and so on while a tactic or elaborator is being run. It seems to be type_context_old
but I'm not sure because of the old
suffix.
type_context
was renamed to type_context_old
in the preparation of the changes for Lean 4. You should really be looking at type_context_old
, it was the type_context
for most of Lean 3.
In the type_context.h
there is a large comment starting with NEW DESIGN notes. (This is work in progress)
, is this how Lean 3 works or is it how Lean 4 works?
This is a change that was introduced late in Lean 3, and the todo is also implemented now with the unfreeze_local_intstances
tactic.
@Edward Ayers I recommend you start using different topics for your different questions so that other people may determine at a glance if the discussion is relevant to what they're working on.
ok will do
Thanks!
I like the question barrage :-) but I do see Simon's logic. I often start new threads with more descriptive titles now and it works better for search when I come back to them later.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


{% extends "community/layout.html" %} {% block body %}
Flask is supported by an active, helpful community. Get involved by joining the mailing list and IRC channel. Discussion for developers using Flask as well as working on the core is welcome.
If you want to spread the word, there is also a selection of badges and logos you can use on your own website. There are also shirts and mugs available at the Flask store, and stickers too.