Titanic A film review by Marty Mapes Copyright 1997 Marty Mapes
***1/2 (out of 4) Modern-day treasure hunter Brock Lovett (Bill Paxton) hears the story of one survivor from the sinking of the Titanic. When her story is done, Brock says that even though he's been working on the Titanic for 3 years, he never got it. Until he heard her story, he never saw past the wreckage on the bottom of the Atlantic.
The same might be said of the audience after seeing the movie. Without a good story, the sinking of the Titanic could have been just another special effects movie, more interested in the ship itself than on how it affected lives. Instead, Cameron made the Titanic the BACKGROUND for his story.
Titanic is great. The melodramatic love story is the perfect foreground for the sinking of the largest passenger ship in history. The film is a technical marvel, and even without the spectacular sinking, the story is engaging.
The melodrama involves Jack (Leonardo DiCaprio), a poor boy who wins a ticket to America on the Titanic in a poker game, and Rose (Kate Winslet), a young socialite who is traveling to America for her wedding to Cal. Though Rose doesn't love Cal, she must marry him because she and her mother are penniless, unbeknownst to the rest of high society.
Jack falls for Rose as soon as he sees her and is determined to win her in spite of the class barrier. Rose doesn't even know Jack exists until he comes along as she contemplates throwing herself into the Atlantic.
The two fall deeply in love and talk of how they might escape together when the ship lands. If this were any other ship, the conflict of two lovers fighting class barriers would have been interesting enough to make a movie. Instead, their relationship faces an even bigger conflict . . . .
There is a love scene in the movie that, for me, is one of the best in quite a while. The two lovers don't have sex, or even touch. Rose knows that Jack is an artist, so she insists that he sketch her in the nude. Both are just shy enough and just eager enough to make the amorous tension wonderful.
DiCaprio is great in the male lead role. Ever since his astonishing debut in WHAT'S EATING GILBERT GRAPE, his presence brings high expectations. Not all of his films have been great (THE BASKETBALL DIARIES,for example) but he shines in TITANIC. His character loves life, and DiCaprio "lets his heart soar," as Cameron aptly put it.
Kathy Bates was good in a small, sympathetic role: the unsinkable Molly Brown. In Jack and Rose's story, Molly was a bridge between their social classes. She had new money but started out poor, so she was interested in seeing Jack succeed among the upper crust.
The biggest flaw for me is the inexcusable 2-dimensionality of the movie's "villain," Cal (Billy Zane). I have already called the story a melodrama, and in melodramas, the villains are made of evil. But when Cal had already lost the girl, and a chance for redemption presented itself, he continued to be a prick.
The special effects of the launching and the sinking of Titanic are fascinating. Roger Ebert even called them seamless, but he was wrong. Some scenes are clearly made of computerized cartoons and composites. For example, when the ship launches and the camera flys overhead, some of the figures on deck move very artificially. These effects may be more elaborately made than ever before, but they are still not seamless.
No amount of computer animation can yet pass for reality, which is probably why Cameron chose to build a huge set that could actually sink. The investment was worthwhile, for if the entire sinking only happened on a computer, the effect would not have worked. The reality of the wood and metal and water needed to be felt and seen. (See the last plane crash in AIR FORCE ONE for a "realistic" cartoon that just isn't real enough.)
Because everyone knows the fate of the Titanic, Cameron (who also wrote the script) included some ironic foreshadowing. There's almost too much and it distracts in parts. Nevertheless, I found myself rooting for the lovers to make it in America, in spite of their certain fate.
And because the previews tell you where the lovers are when the ship goes down, one would expect a predictable ending. But one doesn't need surprise to create tension, as Cameron deftly showed. The slow march of floodwaters, the violent cracking of a doomed ship, and the unpredictable human response to certain death add to an incredibly tense, emotionally draining experience.
In fact, some might say that there is no best "part" of the movie; that the best thing about it is the entire experience, the spectacle of it all. The daunting length and melodramatics of the movie ask a lot from audiences, but that contributes to the sense of TITANIC being more an event than a movie. Also, the sheer size, not just of the subject matter, but of the length, the cast and the cost of the film makes it a once-in-five-years movie.
Check out more current movie reviews at http://www.indra.com/~mmapes/
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


Cleopatra (1963) Starring Richard Burton, Elizabeth Taylor and Rex Harrison. Reviewed by Michael A. Turton<EMAIL_ADDRESS>Despite its inclusion in a decade of heroic epics that offered such classics as _Ben Hur_, _Spartacus_, and _Lawrence of Arabia_, _Cleopatra_ has failed to find the enduring popularity of those staples. Yet it has many of the elements that made those stories such hits: famous actors, a big budget, spectacle, an timeless story.
_Cleopatra_ tells the story of the queen of Egypt, played by an overwrought Elizabeth Taylor, and her love affairs with Julius Caesar (Rex Harrison in a performance any mannikin could have done just as well) and Mark Anthony (Richard Burton, magnificently). Roddy McDowell is wonderful as the ambitious and unscrupulous Octavian. Martin Landau has a secondary role.
Cleopatra was shot at the tail end of the frenzy of epics that marked the 1950s and early 1960s, yet its as if its filmakers were still struggling to get a handle on the epic as an art form. It is full of problems: a script full of long, lifeless, speeches without a single memorable line; actors who move like claymation figures, and a pace more suited to that of geological change rather than entertainment. There are no moments of awe and glory to match the chariot race in _Ben Hur_ the parting of the Red Sea in _The Ten Commandments_ or the "I am Spartacus" scene at the end of _Spartacus_. _Cleopatra_ is *staged* rather than *shot*; one half expects to see the crew clearing the sets for the next scene when a sequence finally finishes. The music is foul.
The fundamental weakness, however, is the story itself. Cleopatra offs herself and the other main characters, Caesar and Antony, die ignobly. Their heroic story is without redemption. David Lean, faced with the same problem of meaningless death, chose to move T. E. Lawrence's motorcycle accident to the beginning in _Lawrence of Arabia_, to make it the story of heroic failure. This is not possible in _Cleopatra, because there are TWO heroes and TWO love stories centering around one woman. Thus there must be two resolutions in one film. Ouch. _Cleopatra_ would have been much better had it started with Caesar's death or been divided into two films.
Despite its suitably gargantuan flaws the film remains a compelling story of tremendous spectacle and power, with much that is worth seeing. There are few spectacles in film to match Cleopatra's entry into Rome and the battle at the end is extremely well done. In a day and age when too many models look like poster children for famine relief organizations, Taylor's lush, petite figure is a welcome throwback. The complex love affair between Cleopatra and Antony, overshadowed and enabled by their mutual admiration of Caesar, is underpinned by the first-rate acting of Richard Burton, who takes over the second half of the movie. With the exception of Burton (and McDowell) the acting in _Cleopatra_ is strictly B movie. At the beginning Taylor is so exaggerated it is hard to buy into her character, but either she got into her role as the shooting went on, or (more likely) two hours of her beats down even the most hardened viewer's skepticism.  Fortunately Caesar dies halfway through.
Even today the story of Cleopatra is one to conjure with, constantly inspiring new generations of filmakers around the world. Here is a film begging for a remake. Mel Gibson, are you listening? 2 1/2 out of 5.
Copyright 1998. Michael A. Turton<EMAIL_ADDRESS>-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
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


--- layout: post title: Python and then some.... date: 2011-03-16 10:49:12.000000000 -05:00 type: post published: true status: publish categories: [] tags: - JQuery - Python - Ruby - Ruby on Rails meta: _edit_last: '15714693' _wpas_done_twitter: '1' _wpas_done_fb: '1' _oembed_c3491cbf866a0d2a490046ae7cbb7109: "{{unknown}}" _oembed_b31dc00736232cc2caf458de39560e76: "{{unknown}}" author: login: broberts65 email<EMAIL_ADDRESS>display_name: Bob Roberts first_name: '' last_name: '' ---
Wow, I am just past 6 months of my blog being up. I have has a lot more hits than I ever expected to. I know that the blog started out "Everything Python" and then transitioned as I decided to add new topics.
Well, guess what, I think I am going to be adding more AGAIN.
My work has me dabbling in Ruby on Rails and from that I am looking at Django. As time goes by I will list my likes and dislikes of both of these web frameworks but not in this article. I will however at this point say that the Ruby and/or Rails community is a lot more "together" than anything that I can see to get going in Phoenix for Python. That is disappointing to say the least.
I also recently got turned on the jQuery. One word...AWESOME. I will put my savings calculator (again a hobby turned to work use) in another post but needless to say is that I needed a savings calculator that would have required fields and with a little adaptation, jQuery was the answer. More so than this is the fact that the calculator can be used on our RoR site as well as our Joomla based website.
So stay tuned for more categories and more topics and thanks for reading....


{% load static %}
Scanner Cam
People counter
webcam
select from file
filter
{% block streaming %}
{% endblock streaming %}


Repository of the project Simulated Sampling Procedure for Community Ecology.
This repo include the five R scripts, as well as the data sets of the four study case used in the manuscript:
A simulation-based protocol to estimate sampling effort in studies of ecological communities, by Edlin J. Guerra-Castro, Nuno Simoes, Juan Cruz-Motta and Maite Mascaro.
# install.pacakges("devtools") # install if needed
devtools::install_github("edlinguerra/SSP")
See article intro.
This Quick Intro to Package Development with devtools is now a bit dated. Best to check out:
cheat sheet: Package Development. Note that many of the functions that were in devtools
have been ported to the usethis
R package.
book: R packages by Hadley Wickham
create_package()
usethis::create_package("../SSP")
document()
Self-document functions by placing cursor inside function and using RStudio menu Code > “Insert Roxygen Skeleton”. It will insert a template for title, parameters and return object description. For more details see:
Use Code > “Reflow Comment” to wrap comment text for readability. After updating any documentation, run this to update R documentation in man/
folder.
devtools::document()
For installing dependencies:
usethis::use_package("vegan")
usethis::use_package("ape")
usethis::use_package("ggplot2")
Show how functions work in a vignette, eg:
usethis::use_vignette("intro")
which places the vignette into folder vignettes/
Customize the DESCRIPTION, like:
Package: SSP
Title: Simulated Sampling Procedure for Community Ecology
Authors@R:
person(given = "Edlin",
family = "José Guerra Castro",
role = c("aut", "cre"),
email =<EMAIL_ADDRESS>License: MIT
URL: https://github.com/edlinguerra/SSP
BugReports: https://github.com/edlinguerra/SSP/issues
TODO:
Version: <IP_ADDRESS>00
Description: What the package does (one paragraph).
Introduction to pkgdown • pkgdown
pkgdown::build_site()
In your Github repository Settings, turn on docs/
for Github Pages, per Configuring a publishing source for GitHub Pages - GitHub Help.
data/
Using data and scripts in raw-data/
, create objects, eg x
, and at end of script load into data/
, eg with devtools::use_data(x)
.
devtools::load_all()


This map represents the numbers of commutes between localities in the Netherlands in 2016. The sizes of the "stars" are proportional to the total numbers of incoming/outgoing commutes. The sizes of the "trains" are proportional to the numbers of commutes between the corresponding pairs of localities.
Use [Ctrl+drag] to change bearing and pitch.
Created by: Ilya Boyandin
Data source: Statistics Netherlands
Inspiration: cf. city flows
Code: Observable notebook
Simpler representation: flowmap.blue


Code snippets
Code snippets are special types of bookmarks where you save
one or more small pieces of code in the same record.
Save snippets
You can use the
Code snippet option in
right side of the menu bar
or, for an easier experience use one of the following:
Browser Extension
You can use the same browser extension as for saving
bookmarks, but you must select the text on web page before
triggering the extension :
Bookmarklet
-
- when clicked a popup to save the current URL is displayed
[recommended for desktops and
notebooks with good resolution]
-
- when clicked it redirects you to the
New Bookmark
form. Once added, you go back to the initial page [recommended for phones or smaller
resolution devices]
You must make a
text selection on the page, to use it as as
code and choose to create a
new snippet when triggering the bookmarklet
link.
Save snippet via bookmarklet demo
IntelliJ Plugin
VSCode Extension
If your favorite IDE is Visual Studio Code you can use extension
Codever Snippets
Save snippet
Search snippet
Please DO NOT store passwords or any sensitive
information in your code snippets
Search snippets
Searching code snippets works the same as searching regular
bookmarks. Just select the My Snippets
option in the search bar:
You can save searches
permanently to reuse later the same way as for regular bookmarks.
You can configure the search
in an AlfredApp custom query, or similar, with the following -


{{ partial "head.html" . }}
{{ partial "header.html" . }}Learn how offices are run more like a cult than a healthy workplace — and how to escape.
Learn the common traps we fall into that anchor us in place — and how to remove them.
Put together a concrete, clear todo list and prepare for your newly-upgraded lifestyle.
Take the first steps toward becoming happier, healthier, and location-independent.


s6-linux-init
Software
skarnet.org
The s6-linux-init-hpr program
s6-linux-init-hpr triggers the software shutdown procedure,
or, with the -f option, it performs an immediate hardware shutdown.
It is normally invoked through halt, poweroff or
reboot wrappers created by
s6-linux-init-maker.
Interface
s6-linux-init-hpr [ -f ] [ -h | -p | -r ] [ -n ] [ -d | -w ] [ -W ] [ -i ]
- If the -f option is present, the system is stopped or rebooted immediately.
- Else, the machine's shutdown procedure is started.
- The command exits 0; the shutdown procedure happens asynchronously.
This interface is the traditional sysvinit interface for the
halt, poweroff and reboot programs.
s6-linux-init-hpr must always be called with one of the
-h, -p or -r options.
Options
- -f : force. The command will not trigger a clean shutdown
procedure; it will just sync the filesystems then tell the kernel to immediately
halt, poweroff or reboot. This should be the last step in the lifetime of the
machine.
- -h : halt. The system will be shut down, but the power will remain up.
- -p : poweroff. The system will be shut down and the power turned off.
- -r : reboot. The system will reboot.
- -n : Do not call
sync()
before the hardware shutdown. The default is to sync, just in case. This option is only
relevant when combined with -f; without it, it has no effect.
- -d : Do not write a wtmp shutdown entry.
- -w : Only write a wtmp shutdown entry; do not actually shut down
the system.
- -W : Do not send a wall message to users before shutting
down the system. Some other implementations of the halt, poweroff
and reboot commands use the --no-wall long option to achieve this.
- -i : interactive confirmation request. The command needs to be
launched in a terminal, and will prompt the user to type the (short) hostname of
the machine to be shut down. On mismatch, the command will abort. The point is to
avoid inadvertently rebooting a remote machine in an ssh session.
Notes
- When an administrator runs
s6-linux-init-maker, the resulting
directory has a bin/ subdirectory that contains halt,
poweroff and reboot scripts that call s6-linux-init-hpr
with the relevant option. The
contents of this bin/ subdirectory should then be copied by the
administrator into /sbin for full interface compatibility with sysvinit.


The only purpose of this website is to teach the fundamental aspect of the LED, its operation, its place in cinema, you're free to learn even more in the internet
Where am I ?
This website has been built in a personnal course in IMAC, it shows
my interest for the light, especially the LED, I hope that you will
learn some new things about the LED.
This website has been built in a purpose of interactivity beetween the user and itself
thanks to Javascript I've made some (apparently) basic application from scratch, each ones with a different approach of the interactivity.


Some Type of Pasta
wow so pasta. don't forget the garlic bread.
Prep time
30m
Cook time
45m
Total time
1h15m
Ingredients
+ Add Item
Instructions
+ Add Instruction


FREQUENTLY ASKED QUESTIONS
So how much do I end up paying?
You pay nothing to us for the service. However the nos used by smstweet belongs to Mumbai & Bangalore. If your phone nos belongs to these cities it costs the same as a local sms. However if you live outside of these cities — it costs the same as a national sms. Different providers have various schemes and packs which could make sending an sms cheaper or even free. For example Reliance charges 1p/sms.
How long does it take to post the tweet?
The time it takes to post your tweet depends on two factors. Mainly the time it takes for your sms to arrive at our nos and then how fast our application can post your tweet. The second factor is an important one because Twitter does have it's fail whale moments.
Why do I have to type 'twt' before my tweet?
We know it can be quite irritating to type 'twt' every time you want to tweet. However at present it is required to enable SMSgupshup to identify smstweet as the recipient application. Otherwise your tweet could get lost. There is another benefit — you will never tweet a message that was meant for somebody — because without the keyword 'twt' it's not a tweet.
I live in state X why don't you have a local number here?
In due time we may have a local number for every city. However for the time being only two numbers are available. Moreover various providers have schemes and sms packs which could make sending an sms cheaper or even free. For example Reliance charges 1p/sms. The price war between providers could negate the need for local numbers in every state. So keep your fingers crossed.
How much are your earning on every tweet I send?
Nothing. Zero. Nil. Simply put this service is offered completely free of cost. There are no advertisements and as of now no plans to have any. We don't have any big funding or tie ups with network providers. The only cost you have to incur is the charge of a local/nation sms. The only profit we get is the happiness of having people actually use our application.
Why can't I send or recieve Direct Messages?
This feature has been requested quite often. This service started as an experiment but as more users start using smstweet, more features will be added. Direct Messages is one of such features that is in the pipeline.
QUICK INFO
You can use any one of the following numbers to send your smstweets.
-<PHONE_NUMBER>0 (Mumbai)
-<PHONE_NUMBER>1 (Bangalore)
*If you live in one of the above cities then use the local number.
*If you don't live in any of the above cities then you will be sending a national SMS. Consult your service provider for the respective charges.


Checks if the field is a valid json array
field to check
Checks if the field is an email
field to check
Checks if the field is IN the array of values
field to check
array of values
Checks if the field is a number
field to check
Checks the maximum length of the field
field to check
length for checking
Checks the minimum length of the field
field to check
length for checking
Checks iif the phone format is correct. Depending on the coutry, phone format can be changed
field to check
Required validations
field to check
Validates and returns the proper status code of 422 back to the API client
Express Request
Express Response
Express Next
Generated using TypeDoc
Validator Class for global validations


The ocean plays a leading role in shaping our climate and weather patterns like precipitation, extreme heat, and cold. Even though the ocean plays a role in everything from the air we breathe to daily weather and climate patterns, we know very little about our ocean. Ocean models are numerical models with a focus on the properties of oceans and their circulation.
Development and applications of stochastic and deterministic primitive equation ocean modeling systems. Currently working on the Regional Ocean Modeling System (ROMS) for the Northern Indian Ocean. ROMS is an open source, free-surface, terrain-following, primitive equations ocean model solves the conservation of mass and momentum equations..
Development and applications of stochastic and deterministic primitive equation ocean modeling systems. Currently working on the Regional Ocean Modeling System (ROMS) for the Northern Indian Ocean. ROMS is an open source, free-surface, terrain-following, primitive equations ocean model solves the conservation of mass and momentum equations..
Ocean data assimilation is an essential component of ocean modeling, and is recognized as a valuable and indispensable tool for obtaining seamless estimates of the ocean circulation. However, data assimilation is a technically and computationally challenging problem, and the development of state-of-the-art data assimilation systems requires substantial effort and commitment of resources. The increasingly available ocean observations are appropriate for establishing data assimilation (DA) approaches, a series of mathematical techniques of growing complexity in which observational data are dynamically combined with numerical models in order to obtain the best approximation of the ocean state.
Theme based on the Creative Bootstrap Theme by Start Bootstrap.


Experimental Research Lab
Senior Member IEEE
Captain , Indian Navy, (veteran)
Phone:<PHONE_NUMBER>
Google Scholar, Linkedin
Email:
Address:
Email: @ieee.org


November 23 2017
First Article
Cupim spare ribs cow andouille t-bone kevin ham hock turkey venison ribeye sausage ball tip chuck. Chuck short ribs tri-tip cow. Cow turkey chicken alcatra biltong ham shank meatloaf boudin tenderloin drumstick. Andouille hamburger sirloin pork ham hock,
Bacon ipsum dolor amet pancetta corned beef picanha porchetta leberkas brisket tongue, hamburger cow jerky shank beef ribs. Salami tongue brisket chuck boudin kevin.  Kielbasa pork belly leberkas jowl.  Chuck alcatra fatback chicken corned beef. Pastrami cupim pork belly, doner leberkas pork andouille strip steak short loin swine alcatra kielbasa beef ribs salami.
Cupim spare ribs cow andouille t-bone kevin ham hock turkey venison ribeye sausage ball tip chuck. Chuck short ribs tri-tip cow. Cow turkey chicken alcatra biltong ham shank meatloaf boudin tenderloin drumstick. Andouille hamburger sirloin pork ham hock, meatloaf kielbasa boudin cupim beef pork belly filet mignon drumstick picanha.
October 37 2017
Second Article
Alcatra chuck chicken, frankfurter tail pancetta kevin leberkas. Kielbasa venison filet mignon ham hock strip steak, drumstick doner. Hamburger cow chuck shoulder cupim. Chuck shank brisket, pork chop short ribs pork meatloaf venison. Corned beef kielbasa fatback cupim alcatra doner, picanha sausage biltong ball tip.
Ground round filet mignon ham hock, andouille beef ham pork chop pastrami kevin fatback t-bone alcatra picanha. Alcatra t-bone chicken kielbasa, ham hock ground round capicola pork meatloaf ball tip bresaola spare ribs chuck short loin rump. Beef ribs jowl ribeye brisket cow. Beef ribs kevin cupim picanha tail turkey shank, ham jerky. Meatball ball tip kevin, shankle boudin kielbasa picanha pork. Burgdoggen sirloin boudin capicola drumstick.
Turkey shank landjaeger, chicken prosciutto pork chop picanha frankfurter leberkas pork loin tongue tri-tip short loin rump biltong. Prosciutto beef ribs tri-tip t-bone, alcatra tail leberkas corned beef porchetta drumstick. Ribeye prosciutto cupim, turkey swine bacon kevin tenderloin. Porchetta burgdoggen boudin pancetta meatball landjaeger. Bresaola pork chop pork belly venison bacon spare ribs. Tri-tip cupim pork loin pork, beef ribs chicken short loin boudin bresaola t-bone turkey sirloin. Tri-tip fatback cow beef ball tip biltong rump meatloaf pastrami pork belly drumstick porchetta.


Cops and Robbers: Why the Church of Scientology Hated Interpol
When I began my dissertation research into the origins of the multinational crime fighting organization Interpol, I encountered a number of very good histories written by retired police officers, historians, and sociologists. I also found a number of works based on wild conjecture. This sort of discovery is par for the course when studying a security or surveillance organization, but what made these books about Interpol stand out was that they were published by the Church of Scientology in the 1970s. These COS books attack Interpol (playing up, in particular, the group’s Nazi period), but provide no explanation for why the Church set their sights on the organization in the first place. Was this literature inspired by general post-Watergate paranoia, or did some particular event set it off?
L. Ron Hubbard moved Scientology’s headquarters to Sussex, England in 1960—ostensibly to spread the religion but also to avoid an impending investigation by the United States government on the basis of tax evasion. Hubbard had previous connections, of a sort, to England, having been a leading member of the California branch of the Ordo Templo Orientalis, an offshoot of the Order of the Golden Dawn controlled by Aleister Crowley. Hubbard’s expulsion from the group for embezzlement was followed shortly thereafter by the publication of Dianetics, a theoretical work that forms the basis of the Church of Scientology.
Hubbard lived in London on and off during the 1950s, but took up permanent residence in England at Saint Hill Manor, Sussex in 1959. From its new headquarters in the United Kingdom, the Church began to spread into continental Europe. In 1968, West German police, concerned about the opening of Scientology auditing centers in their country, requested information on the organization from Interpol. Interpol had yet to create a dossier on the Church, and thus asked the London Metropolitan Police (the Met) to develop one.
The Met, using their own surveillance records as well as reports collected by the Federal Bureau of Investigation (FBI), finished this profile on Scientology in 1969, after which it was circulated to Interpol member nations. The Met’s profile portrayed the Church as an organization that used the trappings of religion to avoid taxation on what was essentially a massive confidence scam. The report described the Church’s auditing process as essentially a brain-washing technique that primed the potential member for financial exploitation. As the report details, “the organization caters to the inadequate. The promise of enhanced mental awareness appears to appeal to those already affected by mental instability, unhappiness and uncertainty.”
In the eyes of the Met, the Church’s auditing process was little more than a street level confidence trick, referring to the Church’s auditing machine, “the E-meter,” as nothing more than
a electric meter held in a wooden box [that] has two terminals each of which is attached at the end of a electrode which is a steel or tin can resembling and sometimes actually being, a soup can…The E-meter would appear to be no more than a powerful gimmick for controlling [initiates] and developing in them a sense of awe and submission to a dependency upon the organization.
The report ended with a note of warning:
the authorities in this country are extremely concerned about the organization…scientology is socially harmful; it alienates members of families from each other and attributes squalid and disgraceful motives to all who oppose it. Its authoritarian principles and practices are a potential menace to the personality and well-being of those so deluded as to become its followers.
The Church, well aware of its negative perception among national governments, had established an internal security bureau, referred to as the Guardian’s Office, in 1966 under the leadership of L. Ron Hubbard’s wife Mary Sue. Though it was designed primarily to police members of the Church, the Guardian’s Office also administered counter-surveillance projects. Beginning in the 1970s, the Guardian’s Office planted Church members as employees in several “enemy organizations,” most notably the American Medical Association, the Better Business Bureau, and the Internal Revenue Service, as well as several equivalent bodies in foreign countries. This initiative, codenamed Operation Snow White, led to the theft and destruction of hundreds of thousands of government documents relating to the Church of Scientology before it was discovered by the US government in 1977.
Though I have not been able to confirm it, it is more than likely that this operation, or a similar one, also resulted in the public release of the Met’s profile of the Church of Scientology in West Germany in 1973. The release of this damning document led to a swift response by the Church, which filed suit against Interpol and the Metropolitan Police in German court. The Church followed this by organizing a propaganda campaign against Interpol that attacked it as a tool of totalitarianism, emphasizing in particular the organization’s Nazi past. The early wave of this attack featured short newspaper articles and pamphlets that offered surviving photographs of Nazi-run Interpol conferences during the Second World War.
Subsequent attacks became more sophisticated, coming in the form of nonfiction publications that claimed to provide an unbiased discussion of Interpol’s historical and contemporary operation. In his 1976 book, The Secret World of Interpol, author Omar Garrison argued that Interpol maintains an “Orwellian dream” of establishing “a dossier-based dictatorship” that will bring an end to civil liberties around the world. In a more measured approach, authors Trevor Meldal- Johnsen and Vaughn Young (who famously went on to testify against COS) wrote that Interpol had the opportunity to become an effective organization, but it must first curb its despotic lust for information and surveillance of ordinary civilians.
Scientology’s attack on Interpol could not have come at a worse time for the police group. The 1970s began with a drawn-out debate in the United Nations concerning Interpol’s status as an official NGO. This was followed by Senate hearings in the United States in 1976 and 1978—partly inspired by Scientologist propaganda—that questioned the legality of Interpol’s operation as well as its benefits for America.
Interpol, led by Secretary General Jean Népote, attempted to fight back by opening its doors to a new series of investigators including Michael Fooner, Iris Noble, Peter Lee, and Fenton Bresler. These writers helped to counter some of the more extreme arguments emanating from the Church of Scientology. What began as a propaganda assault ended with serious journalism and scholarship.
It is difficult, particularly in the twentieth century, to find a historical event that worked out for everyone involved, but the release of the Met’s report seems to be one of those instances. Despite a bit of handwringing, Interpol passed through hearings in the United States and at the United Nations largely unscathed, and remains the preeminent international organization for criminal justice. Yet the event also gave the Church of Scientology a powerful persecution narrative to attract new converts and to strengthen the resolve of devotees. Whether this was a good or bad development, I leave for the reader to decide.
Finally, historians were left with an interesting interlude that encourages further research. When it comes to the writing of history, sometimes the wrong turns are the most useful.


Enter a number
When you enter a number it will count up to your number from 1 with the following exceptions:
Numbers divisible by 2 will be multiplied by 2.
Numbers divisible by 3 will be multiplied by 3.
Enter your number:
Submit


BMW ploughs through window of Helensburgh cottage in shocking early morning crash
Police rushed to the scene after reports the car had ploughed into the cottage at the Cross Keys Roundabout at around 2.50am.
by Lynn LoveA car crashed into the side of house in Helensburgh early this morning.
Police rushed to the scene after reports the car had ploughed into the cottage at the Cross Keys Roundabout at around 2.50am.
Shocking pictures show the Grey BMW X5 rammed through the window of the property on the A818 Road at Fruin Farm.
A wall between the house and the main road was also knocked down during the crash.
The house is believed to have been empty at time of the accident.
Residents took to Facebook to express their concerns.
One woman said: "Car still in the cottage. Never seen anything like it."
Another added: "Blackhill is not gritted and a car has taken off at Crosskeys roundabout and is currently stuck three foot up in the white cottage.
"Poor people in cottage. I hope they are ok."
Another said: "Terrible crash at the cottage. Awful. Hope everyone is ok."
A man added: "Seen the cottage this morning, even if the road wasn't gritted that car must have had some speed coming into the roundabout.
"Hopefully the cottage didn't have anyone in it."
There were no reported injuries.
A Police Scotland spokesperson said: "We received a call at around 2.50am this morning after reports that a car had been driven into the side of a house in Glen Fruin.
"There was no reported injuries and no arrests were made.
"Enquiries are ongoing to establish the circumstances."
A 20-year-old man is now the subject of a report to the Procurator Fiscal.


Dashboard
John Doe
Current BTC Value
$ 18,901.08
Payment Addresses
BTC Wallet Address
ETH Wallet Address


Standard URL Syntax
The Thymeleaf standard dialects —called Standard and SpringStandard— offer a way to easily create URLs in your web applications so that they include any required URL preparation artifacts. This is done by means of the so-called “at” syntax of the standard expressions: @{...}
Absolute URLs
Absolute URLs allow you to create links to other servers. They start by specifying a protocol name (http:// or https://)
They are not modified at all (unless you have an URL Rewriting filter configured at your server):
Context-relative URLs
The most used type of URLs are context-relative ones. These are URLs which are supposed to be relative to the web application root once it is installed on the server. For example, if we deploy a myapp.war file into a Tomcat server, our application will probably be accessible as http://localhost:8080/myapp, and myapp will be the context name.
Context-relative URLs start with /:
If our app is installed at http://localhost:8080/myapp, this URL will output:
Server-relative URLs
Server-relative URLs are very similar to context-relative URLs, except they do not assume you want your URL to be linking to a resource inside your application's context, and therefore allow you to link to a different context in the same server:
The current application's context will be ignored, therefore although our application is deployed at http://localhost:8080/myapp, this URL will output:
Protocol-relative URLs
Protocol-relative URLs are in fact absolute URLs which will keep the protocol (HTTP, HTTPS) being used for displaying the current page. They are typically used for including external resources like styles, scripts, etc.:
...which will render unmodified, as:
Adding parameters
How do we add parameters to the URLs we create with @{...} expressions? Simple:
Which would output as:
You can add several parameters, separating them with commas:
Which would output as:
You can also include parameters in the form of path variables similarly to normal parameters but specifying a placeholder inside your URL's path:
Which would output as:
URL fragment identifiers
Fragment identifiers can be included in URLs, both with and without parameters. They will always be included at the URL base, so that:
...would output as:
URL Rewriting
Thymeleaf allows you to configure URL rewriting filters in your applications, and it does so by calling the response.encodeURL(...) method in the javax.servlet.http.HttpServletResponse class of the Servlet API for every URL generated from a thymeleaf template.
This is the standard way of supporting URL rewriting operations in Java web applications, and allows URLs to:
- Automatically detect whether the user has cookies enabled or not, and add the ;jsessionid=... fragment to the URL if not —or if it is the first request and cookie configuration is still unknown.
- Automaticallty apply proxy configuration to URLs when needed.
- Make use (if configured so) of different CDN (Content Delivery Network) setups, in order to link to content distributed among several servers.
A very common (and recommended) technology for URL rewriting is URLRewriteFilter.
Only for th:href's?
Do not think URL @{...} expressions are only used in th:href attributes. They can, in fact, be used anywhere just like variable expressions (${...}) or message externalization / internationalization ones (#{...}).
For example, you could use them in forms...
...or as a part of other expression. Here as a parameter of an externalized/internationalized string:
Using expressions in URLs
What if we needed to write an URL expression like this:
...but neither 3 nor 'show_all' could be literals, because we only know their value at run time?
No problem! Every URL parameter value is in fact an expression, so you can easily substitute your literals with any other expressions, including i18n, conditionals...:
What's more: an URL expression like:
...is in fact a shortcut for:
Which means that the URL base itself can be specified as an expression, for example a variable expression:
...or an externalized/internationalized text:
...even complex expressions can be used, including conditionals, for example:
Want it cleaner? Use th:with:
...or...


| libnice Reference Manual | ||||
|---|---|---|---|---|
| Top | Description |
#include <stun/stunagent.h> typedef StunAgent; enum StunCompatibility; enum StunAgentUsageFlags; enum StunValidationStatus; bool (*StunMessageIntegrityValidate) (StunAgent *agent
,StunMessage *message
,uint8_t *username
,uint16_t username_len
,uint8_t **password
,size_t *password_len
,void *user_data
); StunDefaultValidaterData; void stun_agent_init (StunAgent *agent
,const uint16_t *known_attributes
,StunCompatibility compatibility
,StunAgentUsageFlags usage_flags
); StunValidationStatus stun_agent_validate (StunAgent *agent
,StunMessage *msg
,const uint8_t *buffer
,size_t buffer_len
,StunMessageIntegrityValidate validater
,void *validater_data
); bool stun_agent_default_validater (StunAgent *agent
,StunMessage *message
,uint8_t *username
,uint16_t username_len
,uint8_t **password
,size_t *password_len
,void *user_data
); bool stun_agent_init_request (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,StunMethod m
); bool stun_agent_init_indication (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,StunMethod m
); bool stun_agent_init_response (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,const StunMessage *request
); bool stun_agent_init_error (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,const StunMessage *request
,StunError err
); size_t stun_agent_build_unknown_attributes_error (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,const StunMessage *request
); size_t stun_agent_finish_message (StunAgent *agent
,StunMessage *msg
,const uint8_t *key
,size_t key_len
); bool stun_agent_forget_transaction (StunAgent *agent
,StunTransactionId id
); void stun_agent_set_software (StunAgent *agent
,const char *software
); void stun_debug_enable (void
); void stun_debug_disable (void
);
The STUN Agent allows you to create and validate STUN messages easily. It's main purpose is to make sure the building and validation methods used are compatible with the RFC you create it with. It also tracks the transaction ids of the requests you send, so you can validate if a STUN response you received should be processed by that agent or not.
typedef enum { STUN_COMPATIBILITY_RFC3489, STUN_COMPATIBILITY_RFC5389, STUN_COMPATIBILITY_WLM2009, STUN_COMPATIBILITY_OC2007, STUN_COMPATIBILITY_LAST = STUN_COMPATIBILITY_OC2007 } StunCompatibility;
Enum that specifies the STUN compatibility mode of the StunAgent
| Use the STUN specifications compatible with RFC 3489 | |
| Use the STUN specifications compatible with RFC 5389 | |
| Use the STUN specifications compatible with Windows Live Messenger 2009 (a mix between RFC3489 and RFC5389, as well as a special usecase against a typo in their code) | |
| Use the STUN specifications compatible with Microsoft Office Communicator 2007 (basically RFC3489 with swapped REALM and NONCE attribute hex IDs, attributes are not aligned) | |
| Dummy last compatibility mode |
typedef enum { STUN_AGENT_USAGE_SHORT_TERM_CREDENTIALS = (1 << 0), STUN_AGENT_USAGE_LONG_TERM_CREDENTIALS = (1 << 1), STUN_AGENT_USAGE_USE_FINGERPRINT = (1 << 2), STUN_AGENT_USAGE_ADD_SOFTWARE = (1 << 3), STUN_AGENT_USAGE_IGNORE_CREDENTIALS = (1 << 4), STUN_AGENT_USAGE_NO_INDICATION_AUTH = (1 << 5), STUN_AGENT_USAGE_FORCE_VALIDATER = (1 << 6), STUN_AGENT_USAGE_NO_ALIGNED_ATTRIBUTES = (1 << 7), } StunAgentUsageFlags;
This enum defines a bitflag usages for a StunAgent and they will define how the agent should behave, independently of the compatibility mode it uses.
See also: stun_agent_init()
See also: stun_agent_validate()
| The agent should be using the short term credentials mechanism for authenticating STUN messages | |
| The agent should be using the long term credentials mechanism for authenticating STUN messages | |
| The agent should add the FINGERPRINT attribute to the STUN messages it creates. | |
The agent should add the SOFTWARE attribute
to the STUN messages it creates. Calling nice_agent_set_software() will have
the same effect as enabling this Usage. STUN Indications do not have the
SOFTWARE attributes added to them though. The SOFTWARE attribute is only
added for the RFC5389 and WLM2009 compatibility modes.
|
|
The agent should ignore any credentials
in the STUN messages it receives (the MESSAGE-INTEGRITY attribute
will never be validated by stun_agent_validate() )
|
|
| The agent should ignore credentials in the STUN messages it receives if the StunClass of the message is STUN_INDICATION (some implementation require STUN_INDICATION messages to be authenticated, while others never add a MESSAGE-INTEGRITY attribute to a STUN_INDICATION message) | |
| The agent should always try to validate the password of a STUN message, even if it already knows what the password should be (a response to a previously created request). This means that the StunMessageIntegrityValidate callback will always be called when there is a MESSAGE-INTEGRITY attribute. | |
| The agent should not assume STUN attributes are aligned on 32-bit boundaries when parsing messages and also do not add padding when creating messages. |
typedef enum { STUN_VALIDATION_SUCCESS, STUN_VALIDATION_NOT_STUN, STUN_VALIDATION_INCOMPLETE_STUN, STUN_VALIDATION_BAD_REQUEST, STUN_VALIDATION_UNAUTHORIZED_BAD_REQUEST, STUN_VALIDATION_UNAUTHORIZED, STUN_VALIDATION_UNMATCHED_RESPONSE, STUN_VALIDATION_UNKNOWN_REQUEST_ATTRIBUTE, STUN_VALIDATION_UNKNOWN_ATTRIBUTE, } StunValidationStatus;
This enum is used as the return value of stun_agent_validate()
and represents
the status result of the validation of a STUN message.
| The message is validated | |
| This is not a valid STUN message | |
| The message seems to be valid but incomplete | |
| The message does not have the cookie or the fingerprint while the agent needs it with its usage | |
| The message is valid but unauthorized with no username and message-integrity attributes. A BAD_REQUEST error must be generated | |
| The message is valid but unauthorized as the username/password do not match. An UNAUTHORIZED error must be generated | |
| The message is valid but this is a response/error that doesn't match a previously sent request | |
The message is valid but
contains one or more unknown comprehension attributes.
stun_agent_build_unknown_attributes_error() should be called
|
|
| The message is valid but contains one or more unknown comprehension attributes. This is a response, or error, or indication message and no error response should be sent |
bool (*StunMessageIntegrityValidate) (StunAgent *agent
,StunMessage *message
,uint8_t *username
,uint16_t username_len
,uint8_t **password
,size_t *password_len
,void *user_data
);
This is the prototype for the validater
argument of the stun_agent_validate()
function.
See also: stun_agent_validate()
|
The StunAgent |
|
The StunMessage being validated |
|
The username found in the message
|
|
The length of username
|
|
The password associated with that username. This argument is a pointer to a byte array that must be set by the validater function. |
|
The length of password which must also be set by the
validater function. |
|
Data to give the function |
Returns : |
TRUE if the authentication was successful,
FALSE if the authentication failed |
typedef struct { uint8_t *username; size_t username_len; uint8_t *password; size_t password_len; } StunDefaultValidaterData;
This structure is used as an element of the user_data to the
stun_agent_default_validater()
function for authenticating a STUN
message during validationg.
See also: stun_agent_default_validater()
void stun_agent_init (StunAgent *agent
,const uint16_t *known_attributes
,StunCompatibility compatibility
,StunAgentUsageFlags usage_flags
);
This function must be called to initialize an agent before it is being used.
The known_attributes
data must exist in memory as long as the agent
is used
If the STUN_AGENT_USAGE_SHORT_TERM_CREDENTIALS and STUN_AGENT_USAGE_LONG_TERM_CREDENTIALS usage flags are not set, then the agent will default in using the short term credentials mechanism
The STUN_AGENT_USAGE_USE_FINGERPRINT and STUN_AGENT_USAGE_ADD_SOFTWARE
usage flags are only valid if the STUN_COMPATIBILITY_RFC5389 or
STUN_COMPATIBILITY_WLM2009 compatibility
is used
|
The StunAgent to initialize |
|
An array of uint16_t specifying which attributes should
be known by the agent. Any STUN message received that contains a mandatory
attribute that is not in this array will yield a
STUN_VALIDATION_UNKNOWN_REQUEST_ATTRIBUTE or a
STUN_VALIDATION_UNKNOWN_ATTRIBUTE error when calling stun_agent_validate()
|
|
The StunCompatibility to use for this agent. This will affect how the agent builds and validates the STUN messages |
|
A bitflag using StunAgentUsageFlags values to define which STUN usages the agent should use. |
StunValidationStatus stun_agent_validate (StunAgent *agent
,StunMessage *msg
,const uint8_t *buffer
,size_t buffer_len
,StunMessageIntegrityValidate validater
,void *validater_data
);
This function is used to validate an inbound STUN message and transform its data buffer into a StunMessage. It will take care of various validation algorithms to make sure that the STUN message is valid and correctly authenticated.
See also: stun_agent_default_validater()
|
The StunAgent |
|
The StunMessage to build |
|
The data buffer of the STUN message |
|
The length of buffer
|
|
A StunMessageIntegrityValidate function callback that will be called if the agent needs to validate a MESSAGE-INTEGRITY attribute. It will only be called if the agent finds a message that needs authentication and a USERNAME is present in the STUN message, but no password is known. The validater will not be called if the STUN_AGENT_USAGE_IGNORE_CREDENTIALS usage flag is set on the agent, and it will always be called if the STUN_AGENT_USAGE_FORCE_VALIDATER usage flag is set on the agent. |
|
A user data to give to the validater callback when it gets
called. |
Returns : |
A StunValidationStatus
Note
if the return value is different from STUN_VALIDATION_NOT_STUN or
STUN_VALIDATION_INCOMPLETE_STUN, then the |
bool stun_agent_default_validater (StunAgent *agent
,StunMessage *message
,uint8_t *username
,uint16_t username_len
,uint8_t **password
,size_t *password_len
,void *user_data
);
This is a helper function to be used with stun_agent_validate()
. If no
complicated processing of the username needs to be done, this function can
be used with stun_agent_validate()
to quickly and easily match the username
of a STUN message with its password. Its user_data
argument must be an array
of StunDefaultValidaterData which will allow us to map a username to a
password
See also: stun_agent_validate()
|
The StunAgent |
|
The StunMessage being validated |
|
The username found in the message
|
|
The length of username
|
|
The password associated with that username. This argument is a pointer to a byte array that must be set by the validater function. |
|
The length of password which must also be set by the
validater function. |
|
This must be an array of StunDefaultValidaterData structures. The last element in the array must have a username set to NULL |
Returns : |
TRUE if the authentication was successful,
FALSE if the authentication failed |
bool stun_agent_init_request (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,StunMethod m
);
Creates a new STUN message of class STUN_REQUEST and with the method m
|
The StunAgent |
|
The StunMessage to build |
|
The buffer to use in the StunMessage |
|
The length of the buffer |
|
The StunMethod of the request |
Returns : |
TRUE if the message was initialized correctly, FALSE otherwise |
bool stun_agent_init_indication (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,StunMethod m
);
Creates a new STUN message of class STUN_INDICATION and with the method m
|
The StunAgent |
|
The StunMessage to build |
|
The buffer to use in the StunMessage |
|
The length of the buffer |
|
The StunMethod of the indication |
Returns : |
TRUE if the message was initialized correctly, FALSE otherwise |
bool stun_agent_init_response (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,const StunMessage *request
);
Creates a new STUN message of class STUN_RESPONSE and with the same method
and transaction ID as the message request
. This will also copy the pointer
to the key that was used to authenticate the request, so you won't need to
specify the key with stun_agent_finish_message()
|
The StunAgent |
|
The StunMessage to build |
|
The buffer to use in the StunMessage |
|
The length of the buffer |
|
The StunMessage of class STUN_REQUEST that this response is for |
Returns : |
TRUE if the message was initialized correctly, FALSE otherwise |
bool stun_agent_init_error (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,const StunMessage *request
,StunError err
);
Creates a new STUN message of class STUN_ERROR and with the same method
and transaction ID as the message request
. This will also copy the pointer
to the key that was used to authenticate the request (if authenticated),
so you won't need to specify the key with stun_agent_finish_message()
.
It will then add the ERROR-CODE attribute with code err
and the associated
string.
|
The StunAgent |
|
The StunMessage to build |
|
The buffer to use in the StunMessage |
|
The length of the buffer |
|
The StunMessage of class STUN_REQUEST that this error response is for |
|
The StunError to put in the ERROR-CODE attribute of the error response |
Returns : |
TRUE if the message was initialized correctly, FALSE otherwise |
size_t stun_agent_build_unknown_attributes_error (StunAgent *agent
,StunMessage *msg
,uint8_t *buffer
,size_t buffer_len
,const StunMessage *request
);
Creates a new STUN message of class STUN_ERROR and with the same method
and transaction ID as the message request
. It will then add the ERROR-CODE
attribute with code STUN_ERROR_UNKNOWN_ATTRIBUTE and add all the unknown
mandatory attributes from the request
STUN message in the
STUN_ATTRIBUTE_UNKNOWN_ATTRIBUTES attribute, it will then finish the message
by calling stun_agent_finish_message()
|
The StunAgent |
|
The StunMessage to build |
|
The buffer to use in the StunMessage |
|
The length of the buffer |
|
The StunMessage of class STUN_REQUEST that this response is for |
Returns : |
The size of the message built |
size_t stun_agent_finish_message (StunAgent *agent
,StunMessage *msg
,const uint8_t *key
,size_t key_len
);
This function will 'finish' a message and make it ready to be sent. It will add the MESSAGE-INTEGRITY and FINGERPRINT attributes if necessary. If the STUN message has a STUN_REQUEST class, it will save the transaction id of the message in the agent for future matching of the response.
See also: stun_agent_forget_transaction()
|
The StunAgent |
|
The StunMessage to finish |
|
The key to use for the MESSAGE-INTEGRITY attribute |
|
The length of the key
|
Returns : |
The final size of the message built or 0 if an error occured
NoteThe return value must always be checked. a value of 0 means the either the buffer's size is too small to contain the finishing attributes (MESSAGE-INTEGRITY, FINGERPRINT), or that there is no more free slots for saving the sent id in the agent's state.
Everytime |
bool stun_agent_forget_transaction (StunAgent *agent
,StunTransactionId id
);
This function is used to make the StunAgent forget about a previously created transaction.
This function should be called when a STUN request was previously
created with stun_agent_finish_message()
and for which no response was ever
received (timed out). The StunAgent keeps a list of the sent transactions
in order to validate the responses received. If the response is never received
this will allow the StunAgent to forget about the timed out transaction and
free its slot for future transactions.
|
The StunAgent |
|
The StunTransactionId of the transaction to forget |
Returns : |
TRUE if the transaction was found, FALSE otherwise |
Since 0.0.6
void stun_agent_set_software (StunAgent *agent
,const char *software
);
This function will set the value of the SOFTWARE attribute to be added to STUN requests, responses and error responses.
Calling this function will automatically enable the addition of the SOFTWARE attribute for RFC5389 and WLM2009 compatibility modes.
The software
argument must be in UTF-8 encoding and only the first
128 characters will be sent.
The value of the software
argument must stay valid throughout the life of
the StunAgent's life. Do not free its content.
|
The StunAgent |
|
The value of the SOFTWARE attribute to add. |
Since 0.0.10


Frequently Asked Questions
This document covers frequently asked questions not well covered elsewhere in the documentation or on the main website.
You may also wish to see Troubleshooting or Techniques for additional assorted information about specific technical items.
General
What is Puppet?
Puppet is an open-source next-generation server automation tool. It is composed of a declarative language for expressing system configuration, a client and server for distributing it, and a library for realizing the configuration.
The primary design goal of Puppet is to have an expressive enough language backed by a powerful enough library that you can write your own server automation applications in just a few lines of code. Puppet’s deep extensibility and open source license lets you add functionality as needed and share your innovations with others.
To learn more about the capabilities of Puppet, start at the main Puppet documentation.
What license is Puppet released under?
Puppet is open source and is released under the Apache 2.0 License.
Versions prior to Puppet 2.7.0 and Facter 1.6.0 were released under the GPL version 2.0 license.
See the Apache Licensing section below for more information.
What’s special about Puppet’s model-driven design?
Traditionally, managing the configurations of a large group of computers has meant a series of imperative steps; in its rawest state, SSH and a for loop. This general approach grew more sophisticated over time, but it retained the more profound limitations at its root.
Puppet takes a different approach, which is to model everything — the current state of the node, the desired configuration state, the actions taken during configuration enforcement — as data: each node receives a catalog of resources and relationships, compares it to the current system state, and makes changes as needed to bring the system into compliance.
The benefits go far beyond just healing the headaches of configuration drift and unknown system state: modeling systems as data lets Puppet simulate configuration changes, track the history of a system over its lifecycle, and prove that refactored manifest code still produces the same system state. It also drastically lowers the barrier to entry for hacking and extending Puppet: instead of analyzing code and reverse-engineering the effects of each step, a user can just parse data, and sysadmins have been able to add significant value to their Puppet deployments with an afternoon’s worth of perl scripting.
Why does Puppet have its own language?
Why not use XML or YAML as the configuration format? Why not use Ruby as the input language?
The language used for manifests is ultimately Puppet’s human interface, and XML and YAML, being data formats developed around the processing capabilities of computers, are horrible human interfaces. While some people are comfortable reading and writing them, there’s a reason why we use web browsers instead of just reading the HTML directly. Also, using XML or YAML would limit any assurance that the interface was declarative — one process might treat an XML configuration differently from another.
As for just using Ruby as the input format, Puppet 2.6.0 actually added this functionality, and manifests can now be written in pure Ruby. However, this capability should be used carefully and avoided where possible: the full grammar of Ruby is often too much functionality, and we believe systems administrators should be able to model their datacenters in a higher-level system. Writing manifests in the Puppet DSL and separating needed Ruby extensions out into redistributable custom functions, facts, types, and providers is usually the best balance of power and maintainability.
Why is Puppet written in Ruby?
From Luke Kanies, Puppet’s author:
I was a sysadmin by trade and had mostly developed in perl, but when I tried to write the prototype I had in mind, I couldn’t get the class relationships I wanted in perl. I tried Python, because this was around 2003 and Python was the next new thing and everyone was saying how great it is, but I just can’t seem to write in Python at all. A friend had said he’d heard Ruby was cool, so I gave it a try, and in four hours I went from never having seen a line of it to having a working prototype. I haven’t looked back since then, and haven’t regretted the choice.
Who would find Puppet useful?
Any organization that would like to reduce the cost of maintaining its computers could benefit from using Puppet. However, because the return on investment is linked to multiple factors, like current administrative overhead, diversity among existing computers, and cost of downtime, it can be difficult for organizations to determine whether they should invest in any configuration management tools, much less Puppet. Puppet Labs can always be contacted directly at<EMAIL_ADDRESS>to help answer this question.
Generally, however, an organization should be using server automation if any of the following are true:
- It has high server administration costs
- It pays a high price for downtime, either because of contracts or opportunity cost
- It has many servers that are essentially either identical or nearly identical
- It requires flexibility and agility in server configuration
Can Puppet manage workstations?
Yes: Puppet can manage any type of machine, and is used to manage many organizations that have a mix of laptops and desktops.
Does Puppet run on Windows?
Yes. As of Puppet 2.7.6 basic types and providers do run on Windows, and the test suite is being run on Windows to ensure future compatibility. More information can be found on the Puppet Windows wiki, and bug reports and patches are welcome.
What size organizations should use Puppet?
There is no minimum or maximum organization size that can benefit from Puppet, but there are sizes that are more likely to benefit. Organizations with only a handful of servers are unlikely to consider maintaining those servers to be a real problem, while those that have more need to consider carefully how they eliminate manual management tasks.
My servers are all unique; can Puppet still help?
Yes.
All servers are at least somewhat unique, but very few servers are entirely unique; host names and IP addresses (e.g.) will always differ, but nearly every server runs a relatively standard operating system. Servers are also often very similar to other servers within a single organization — all Solaris servers might have similar security settings, or all web servers might have roughly equivalent configurations — even if they’re very different from servers in other organizations. Finally, servers are often needlessly unique, in that they have been built and managed manually with no attempt at retaining appropriate consistency.
Puppet can help both on the side of consistency and uniqueness. Puppet can be used to express the consistency that should exist, even if that consistency spans arbitrary sets of servers based on any type of data like operating system, data centre, or physical location. Puppet can also be used to handle uniqueness, either by allowing special provision of what makes a given host unique or through specifying exceptions to otherwise standard classes.
When is the next release?
There are regular feature and release updates on the Mailing List, and you can always find the latest release on the downloads page.
I have found a security issue in Puppet. Who do I tell?
Puppet Labs and the Puppet project take security very seriously. We handle all security problems brought to our attention and ensure that they are corrected within a reasonable time frame.
If you have identified an issue then please send an email to the Security mailbox<EMAIL_ADDRESS>with the details. If you wish to contact us via phone to report a security issue, please call 1-877-575-9775.
Where can I learn about current security issues in Puppet?
To find out about recently patched vulnerabilities, go to puppetlabs.com/security. Puppet Enterprise users can download hotfix packages at puppetlabs.com/security/hotfixes.
Puppet Labs publicly discloses security issues once patched code is available, and we work with downstream packagers to get security fixes deployed quickly and safely.
Who is Puppet Labs?
Puppet Labs (formerly Reductive Labs) is a small, private company focused on re-framing the server automation problem. More information about Puppet Labs is available on our website.
How do I contribute?
First, join one or both of the mailing lists. There is currently a development list, and a user discussion list. You can also join the IRC channel #puppet on irc.freenode.net, where Puppet’s developers will be hanging out most days (and nights).
If you are interested in helping with Puppet’s development, you can read about how it is developed and how to submit patches and fixes on the Development Lifecycle wiki page.
The most valuable contribution you can make, though, is to use Puppet and submit your feedback, either directly on IRC or through the mailing list, or by reporting to the bug database. We’re always looking for great ideas to incorporate into Puppet.
Installation
Where can I get Puppet?
Many operating system vendors offer Puppet in their package repositories, which is the most convenient way to install Puppet. Puppet Labs also maintains its own public package repositories at http://yum.puppetlabs.com and http://apt.puppetlabs.com.
In addition, source tarballs and packages for the latest release of Puppet are available in the downloads area of the site, and you can view the current state of development (or start contributing code!) at Puppet Labs’ Github page.
Which versions of Ruby does Puppet support?
Please see the ‘Ruby Versions’ section of the Supported Platforms document for the complete matrix of supported Ruby versions.
Upgrading
Should I upgrade the client or server first?
When upgrading to a new version of Puppet, always upgrade the server first. Old clients can point at a new server but you may have problems when pointing a new client at an old server.
How should I upgrade Puppet and Facter?
The best way to install and upgrade Puppet and Facter is via your operating system’s package management system, using either your vendor’s repository or one of Puppet Labs’ public repositories.
If you have installed Puppet from
source, make sure you remove old versions entirely (including all application
and library files) before upgrading. Configuration data (usually located
in /etc/puppet
or /var/lib/puppet
, although the location can vary) can
be left in place between installs.
How do I know what’s changed when I upgrade?
The best way to find out what’s changed in Puppet is to read the release notes, which are posted to the puppet-announce mailing list and archived on the Puppet wiki.
Configuration
What is a manifest?
“Manifest” is the word we chose to describe a declarative Puppet program. Since Puppet configurations are idempotent, words like “script” (which implies a procedural step-by-step model of execution) seemed misleading.
What characters are permitted in a class name? In a module name? In other identifiers?
Class names can contain lowercase letters, numbers, and underscores, and should begin with a lowercase letter. “::
” can be used as a namespace separator.
The same rules should be used when naming defined resource types, modules, and parameters, although modules and parameters cannot use the namespace separator.
Variable names can include alphanumeric characters and underscores, and are case-sensitive.
How do I apply and test manifests?
Once you have Puppet installed according the the Installation
Guide, just run puppet apply
against your example:
puppet apply -v example.pp
How do I document my manifests?
The puppet language includes a simple documentation syntax, which is currently documented on the Puppet Manifest Documentation wiki page. The puppetdoc command uses this inline documentation to automatically generate RDoc or HTML documents for your manifests and modules.
How do I manage passwords on Red Hat Enterprise Linux, CentOS, and Fedora Core?
As described in the Type reference, you need the Shadow Password Library, which is provided by the ruby-shadow package. The ruby-shadow library is available natively for fc6 (and higher), and should build on the corresponding RHEL and CentOS variants.
How do I use Puppet’s graphing support?
Puppet has graphing support capable of creating graph files of your agent node configurations.
These graphs are created by and on the
agent nodes, so you must enable graph=true
in the [agent]
section of your nodes’ Puppet.conf and
set graphdir
to the directory where graphs should be written. The
resulting files will be created in .dot
format, which is readable by
OmniGraffle (OS X)
or graphviz. To generate an image from
a dot file using the dot
utility included with graphviz, run the following:
dot -Tpng /var/puppet/state/graphs/resources.dot -o /tmp/configuration.png
How do all of these variables, like $operatingsystem, get set?
The variables are all set by Facter. You can get a full listing of the available variables and their values by running facter by itself in a shell.:
# facter
Are there variables available other than those provided by Facter?
Puppet provides a few in-built variables you can use in your manifests:
$environment
— Provided by the agent; contains the agent node’s current environment.$clientcert
— Provided by the agent; contains the agent node’s certname. Added in Puppet 2.6.0.$clientversion
— Provided by the agent; contains the current version of puppet agent.$module_name
— Provided by the parser; contains the name of the module that contains the current resource’s definition. Added in Puppet 2.6.0.$caller_module_name
— Provided by the parser; contains the name of the module that contains the current resource’s declaration. Added in Puppet 2.6.0.$servername
— Provided by the puppet master; contains the master server’s fully-qualified domain name. (Note that this information is gathered from the master server by Facter, rather than read from the config files; even if the master’s certname is set to something other than its fully-qualified domain name, this variable will still contain the server’s fqdn.)$serverip
— Provided by the puppet master; contains the master server’s IP address.$serverversion
— Provided by the puppet master; contains the puppet master’s current version.-
$settings::<name of setting>
— Provided by the puppet master; exposes all of the master’s configuration settings as variables in thesettings
namespace. Note that other than$environment
, the agent’s settings aren’t available in manifests. Added in Puppet 2.6.0. For example, to display your certname:puppet apply -ve ‘notify {“My certname is: ${settings::certname}”:}’
Can I access environment variables with Facter?
Not directly. However, Facter reads in custom facts from a special subset of
environment variables. Any environment variable with a
prefix of FACTER_
will be converted into a fact when Facter runs. For example:
$ FACTER_FOO="bar"
$ export FACTER_FOO
$ facter | grep 'foo'
foo => bar
The value of the FACTER_FOO
environment variable would now be
available in your Puppet manifests as $foo, and would have a value of ‘bar’.
Using shell scripting to export an arbitrary subset of environment variables as
facts is left as as exercise for the reader.
Why shouldn’t I use autosign for all my clients?
It is very tempting to enable autosign for all nodes, as it cuts down on the manual steps required to bootstrap a new node (or indeed to move it to a new puppet master).
Typically this would be done with a *.example.com or even * in the autosign.conf file.
This however can be very dangerous as it can enable a node to masquerade as another node, and get the configuration intended for that node. The reason for this is that the node chooses the certificate common name (‘CN’ - usually its fqdn, but this is fully configurable), and the puppet master then uses this CN to look up the node definition to serve. The certificate itself is stored, so two nodes could not connect with the same CN (eg alice.example.com), but this is not the problem.
The problem lies in the fact that the puppet master does not make a 1-1 mapping between a node and the first certificate it saw for it, and hence multiple certificates can map to the same node, for example:
- alice.example.com connects, gets node alice { } definition.
- bob.example.com connects with CN alice.bob.example.com, and also matches node alice { } definition.
Without autosigning, it would be apparent that bob was trying to get alice’s configuration - as the puppet cert process lists the full fqdn/CN presented. With autosign turned on, bob silently retrieves alice’s configuration.
Depending on your environment, this may not present a significant risk. It essentially boils down to the question ‘Do I trust everything that can connect to my puppet master?’.
If you do still choose to have a permanent, or semi-permanent, permissive autosign.conf, please consider doing the following:
- Firewall your puppet master - restrict port tcp/8140 to only networks that you trust.
- Create puppet masters for each ‘trust zone’, and only include the trusted nodes in that Puppet masters manifest.
- Never use a full wildcard such as *.
Change to Apache License
When is Puppet switching to the Apache license?
Starting with Puppet 2.7.0, Puppet will use the Apache 2.0 license rather than the GPLv2 license used in Puppet 2.6.x and earlier.
Why was this decision made?
The Apache license will make it easier for third-parties to add capabilities to the Puppet platform and ecosystem. Over time, this will mean a wider array of solutions that will more perfectly fit the needs of any given team or infrastructure.
We put a lot of thought into this decision. We recognize that parts of the Puppet community would prefer we stay on a GPLv2 license, but we feel this migration is to the benefit of the community as a whole.
What happens if I am on Puppet 2.6x or earlier?
Nothing changes for you. Puppet 2.6.x remains licensed as GPLv2. The license change is not retroactive.
Does this change affect all the components of Puppet?
As part of this change, we’re also changing the license of the Facter system inventory tool to Apache. This change will take effect with Facter version 1.6.0, and earlier versions of Facter will remain licensed under the GPLv2 license. This change will bring the licensing of Puppet’s two key components into alignment.
Our other major product, MCollective, is already licensed under the Apache 2.0 license.
What does this mean if I or my company have or want to contribute code to Puppet?
As part of this license change, Puppet Labs has approached every existing contributor to the project and asked them to sign a Contributor License Agreement or CLA.
Puppet Labs has adapted the standard Apache Foundation’s CLA for this purpose.
Signing this CLA for yourself or your company provides both you and Puppet Labs with additional legal protections, and confirms:
- That you own and are entitled to the code you are contributing to Puppet
- That you are willing to have it used in distributions
This gives assurance that the origins and ownership of the code cannot be disputed in the event of any legal challenge.
What if I haven’t signed a CLA?
If you haven’t signed a CLA, then we can’t yet accept your code contribution into Puppet or Facter. Signing a CLA is very easy: simply log into your GitHub account and go to our CLA page to sign the agreement.
We’ve worked hard to try find to everyone who has contributed code to Puppet, but if you have questions or concerns about a previous contribution you’ve made to Puppet and you don’t believed you’ve signed a CLA, please sign a CLA or contact us for further information.
Does signing a CLA change who owns Puppet?
The change in license and the requirement for a CLA doesn’t change who owns the code. This is a pure license agreement and NOT a Copyright assignment. If you sign a CLA, you maintain full copyright to your own code and are merely providing a license to Puppet Labs to use your code.
All other code remains the copyright of Puppet Labs.
Contents
- General
- What is Puppet?
- What license is Puppet released under?
- What’s special about Puppet’s model-driven design?
- Why does Puppet have its own language?
- Why is Puppet written in Ruby?
- Who would find Puppet useful?
- Can Puppet manage workstations?
- Does Puppet run on Windows?
- What size organizations should use Puppet?
- My servers are all unique; can Puppet still help?
- When is the next release?
- I have found a security issue in Puppet. Who do I tell?
- Where can I learn about current security issues in Puppet?
- Who is Puppet Labs?
- How do I contribute?
- Installation
- Upgrading
- Configuration
- What is a manifest?
- What characters are permitted in a class name? In a module name? In other identifiers?
- How do I apply and test manifests?
- How do I document my manifests?
- How do I manage passwords on Red Hat Enterprise Linux, CentOS, and Fedora Core?
- How do I use Puppet’s graphing support?
- How do all of these variables, like $operatingsystem, get set?
- Are there variables available other than those provided by Facter?
- Can I access environment variables with Facter?
- Why shouldn’t I use autosign for all my clients?
- Change to Apache License
- When is Puppet switching to the Apache license?
- Why was this decision made?
- What happens if I am on Puppet 2.6x or earlier?
- Does this change affect all the components of Puppet?
- What does this mean if I or my company have or want to contribute code to Puppet?
- What if I haven’t signed a CLA?
- Does signing a CLA change who owns Puppet?


Appearance
Dragonair's appearance is similar to sea serpents with long, sleek bodies. The upper part of its body is light blue and the lower part is white. It has a small white horn on its forehead and two wing-like projections on the sides of its head, which are often called ears, but are actually wings, as evidenced in the short film that preceded Pokemon: Movie 2. It has a blue sphere located on the neck, and two more near the tip of the tail. Along with Dratini, his mouth is rarely seen. It is not known if he has a mouth. Shiney's Pokémon version of Dragonair has lavender-pink skin on the upper body rather than light blue.


Moneybook is a mobile and web application that simplifies the process of keeping track of your daily expenses.
learn more
Moneybook makes keeping track of everyday expenses simple and easy. The application allows the user to keep track of their spending in individual categories so they can analyze where
they're spending their money. The application features Google Map Charts so the user can physically see and budget their future finacial decisions. The user can adjust the date to see daily, weekly, and monthly spending throughout the year.
The web application utilizes the same main features as the mobile application. The single screen design allows for a fast and direct process to utilize Moneybook for tracking expenses, budgeting money, and planing future finacial decisons.


The missing Person application is an app desinged to report and search for missing persons. You can search by using persons features and attributes, or using image to run facial algorithim.


I feel that compassionate leadership is the only way to do things. It's the most basic requirement for leading others. Lacking compassion is one of the first steps to alienating your peers. It's only when leaders account for their teams' viewpoints that everyone can work effectively together.
Invigorating and uplifting. Would do it again. :)
I think I've been doing an informal version of it recently.
It's been a great experience so far. Nikau has been such a fantastic cohort. Everybody has been very supportive and down-to-earth. I'm not expecting it will be any different from that, moving forward. Except that hopefully, we'll all start feeling more competent with the tech we're learning as we move forward.
It was nearly debilitating. I have such a long road ahead and in the meantime, I need to do my best to rebalance my failures and accomplishments.


The Disease Control System DiCon provides a general optimization framework, with a special focus on distributed, parallel epidemic disease simulation with policy optimization.
Available here.
The Texas Pandemic Flu Toolkit is a collection of tools developed by the University of Texas at Austin funded by the Texas Department of State Health Services (DSHS). These include tools for antiviral release scheduling and distribution, vaccine allocation and ventilator stockpiling, and simulating pandemic flu and public health responses.
Available here.
These calculators were created for use by state and local epidemiologists, influenza surveillance coordinators, PHL directors and other senior laboratory staff responsible for coordinating policy, decisions and implementation of virologic surveillance strategies. They are designed to provide a systematic approach to estimate the number of specimens to be tested within a specific level of data confidence for situational awareness and rare/novel influenza event detection and investigation.
Available here.
EpiFire is a fast C++ API and GUI for simulating the spread of epidemics on contact networks. It can be used to perform network-based percolation and chain-binomial simulations of susceptible-infected-recovered (SIR) disease transmission, as well as traditional non-network mass-action simulations.


WITNESS LIST Elections Committee April 30, 2003-2:00P HB 502 Against: Lee, Donald (Texas Conference of Urban Counties) Mitchell, Seth (Bexar County Commissioners Court) Pardue, Craig (Dallas County) Registering, but not testifying: Against: Allison, Jim (County Judges and Commissioners Assoc. of TX) Carlson, Pat (Tarrant County Republican Party) DeBeauvoir, Dana (County and District Clerks Association of TX) Lewis, Jesse (Republican Party of Texas) HB 1579 Registering, but not testifying: Against: Carlson, Pat (Tarrant County Republican Party) Lewis, Jesse (Republican Party of Texas) HB 1580 Registering, but not testifying: Against: Carlson, Pat (Tarrant County Republican Party) Lewis, Jesse (Republican Party of Texas) HB 1581 Registering, but not testifying: Against: Carlson, Pat (Tarrant County Republican Party) HB 2194 Registering, but not testifying: On: Lewis, Jesse (Republican Party of Texas) HB 2195 Registering, but not testifying: Against: Lewis, Jesse (Republican Party of Texas) SB 454 Registering, but not testifying: For: Utter, Tom (Self and City of Corpus Christi) Against: DeBeauvoir, Dana (County and District Clerks Association of TX) SB 703 For: Lee, Donald (Texas Conference of Urban Counties) Pardue, Craig (Dallas County) Registering, but not testifying: For: Allison, Jim (County Judges and Commissioners Assoc. of TX) DeBeauvoir, Dana (County and District Clerks Association of TX) Mendez, Mark (Tarrant County Commissioners Court) Mitchell, Seth (Bexar County Commissioners Court)


fun divideBy(divisor: Double, roundingMode: RoundingMode): AssetAmount
Divides the current amount by a divisor provided as the first parameter. The second parameter specifies the rounding method to be used.
Return
: The same AssetAMount instance, but with the divided amount value


Begin zero-suppression in these columns:
Enter a comma-delimited list of 1-relative column numbers in ascending order; click
OK
to save and apply to the device.
Cancel
OK


Notifications can be used to inform the user of occurring events or to alert the user of something that may require their attention. Notifications will appear in the top right corner of the browser window and can be dismissed by the user by clicking the close button.
Notifications are controlled by the notificationService
which can be injected into
any controller in the application.
The notificationService
has several functions available to control notifications.
setNotificationVisibility
), this can be used to dismiss this individual notification at a later
point.
showNotification
function along with
an additional date
property which will contain the time at which the notification was shown. If a
more permanent history of notifications is required consider using local storage or a database.
showNotification
function is called. If the showNotification
function is called and the visibility is set to false,
no notification will show, however a record of it will still be kept and can be accessed using the getNotifications
function. This function expects a boolean value as an argument, a value of true
will display notifications
and a value of false
will hide them. The default value is true
.
append
(default) and prepend
.
When set to append
new notifications will appear below older notifications. When set to prepend
new notifications will appear above
older notifications.
The following options can be used to configure the appearance and content of the notification:
0
will show the notification until manually dismissed.
The HTML tab provides sample code to call the functions within the controller, while the Javascript tab provides an example
of how the notificationService
can be used to show or dismiss notifications.


Welcome to BusMall's customer survey
Please select the product you are most likely to purchase below


Apr 16, 2020
1 min read
In general, we found that 59% of the geographical area belong to Similar tribes of Murdock and Greg (27% of total intersections).
| Classification of Murdock-GREG Intersections |
For those tribes that are Similar/Equivalent we analyze the level of its relation. In general, we found that most of the tribes are at the same level (24% of the total geographical area). Then, 34% of the total geographical area belongs to a intersections where one tribe is a subfamily of the other.
| Description on tribes that are considered the same/equivalents |
Once established the type of relationship between Similar/Equivalent tribes, we now analyze which tribe’s name, Greg or Murdock, is a lower or upper level. In general we found that GREG is the main tribe and Murdock is a sub-level (34% of the total geographical area). Only in few cases, Murdock’s tribe name is more general than Greg’s name (1.02%).
| Level same tribes |
Based on each method employed, there is strong evidence that a each intersection classified as different is actually true.we found that the 19% of the total geographical area in Africa belongs to a tribes completely different (i.e. $x_{murdock}!=x_{greg}$ and $y_{murdock}!=y_{greg}$). And, around 13% belongs to intersections that belong to the same family, yet they refer to a different tribes.
| Main Reasons why two tribes are different |
Sharing is caring!


APOLLO 13 A film review by Andrew Hicks Copyright 1996 Andrew Hicks / Fatboy Productions
*** (out of four)
This is a brilliant piece of filmmaking. The directorial style shown by Ron Howard comes a long way from the hooker/corpse comedy NIGHT SHIFT and deftly mixes new footage with old newsreel shots and computer-animated effects. And the performances from Tom Hanks, Kevin Bacon (in his best acting job since the original FIRDAY THE 13TH -- that's a joke, by the way), Gary Sinise, Ed Harris and the rest are great.
So why's it only a three-star movie here? Well, it's in the same boat as QUIZ SHOW for me--a movie dramatization based on a true-life event from the distant past (distant meaning before I was born). It's good drama, but it has no personal meaning for me. I'm only 17 years old. Now if it was based on an earth-shattering event from my lifetime, say the Gulf War or the tragic transition of "Saturday Night Live" from funny to godawful, I might be able to drum up some emotion. But for now, I see APOLLO 13 as a compelling yet flawed movie.
For starters, the first thirty or more minutes of the film are way too boring and unnecessary. Do we really need to see the homelife of the astronauts and their three months of training and preparation for the Apollo 13 mission? No, just tell us they're astronauts and get to the actual flight. It's this early, expendable stuff I don't like. It's supposed to make us get to know and care for the characters, but what it does is make us get sick of them toward the end, when the movie's running long, and hope they'll get sucked into the vacuum of space so the movie will be over.
If you're somehow ignorant of the movie's plot, Hanks, Bacon and some other guy are astronauts on a routine moon mission fraught with tragedy. (I think that was the first time in my life I ever used the word "fraught.") It's based on the actual week in 1969 when the nation held its breath for our Apollo 13 astronauts, stuck in space after a freak explosion screwed up their controls. The odds are infinitessimal that they'll make it back to earth alive, so each step of the journey is milked for all the suspense it can get. Then, when they finally do make it past that individual obstacle, a new obstacle arises to take it's place, obstacle after obstacle until the end of the movie.
Forgive the skimpy plot summary, but everyone's already seen this movie. I, in fact, was the second-to-last person in America to see it. So if the other guy's out there, e-mail me and I'll send you a longer summary. Plus I'm writing this at two in the morning, which also explains the lapses in coherency from time to time. But don't allow my three paragraphs of criticism to keep you from seeing a good movie. I'm in a unique position as a movie reviewer who's too young to fully appreciate the historical context of some movies. Now, if they'd make that docudrama tracing the decline of "Saturday Night Live" I was talking about...
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