--- layout: post authors: ["Peter Steinbach"] title: "Particle Physicists Pulling Themselves From The Swamp" date: 2014-10-31 time: "17:00:00" tags: ["Teaching"] ---
What does it mean to work on a modern particle physics experiment like ATLAS (wikipedia, public) or CMS (wikipedia, public) at the Large Hadron Collider in the 21st century? It's fun, it's collaborating with great and interesting people, it's challenging, it's making you enjoy finding things out, it's what I always wanted to do.  Confused? Let's rewind...
Five years ago I was a young man entering a field that I knew from textbook excerpts and stories of Nobel prizes. This field centered around a handful of large laboratories worldwide that host some of the most advanced technology mankind has ever build: particle accelerators. Billions are invested to build a machine that accelerates particles onto a near light speed orbit in order to bring them to a high energetic collision. Around these fixed collision points, multi-purpose experiments of the size of a multi-apartment houses record the particles thus produced to reconstruct what happened during the event and obtain deeper knowledge of the underlying physics.
If I say multi-apartment houses, you might imagine that analyzing the data of these experiments is far from trivial. The collaborations running these machines provide physicists with object-oriented frameworks (cmssw, gaudi, athena) of the order of 7-10 kLOC (thousands of lines of code) that facilitate the read-out, simulation, filtering and analysis of this data. Sophisticated statistics software is used further down the pipeline to produce publication grade plots, make statistical inferences, and eventually extract knowledge.
Why is it so frustrating then? University curricula for physicists hardly ever contains programming skills, much less conceptual knowledge of object-oriented programming, revision control, software design, parallel computing, and the like. Neither do prep courses in early stages of a PhD. Most of the time, wiki pages allowing copy-and-paste style learning-by-doing that get you going but never explain underlying principles. But I am a scientist: I need to understand what is going on and use my tools to the best of my knowledge to make inferences.
One and a half year into my thesis, I personally was so frustrated of spending hours in front of the computer understanding other people's code, that I was dedicated to change the situation. At the same time, a federal German funding agency initiated a German network for particle physics, the Helmholtz Alliance "Physics at the Terascale", to induce higher scientific throughput just in time with the LHC coming online in 2009. This funding program also contained budgets for training of staff. Motivated by a never-ending and daily struggle to work with object-oriented frameworks that were poorly documented and yet state-of-the-art, I started to inquire about the possibility of organizing a workshop on software design principles. It was my hope that by transferring knowledge from computer science to physics students at the keyboard, we could pull ourselves out of the swamp and finally understand why we program as we do, how we can work effectively with code (both our own and others') and as such be more productive. After all, I chose to be a PhD student to do physics, not fight code!
Due to the support of my supervisor and the motivation of my fellow students and post-doc, we were able to find potent speakers. The only thing left was getting the money in and advertising the idea to principal investigators so they'd send their students around. And I can tell you, there were many PIs not willing to back us. After all, most of the group leaders made their day during the Fortran age in particle physics. So there was a deep cultural canyon between their view of how people should work and what everyone faced in everyday development.
It took a year to setup the first workshop in 2010 that welcomed 25 participants. We started by recapping object-oriented programming, then introduced UML, and finally climbed the hill to discuss design patterns, class-design and package-design principles. The week-long workshop was concluded by a student exercise project that lasted almost an entire day. We also had two keynote speakers from the trenches of the local software industry (which was quite a clash of cultures, but a very insightful experience).
Given today's standards, many of the details of the workshop were not very well thought through, I believe. It was a lot of content for 4.5 days and was not always paired with exercises or the like. But we ingested a lot of cool stuff to feed our curiosity. Finally, someone taught us the fundamental concepts we needed so desperately to know in order to grasp what were doing every single day. This made my (professional) life a lot happier than it was before. And I would even claim, it made me much more productive as a scientist.
Many participants gave us very positive feedback:
This workshop should be on everyone's curriculum in Particle Physics.
-- A participant of the 2014 workshop
Since then, I've been lucky enough to organize another workshop one year later. We again had 25 participants with a keynote by a local software consultancy CEO. Further, I was myself able to deliver the knowledge that I had acquired through the past workshop and give a talk on my own on test-driven development. The following year, the workshop started to travel and was hosted by DESY in Hamburg. We had more than 50 participants there, which proved to be a challenge. We were used to having a small number of people, which meant we could manage to cover a lot of material by dynamically adapting our speed and depth. But that approach does not scale! So at the end of a tough week, we again received a lot of positive feedback, but we had to admit that 30-35 people is a good size to go with.
During that time, the focus of the workshop changed a bit. We were still covering object-oriented programming, good design practices, and design patterns, but we added refactoring (thanks to an excellent new contributor) because it relates much more with the day-to-day situation students face: sit down and use the code of others. The number of exercises steadily increased, and I believe we are slowly converging to a 1:1 ratio of exercises to lectures. Finally, the scope of the audience became wider. We had to acknowledge that most particle or nuclear physics related sciences also have substantial need for software training. For example in the field of detector construction, both the nuclear and particle physics community commonly use GEANT (which is again a object-oriented framework) to set up and run detector simulations in a modular fashion. Participants from these fields repeatedly told us that the sort of training we offer is needed.
This year, the workshop was hosted at Munich. Triggered by Greg Wilson's PyCon talk, I tried to use some more interactive teaching elements like sticky notes, an etherpad, and live-coding mixed with a lot of pair work (not pair programming yet). I have to say that especially people in this environment, where they feel they lack competence (and because they are physicists ;) ) are a difficult crowd. Sticky notes were not adopted at all or I didn't "motivate" them enough, so I dropped them half-way through the session.
On the other hand, having the etherpad was great success. It allowed me to bring the teaching into the notebook that everyone likes to hide behind. Live coding also worked out extremely well. I used it to teach C++ template meta programming within one entire morning. The topic is quite complicated, but live coding helped me adapt the speed and ensure that everyone can follow and reproduce my demonstration on their own. There was constant feedback by the participants and people helped each other out. To be honest, I was surprised that live coding worked so well with a crowd of 33 students.
Last, I put all my code and slides on GitHub (see the Performance versus Design C++ repository) for the students to share and fork. I have to say that this did not receive the attention by the participants I hoped it would. But that might have technical or usability reasons or simply that particle physics is mostly an ecosphere of it's own, i.e. GitHub and the like are not yet common tools.
To conclude, I think we are well on on the way to establishing a software development focused training curriculum in the particle physics community. Promoted by this blog post, we will start to publish our experiences if possible at conferences and peer-reviewed journals in order to receive feedback, straighten our quality assurance, and bring our experiences and motivation to the attention of more people. We hope our courses can be adapted in other countries or big laboratories or even lead to a mind change of PIs:
The data volumes at LHC are steadily increasing, thus the analyses are becoming more complex and so become the list of systematic uncertainties to be studied. One is forced to write good code if you want to be flexible and fast.
-- German Particle Physics Group Leader from Bonn (translated from German)
Not only that, but the workshop is also being recognized and appreciated by all involved (PIs and students):
I've been sending students to this workshop for many years. Even though many of the students went to the workshop with a let's-see-if-that-will-help attitude, they always came back full of motivation to code and a lot of important insights how to code. After the workshop, they developed a high enthusiasm for well designed code. Thank you very much for organizing the workshop. It is really well done! Keep the level where it is now.
-- German Particle Physics Group Leader from Aachen (translated from German)
Lastly, I would like to thank the individuals that have made the workshop a success over the last years. The core team that back the workshop and are ready to present annually are: Thomas Schörner-Sadenius (DESY Hamburg), Maria Pia Grazia (INFN Genoa), Stefan Kluth (MPI for Physics, Munich) and myself. Apart from these, I'd like to mention past contributors: Thomas Velz (University of Bonn, now industry) was a participant once in the workshop and this year contributed as a teacher! Benedikt Hegner (CERN) and Eckhardt von Toerne (University of Bonn) both made substantial contributions in the past as well. Also, my gratitude goes towards my supervisor at TU Dresden, Michael Kobel, and my colleagues there (most of all Wolfgang Mader) who supported me to organize the workshops locally and motivated me throughout.


New York boat crash kills woman; man is charged with boating while intoxicated: police
by Talia KaplanOne woman was killed and three other people were seriously injured following a boat crash in New York, police said, adding that the driver is accused of operating the boat while intoxicated.
Frank Distefano, 48, of Long Island, N.Y., who was operating the boat, has been arrested and charged with boating while intoxicated, according to a news release from the Southold Town Police Department.
Police said the 39-foot vessel slammed into a wooden bulkhead about 50 yards west of the entrance to James Creek. The crash happened around 9:20 p.m. on Sunday, investigators added.
The four people on board sustained serious injuries as a result of the impact, according to the news release, which added that two victims were airlifted to an area hospital and the other two were transported to another hospital by ambulance.
One of those injured in the crash, Kelley Blanchard, 27, of Long Island, was pronounced dead at the hospital, police said. She was ejected from the front window of the boat, WABC-TV reported.
ONE KILLED DURING CANADIAN BOATING ACCIDENT; 'SHARK TANK' STAR KEVIN O'LEARY A PASSENGER ON BOARD
The boat was leaving the bay and entering a creek when it hit the bulkhead at a high rate of speed, the television station reported.
Blanchard, 29-year-old Megan Blanchard, DiStefano, and 41-year-old Nick Soullas, were on board at the time of the crash, the news release said. Megan Blanchard is reportedly Kelley Blanchard’s older sister. The survivors remain in serious condition, according to WABC-TV.
Kelley Blanchard was reportedly DiStefano's former employee at his Suffolk County restaurant.
While the recreational boating season has predominantly ended, DiStefano had just contracted to sell his boat and wanted to take it out one last time, the television station reported.
The investigation is ongoing.
CLICK HERE TO GET THE FOX NEWS APP
DiStefano was released on an appearance ticket and will be arraigned in Southold Town Justice Court later this month, The Patch reported, adding that police said more charges are anticipated.


advcalc is a project of mine to add a challenge to my highschool math classes and also over time make the classes easier by making an efficient calculator program.
It's basically a miniature programming language built on PLY (Python Lex-Yacc) that only works with mathematical operators. This is meant to make the code more efficient and make the software easier to use.
Using the python library PLY, the code takes in integers, operators, decimals, and variables. Currently, it executes the 4 basic mathematical operations and can use variables. I do not envy developers who write actual fully fledged languages. This is hard enough for me to make compact and well written, so I'm absolutely blown away by the complexity of other languages.
These docs will get extended as this project gets more advanced. Right now, it's really simple.


Exercise Caution When Crossing `The Thin Red Line' by Homer Yen (c) 1999
One of the first images that we see in this film is of a crocodile maneuvering itself into the murky waters as it lies in wait for it's next meal. It is a killing machine that preys mercilessly upon unsuspecting victims. In another scene, we see an idyllic island village. Children are playing innocently among themselves while the adults carry out their daily chores practically oblivious to the war-ravaged world that exists only a few miles away. This is a society that reflects Man's best nature. But the nature of paradise that we all hope to experience is always being challenged. Desire, vengeance, anger, and other ‘urges' constantly push us further away from Eden and into the same realm of the crocodile. Soldiers, I suppose, may struggle the most with this fragile balance between protecting the goodness of society and killing others to reach that goal. How do they contain their ‘urges'? How do they stay true to themselves? `The Thin Red Line' looks at this issue several times over against the backdrop of World War II.
The film introduces several characters who all have their personal struggles. Among them are Capt. Staros (Elias Koteas) and Lt. Col. Tall (Nick Nolte). Staros is a lawyer by trade and has seen too many of his friends die in his arms during the many campaigns with which he has been involved. He has a soft heart, and will do whatever he can to protect those under his command. Tall, however, is a man that has been preparing for war for the last fifteen years. Now that he finally has his chance, he yearns to make an impact, even if it means sacrificing many lives during an ill-planned campaign to overtake an enemy stronghold. He barks out orders with his gritty voice and challenges his often-weary troops to rise up to the occasion. Staros takes exception to his zealousness and hesitates to execute Tall's commands. Other characters include Pvt. Witt (Jim Caviezel) who is an optimist that wants to find paradise; Capt. Gaff (John Cusack) who doesn't like the prospect of being promoted; and Sgt. Welsh (Sean Penn) whose soul has become irreparably cynical.
This film certainly doesn't play like a conventional war film. A good portion of the film focuses on the soldiers' thoughts about the starkness of reality while scenes of their personal Eden flash back and forth like some Nature channel montage. As an entertainment seeker, it would be difficult for me to recommend this film. One thing was that it was very frustrating trying to distinguish among the many characters - especially when they're all covered with grime, dirt and blood. Character development didn't seem to be a high priority. In addition, many of the characters seemed to randomly appear and then disappear. There lacked a sense of consistency and it was hard to become attached to any of the players. Additionally, the movie is just over 3 hours long, which makes sitting through this philosophical exercise very difficult. In fact, after the showing, many of the patrons left with a somewhat bewildered or puzzled look on their faces. I suppose that they expected a more traditional kind of war film, but got something completely different. If you're hoping for a film about war and it's potentially terrific conflicts, you can expect and uphill battle.
Grade: C
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


Fault trees should not be constructed manually by typical users. Instead,
they should be synthesized from libraries of components and
models. Components are represented with the
component type; component
instances are represented with the
instance type; component libraries are
just a list of components; and models are represented with the
model
type. Here is an example of a library. It is just a list of components.
let nasa_handbook_lib =
[ {name = "System";
faults = ["fault"];
input_flows = ["in"];
basic_events = ["sys_fl"];
event_info = [(1.e-6, 1.)];
output_flows = ["out"];
formulas = [(["out"; "fault"], Or [F ["sys_fl"]; F ["in"; "fault"]])] }];;
Here is an example of a model. It is a list of component instances along with
connection information and the identification of a top-level fault.
let nasa_handbook_model =
{ instances = [ makeInstance "Orbiter" "System" ();
makeInstance "Main Engine" "System" (); ];
connections = [ (("Orbiter", "in"), ("Main Engine", "out"));
(("Main Engine", "in"), ("Orbiter", "out")); ];
top_fault =("Orbiter", F["out"; "fault"]) } ;;
Type definition for a formula used in cformulas.
Type definition for a component.
Type definition for an instance of a component.
Function for making instances of components.


fun setWorkWeek(ccy: String, workweek: WorkWeek): ValueDateCalculator
Sets the work week for the specified currency.
By default, the calculator assumes the work week of all currencies as Monday to Friday, i.e., there's no need to set the work week when the work week of the currency is already as such.
This method does not defensively normalize the given currency to lower- or upper-case.
ccy
- the currency to use the specified work week
workWeek
- the work week of the specified currency
Return
the receiving ValueDateCalculator
instance for chaining setups


--- layout: post status: publish published: true title: rs_tag for RightScale RL10 author: display_name: neil login: neil email<EMAIL_ADDRESS>url: '' author_login: neil author_email<EMAIL_ADDRESS>wordpress_id: 107 wordpress_url: https://www.millardtechnicalservices.co.uk/?p=107 date: '2016-09-24 17:44:12 +0000' date_gmt: '2016-09-24 16:44:12 +0000' categories: - Infrastructure tags: [] comments: [] ---
TLDR; rs_tag that works on Rightlink 10 agents.
As a DevOps guy that has to deal with AMIs (Amazon Machine Images) not under my control, this creates a few issues where we might be tempted to bake in tools.
One of our clients uses rightscale for infrastructure management and auditing and so one of these tools we use is the rightlink 6 agent. No problem, the provisioning workflow installs it when it creates a server, not an issue unless you loose a server (autoscaling or it just dies) and there is no workflow to install the agent.
Fortunately there is a solution, I've been testing the install 'on boot' of Rightlink 10, however this has some breaking changes.
The biggest is the missing tool RS_TAG, as a lot of the provisioning and automation scripts rely on this to get configuration information about the server.
The rightlink 10 (RL10) agent does come with a RightScale Client (RSC) that can help, but would require rewriting all the scripts. Some of the scripts need to be updated in any case, as the agent no longer executes as root.
I have written a RL10 RS_TAG that works on servers with the rightlink 10 agent installed as a drop in replacement.The only feature not implemented as of v0.1 is the --query function.
I chose to write this in GO as the RSC comes with a library in Golang. It also allows the binary to be statically linked, like the Rightscale Agent. This means no software dependencies are required on the server (other than the RightScale agent of course). Very handy when you're about to build and configure the server in your favourite tool such as Puppet or ansible.
Let me know if it is of use to you.


Releases
This document lists the changes between stable releases.
The version numbers follow semantic versioning.
lua‑templet 1.0.2 (2015-12-09)
- Rename module file to
templet.lua
.
- Add Vim syntax file.
lua‑templet 1.0.1 (2014-04-01)
- Add an example that shows how to include template files.
- Add documentation in HTML format.
lua‑templet 1.0.0 (2013-10-29)
- Initial release of Templet for Lua.


🤔 Who am I!?
Seems like you are showing concern about getting to know me. Well, here I am. You see, I am a Full Stack JS Developer at arbisoft and Computer Science Graduate from one of the oldest and prestigious universities in Pakistan — University of Engineering and Technology🧑🎓
👨💻 These days I spend a great deal of my time developing websites in react.js and next.js. But that's not all. I also dabble in a diverse set of tools and technologies and implement them in both my personal and corporate projects. The reason is that I know how vast the field of Computer Science is. So to discover myself, I am exploring many different areas of this awesome discipline. Have a look at my GitHub projects, and if you like, give them a star.
Besides projects, I have made some contributions to open-source as well. The prominent one is my content contribution to the MDN Web Docs (one of the largest and most popular sources of web development information on the internet, with over 80 Million monthly views).
-
🔰 Community Affiliations:
- Beta Microsoft Learn Student Ambassador
- Core Team Lead at Google Developer Student Club - UET
- IEEE Brand Ambassador & Chairperson of Computational Intelligence Society
⚽ I am a huge football fan. I also watch a lot of TV shows and Movies and do some Photography. Graphics Designing & illustrations are part of my hobbies.
✌ Peace


ngCrossfilter
Filter
Clear
Words:
{{words.collection().length | number: 0}}
First:
{{words.first().word}}
Last:
{{words.last().word}}
Filter by length:
{{count.key}}
ID
Length
Word
Downloading 100,000 words – 3.3mb may take a little while…
Oops! Everything disappeared –
clear all filters
.
{{word.id}}
{{word.word.length}}
Only
{{word.word}}
< Previous Page
Next Page >


I am the {{aboutMe.name}} component. I'm also scaffolded into app/components. Noogie scaffolds all component bundles into this directory!
Noogie also auto-links JS and Sass(CSS) dependencies in their proper locations in index.html and main.scss to make things easy!


Standard Rock Paper Scissor Rules apply. Select the element that you want to choose to play against the computer. Then click on the bottom text to shoot.


Eumak - The European Multilingual Keyboard Layout
Eumak is a multilingual keyboard layout for anyone wanting to type in English, German, French, Italian, Spanish, Polish, Romanian, Dutch, Swedish, Hungarian, Greek, Czech, Catalan, Portuguese, Serbian, Croatian, Danish, Finnish, Albanian, Slovak, Norwegian, Bosnian, Lithuanian, Latvian, Slovene, Irish, Estonian, Welsh, Maltese, Icelandic, Breton, Montenegrin, Latgalian, Scottish Gaelic, Faroese or Esperanto...
Introduction
Most keyboard layouts provide support for one language or a small set of related languages. Eumak attempts to provide support for all official EU languages. Even Greek.
Using a combination of Shift, AltGr and a new Mod key, the orthographies of several dozen languages are made available. Latin and Greek letters are toggled via the Mod+6 combination.
How can I use it?
Linux (XKB)
To Install
$ curl https://raw.githubusercontent.com/technige/eumak/master/eumak.py | sudo python - -i
To Activate
$ setxkbmap eumak
To Uninstall
$ curl https://raw.githubusercontent.com/technige/eumak/master/eumak.py | sudo python - -u
Windows
Coming soon!
MacOS
Coming soon!
The Layout
Letters
The basic layout of the letters is grounded in QWERTY. While other formats (AZERTY, QWERTZ, etc) are commonly in use by some language-specific layouts, QWERTY is both the original and the most common configuration. There is no perfect choice here, but QWERTY arguably provides the greatest degree of familiarity to the most people.
To the east of P and L are located five extra vowels. Across layouts, these keys are typically occupied by a mixture of alphabetic and punctuation symbols, but are repurposed by Eumak as ä ë ï ö ü. These vowel variants are very common across European languages, and they also include the accented characters most regularly used as a base for further modification: ö and ü which Hungarian transforms with an acute accent to ő and ű.
The AltGr key can be used to access alternate letters when used in combination with any of the letter keys. These are marked in red on the keyboard layout diagram above. So, for example, AltGr+C produces a ç character. And as with the regular letters, Shift can be added for capitalization. For example:
| Key Combination | Output |
|---|---|
| C | c |
| Shift+C | C |
| AltGr+C | ç |
| Shift+AltGr+C | Ç |
Numbers & Symbols
Numbers hold their regular place on the top row with shifted values filled by characters commonly found in those positions. And six symbol keys fill most of the remaining spots, with ~ to the left of the numbers, - and + to the right, and ,, . and ' to the east of M.
As with the letters, all the number and symbol keys have alternate and shifted alternate variants. These are marked in the lower right and upper right quadrants of the keys on the diagram above.
So, for example, the following characters are accessible through the + key:
| Key Combination | Output |
|---|---|
| + | + |
| Shift++ | * |
| AltGr++ | × |
| Shift+AltGr++ | · |
Modified Characters
The key to the left of Z is Mod, the modifier key, which can be used to access accented characters. On most layouts, this key is assigned to symbols (most commonly greater-than and less-than signs) but can be thought of in Eumak as a extra kind of Shift key.
When used in conjunction with letters, the Mod key adds an acute accent (or a tonos if writing in Greek). This diacritic is very common across European languages, being represented in some form in most language groups. Note that the Ö and Ü keys produce the Hungarian letters ő and ű respectively, when used in this way.
Mod can also be used to access the dead keys built into ~, 1, 2, 3, 4 and 5, as illustrated in grey on the keyboard above. If a dead key is pressed before a letter, it modifies that letter with a particular accent, should such a combination be available. Pressing a dead key twice will type the accent by itself; so Mod+3, Mod+3, for example, types a ^ symbol.
Supported Language Groups
The alphabetic characters available through Eumak provide support for the following language groups:
- West Germanic (English, German & Dutch)
- Romance (French, Italian, Spanish, Romanian, Portuguese & Catalan)
- West Slavic (Polish, Czech & Slovak)
- South Slavic (Serbian, Croatian, Bosnian, Slovene & Montenegrin)
- North Germanic (Swedish, Danish, Norweigian, Icelandic & Faroese)
- Finno-Ugric (Hungarian, Finnish & Estonian)
- Celtic (Irish, Welsh, Breton & Scottish Gaelic)
- Baltic (Latvian, Latgalian & Lithuanian)
In addition, the following individual languages are supported:


I'm Rohit
I am an engineering graduate from KL University specialised in Computer Science and Engineering with an overall CGPA of 9.6
Computer Science & Engineering specialised in Artificial Intelligence with 9.6 CGPA
Maths Physics and Chemistry Stream with an overall grade of 92.5%
An ICSE passed out with an overall grade of 91.6%
I am a hard working engineering graduate from Computer Science and Engineering with an overall CGPA of 9.6. I am good at Problem Solving skills and coding. I have an experience as a teaching assistant in the university for 12 months.
CSE Graduate
© Copyright 2021 Gada. All right Reserved


YPG/PKK recruited 270 terrorists from Germany, BfV intel agency reveals
by ANADOLU AGENCYThe terrorist YPG/PKK group recruited nearly 270 foreign fighters from Germany who took part in battles and terror attacks in Syria and Iraq, a report by German domestic intelligence agency BfV revealed Friday.
In an analysis published in BfV's quarterly newsletter, the agency said among the 270 YPG/PKK foreign fighters who traveled to the region since 2013, at least 22 were killed in clashes or during Turkey's anti-terror operations.
Three German citizens, Jakob Riemer, Sarah Handelmann and Michael Panser, who were known to German authorities as left-wing extremists, were among those killed.
The PKK has been banned in Germany since 1993, but it remains active, with nearly 14,500 followers among the country's Kurdish immigrant population.
Ankara has long criticized German authorities for not taking serious measures against the PKK and its Syrian affiliate YPG – which continue to use Germany as a platform for their fund-raising, recruitment and propaganda activities.
In its more than 30-year terror campaign against Turkey, the PKK – listed as a terrorist organization by Turkey, the U.S. and the EU – has been responsible for the deaths of nearly 40,000 people, including many women and children.


--- layout: post title: Servers published: true date: 2010-09-01 categories: [] posterous_url: http://blog.hungerandthirstdesign.com/post/1047047187/servers posterous_slug: post/1047047187/servers ---
Update on our hosting situation. I’m very pleased to announce the final hosting location for our site here and for future projects will be Heroku.com. I had used them once before in the past before I had a set of domain names and now having that along with an updated set of features from Heroku’s dev team, I’m very happy to be hosting my stuff here.
Before the move, I had been trying to host on Bluehost. They provide an excellent spread of services and options for a great cost, however, they aren’t very Rails specific, so trying to get setup there made for a fairly volatile combination of config files and weird apache hacks. So switching to Heroku should keep the site clean and stable.
Because of Heroku’s very progressive support of Rails, I’m actually hoping to get some experimental stuff up here to demo Rails 3. This site may even move to R3 before much longer. Just glad to finally have this site, namely the blog, up and running. Stay tuned for current projects and other updates!


SPLICE
Section: Linux Programmer's Manual (2)
Updated: 2014-07-08
Index
Return to Main Contents
NAME
splice - splice data to/from a pipe
SYNOPSIS
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <fcntl.h>
ssize_t splice(int fd_in, loff_t *off_in, int fd_out,
loff_t *off_out, size_t len, unsigned int flags);
DESCRIPTION
splice()
moves data between two file descriptors
without copying between kernel address space and user address space.
It transfers up to
len
bytes of data from the file descriptor
fd_in
to the file descriptor
fd_out,
where one of the descriptors must refer to a pipe.
If
fd_in
refers to a pipe, then
off_in
must be NULL.
If
fd_in
does not refer to a pipe and
off_in
is NULL, then bytes are read from
fd_in
starting from the current file offset,
and the current file offset is adjusted appropriately.
If
fd_in
does not refer to a pipe and
off_in
is not NULL, then
off_in
must point to a buffer which specifies the starting
offset from which bytes will be read from
fd_in;
in this case, the current file offset of
fd_in
is not changed.
Analogous statements apply for
fd_out
and
off_out.
The
flags
argument is a bit mask that is composed by ORing together
zero or more of the following values:
- SPLICE_F_MOVE
-
Attempt to move pages instead of copying.
This is only a hint to the kernel:
pages may still be copied if the kernel cannot move the
pages from the pipe, or if
the pipe buffers don't refer to full pages.
The initial implementation of this flag was buggy:
therefore starting in Linux 2.6.21 it is a no-op
(but is still permitted in a
splice()
call);
in the future, a correct implementation may be restored.
- SPLICE_F_NONBLOCK
-
Do not block on I/O.
This makes the splice pipe operations nonblocking, but
splice()
may nevertheless block because the file descriptors that
are spliced to/from may block (unless they have the
O_NONBLOCK
flag set).
- SPLICE_F_MORE
-
More data will be coming in a subsequent splice.
This is a helpful hint when
the
fd_out
refers to a socket (see also the description of
MSG_MORE
in
send(2),
and the description of
TCP_CORK
in
tcp(7))
- SPLICE_F_GIFT
-
Unused for
splice();
see
vmsplice(2).
RETURN VALUE
Upon successful completion,
splice()
returns the number of bytes
spliced to or from the pipe.
A return value of 0 means that there was no data to transfer,
and it would not make sense to block, because there are no
writers connected to the write end of the pipe referred to by
fd_in.
On error,
splice()
returns -1 and
errno
is set to indicate the error.
ERRORS
- EAGAIN
-
SPLICE_F_NONBLOCK
was specified in
flags,
and the operation would block.
- EBADF
-
One or both file descriptors are not valid,
or do not have proper read-write mode.
- EINVAL
-
Target filesystem doesn't support splicing;
target file is opened in append mode;
neither of the descriptors refers to a pipe; or
offset given for nonseekable device.
- ENOMEM
-
Out of memory.
- ESPIPE
-
Either
off_in
or
off_out
was not NULL, but the corresponding file descriptor refers to a pipe.
VERSIONS
The
splice()
system call first appeared in Linux 2.6.17;
library support was added to glibc in version 2.5.
CONFORMING TO
This system call is Linux-specific.
NOTES
The three system calls
splice(),
vmsplice(2),
and
tee(2),
provide user-space programs with full control over an arbitrary
kernel buffer, implemented within the kernel using the same type
of buffer that is used for a pipe.
In overview, these system calls perform the following tasks:
- splice()
-
moves data from the buffer to an arbitrary file descriptor, or vice versa,
or from one buffer to another.
- tee(2)
-
"copies" the data from one buffer to another.
- vmsplice(2)
-
"copies" data from user space into the buffer.
Though we talk of copying, actual copies are generally avoided.
The kernel does this by implementing a pipe buffer as a set
of reference-counted pointers to pages of kernel memory.
The kernel creates "copies" of pages in a buffer by creating new
pointers (for the output buffer) referring to the pages,
and increasing the reference counts for the pages:
only pointers are copied, not the pages of the buffer.
EXAMPLE
See
tee(2).
SEE ALSO
sendfile(2),
tee(2),
vmsplice(2)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- ERRORS
-
- VERSIONS
-
- CONFORMING TO
-
- NOTES
-
- EXAMPLE
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:54:45 GMT, September 18, 2014


MEMS Gyroscope Design
Dr.Dr. Bacha was a lead R&D engineer at Hewlett-Packard.
s a lead R&D engineer on a .
CadModel
I’m actively looking for motivated Ph.D. students in computer science who are passionate about making computer systems and mobile devices more secure. Specifically, I’m looking for students with a strong background in systems (operating systems and computer architecture) with the ability to explore security related issues and build realistic proof of concepts. Expertise in machine learning would be an advantage.
Interested students should email me their CV, Statement of Purpose, and transcripts.
News
- 07/20: Our Dark Firmware paper was accepted in RAID 2020.
- 05/20: Our RNNFast paper was accepted in JETC.
- 05/20: Anys will serve on the program committee for ICCD 2020.
- 04/20: Anys receives the CECS Faculty Excellence Award for Teaching.
- 03/20: Anys receives NSF grant for $175K to combat malware.
- 02/20: Anys receives a patent for improving reliability via deep learning.
- 01/20: SpecShield received an Honorable Mention in IEEE Micro Top Picks.
- 12/19: Our CAL paper received the Best Paper Award.
- 07/19: Our SpecShield paper was accepted in PACT 2019.
- 07/19: Our paper on DNNs for the edge was accepted in SEC 2019.
- 07/19: Anys receives NSF grant for $20,000 to support MICRO 2019.
- 06/19: Anys receives a patent for improving the security of caches.
- 06/19: Our work on isolating speculative data was presented at HASP 2019.
- 04/19: Our paper on isolating speculative data was accepted in CAL 2019.
- 01/19: Anys will serve on the organizing committee for MICRO 2019.
- 10/18: Anys receives a patent for improving the reliability of caches.
- 08/18: Our paper on cold boot attacks was accepted in ICCD 2018.
- 05/18: Anys receives a patent on efficient accesses to LLC caches.
- 05/18: Anys receives a patent on scaling processors in large-scale systems.
- 01/17: Our paper on processor design with NVM was accepted in IPDPS’17.
- 11/16: Anys will serve on the external review committee for ISCA’17.
- 05/16: Authenticache received an Honorable Mention in IEEE Micro Top Picks.


| Recogito is currently | UP | |
| Database | @if(dbStatus) {UP | } else {DOWN | }
| Index | @if(idxStatus) {UP | } else {DOWN | }
All systems go
}@(dbStatus: Boolean, idxStatus: Boolean)
| Recogito is currently | UP | |
| Database | @if(dbStatus) {UP | } else {DOWN | }
| Index | @if(idxStatus) {UP | } else {DOWN | }
All systems go
}


amgen
Businessmodel of Amgen
Customer Segments
Amgen’s products are designed to serve customers across all parts of the medical and healthcare sector. The majority of the Company’s sales are made to wholesalers and distributors, which in turn sell the Company’s products to their customers, which include physicians, clinics, dialysis centres, hospitals and pharmacies. In 2015 the Company’s product sales to leading medical wholesalers AmerisourceBergen Corporation, McKesson Corporation and Cardinal Health, each accounted for more than 10% of Amgen’s total revenues for the year.
Amgen’s principal market is its native US, which accounted for almost 80% of the Company’s product sales in 2015. The Company, however, serves customers worldwide, with its remaining sales targeting customers across the rest of North America, Latin America, Europe, the Middle East and Asia.
Value Propositions
Amgen provides value to its customers in the following ways:
- Its portfolio of quality and original products, with the Company providing a broad range of therapeutic products targeting a range of conditions and ailments, with a track record of being safe and reliable;
- Its global sales reach, with the Company serving a broad spectrum of customers worldwide, including across the Americas, Europe, the Middle East, and Africa;
- Its efficient and reliable manufacturing operations, with the Company providing safe and reliable production of biologic medicines;
- Its commitment to innovation and development, with the Company devoting a substantial portion of its revenue to research and development activities, with a view to creating new and innovative products; and
- The expertise of its personnel, with the Company employing well-trained technical staff and experienced industry executives. ### Channels
Amgen operates a website at www.amgen.com, through which it provides information on its products, services, and corporate activities. The Company does not, however, operate an online sales channel.
Amgen sells its products to wholesalers and distributors through its own in-house direct sales force. The largest concentration of the Company’s sales and marketing forces are based in the US and Europe, with the Company expanding its marketing presence across parts of Latin America, the Middle East and Asia. Outside of the US the Company frequently makes sales by establishing affiliate companies, acquiring existing third party businesses or product rights, or in partnering with third parties.
Amgen’s products reach the general public through a network of pharmacies, medical centres, hospitals, and clinics.
Customer Relationships
While Amgen has an online presence, the Company does not operate an online sales channel. Instead, the Company’s in-house sales organisations deal directly with customers, consulting with them over a period of time in order to fully cover the needs of the customer. Amgen seeks to establish long-term relationships with its customers, often agreeing multi-year sales contracts with its largest customers.
Amgen provides support and assistance to existing and potential clients, who are able to contact the Company over the phone and by email, receiving personalised responses to all queries, enquiries, and concerns. This is supplemented by online support resources, such as medical information, safety data sheets, and product information.
Customers are also able to interact with Amgen directly through its social media profiles, including with YouTube, LinkedIn, and Twitter. The Company also publishes news releases and statements on its website to keep customers informed on corporate developments.
Key Activities
Amgen is a biotechnology company. The Company is engaged in the discovery, development, manufacture and delivery of various human therapeutics products. The Company’s activities are organised into a single operating segment concerning its human therapeutics business.
The Company provides a number of products targeted at a range of ailments and conditions, including Neulasta, Aranesp, EPOGEN, Sensipar/Mimpara, XGEVA, Prolia, and NEUPOGEN. Amgen is also engaged in research and development activities, seeking to produce innovative treatments for serious illnesses in the areas of oncology, haematology, cardiovascular disease, inflammation, bone health, nephrology and neuroscience.
Its products in Phase III programs include Aranesp for Myelodysplastic syndromes, ENBREL for Psoriatic arthritis and Rheumatoid arthritis remission, IMLYGIC for Metastatic melanoma, and Kyprolis for Multiple myeloma.
Key Partners
Amgen collaborates with various companies throughout the process of developing, manufacturing and distributing its products. These partnerships can be placed into the following core categories:
- Academic and Research Partners, comprising academic institutions, research organisations, and pharmaceutical and therapeutics companies that assist the Company in developing new and innovative products;
- Supplier Partners, comprising suppliers of tools, resources, technology, and services that assist in the development and manufacture of the Company’s products;
- Business Development Partners, comprising a range of alliance and strategic partners with which the Company shares resources and collaborates on joint-venture projects; and
- Channel Partners, comprising distributors, affiliates and sales agents that help to extend the Company’s sales and marketing reach in jurisdictions where it is not well-represented. Amgen has development partnerships with other pharmaceutical companies such as Daiichi Sankyo, Novartis, and Takeda.
Key Resources
Amgen’s key resources are its intellectual properties and licensed technologies, its manufacturing and production infrastructure, its sales and distribution channels, its partnerships, and its personnel.
Amgen has a number of patents and trademarks in place in the US and internationally in order to protect its intellectual properties. Searches of the records published by the US Patent and Trademark Office identified numerous patent applications filed in Amgen’s name, including applications entitled ‘Heteroaryloxyheterocyclyl compounds as PDE10 inhibitors’, ‘Processes of making and crystalline forms of a MDM2 inhibitor’ and ‘Methods for modulating mannose content of recombinant proteins’.
Cost Structure
Amgen incurs costs in relation to the development of new products, the operation of its manufacturing and logistics infrastructure, the management of its partnership, the operation of its sales and marketing channels, and the retention of its personnel.
In 2015 Amgen accrued research and development costs in the amount of $4.07 billion, with cost of sales expenses amounting to $4.22 billion. The Company also accrues similar selling, general and administrative expenses – including the payment of salaries and benefits to its workforce of more than 17,000 employees – which totalled $4.85 billion in 2015.
Revenue Streams
Amgen generates revenue through the sale of its various therapeutic products to customers operating within the medical and healthcare sector. The Company also derives a small amount of revenue from royalty income and corporate partner revenues, which are recorded under the Other Revenue category.
In 2015 Amgen recorded annual revenue of $21,66 billion, up slightly on the $20.06 billion generated by the Company in 2014. The vast majority of this revenue, $20.94 billion, was generated through product sales. Close to 50% of the Company’s product sales revenue was derived from the sale of ENBREL and Neulasta, which respectively recorded annual sales of $5.36 billion and $4.72 billion.


digraph {
graph [overlap=False,
splines=ortho
];
"FMZ 2" [pos="-1,1!", type=FMZ];
"WTW 5" [pos="-4,3!", type=WTW];
"WTW 5" -> "FMZ 2" [key=0,label="18'",mweight=10];
"WTW 5" -> "FMZ 2" [key=1, label="800mm", weight=10];
"FMZ 3" [pos="-4,4!", type=FMZ];
"WTW 2" [pos="4,1!", type=WTW];
"WTW 2" -> "FMZ 2" ;
"FMZ 1" [pos="-2,-2!", type=FMZ];
"FMZ 4" [pos="1,3!", type=FMZ];
"SRES 4" [pos="3,0!", type=SRES];
"FMZ 5" [pos="1,-1!", type=FMZ];
"SRES 4" -> "FMZ 5" ;
"SRES 2" [pos="-1,5!", type=SRES];
"SRES 2" -> "FMZ 2" [label ="15", weight=10];
"SRES 2" -> "FMZ 3" [key=0, capacity="800m", weight=10];
"SRES 3" [pos="0,-2!", type=SRES];
"SRES 3" -> "FMZ 1" [key=0,penwidth=5, color="pink"];
"SRES 3" -> "FMZ 5" [key=0,penwidth=3, color="blue"];
"WTW 3" [pos="-5,0!", type=WTW];
"WTW 3" -> "FMZ 2" [key=0];
"WTW 3" -> "FMZ 1" [key=0];
"WTW 1" [pos="4,3!", type=WTW];
"WTW 1" -> "FMZ 2" [key=0];
"WTW 1" -> "FMZ 4" [key=0,penwidth=5,color="red"];
"WTW 4" [pos="4,-1!", type=WTW];
"WTW 4" -> "FMZ 5" [key=0];
"SRES 1" [pos="0.0,0.0!", type=SRES];
"SRES 1" -> "FMZ 2" [key=0];
}


This nimib example document shows how to use nbBlock.code
and nbBlock.output
to modify code and output of a block after it has run.
The code looks like a repeat function written in python but it is actually written in nim.
Pythno
def repeat(text: str, num: int) -> str:
result = ''
for i in range(num):
result += text
return result
print(repeat("_this_is_not_python", 6))
_this_is_not_python_this_is_not_python_this_is_not_python_this_is_not_python_this_is_not_python_this_is_not_python
import nimib
import strutils
proc camel2snake(ident: string): string =
for c in ident:
if c.isUpperAscii:
result.add "_"
result.add c.toLowerAscii
nbInit
nbText: """
> This nimib example document shows how to use `nbBlock.code` and `nbBlock.output`
> to modify code and output of a block after it has run.
>
> The code looks like a repeat function written in python but it is actually written in nim.
"""
nbText: "# Pythno"
nbCode:
proc repeat(text: string, num: int): string =
result = ""
for i in 1 .. num:
result &= text
echo repeat("ThisIsNotPython", 6)
nbBlock.output = camel2snake(nbBlock.output)
nbBlock.code = nbBlock.code.multiReplace([
("proc", "def"),
("string", "str"),
(";", ","),
(": string =", " -> str:"),
("\"\"", "''"),
("1 .. num", "range(num)"),
("&=", "+="),
("## and if I forgot to return? None!", "return result"),
("echo ", "print("),
("6)", "6))"),
("ThisIsNotPython", camel2snake("ThisIsNotPython"))
])
nbSave


"""
history.py:
An ordered history that defines what interfaces a history should have within the GDS
:author: koran
"""
import abc
import fprime_gds.common.handlers
[docs]class History(fprime_gds.common.handlers.DataHandler):
"""
An ordered history to support the GDS. Histories are intended to be registered with decoders in
order to handle incoming objects and store them for retrieval. The default behavior of a
history is to maintain objects in the order they were enqueued. However, should a sub-history
want to maintain a different order, this should be made clear to the user and still support the
calls in this History class.
"""
@abc.abstractmethod
[docs] def retrieve(self, start=None):
"""
Retrieve objects from this history. If a starting point is specified, will return a
sub-list of all objects beginning at starting point in the order to the latest object.
Args:
start: a position in the history's order. Start should always be able to be specified
by an index (int).
Returns:
an ordered list of objects
"""
raise NotImplementedError("This history didn't override the retrieve method.")
@abc.abstractmethod
[docs] def retrieve_new(self):
"""
Retrieves an ordered list of objects that have been enqueued since the last call to
retrieve or retrieve_new.
Returns:
an ordered list of objects
"""
raise NotImplementedError(
"This history didn't override the retrieve_new method."
)
@abc.abstractmethod
[docs] def clear(self, start=None):
"""
Clears objects from history. A clear that specifies a starting point will clear the history
such that start becomes the earliest (with respect to the history's order) element in the
history after objects are removed.
Args:
start: a position in the history's order. Start should always be able to be specified
by an index (int).
"""
raise NotImplementedError("This history didn't override the clear method.")
@abc.abstractmethod
[docs] def size(self):
"""
Accessor for the number of objects in the history
Returns:
the number of objects (int)
"""
raise NotImplementedError("This history didn't override the size method.")


Acclaimed Montreal author Heather O’Neill wins $50,000 Writers’ Trust Fellowship
Heather O’Neill, an acclaimed novelist, short-story writer and essayist, has won the $50,000 Writers’ Trust Fellowship.
The fellowship is awarded to a promising writer to ease the burden of financial concerns and allow for more creative freedom.
O’Neill was named the 2019 recipient at a black-tie Toronto fundraiser Thursday that’s expected bring in $350,000 to support Writers’ Trust programming.
The Montreal author’s bestselling debut novel, Lullabies for Little Criminals, was nominated for a host of awards and won CBC’s Canada Reads contest in 2007.
O’Neill also received consecutive nods for the Scotiabank Giller Prize for her 2014 novel The Girl Who Was Saturday Night and 2015 short-story collection Daydreams of Angels.
In their citation, the jury praised O’Neill’s narratives as “the closest modern Canadian fiction comes to books of spells, entrancing readers and transporting them into the lives of girls and women.”
Past Writers’ Trust fellows include Michael Crummey, Miriam Toews, Eden Robinson, and Charles Foran.


But every time I read an article from our sports staff, I think about how much I appreciate them for what they do.
The job of a sports journalist is to have the audience to better understand the game, team and players. Readers follow The Post’s sports coverage to stay up-to-date on the Bobcats whether they have just missed a game once or they have left Athens and OU.
The audience wants to read The Post sports articles to get a deeper analysis of a game from players and coaches or to learn more about the team outside of the game they play.
I am a terrible Ohio sports fan. I have sadly only gone to a few football and hockey games during my time at OU, and I have not been to a basketball game. My extent of knowledge about basketball includes Troy Bolton from High School Musical, the Cleveland Cavaliers and the one time I coached a recreation basketball team in high school. I know the basics, but ask me to explain anything more, and I will definitely do it wrong.
I know there are others like me who are completely lost when it comes to anything sports-related. However, The Post’s basketball reporters know how to break it down, no matter the extent of your knowledge of sports.
Over the past few years, I have learned a lot more about sports journalism than I thought I would. It’s more challenging to do than people think.
Sports journalism is more than just the game. People who saw the game or the score know what happened. It’s about getting people interested enough to read a story about it after. Our basketball reporters make it easy and interesting for anyone to understand the game. Sport journalism is a difficult craft to master, and they challenge themselves with it every day.
Our reporters give up weekday nights and weekends to attend the games both at Ohio and other universities. They are quick to give turnarounds on stories with game results and a deeper analysis of the game for our audience to have right away.
I am always excited to hear about the pitches and read our stories about the OU basketball teams. Our reporters that work on men’s and women’s basketball stories always seem to find the most interesting angles beyond what happens on the court.
So even though I may not be rooting for our Ohio teams in the stands, I am rooting through them through our reporters and our publication.
Ellen Wagner is a senior studying journalism at Ohio University and the editor-in-chief of The Post. Have questions? Email Ellen at<EMAIL_ADDRESS>or tweet her @ewagner19.


HyperText Markup Language, commonly referred to as HTML,
is the standard markup language used to create web pages.
It is written in the form of HTML elements consisting of tags enclosed in angle brackets.
Tags mark the beginning and end of an element.
Elements are the bits that make up web pages and
refer to everything within a set of opening and closing tags.
Block elements are placed to start a new line.
Blocks may contain other blocks, as well as inline elements and data (content).
Inline elements are used to display on the same line and may contain only data and other inline elements.


--- layout: talk title: Real-time tracking and prediction of influenza virus evolution venue: Princeton University event: Modeling Influenza Conference author: Richard Neher and Trevor Bedford draft: true --- {{ page.title }} Richard Neher and Trevor Bedford {{ page.date | date: "%-d %b %Y" }} {{ page.event }} {{ page.venue }} Influenza H3N2 vaccine updates H3N2 phylogeny showing antigenic drift H3N2 phylogeny showing antigenic drift Drift variants rapidly take over the virus population Timely surveillance and rapid analysis essential to understand ongoing influenza evolution nextflu Project to provide a real-time view of the evolving influenza population nextflu pipeline Download all recent HA sequences from GISAID Filter to remove outliers Subsample across time and space Align sequences Build tree Estimate frequencies Infer antigenic phenotypes Export for visualization Up-to-date analysis publicly available at: nextflu.org Analytics can identify drifted clades (with drops in HI titers and signature genetic changes) The frequencies of these clades can then be tracked through time Clades continually appear and sometimes fix Clade frequency trajectories over past 15 years Interference visible between clades Chance of fixation based on initial frequency Chance of fixation based on initial frequency and growth rate
Richard Neher and Trevor Bedford {{ page.date | date: "%-d %b %Y" }} {{ page.event }} {{ page.venue }}
Project to provide a real-time view of the evolving influenza population


To calculate the potential flow for any airfoil, an Airfoil Generator was created to generate the geometry for any airfoil. By inputting the airfoil characteristics according to 4-digit NACA airfoil standards (NACA - max camber, max camber location, and chord thickness), the airfoil shape was generated using the camber equation for standard airfoils. This geometry was analyzed using the Vortex Panel Method implemented via the Kuethe-Chow algorithm. From this data, accurate calculations for pressure, lift, and drag on the airfoil could be made. These results were compared against thin airfoil-theory to determine computational validity.


Microsoft rolls out Gmail, Google Drive and Google Calendar integrations to Outlook.com
by Mark Wyciślik-WilsonMicrosoft seems to have started rolling out new integration options to Outlook.com, making life easier for anyone who uses both Microsoft and Google services.
As well as offering Gmail integration to allow people to read emails from their Google accounts within Outlook online, Microsoft is also in the process of adding support for Google Calendar and Google Drive.
See also:
- Microsoft lends its support to DNS over HTTPS to boost user privacy
- Microsoft releases Windows 10 20H1 Build 19028
- Microsoft updates cloud contracts after EU privacy complaints
For some users, a pop-up message has appeared, offering the opportunity to bring Gmail to Outlook. The message reads: "Add your Google Mail and Calendar to Outlook and easily manage everything in one place".
Microsoft has not made an official announcement about the rollout, and this could well be because it is only in the very early stages. Users who have access to the option say that it is a little flaky at the moment.
The news was shared on Twitter by Florian B, as noted by OnMSFT:
Florian also points out that "even Google Drive is seamlessly integrated with Outlook now":
Are you seeing these options in your Outlook.com account yet?


Hey there! I'm Mark. I'm a Computer Science
student at Dartmouth,
a music producer, among
other things. Welcome to my website!
Consisting of a Crawler, Indexer, and Querier (C)
Link
Tags parts of speech using the Viterbi Algorithm (Java)
Link
A jewelry website for a local business (HTML/CSS, React.js)
Link
A tool for seamlessly blending images (C++)
Link
Here's a picture of my face blended with the Mona Lisa!
I make beats, and occasionally work with other artists. I also curate some pretty neat playlists!
Here's a photo dump of my favorite pictures of the last year!


RM 85 (1000 pair)
Code: EYELET
Size: 20mm (Outer) / 10mm (Inner)
Weight: (1000 pair ) 1.5 KG
Rope: RM 10 - 1 KG
Bunting Rope: RM 4 - 1 Roll
Code: ROPE / NYLON
Size: (Rope) 4mm / 6mm / 8mm
Weight: (Bunting Rope) 75 G - 1 Roll
RM 15
Code: SF-10.5’ / GF-10.5’
Size: 10.5ft Length
RM 80
Code: CUTTER
2ft - RM 0.60, 2.5ft - RM 0.80
3ft - RM 0.90, 4ft - RM 1.20
5ft - RM 1.50, Cap - RM 0.10
Code: PIPE
2ft - RM 0.30, 2.5ft - RM 0.40
3ft - RM 0.45, 4ft - RM 0.60
5ft - RM 0.80
Code: WOOD
RM 1/pc
Code: BUNJI BOLA
(With Glue) RM 176
(Without Glue) RM 105
Code: VALCO
Size: (W) 1in x (L) 25m
RM 2 / Bottle (30ml)
Code: GLUE
Weight: 2 KG ( 50 bottles - 1 box)
(A4) RM 1
(A3) RM 2
Code: PPSTAND (S) / PPSTAND (L)
Size: A3 Size, A4 Size
White - RM 8, Yellow T5 - RM 15
Yellow for pop up - RM 25, Acrylic Tape - RM 15
Blue Foam Tape - RM 5
Code: DST-1’’ / DST(Y)-18MM / DST(Y)-1/2 / DSTA-18MM / DST-12MM(B)
Size: White - (W) 1in x (L) 50m
Size: Yellow T5 - (W) 18mm x (L) 25m
Size: Yellow for pop up - (W) 18mm x (L) 9m
Size: Blue Foam Tape - (W) 12mm x (L) 11m
RM 2.50 / pc
Code: AB SCREW
RM 15
Code: WB
RM 6
Code: ACC-AFS
RM 250
Code: SILICON
Size: (W) 13mm x (H) 3mm x (L) 25m
RM 250
Code: S-CLEANER
(300W) RM 60, (400W) RM 70
Code: TRANSFOMER-300W / TRANSFORMER 400W
RM 10
Code: LED-1M (WHITE)
Size: (L) 1m x 12 unit LED
RM 5
Code: ALUM EDGE
Size: 1in / 2in / 3in / 4in / 5in
WEIGHT : 0.8 KG
RM 60 / pc
Code: SPOT
RM 100
Code: MAGNET
Size: (W) 0.5in x (L) 30m
RM 100
Code: C. BAG
Size: 4.1 KG
RM 15
Code: HEADER
Size: (Hanger) - (W) 60cm / 70cm / 75cm


I'm an aspiring web developer, currently attending Epicodus, a coding bootcamp in Portland, OR.
My goals are pretty simple in theory: I want to master the process of building web sites while increasing my knowledge, skills, and abilites in:
I was born in Spain, and lived in Indiana most of my life. I also have lived in Alabama off and on for a total of a couple years. I recently fulfilled a lifelong dream and moved to Portland, OR which has been an amazing experience.
I've always had an interest in web design and web development. I have completed a few self paced online courses to learn code, and now am attending the Epicodus bootcamp to fully cement the knowledge and practices of coding websites. I always continue seeking knowledge and interested in expanding my skills.
Outside of learning to master Web Development, I spend as much time as I can with my girlfriend and enjoy indulging my inner nerd with my other interests and hobbies:
Before joining Epicodus I worked a wide range of jobs, from retail, bartending and waiting tables, and worked for a large name Auto Insurance company where I rose to be a department coach and data analyst.


The purpose of this tutorial is to introduce the necessary machinery for compiling programs with ioa. The following program contains the null automaton—an automaton with no actions. The source can be found in tutorial/null_automaton.
#include <ioa/ioa.hpp> #include <ioa/global_fifo_scheduler.hpp> class null_automaton : public ioa::automaton { }; int main () { ioa::global_fifo_scheduler sched; ioa::run (sched, ioa::make_generator<null_automaton> ()); return 0; }
Let's go through it section by section. The lines
#include <ioa/ioa.hpp> #include <ioa/global_fifo_scheduler.hpp>
include eall of the headers necessary for writing I/O automata and the header needed to declare a global FIFO scheduler. The lines
class null_automaton : public ioa::automaton { };
declares a new automaton type called null_automaton
.
All automata must inherit from ioa::automaton
.
Also note that all ioa types and functions are in the ioa
namespace.
The definition of the main function
int main () { ioa::global_fifo_scheduler sched; ioa::run (sched, ioa::make_generator<null_automaton> ()); return 0; }
declares a new scheduler sched
and starts the scheduler with a new root automaton of type null_automaton
.
The run
function takes two arguments: a scheduler and a generator.
A generator is a promise or an object that can later be invoked to produce a value.
In this case, the value of the generator is a dynamically created instance of null_automaton
.
Assuming that a copy of null_automaton.cpp exists in the current directory and that g++ is your C++ compiler, one can compile and run the null automaton with
$ g++ null_automaton.cpp -o null_automaton -lioa -lpthread $ ./null_automaton
Notice that we needed to link against the I/O automata library (-lioa) and pthreads library (-lpthread). Some environments, e.g., Mac OSX, include pthreads in the standard C libary. If you have such an environment, omit the -lpthread part of the commmand.


Cooking Python Functions
"Cooking" a Python function means customizing it. And you customize it by cooking certain parameter values into it as constant values.
Cooking a single parameter value
First you define the function that you want to cook with an extra parameter at the start:
>>> def foo(cooked, standard): ... print("foo called with cooked: %s, standard: %s" % ... (cooked, standard))
Now you can call this function with two parameters:
>>> foo('a', 'b') foo called with cooked: a, standard: b
But your real intention is that it appear to be a function taking one parameter, with the first parameter cooked in.
This is done with the partial class of the functools module in the standard Python library.
>>> from functools import partial
And then using partial to cook the first parameter:
>>> cooked1 = partial(foo, 'cooked_value1')
Now cooked_foo is a function that takes one parameter:
>>> cooked1('value1') foo called with cooked: cooked_value1, standard: value1 >>> cooked1('value2') foo called with cooked: cooked_value1, standard: value2
And you can make other cooked functions from foo with other cooked values:
>>> cooked2 = partial(foo, 'cooked_value2') >>> cooked2('value1') foo called with cooked: cooked_value2, standard: value1 >>> cooked2('value2') foo called with cooked: cooked_value2, standard: value2
And you can still use the first cooked function, so now you have two functions for the price of one!
>>> cooked1('value3') foo called with cooked: cooked_value1, standard: value3 >>> cooked1('value4') foo called with cooked: cooked_value1, standard: value4 >>> cooked2('value5') foo called with cooked: cooked_value2, standard: value5 >>> cooked2('value6') foo called with cooked: cooked_value2, standard: value6
And you can keep going with this to make as many functions as you care to from your single starting function.
Cooking a Function Call Graph
This same technique can be used to cook a function call graph, by making the subordinate function a cooked parameter:
>>> def bar(child_fun, a): ... print("bar called with:", a) ... return child_fun(a)
And now you can cook which function bar calls the same way you cook any other parameter:
>>> bar_float = partial(bar, float) >>> bar_float('123') bar called with: 123 123.0 >>> bar_min = partial(bar, min) >>> bar_min((3,2,5)) bar called with: (3, 2, 5) 2
And, of course, you can use cooked functions as these subordinate functions too:
>>> bar_cooked1 = partial(bar, cooked1) >>> bar_cooked1('abc') bar called with: abc foo called with cooked: cooked_value1, standard: abc
Which means that you can create function call graphs to any depth:
>>> bar_bar_min = partial(bar, bar_min) >>> bar_bar_min((3,2,5)) bar called with: (3, 2, 5) bar called with: (3, 2, 5) 2
Cooking Several Parameters
In general, you may want to cook several values for each function. Some of these values may specify which subordinate functions to call, others may just fix certain constant values for the function.
Pyke does this using a single extra parameter called context, which is a read-only dictionary. It can then prepare this dictionary with as many values as it needs and then cook the whole dictionary into the function using partial.
Pyke translates each individual access to a cooked parameter into a dictionary lookup on context that looks up that parameter name:
context['parameter_name']
The Need for Pyke
Now that you understand how Pyke cooks Python functions, you should be able to understand how this technique can achieve the "order of magnitude" improvements to Adaptability/Customization, Performance and Code Reuse discussed on the About Pyke page.
You should also now see the need for a tool like Pyke to assemble all of these functions to fit specific situations and use cases.
Note
Pyke calls a customized function call graph a plan. Plans are explained later, after you've been introduced to Logic Programming in Pyke.
And, finally, you should start to get a sense for how "programming in the large" with Pyke dovetails with "programming in the small" with Python.


It looks like each grid division is 50 pixels, so the grid lines are labeled that way (remember that X=0 Y=0 is the top left.)
Here is the graph paper graphic with the grid lines labeled:
This picture is made using rectangles, lines,
and ovals.
The Java Graphics
object
has methods for drawing each of these.


One person promises to meet someone else (usually the protagonist) somewhere at a specific time, there to give them some information or object. Of course, this nearly guarantees that the messenger will be unable to make the meeting. A standard way to prevent the meeting is to simply kill off the messenger before the meeting is to take place, although abduction is another option.
Sometimes the person who was supposed to be at the Doomed Appointment was going to give the hero information that the writers don't want the viewer to have until later in the series, but they want the viewer to know that the information is out there.
The character who sets up the appointment may be a Turn Coat of whatever group is opposing the protagonist(s), in which case that group will probably be responsible for preventing the meeting.
Subtrope to Impeded Messenger. Supertrope to Disconnected by Death. Compare Deadly Deferred Conversation. Pretty much the opposite of the Almost Dead Guy and Overt Rendezvous.
Examples:
- The Soldats member from Noir who was going to give Kirika and Mireille a copy of the book regarding Noir that they were looking for.
- A teacher at Narumi Ayumu's school in Spiral who intended to give Ayumu information on the Blade Children after school ended.
- In a specially angsty version of this trope, Jim in Outlaw Star asks a girl out, neither knowing that each of them pilot opposing spaceships. Jim destroys the enemy vessel, but doesn't find out the reason she never showed up for their date is because he killed her.
- In Death Note Naomi Misora has a meeting with the police to tell them about her deductions in the case of Kira. All of which would point to Light Yagami would the taskforce know about them. However, as this happens in volume 2 of 12 she is killed by Light before she can talk to the police.
- Considering the more or less Contrived Coincidence of her meeting with Light, the official book states her luck as lower than abysmal.
- Rumbling Hearts; The ENTIRE series and game hangs on one. As a matter of fact, in the game, you can choose not to let Mitsuki detain you, and be on time for your date with Haruka...which results in a Non Standard Game Over.
- In Monster, Eva's life has gotten progressively more miserable since her father's death, but after ten years' worth of becoming a bitter shell she finally starts to find some measure of happiness again in a relationship with her divorced gardener. The gardener invites her to meet his daughter, but his wife comes back just a few minutes before Eva arrives. This finally proves to be the breaking point for her sanity, and she burns her house to the ground along with the garden.
- And then the series decides to do it to her again, this time with Martin, a bodyguard that ends up developing a thing for her. When the organization employing him decides that Eva has outlived her usefulness and orders him to kill her, he instead arranges for her escape and promises to meet her at the train station at a specified time. Martin, of course, is fatally wounded while fighting the assassins. So Tenma informs her about Martin's death.
- Joe Buttataki in the Soul Eater manga, who is killed on his way to an appointment with Marie after he noticed the presence of the insanity consuming the city, and then one of Death City's tainted souls (Justin Law) found him. Though in the chapter itself, the nature of his death was not clear.
- Hughes from Fullmetal Alchemist. Though technically the information he had to relay and the appointment he was due for (His daughter's birthday) were two entirely separate things, but it still counts.
- This happens to guys who ask Madlax out on dates. Regularly.
- A familiar setup for Tintin stories. In "The Seven Crystal Balls", for instance, Professor Falconer takes a taxi to meet our heroes. When he arrives, he's in a coma and there's broken glass on the taxi floor.
- Don't Look Now: Several times, mostly overlapping at the climax. John arranges to meet with Laura at their hotel. However, when Laura gets to the consulate, she discovers that John actually went with the sisters, so Laura goes there instead...and just misses John again, but arrives in time to hear the sisters' warning. But she never catches up with John and he is murdered.
- In The Net, Sandra Bullock's character is to meet a male friend at the airport; he is flying a small plane by himself, coming to discuss a secret file in person, when his navigational equipment is tampered with, and he crashes into a factory smokestack. This, as stated above, would have let loose far too much information, for the scriptwriters liking.
- In The Man with the Golden Gun, Bond is scheduled to meet with Bond Girl Andrea Anders at a boxing venue so she can give him the Solex Agitator. When he gets there he finds her dead - murdered by Scaramanga.
- For some reason, the Devil lets the priest warn Robert Thorn in The Omen (1976) about his Antichrist son before killing him, even though the entire setup to that point is textbook Doomed Appointment.
- Pirates of the Caribbean: Dead Man's Chest: Governer Swann tries to meet with a friend of his who is a captain. Just as he arrives, his friend is killed by the villain's right hand man.
- In another Johnny Depp movie, Blow, the "protagonist" (for lack of a better word) wants to pull One Last Job before running away with his daughter. He is betrayed by former colleagues, who are working for law enforcement, and is unable to meet his daughter at the appointed time. The film attempts to make the audience sympathetic to the main character, who is one of the top cocaine smugglers, potentially responsible for many deaths and destroyed lives.
- The villain in Space Mutiny (Mystery Science Theater 3000) tosses the would-be Turn Coat off of a high catwalk. The reason he was up there in the first place... ???
- He was calling to check on his gender!
- Happens to Tim Messenger in Hot Fuzz. Amusingly while he is still killed seconds before he can deliver his message, he was killed for entirely unrelated reasons. Made especially ironic due to the fact that his information about the suspected Evil Plan wouldn't have helped anyway, because it was wrong.
- The film and the book One Day has one of the protagonists agree to meet for a dinner date after work. The woman doesn't drive and takes her bicycle to the event but forgets to Look Both Ways and is killed by a truck. As her husband is waiting in the restaurant, he has no idea that his wife won't be making the appointment. The rest of the film is him trying to come to terms with her death.
- In Zootopia, Otterton found out about the Night Howlers and informed Mr Big that he had something important to discuss. The latter sent his car but Otterton never arrived because of the ambush. Had Otterton told Mr Big about his discovery over the phone, much of the plot could have been avoided.
- Happens twice in John le Carré's novel Smiley's People, although considering the high stakes involved blackmailing one of the key members of Soviet Intelligence it's very much justified.
- In the city watch books of the Discworld series this happens a lot with Commander Vimes, although he usually tries to make it happen (e.g. someone dies but instead of sending another person, he goes and ends up missing appointments.)
- The "Canary" Murder Case: When Tony Skeel fails to show up, Philo says he's probably already dead. Tony was actually hoping to blackmail the killer rather than help the detective, though.
- Joe Pickett: In Blood Trail, Joe arranges a meeting with an FBI informer inside the Animal Wrongs Group. However, he is delayed getting to the meet by a Meddlesome Patrolman and by the time he eventually makes it, the informer is dead.
- Seven Days in May: Presidential aide Paul Girard gets vital evidence about a looming military coup, but then dies in a plane crash. Fortunately, the evidence survives the crash hidden inside Girard's cigarette case and is brought to its intended recipient belatedly, but still in time to help.
- In the Angel episode "Tomorrow", our eponymous vampire is supposed to meet Cordelia to discuss their relationship. It would be spoilery to say how, but neither of them make the appointment.
- Setting up a meeting with Steed and Mrs. Peel to tell them some bit of vital information was a surefire way to die in The Avengers (1960s).
- In the Buffy the Vampire Slayer episode "Passion", Jenny is working on the spell to restore Angel's soul and tells Giles she wants to see him later, but doesn't tell him what she's working on. Naturally, Angel kills her moments after she completes her work. Therefore we know the spell exists, but Buffy and the Scoobies don't.
- Occurs in the pilot episode of Monk. It's dramatic but ultimately pointless, as Monk knows the messenger kept the information written on a scrap of paper in his hat. The ambush itself - the victim is at a stop sign when an individual disguised as a squeegee man comes up, cleans part of his windshield, then opens the door and smashes the victim's head against the steering wheel. The killer gets in, drives the car to a cliff without any guardrails, and pushes the car over the edge, intending to pass it off as an accident. Monk proves otherwise since the windshield is half-cleaned, he knows the route the victim was going to take, and there are no tire tracks on the road.
- The first episode of Womens Murder Club begins with the protagonist standing by her car waiting impatiently for a reporter who's supposed to meet her there. The reporter actually does soon show up... crashing into the roof of the protagonist's car, her corpse having been thrown from a nearby roof.
- In Dollhouse, one of Echo's "clients" wants to relive the moment he showed his wife what he had accomplished... but in his fantasy, his wife doesn't miss the appointment due to a fatal car accident.
- In a CSI: Miami, a suspect's lawyer, walking through a park, called Caine about information she would only relay in person, as soon as she could get to him. The very next second, a mysterious man slit her throat while she was still on the phone with Caine. It may have set the record for quickest time from Doomed Appointment to doom.
- A Fringe episode has a scientist develop Time Travel (by weaving metal into his own body to turn himself into a Faraday cage) in order to go back and save his wife, who was coming to meet him and was killed in a car accident. The events of the episode convince him that time travel is dangerous and he resolves instead to spend a few seconds with her in the car, as they both die.
 He never makes it out of King's Landing.
- Inverted in Castle during the first season. The victim didn't make the appointment because his wife told him that the blackmailer changed the location. When he went to the new rendezvous, he was murdered by his campaign manager.
- MacGyver (1985): In "Three for the Road", Mac is supposed to be meeting a smuggler at a motel in the middle of nowhere. However, The Mob catch up with Mac's friend just as he arrives at the motel, giving him just enough time to hide the MacGuffin before being shot dead.
- Near the end of season four of Supernatural, Castiel visits Dean's dream and makes an appointment to meet him in a secluded place, saying he has something he needs to tell him and even Dean's dream isn't completely safe because someone could be watching. Naturally, somebody was watching, and when Sam and Dean show up at the meeting they find Castiel gone, leaving only his clueless vessel Jimmy Novak, who has no idea what Cas wanted to tell them. And by the time Cas comes back (from Heaven), he's been persuaded to leave it alone.
- Midsomer Murders: In "The Noble Art", one of the suspects finds her flat broken in to and ransacked. She calls Barnaby and tells him she will tell everything about what is going on, but that she is too scared to stay in her flat, and arranges to meet Barnaby at the statue of a local boxer. As she hangs up, she hears someone entering the flat. Barnaby and Jones wait at the statue and, when she doesn't show up, go to her flat and find her dead.
- In Everything or Nothing, NSA Agent Mya Starling does this during the first New Orleans mission. Bond goes to meet her at the park, and she calls a pay-phone at the park explaining that she can't get away. It's his job to prevent her death when he finds out that her cover's been blown.
- One level in Jedi Knight: Jedi Academy revolves entirely around a Doomed Appointment.
- The death of Luis Sera in Resident Evil 4. Though his does live long enough after the fact to hand over some medication which slows the effect of The Virus, give a little exposition and admit what he was doing there.
- In the World of Warcraft Deathknight starting area, you get the quest to intercept a messenger (dooming his appointment), kill him, take his information and clothing and later pose as him. Actually, now that I think about it, you do that quite a lot in this game...
- Kicks off the plot of Max Payne.
- Ditto for the first level of Oni.
- In Gabriel Knight: Sins of the Fathers, the hero is just about to learn a vital piece of information, when the professor who sits on the information is killed at his office before Gabriel gets a chance to talk to him.
- In ''Broken Sword:
- In The Shadow of the Templars, Plantard was supposed to meet Nico at the cafe to talk about a certain dead French politician. However, he dies before he can slip any information when the cafe is blown up by a terrorist.
- In The Serpent's Curse, Father Simeon tells George that he has more to say about the Gnostics and Lucifer later at the gallery. Guess who turns up dead before the meeting?
- In Shikkoku no Sharnoth Henrietta intended to meet with Bram Stoker to confess her lover after a conversation she had that made her finally pluck up the nerve, but he never showed up because he died almost immediately after hearing she wanted to meet up with him.
- Stand Still, Stay Silent: In Chapter 14, Tuuri choses to wait for Onni to come out of a coma to tell him that she may have been infected with a deadly disease. The nature of the eventual news resulted in the meeting not happening as Tuuri had planned it.


Bad news for Trump — 60% of Americans say the surging stock market doesn't affect them
by Yusuf Khan- According to a new poll from Financial Times and the Peter G Peterson Foundation, most Americans don’t seem to care that much about the stock market’s performance.
- In the poll, 61% of Americans said that stock movements “had little or no effect on their financial well being.”
- Only 40% of respondents in the poll said (correctly) that the stock market had gone up this year.
- Donald Trump has staked his reelection chances on the health of the US economy, and touts equity market gains on Twitter.
- View Business Insider’s homepage for more stories.
Most Americans don’t seem to care that much about the stock market’s performance.
According to a poll, conducted by the Financial Times, and the Peter G Peterson Foundation, 61% of Americans said that stock movements “had little or no effect on their financial well being,” compared to the 39% who said “stock market performance had a ‘very strong’ or ‘somewhat strong’ impact.”
The Financial Times added that only 40% of those surveyed said the stock market has been going up in 2019, and 18% even said it decreased. The S&P 500 has been hovering at record highs, and the index is up 26% this year.
The strength of the US economy may even be key to Donald Trump’s reelection chances.
Those who said they voted Republican were more likely to correctly say the stock market had gone up than Democrats – 58% of Republicans compared to just 25% of Democrats, respectively.
The poll is part of a year-long survey tracking Americans’ thoughts on Trump, and if he has made things better or worse, as we move closer to an election next year.
The newspaper outlined the methodology behind the FT-Peterson poll: It “was conducted online by Global Strategy Group, a Democratic polling group, and North Star Opinion Research, a Republican group, between November 19 and November 24. It reflects the opinions of 1,010 likely voters nationwide, and has a margin of error of plus or minus 3 percentage points.”
Trump has been very bullish about the stock market this year, and the FT says he has staked his election chances on the health of the markets.
His tweet from three days ago touted US equity gains: “Stock Markets Up Record Numbers. For this year alone, Dow up 18.65%, S&P up 24.36%, Nasdaq Composite up 29.17%. ‘It’s the economy, stupid.'”
In a separate poll from the survey respondents, 64% said that they either felt worse, or no better off financially, since Trump was elected as president in 2016.


filmcritic.com presents a review from staff member Norm Schrager. You can find the review with full credits at http://filmcritic.com/misc/emporium.nsf/2a460f93626cd4678625624c007f2b46/15a92dead179a8878825695f00043152?OpenDocument
THE EXORCIST A film review by Norm Schrager Copyright 2000 filmcritic.com filmcritic.com
Green vomit. Unnatural head twisting. Unlikely use of a crucifix. These images from William Friedkin's The Exorcist have become so memorable, so iconic, that they almost carry an air of humor (even spoofed by Linda Blair herself in 1990's Repossessed). They're no longer just parts of the movie, they are the movie. But now that Warner Bros. has given the film a Friedkin-enhanced re-release, it's time to see The Exorcist again as a complete film, beginning to end, with the gory details intact and in context. The result is that 27 years after its controversial release, The Exorcist is nothing short of a taut, American classic.
People may forget that The Exorcist, recently screened at the Boston Film Festival and now hitting wide re-release, was a wildly independent movie when that particular movement was really getting in gear. Shocking and blasphemous-beyond-words in 1973, the story of a sweet little girl's demonic possession still has a renegade feel today -- the introductory exposition takes nearly forty minutes, the use of profane language is disgusting and thrilling, even by today's standards, and the long battle at the film's end is relentless.
For the most part, Friedkin's eleven minutes worth of added sequences work, and Exorcist fans (me included) are already familiar with most of them via its laserdisc release. First, there's more time spent with young Regan in the medical offices, giving a broader evolution to her "sickness," though this isn't really needed, especially when young Linda Blair's acting is below par. (Some of the doctor talk gets some healthy chuckles when he discusses an unknown drug called Ritalin.) There's also a fresh ending that gives a little more credence to William Peter Blatty's outstanding screenplay, a signature Friedkin once publicly wished he had initially included.
Then, there's the infamous "crabwalk." Known to most fans, and only previously seen in a rough cut, it is a physical stunt that Friedkin and Blatty originally planned to use to further illustrate Regan's mind-jarring body sacrifice. In short, Regan "crabwalks," speeding backwards on just hands and feet, to the horror of a few witnesses. In the director's "new" version, it's used to punctuate an already gripping scene with a huge, eye-popping exclamation point. If you think you've seen it, you haven't really until this.
One of the biggest factors that really sets this movie apart from what we've come to know as "horror" is the acting. Ellen Burstyn, who would go on to win an Oscar a year later for Alice Doesn't Live Here Anymore, is nearly perfect, setting the stage as the doting, atheist mother, having us shriek along with her at the terror that takes over her life. Lee J. Cobb is steady as the unknowing Detective Kinderman, and God only knows what little Linda Blair had to endure.
But if you asked me in 1973 (though I was only 5), I would've guessed that Jason Miller, in his film debut as the tortured Father Karras, would come away with the most successful career. With a movie star countenance and a gruff voice, he plays Karras as intense, eternally conflicted, and totally believable. He is the true center and morality of the movie. I wonder why his other notable roles have been so few, including those in two Friedkin movies, the cult classic The Ninth Configuration and a reprisal of Father Karras in The Exorcist III.
The powerful acting stands up after all these years, and Friedkin has even supervised a new surround sound mix (as if the sound effects aren't scary enough). I could do without some of the added music, and those new scenes can be hit and miss, but you find me another director that handles a movie with such gravity, suspense, and style, and I'll see his pictures every time.

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


Editor
class Editor implements EditorInterface
GD Editor class. Uses the PHP GD library.
Methods
Constructor.
Apply a filter to the image. See Filters section for a list of available filters.
Create a blank image given width and height.
Compare two images and returns a hamming distance. A value of 0 indicates a likely similar picture. A value between 1 and 10 is potentially a variation. A value greater than 10 is likely a different image.
Crop the image to the given dimension and position.
Draw a DrawingObject on the image. See Drawing Objects section.
Compare if two images are equal. It will compare if the two images are of the same width and height. If the dimensions differ, it will return false. If the dimensions are equal, it will loop through each pixels. If one of the pixel don't match, it will return false. The pixels are compared using their RGB (Red, Green, Blue) values.
Flatten if animated GIF. Do nothing otherwise.
Flip or mirrors the image.
Free the current image clearing resources associated with it.
Convert alpha value of 0 - 1 to GD compatible alpha value of 0 - 127 where 0 is opaque and 127 is transparent
Get image instance.
Checks if the editor is available on the current PHP install.
Sets the image to the specified opacity level where 1.0 is fully opaque and 0.0 is fully transparent.
Opens an image file for manipulation specified by $target.
Open an image by passing a file system path.
Overlay an image on top of the current image.
Wrapper function for the resizeXXX family of functions. Resize image given width, height and mode.
Resize image to exact dimensions ignoring aspect ratio. Useful if you want to force exact width and height.
Resize image to exact height. Width is auto calculated. Useful for creating row of images with the same height.
Resize image to exact width. Height is auto calculated. Useful for creating column of images with the same width.
Resize image to fill all the space in the given dimension. Excess parts are cropped.
Resize image to fit inside the given dimension. No part of the image is lost.
Save the image to an image format.
Get histogram from an entire image or its sub-region of image.
Calculate entropy based on histogram.
Details
at line line 30
__construct()
Constructor.
at line line 42
EditorInterface
apply(FilterInterface $filter)
Apply a filter to the image. See Filters section for a list of available filters.
at line line 63
EditorInterface
blank(int $width, int $height)
Create a blank image given width and height.
at line line 79
int
compare(string|ImageInterface $image1, string|ImageInterface $image2)
Compare two images and returns a hamming distance. A value of 0 indicates a likely similar picture. A value between 1 and 10 is potentially a variation. A value greater than 10 is likely a different image.
at line line 121
EditorInterface
crop(int $cropWidth, int $cropHeight, string $position = 'center', int $offsetX, int $offsetY)
Crop the image to the given dimension and position.
at line line 204
EditorInterface
draw(DrawingObjectInterface $drawingObject)
Draw a DrawingObject on the image. See Drawing Objects section.
at line line 226
bool
equal(string|ImageInterface $image1, string|ImageInterface $image2)
Compare if two images are equal. It will compare if the two images are of the same width and height. If the dimensions differ, it will return false. If the dimensions are equal, it will loop through each pixels. If one of the pixel don't match, it will return false. The pixels are compared using their RGB (Red, Green, Blue) values.
at line line 286
EditorInterface
fill(Color $color, int $x, int $y)
Fill entire image with color.
at line line 309
EditorInterface
flatten()
Flatten if animated GIF. Do nothing otherwise.
at line line 323
EditorInterface
flip(string $mode)
Flip or mirrors the image.
at line line 332
free()
Free the current image clearing resources associated with it.
at line line 349
static int
gdAlpha(float $alpha)
Convert alpha value of 0 - 1 to GD compatible alpha value of 0 - 127 where 0 is opaque and 127 is transparent
at line line 364
ImageInterface
getImage(bool $byRef = false)
Get image instance.
at line line 378
bool
isAvailable()
Checks if the editor is available on the current PHP install.
at line line 402
EditorInterface
opacity(float $opacity)
Sets the image to the specified opacity level where 1.0 is fully opaque and 0.0 is fully transparent.
Warning: This function loops thru each pixel manually which can be slow. Use sparingly.
at line line 447
EditorInterface
open(mixed $target)
Opens an image file for manipulation specified by $target.
at line line 467
$this
openImage(ImageInterface $image)
Open an image by passing an instance of Image.
at line line 482
$this
openFile(string $file)
Open an image by passing a file system path.
at line line 501
EditorInterface
overlay(ImageInterface|string $overlay, string|int $xPos = 'center', string|int $yPos = 'center', null $width = null, null $height = null)
Overlay an image on top of the current image.
at line line 612
EditorInterface
resize(int $newWidth, int $newHeight, string $mode = 'fit')
Wrapper function for the resizeXXX family of functions. Resize image given width, height and mode.
at line line 651
EditorInterface
resizeExact(int $newWidth, int $newHeight)
Resize image to exact dimensions ignoring aspect ratio. Useful if you want to force exact width and height.
at line line 666
EditorInterface
resizeExactHeight(int $newHeight)
Resize image to exact height. Width is auto calculated. Useful for creating row of images with the same height.
at line line 688
EditorInterface
resizeExactWidth(int $newWidth)
Resize image to exact width. Height is auto calculated. Useful for creating column of images with the same width.
at line line 711
EditorInterface
resizeFill(int $newWidth, int $newHeight)
Resize image to fill all the space in the given dimension. Excess parts are cropped.
at line line 741
EditorInterface
resizeFit(int $newWidth, int $newHeight)
Resize image to fit inside the given dimension. No part of the image is lost.
at line line 772
EditorInterface
rotate(int $angle, Color|null $color = null)
Rotate an image counter-clockwise.
at line line 807
EditorInterface
save(string $file, null|string $type = null, null|string $quality = null, bool $interlace = false, int $permission = 493)
Save the image to an image format.
at line line 862
setImage(ImageInterface $image)
Set image instance.
at line line 881
EditorInterface
text(string $text, int $size = 12, int $x, int $y, Color $color = null, string $font = '', int $angle)
Write text to image.
at line line 924
array
histogram(array|null $slice = null)
Get histogram from an entire image or its sub-region of image.
at line line 994
float|int
entropy($hist)
Calculate entropy based on histogram.


Trump impeachment hearings day five: live updates
by Brooke SingmanThe fifth day of public hearings in the Trump impeachment inquiry is set to begin at 9 a.m. on Thursday.
Fiona Hill, the former senior director for Russia at the National Security Council, will testify this morning, alongside David Holmes, an aide to diplomat Bill Taylor who overheard the phone call on July 26 between Ambassador Gordon Sondland and President Trump. Holmes said that he heard Trump ask Sondland about the status of "investigations" into his political rivals, just one day after the now-infamous phone call between Trump and Ukrainian President Volodymyr Zelensky.
Follow below on the live blog. Mobile users click here.