text:
CF Fertilisers selects Continental Tires for equipment at its Cheshire site
Published by Harleigh Hobbs,
World Fertilizer,
A leading agricultural fertiliser producer, CF Fertilisers UK, has opted to switch its tyre policy to Continental Tires for the heavy-duty forklifts and onsite trailers at its Cheshire headquarters and manufacturing site.
The company runs a fleet of 14 heavy-duty Kalmar DCE 10 forklifts and some 12 two-axle A-frame trailers at its Ince plant. These tackle the heavy-lifting and movement of 600 kg and 1000 kg bags of fertilizer from the point of production to storage and despatch facilities elsewhere on the site.
The site itself, at Ince in Cheshire, sits on 124 acres of land next to the Manchester Ship Canal and includes one ammonia and three nitric acid plants, a further nitrogen fertilizer plant and three compound lines. With approximately 400 employees on site, CF Fertilisers produces 1 million tpy of fertiliser and supplies key market sectors in grass and arable farming. Its continuous production lines at Ince, and sister site in Billingham in the northeast, account for some 2% annually of the nation's natural gas usage.
Anthony Jones, Day Handling Team Leader, explained the change in ture policy: "You have to understand that the site is very demanding on tyres. Though it is largely flat land, like any major site there is a degree of unevenness at points around the working area that test the wear patterns and life of tyres, but our main concern lies in safety-challenges emanating from tire wear. Our Kalmar fork-lifts can pick up four 1000 kg bags of fertilizer at one time, and, because they are suspended on straps, each load is effectively 'live' in terms of the danger of swinging during transit; while our trailers, which we run as pairs at all times, can also carry that much each." Jones continued: "Because of the nature of the site, safety is a major everyday consideration, and that works right through everything we do. Handling and moving loads with this sort of weight, 24/7, is a key part of the inherent risk on the site, so we take it very seriously indeed."
The company first looked at Continental Tires in late 2015, and a trial was initiated that was due to run for a full six months. Continental Tires along with local dealer, Nation Tires, offered to set up the trial on both fork-lifts and trailers.
Anthony Jones recalled: "We decided to give 'Conti' a chance. We felt the tyres we had been using were being changed far too often – so something had to give. We liked the ideas the Continental team put forward and the confidence they had that they could improve on both safety and economy; and we especially liked the fact that they had a very competent and professional local dealer, Nation Tires, the Continental Tires Industrial network partner at Ellesmere Port. A blow-out on a tyre, quite apart from the huge safety risk, can also have a very damaging commercial effect on us. We run 24/7, 365 days a year, and if a forklift or pair of trailers is unavailable to us, we soon see back-logs of product needing to be cleared from the end of the production line and moved to storage areas. We produce some 21 different varieties of fertiliser, including our top-selling Nitram brand, and that's over 1 million tpy – a continuous process that simply cannot be put at risk."
The initial trial was scheduled for six months, but the immediate improvement was so noticeable that, within just three months, the decision was made to switch the whole fleet to Continental Tires products. The big, heavy-duty Kalmar forklifts feature six tires on two axles. Again, for safety reasons, CF Fertilisers decided to go for the heavy duty pneumatic tires, ContiRT20 11.00 x 20s, but also to inject them with foam. "Continental said we'd get 12 months wear out of these," said Jones, "but nine months into their usage, we are still only 50% worn and looking good. It is great economically, in terms of purchase price and saved downtime, and a real bonus from the safety angle. The trucks have special rising cabs in order to be able to deal with the work, and a tire blowing out on a heavily laden truck with the cab raised to its full 10 foot extension could cause it to tip over- and that's simply unthinkable!"
The onsite trailers used to move bagged products from production into storage areas are two-axle A-frame draw bar units, hitched in pairs and pulled behind agricultural tractors as prime movers. The major problem here was too-frequent changes due to wear.
Jones added: "There was also a major safety risk here. The tyres were wearing, and the most worrying part was that it was the sidewalls that were exhibiting most stress, so a blow-out was a constant threat."
The trailers have standard draw-bar configuration of steering front axle and rear fixed axle, both with twin tire hubs. As with the fork-lifts, Continental tires, in this case Continental IC40 10 x 20s, are delivering longer wear times and enhanced safety.
Nation Tires, the local dealer to CF Fertilisers, had a major part to play in the success of the Continental Tires trial and take-up. Managing Director, Tony Glennon, said, "For a site this size, with the variety and significance of the vehicles we are talking about here, having a local dealership of our size and capability was an important part of reassuring CF Fertilisers in their switch to Continental Tires. We understood their need for a genuine 24/7/365 support service and were both prepared and able to bring this to the mix, with 17 staff and nine mobile site-service vehicles. They demand a 60-90 minute callout response in the event of a tire needing any sort of attention, and we deliver."
Read the article online at: https://www.worldfertilizer.com/materials-handling/21112016/cf-fertilisers-selects-continental-tires-for-its-heavy-duty-forklifts-in-cheshire/
You might also like
Fertilizers produced with green hydrogen produce 3000 t of potato chips at the PepsiCo plant in Burgos
The PepsiCo and Fertiberia pilot programme for the use of Impact Zero low-carbon crop nutrition solutions launched last year has already delivered its first results, and the first Lay's and Ruffles potatoes with reduced emissions during their growing process have already hit the Spanish market.

subset: commoncrawl


text:
Product Details:
Origin: | China | Brang: | Running |
Voltage: | 380v,50HZ | Power: | 83KW |
Dia: | 3200*1200*1620 Mm | ||
High Light: | continuous vulcanization line,rubber tube making machine |
Equipment composition
Cold feeding rubber vent extruder
Single extruder head
T type cover tube extruder head
Super temperature tunnel
Hot air vulcanizing tunnel
Water cooling channel
Traction machine
16P refrigerating machine and water station
Item | Quantity (set) |
1. 90 mm cold feed extruder | 1 |
2. 10 m three tiers 12KW microwave vulcanization Equipment | 1 |
3. 6 m water cooling tank | 1 |
4. Traction machine | 1 |
5. Double roller reeling machine(Level type) | 1 |
6. 16 P Refrigerator + with a cycle tank | 1 |
Salient Features
Services Commitment
1. Our engineers can design target machines for you and send the drawing to confirm.
2. In the process of production, we will take photos and send to customers for you tracking.
3. Documents such as packing list, commercial invoice, and bill of lading etc. will be sent after the delivery.
4. We could supply free English foundation DWG, installation drawing, user guide, maintenance manual and part drawing.
5. We supply overseas technical support
6.Test Machine Before Delivery, you only need to connect the wires to the outside the control cabinet.
1. Delivery time of the rubber machines?
This is specially designed machine according to your specific requirement.
From engineer designing to production completion, it needs about 25 to 35 days.
2. What does your factory do regarding quality control?
We pay much more importance to quality control from the very beginning to the end of production.
Every machine will be fully assembled and carefully tested before shipment.
3. What's the machine quality guarantee?
Quality guarantee time is one year.We choose world famous brand components to keep our machine in perfect working condition.
4. Are you able to give installation and commissioning overseas? How long time will it take?
Yes, we can supply overseas service and technical support but customer needs to pay for the cost of the installation.
Small machine usually takes within 2~3 days.
Big plant usually takes about 30 days.
5. How can I trust you to deliver the right machine as I ordered?
We will absolutely deliver a good quality machine as we discussed and confirmed in the order.
The core of our company culture is innovation,quality,integrity and efficiency. Also we have had many good cooperation with world famous rubber production manufacturers. If you come to our factory, we can show you're the user around us.
6. How can we go to your side?
We are located in Qingdao City, Shandong province, China. The name of airport is Qingdao liuting airport.
We will pick up you at the airport.
Contact Person: lily
Tel: 008613061332206
Fax: 86-532-83197554


text:
Diesel-Driven Bee Slums and Impotent Turkeys: The Case for Resilience
By Chip Ward
Resilience. You may not have heard much about it, but brace yourself. You're going to hear that word a lot in the future. It is what we have too little of as our world slips into unpredictable climate chaos. "Resilience thinking," the cutting edge of environmental science, may someday replace "efficiency" as the organizing principle of our economy.
Our current economic system is designed to maximize outputs and minimize costs. (That's what we call efficiency.) Efficiency eliminates redundancy, which is abundant in nature, in favor of finding the one "best" way of doing something — usually "best" means most profitable over the short run — and then doing it that way and that way only. And we aim for control, too, because it is more efficient to command than just let things happen the way they will. Most of our knowledge about how natural systems work is focused on how to get what we want out of them as quickly and cheaply as possible — things like timber, minerals, water, grain, fish, and so on. We're skilled at breaking systems apart and manipulating the pieces for short-term gain.
Think of resiliency, on the other hand, as the ability of a system to recover from a disturbance. Recovery requires options to that one "best" way of doing things in case that way is blocked or disturbed. A resilient system is adaptable and diverse. It has some redundancy built in. A resilient perspective acknowledges that change is constant and prediction difficult in a world that is complex and dynamic. It understands that when you manipulate the individual pieces of a system, you change that system in unintended ways. Resilience thinking is a new lens for looking at the natural world we are embedded in and the manmade world we have imposed upon it.
In the world today, efficiency rules. The history of our industrial civilization has essentially been the story of gaining control over nature. Water-spilling rivers were dammed and levied; timber-wasting forest fires were suppressed; cattle-eating predators were eliminated; and pesticides, herbicides, and antibiotics were liberally applied to deal with those pesky insects, weeds, and microbes that seemed so intent on wasting what we wanted to use efficiently. Today we are even engineering the genetic codes of plants and animals to make them more efficient.
Surprise Happens
Too often we understand the natural systems we manipulate incompletely. We treat living systems as if they were simple, static, linear, and predictable when, in reality they are complex, dynamic, and unpredictable. When building our manmade world on top of those natural systems, we regularly fail to account for inevitable natural disturbances and changes. So when the "unexpected inevitable" occurs, we are shocked. Worse, we often find that we have "all our eggs in one basket," and that the redundancy we eliminated in the name of efficiency limits our options for recovery. This applies to manmade systems, too.
Our efficient energy and food systems are perfect examples of how monolithic and brittle our infrastructure can become. Political turmoil in the Middle East, storms ravaging offshore oil wells, refinery fires, terrorism, and any number of other easily imaginable, even inevitable disruptions send gas prices soaring and suddenly our oil-dependent economy is pitched into a crisis. Because there is no readily available alternative to how we fuel our way of life — no resilience — our dependence on fossil fuels leaves us especially vulnerable to crisis. Our food system is likewise vulnerable, since it is so dependent on oil-based fertilizers and pesticides and relies on cheap and consistent supplies of gas for farm machinery and shipping.
Redundancy — alternative energy sources, for example -– would have left us options to fall back on in a time of such crisis. We did not develop those options, however, because they weren't considered "competitive." That is, if one energy source is cheaper to produce than others — ignoring, of course, all the associated and unacknowledged environmental and health costs — then that is the predominant energy source we will use to the exclusion of all others. Decades ago, oil and coal were cheap and so we constructed an entire energy infrastructure around those resources alone. (Nuclear squeaked through the door only because it was so heavily subsidized by government.) Solar and wind couldn't compete according to the rigid market criteria we applied, so those sources hardly exist today. We are still told that we will get them only when they become more competitive.
Our focus on efficiency in building manmade systems has been short-sighted because it fails to anticipate change over the long run. Resiliency is eliminated at each turn by owners, managers, and planners steeped in the cult of efficiency and trained to cut out profit-reducing redundancy whenever it appears. In organizations, this usually works well — at least for a while. But our attempt to maximize the use of natural systems has, in this regard, been an unmitigated disaster.
Most of the technological means we use to overcome nature's inefficiencies seem clever and beneficial until the long-term drawbacks dawn on us. In the Northwest, for instance, dams seemed like a great way to produce electricity and make rivers navigable until, that is, the salmon began to die and an entire Northwest ecosystem that depended on salmon began to unravel. Until they broke under the power of Hurricane Katrina, the levees in New Orleans seemed to be a neat alternative to those messy coastal wetlands and inconvenient barrier islands we had wiped out for keeping storm surges in check.
Bees Drop Dead
The recent collapse of honeybee colonies across the United States provides a compelling example of how we removed resilience from a fundamental ecological service — pollination — to make it more efficient and the unexpected blowback we are now suffering from that. In this case, there is little resilience in the manmade system of food production that relies on healthy populations of commercial bee colonies to pollinate crops and too little resilience left in the natural world for bees to recover quickly from whatever is wiping them out.
Pollination is a fundamental process that happens many ways — birds do it, bees do it, even butterflies and moths do it. But humans who grow food rely almost exclusively on bees; and not the hundreds of species of wild bees either, but one bee, the European honeybee. Sometimes resilience in nature is the availability of diverse options to fall back on in times of disturbance, but even when there is one choice, like bees for pollinating crops, there are still resilient features, redundancies that we eliminate at our peril. For hundreds of years, numerous dispersed and varied bee populations meant that a scarcity of bees here could be compensated for by an abundance of bees there. Not anymore. We have grabbed this key ecological process to maximize its use and have wrung out what resiliency there was.
Although the widespread disappearance of bees from our landscapes sounds like the stuff of melodramatic science fiction, like those movies about Ebola virus or asteroid strikes, the situation is both dire and all too real. Bee-tracking experts estimate that, across 26 states, between a half-million and a million of 2.4 million bee colonies have collapsed this year. Because many fruit, vegetable, and seed crops, worth about $12 billion annually, rely on the most affected bee, the European Honeybee, for pollination, bee loss will translate into increased food costs for consumers and a potential loss of food variety as well.
Nobody knows for sure why bee colonies are collapsing. German researchers recently speculated that the rapid growth in cell-phone use might be a cause, that some kind of tipping point had been crossed where bees could no longer navigate and communicate in an electro-magnetic environment saturated with cell-phone signals. This speculation is based upon experiments in which forager bees abandoned hives next to which cell phones had been placed. But bee populations are collapsing across the nation, including in areas with less cell phone ubiquity.
Where Have All the Flowers Gone?
The suddenness of the collapse is puzzling, but one possibility would be the emergence of some new killer parasite or bee mite — a development that could result in such a precipitous decline. After all, bee pollination is big business. Bees are transported and mixed today in ways never before possible, giving the tiny parasitic critters that bees carry in their guts all sorts of opportunities to find new hosts. But whatever the specific cause of bee colony collapse, the context of this pollinator catastrophe is an old story.
Once upon a time we had lots of small, local farms. Farmers relied on dispersed bee populations to pollinate their crops, enhanced and encouraged by the work of local beekeepers. When monoculture was but a glint in the agricultural eye, when cows, chickens, pigs, and more than one crop was still part of the farming dynamic, a farmer might also keep a hive or two. Before we replaced meadows and prairies with sprawling subdivisions, there was enough habitat for local bee populations to thrive and meet agricultural demands. Not anymore.
Today, when farms are massive and almost invariably dedicated to single crops, there just aren't enough local bees to do the work required. In addition, the crops we grow need to be pollinated at different times. So, for example, vast crops of almonds in California need to be pollinated in February when there aren't enough local bees around, so the growers import bees to do the job.
Diesel-Driven Bee Slums
In fact, we ship billions of bees from here to there and back again in tractor-trailer trucks to pollinate our food crops. Like so many other aspects of modern agriculture, bee pollination has become a business that matches the scale of our food-production system. So, out with the inefficient, inflexible, insufficient local bees and in with diesel-driven colonies of commercial bees that arrive in sufficient numbers where and when we want them. The top beekeeping corporation in America can put 70,000 hives on the road at one time.
What happens to bees in such circumstances is probably similar to what happens to all creatures living in crowded and overpopulated environments — illness can spread quickly. A dairy farmer in Vermont told me that, when you have a hundred cows in the milking barn, you can use antibiotics sparingly. But put a thousand cows together and you're applying antibiotics all the time. Whatever happens in one cow's blood stream tends to go through the whole herd quickly — and the more cows that are crowded together, the more viruses, parasites, and infections are in play.
The same thing happens to chickens and pigs in factory farms, which is why they get antibiotics routinely. Why would bees be an exception to the vulnerability to illness that comes with agriculture conducted on such a massive scale? You can't, however, apply antibiotics to bees the way you can to cows because bees are more likely to trade mites than infections, so new miticides are being developed.
Logically enough, bee vulnerability is increased if the immune responses of the bees are low. A friend of mine drove tractor-trailer trucks filled with bees as a summer job in college. He drove by night when the bees were in their hives and quiet. The goal was to get to his destination before dawn and unload the bees onto the targeted crop before they became busy, uncooperative, and agitated. When the trip was rough, when there were breakdowns or bad weather en route, he said, thousands of bees died. If stress kills bees, it is not unreasonable to assume it lowers immune response.
Bees have to be fed between trips. High fructose corn syrup is hauled to them in tanker trucks, which probably isn't any better for their health than it is for ours. Bees, of course, encounter and incorporate pesticides and herbicides in the fields they pollinate, as well as all the other background pollutants we have put into the environment. Toxic chemicals also lower immune thresholds. Who knows what those genetically modified plants they encounter do to them? Add it all up and you get overcrowded, malnourished, stressed-out, poisoned, possibly cell-phone radiated, disturbed bees. Any — or all — of this could contribute to the present colony collapse, or it could be due to some as yet unknown factor or development. When it comes to resiliency, however, it doesn't matter. What does matter is the missing redundancy in the system.
Read all of it here.


text:
Then came a little ray of hope with the MATE desktop. But even that wasn't perfect with the two configurations, MATE and GNOME, running side by side and confusing things. The advantage of MATE was the file browser which was better than Nautilus, because also at that time Nautilus lost important features like the "up to parent folder" button gone.
Then came a double break-through with the new GNOME session fallback desktop imitating Gnome 2 within Gnome 3 and thanks to Mr Kirby with his nautiluspatch which brought back the missing functions in nautilus....and I was over the moon.
So back to the familiar Gnome 2 appearance. Again I was able to tweak the desktop the way I liked it.
I have the main gnome panel at the top. This serves as an instrumentation panel like the one in a cockpit. I can see the date and time, CPU temperature and fan-speed, CPU usage graph monitor, net-speed and net-activity bars, keyboard switcher with flags, mixer and volume control, notifications, terminal, menu, home-folder and killx.
I was able to install packets from Lucid, like knetload and kkbswitch, that had disappeared in the repositories since then and they still worked. I can also tweak the colour scheme somewhat; also with the help of a still maintained emerald window decorator via compiz. And keyboard shortcuts like Ctrl+Alt+Backspace worked again to logout/login.
As an extra monitor I use conky and conky forecast which was made workable again recently (after being useless for a couple of years) with the use of the http://xml.weather.com/weather/local/ site replacing the redundant xoap site. So not all is lost thanks to the persistence of fellow Linux users who remember
the good stuff and keep it alive apart from the big Ubuntu and Canonical repositories.
The favourites within my Ubuntu 12.04 set-up are the 4 C's:
- Classic Gnome,
- Compiz,
- Cairo-Dock, and
- Conky.
Instead of the bottom gnome panel I use Cairo-dock. This works 100% when using the Nvidia driver. In fact there is hardly any issues with this desktop.
The clock is a modified screenlet clock: plain-black no-back with the colour of the hands changed. The theme is The Prophet with the colours changed to a purple and gold theme. Conky theme is heavily changed from original. Below the conky windows is NetWorx, a windows app running on wine counting my limited net quota.
I can share the config files with anyone interested.
Next favourite desktop would be XFCE, which is nearly as highly tweak-able.
This article by Rolf Sommerhalder won the first prize in the Desktop Environment articles contest which Linux notes from DarkDuck ran together with BuyLinuxCDs.co.uk site.


text:
What Is Cosmetic Dentistry?
People choose esthetic dental procedures/surgery for various reasons—to repair a defect such as a malformed bite or crooked teeth, treat an injury, or just improve their overall appearance. Whatever the reason, the ultimate goal is to restore a beautiful smile.
For these and many other reasons, esthetic dentistry has become a vital and important part of the dental profession.
Common esthetic dental procedures can be performed to correct misshaped, discolored, chipped or missing teeth. They also can be used to change the overall shape of teeth—from teeth that are too long or short, have gaps, or simply need to be reshaped.
Some of the more common procedures involve:
- Bonding - A procedure in which tooth-colored material is used to close gaps or change tooth color.
- Contouring and reshaping - A procedure that straightens crooked, chipped, cracked or overlapping teeth.
- Veneers - A procedure in which ultra-thin coatings are placed over the front teeth. Veneers can change the color or shape of your teeth. For example, veneers have been used to correct unevenly spaced, crooked, chipped, oddly shaped or discolored teeth.
- Whitening and bleaching - As the term implies, whitening and bleaching, a rapidly increasing procedure, are used to make teeth whiter.
Which techniques should be used to improve your smile? A dental exam will take many factors into consideration, including your overall oral health.
Are you interested in Invisalign? Call Andrew Schmid, DDS in
Manchester, VT at
(802) 362-2345 to learn more!


text:
Toyota Land Cruiser 100 Series GX/VX; Row 1, 2, 3 available
Protects your vehicle's original carpeting from dirt, dust, mud and grime. Custom-designed to fit your vehicle's interior. Our floor mats have a 4 mm coin-finish and are made with solid rubber, finished with attractive edge binding.
Feel free to contact Jacques via Whatsapp or email to do a stock check before ordering.
Please allow 3 working days for delivery if item is in stock, please allow 14 working days for production and the 3 days for delivery.if item is out of stock
Whatsapp number; 079 515 1579
Email; email@example.com
Please Note;All our fabric options are the same price. Visuals/images are for quick guide only, & in all cases written description takes preference over visual. We will supply as per written description, and not visual


text:
Online Booking Fee £1 per booking
Box Office Booking Fee £2 per booking
Tickets by Post £2.50 P&P
Picnic Table (undercover) Booking Fee variable. Tables are available free of charge, but this is on a first come, first served basis and subject to availability.
N.B Table and catering booking facilities close a week before the performance date.
Exchange – Tickets cannot be exchanged for a different event, unless you are a Friend of Clonter. However where there is more than one performance of an event, tickets can be exchanged where available, up to 48 hours prior to an event. Admin fee of £3 per ticket. Free for Friends of Clonter.
Refund – Tickets are non refundable unless a show is cancelled.
All tariffs waived for Friends of Clonter.
For further details about becoming a Friend, please go Support Clonter – Friends


text:
Flat handkerchief M
This handkerchief features a triple-fold hemmed finish and is made with one of A&S's classic fabrics, "Cotton linen OX." The bandana is embroidered with our A&S monogram. Available in four colors: Vintage white, Gray beige, Navy and Black. The fabric is made from A&S's standard fabric, which is a modern machine-made reproduction of the 'greyish white' seen in vintage and antique fabrics, done by controlling the thread color. Recommended as a gift.
SIZE (cm)
One size | |
( Cotton linen ox )
*Due to the nature of linen fiber, thick knots or lump of string may appear on the surface of the fabric. Also, linen fibers may be mixed into the fabric, but this is not a defect but a characteristic of natural material.
Care instructions
*Please avoid tumbler drying.
*Dark colors may cause color migration to other clothing, so please wash alone.
[Shipping areas (limited to)]
Australia / Canada / China / Hong Kong / India / Macao / Malaysia / Mexico / New Zealand / Singapore / South Korea / Switzerland / Taiwan / Thailand / United Arab Emirates / United Kingdom / United States / Vietnam
[Delivery Charges]
Fees will depend on the order volume and shipping destination. It depends on the shipping destination and the items purchased. Please review the automatically calculated fees on the checkout page.
[Delivery couriers]
EMS / DHL / FedEx
[Dispatch date]
Generally, items will be shipped out within three business days after your order confirmation.
* Every order reference will be packaged as one shipment. Multiple orders placed on the same day cannot be shipped together. Please carefully check before confirming your order.
* Please note that delays may occur due to natural disasters, social infrastructure or other cases of force majeure.
* For further details, please also refer to our Shopping guide.
[For customer orders to India]
In order to import all non-document deliveries to India, a mandatory procedure is required to submit your KYC (Know Your Customer) documents.
In any case the KYC is unregistered in time, delays of customs may occur.
Please follow the procedure listed in the DHL website below, and make sure the required criteria are met before placing your order.
For further questions, please contact DHL India directly.
Returns and Exchanges
We do not accept returns or exchanges due to personal reasons. Before you confirm your purchase, please send your inquiry through our Contact form to further assist you about the nature of each item.
* The actual products are photographed one by one. Due to the variations in monitors and browser experiences, the color of products may appear different on individual monitors. Computer monitors are not all calibrated equally for color reproduction. Please understand these cases will not be accepted as defective items.
* For further details, please refer to our Return policy.
Related items
Flat handkerchief M
Flat handkerchief M
Message handkerchief


text:
Wedding portfolio gallery
Engagement Gallery
Professional Headshots/Branding
Portrait Galleries
Wedding Prices and FAQ
Portrait Prices and Info.
Real Estate/ Commercial
Meet Lana
Helpful advice for your planning
Portraits/ Senior Sessions
Communion photography
Wedding at Flowerfield Celebrations
Wedding at Bourne Mansion, Oakdale, NY
Wedding at Bellport Country Club
The Vineyards Wedding
Wedding at Stonebridge Country Club, Smithtown,NY
Wedding at Wind Watch Golf & Country Club
Larkfield Manor Wedding
Wedding at Insignia, Smithtown, NY
Wedding at Fox Hollow Caterers
Weddings at 360 East Montauk Downs
Wedding at Watermill Caterers
Wedding at Jericho Terrace
Wedding at The Lakehouse Restarant
Wedding at Captain Bill's
Bridal shower at Mansion at West Sayville Golf Course
Ideas for engagement session locations
Real Weddings- Full galleries
Setting up your wedding day timeline
Wedding Day Information Prep. Form
Album Release for production form
Read our reviews & add your own!
Client Forms
Custom Designed Wedding Books & Albums
Vendors we love!


text:
It seems that Jim Cooper, director of the Salt Lake County public library system, has rescinded an invitation to Mark Spragg, author of An Unfinished Life, and has dropped his book as the choice for Salt Lake County's "One County, One Book" program for 2007.
Spragg, of Cody, Wyo., said he was notified in January that his book had been chosen for Salt Lake County's "One County, One Book" program, which encourages people to read and discuss books....
Two weeks later, he received an e-mail from library employee Susan Hamada saying the invitation to speak had been rescinded.
"An Unfinished Life" is about a woman who tries to make amends with a bitter Wyoming rancher after causing a car accident that killed his son and her husband.
Spragg theorized that his book, with some rough language, was considered an affront to conservative Mormons.
"You don't ask someone to dance, then say, 'You're too unsightly,' when they stand up from the table," he told the Deseret Morning News of Salt Lake City.
"We felt it was a little stale. We wanted something that was different," Cooper told The Associated Press on Friday.So the "stale" An Unfinished Life, published in August 2004 was replaced by the "fresh" Life of Pi which was first published in the U.S. in June 2002. Yeah, that explains it. Call in the spin doctor and let the cover up begin.


text:
Upside Down In Your Mortgage? Behind On Payments And At Risk Of Losing Your Home??? | |
Click here for FREE information and to explore your options! |
Buying in the Las Vegas area? Search Homes Now FREE! | |
Get access to view every available home in the area. Click here to begin your search for your perfect home or real estate property in the Las Vegas area! |
Selling? Get A FREE Home Value Request! | |
Click here to find out how much you can get for your property. Let me provide you a Comparative Market Analysis(CMA) with the sales prices of other similar properties in Las Vegas, North Las Vegas, and Henderson! |
Las Vegas real estate can be very tricky because the city is much larger and more varied in pricing than one might think. Monopoly Realty is extremely knowledgeable in all aspects of Las Vegas real estate including new construction, foreclosures, short sales, and more. Las Vegas is a large area comprised of different neighborhoods all of which have unique qualities - which is why it is important to enlist the help of a Las Vegas realtor.
Las Vegas short sales are a specialty of ours here at Monopoly Realty. When shopping for Las Vegas short sales, it is advisable for the buyer to look at short sales where the home has been well-maintained. While you might be getting a discount, you don't want to fall in love with a home until it has been shown to you. This is why working with us is extremely important. We research and do all the work for you to ensure you only see the best quality listings available.
Las Vegas real estate can be a complicated market, but you don't have to resign yourself to being confused and lost in the city. We are here to help. We can find you a new home, help sell your old one, and we can even handle your short sale if need be to make your home shopping experience as stress-free as possible. Contact us today for more information about Las Vegas, North Las Vegas, Henderson, and surrounding areas.
Our list of services and service areas include,
If you have further questions about the Las Vegas area or Las Vegas real estate markets, please don't hesitate to call Monopoly Realty at 702-777-3000 or send an email.


text:
What is cancer?
Cancer is a group of more than 100 different diseases that begin when abnormal cells in the body grow out of control. Normally, cells grow and divide to create new cells as they are needed to keep the body healthy. Sometimes this process of growing new cells does not work properly and cancer forms.
How does cancer start?
Normal cells become cancer cells because of damage to DNA. DNA is in every cell and directs all its actions. In a normal cell, when DNA gets damaged, the cell either repairs the damage or it dies. In cancer cells, the damaged DNA is not fixed, but the cell does not die like it should. Instead, this cell goes on making new cells that the body does not need.
How does cancer grow?
Abnormal cells can grow into a mass, or tumor. Not all tumors are cancerous. Tumors can be either malignant (cancerous) or benign (noncancerous). A malignant tumor, or cancer, can spread to other parts of the body and form other tumors.
Some cancers, like leukemia, rarely form tumors. Instead, these cancer cells are in the blood and blood-forming organs and flow through other tissues, where they grow.
Some cancers grow quickly; others may grow slowly over many years.
How common is cancer?
Cancer is a very common disease. One of every two men and one of every three women will be diagnosed with cancer at some time in their life. In New York State, nearly one in four deaths is due to cancer.
Cancer can occur at any age, but it is most often found in those people middle-aged and older. The number of people diagnosed with cancer has increased over the past 40 years. Most of this is due to an increase in the population and because people are living longer.
The most common cancers found in men, besides skin cancer, are prostate, lung and colon cancer. Breast, lung and colon cancers are the most common cancers found in women.
What causes cancer?
Different cancers have different causes and there are many factors that affect a person's chances of getting different types of cancer. Sometimes there is a family history of cancer. Scientists agree that people can get cancer through repeated long-term contact with carcinogens. These include tobacco, sunlight and indoor tanning devices (beds, booths, sunlamps) x-rays, and certain chemicals that may be found in the air, water, food, drugs and workplace. Our personal habits and lifestyle may also contribute to cancers. Scientists believe that about 30% of cancer deaths are due to tobacco use and between 25-30% of cancer deaths may be due to inadequate physical activity, obesity and an unhealthy diet.
How soon after exposure to a carcinogen does cancer appear?
Most cancers develop slowly in people. They usually appear between five to 40 years after exposure to a carcinogen. For example, lung cancer may not occur until 30 years after a person starts smoking. This long latency period is one of the reasons it is difficult to determine what causes cancer in humans.
What does it mean when something "is associated with" cancer?
It means that there is a link between the two, but there is no proof of cause and effect. More research needs to be done before we know for certain.


text: Release:Peaceville Records / Edel31.10.2014 (GER)Info:Having achieved almost mythical status in black metal lore, 'Planet Satan' has been rumoured since the late 1990's, following the band's debut release, 1996's 'In the Streams of Inferno'. Unifying the core trio of Herr General Cerastes, Svartravn & DrBest, 'Planet Satan' is now upon us, & is set for an October 27th 2014 release on Peaceville Records. A work of intense and otherworldly black metal power injected with Mysticum's strong cosmic, satanic and psychedelic overtones, 'Planet Satan' welcomes Mysticum to the new millennium with full & unrelenting force, whilst retaining the core elements which made the Norwegians pioneering legends of industrial black metal. Both infernal & nihilistic, as well as apocalyptic in its scope and execution, 'Planet Satan' is a new milestone for the genre in its sublime, chaotic ferocity. Primitive minor-chord riff patterns & tortured vocals mixed with the band's manic and often unconventional programmed drum beats makes this an eerily hypnotic work of the darkest order. The album was recorded & mixed at Fias Co. Studios with producer Sverre Dæhli, & mastered by Tom Kvålsvoll at Strype Audio in Oslo. Emerging in the early 1990's, Mysticum brought to the world a completely unique brand of psychedelic discordant black metal with insane drum machine patterns & synths. They were originally signed to Euronymous' Deathlike Silence Productions label, such was his belief in the band. However, this venture proved to be cut short following his death, forcing Mysticum to look elsewhere for the release of their eventual debut album, 'In the Streams of Inferno'. Peaceville Records comment: "There is truly no other band quite like Mysticum. A perfect concoction of cold, primitive black metal & forward-thinking ideas from an act unafraid to push boundaries, the hell of 'In the Streams of Inferno' has had a lasting & profound impact on many since 1996, & so it is finally time to welcome the return of Mysticum with the long-overdue arrival of Planet Satan to infect the masses once more".


text:
\nFor the development of ethical machine l
earning (ML) for precision medicine\, it is essential to understand how va
lues play into the decision-making process of developers. We conducted fiv
e group design exercises with four developer participants each (N=20) who
were asked to discuss and record their design considerations in a series o
f three hypothetical scenarios involving the design of a tool to predict p
rogression to diabetes. In each group\, the scenario was first presented a
s a research project\, then as development of a clinical tool for a health
care system\, and finally as development of a clinical tool for their own
health care system. Throughout\, developers documented their process cons
iderations using a virtual collaborative whiteboard platform. Our results
suggest that developers more often considered client or user perspectives
after changing the context of the scenario from research to a tool for a l
arge healthcare setting. Furthermore\, developers were more likely to expr
ess concerns arising from the patient perspective and societal and ethical
issues such as protection of privacy after imagining themselves as patien
ts in the health care system. Qualitative and quantitative data analysis a
lso revealed that developers made reflective/reflexive statements more oft
en in the third round of the design activity (44 times) than in the first
(2) or second (6) rounds. These statements included statements on how the
activity connected to their real-life work\, what they could take away fro
m the exercises and integrate into actual practice\, and commentary on bei
ng patients within a health care system using AI. These findings suggest t
hat ML developers can be encouraged to link the consequences of their acti
ons to design choices by encouraging "empathy work" that directs them to t
ake perspectives of specific stakeholder groups. This research could infor
m the creation of educational resources and exercises for developers to be
tter align daily practices with stakeholder values and ethical ML design.<


text:
Pinterest Aids in Helping Police Nab Criminals
Never underestimate the power of the internet or its users: it may sound crazy, but the social network Pinterest, aka the place where you can find a cute-sy cashmere sweater and a recipe for caramel fudge brownies, has helped local Pennsylvania police departments catch criminals.
Ever since the newspaper The Mercury created a Pinterest group called "the wanted by police group list" in July, the local police forces have been able to close cases and track down wanted criminals thanks to tips submitted by users.
The list has photos of the criminals as well as a description of the crime they're wanted for. The types of crime varies: there's DUI, attempted murder, theft, fraud, etc. The most recent arrest comes from Spring City, where a woman who had so far evaded the police and was being charged with burglary; previous offenses include a jail sentence after stalking a man. Thanks to the users of the Pinterest group, says Police Chief Anthony Kuklinski, they were finally able to arrest her on September 1st, 2012.
On Thursday afternoon, the Pinterest group was recently updated with a new list of wanted criminals to be on the lookout for, and a cop from Pottstown urges civilians to pick up the phone to call if they see anything; even an anonymous tip is helpful when it comes to holding the criminals accountable for their unlawful actions. And while you're there, maybe you'll check out the fun stuff TheFW's been posting.


text:
Showing 1 to 1 out of 1 results
TextEEBO-TCP (Phase 2)Date of publication:
1653Description:By Richard Farnworth. Place of publication from Wing. The words "as many .. Spirit" are connected by square brackets on title page. Caption title on p. 4 reads: A message from the Lord to all those that despise the ordinance ...This item contains 4 files (341.13 KB).Publicly Available -


text:
KANSAS CITY, Mo. — An NFL coach that's breaking barriers has taken a new job with her hometown team.
Katie Sowers, the NFL's first openly gay coach and the first woman to coach in a Super Bowl, is leaving the San Francisco 49ers to join the Kansas City Chiefs.
Sowers, a Kansas native, made the announcement on Instagram earlier this week.
"Retired from coaching in the NFL? Nah. Kansas City..I'm home!" she wrote.
Sowers' position is through the Bill Walsh Diversity Coaching Fellowship which is designed to increase the number of full-time NFL minority coaches.
In 2016, Sowers worked with the Atlanta Falcons under the fellowship. She then followed former Falcons offensive coordinator Kyle Shanahan to San Francisco when he was hired as the 49ers head coach in 2017.
Sowers served as a full-time offensive assistant from 2017 to 2020. She was on the sidelines during Super Bowl LIV, when the 49ers lost to the Chiefs 31-20.
This story was originally published by Megan Strickland on Scripps station KSHB in Kansas City, Missouri.


text:
by Elli Winter
Content editor
Elli and her experience in arts and crafts are the backbone of the home improvement content on the website. Elli is responsible for keeping the content up to date as Head of Updates and ensuring that facts and recommendations are valid and trustworthy.
Expertises: Art, Do it yourself, Home improvement, Design, Craft
Updated on


text: Here you will find a wide range of Rossmont items that we have in stock at our Aquarium Store in Brackenfell, Cape Town, South Africa. You can also order it online from this page and we will deliver to your door. You can visit our Shop Page and view all the Aquariums, Aquatic Plants, Decor, Filters and all your aquascaping needs. We can also ship Aquarium Livestock to your door. We have the best reputation when it comes to quality and client satisfaction. Check out our review on Google Maps and Facebook for peace of mind. Get your Rossmont items today!


text:
Global Travel News
Remains of 80-Million-Year-Old Marine Reptiles Discovered in Saudi Arabia
Riyadh, Saudi Arabia, June 1, 2022 / TRAVELINDEX / The Red Sea Development Company (TRSDC), the developer behind the world's most ambitious regenerative tourism project, and the Saudi Geological Survey (SGS), the main authority in geological exploration and mapping of the kingdom, have partnered for one of the largest surveys of the Red Sea area. Findings from an initial 10-day dig, carried out by SGS paleontologists, revealed several significant findings and areas of interest – including the bones of an enormous marine lizard over 80 million years old.
The survey was the first step on a journey to uncover the rich history of the region and to provide geological research, data and expertise to assist with the design and construction process. The parties intend to continue their work together to identify unique geological attractions for tourism, establishing the Red Sea as a destination where visitors can discover Arabia's rich natural history.
"The spirit of adventure has always been tied to the essence of discovery. Our destination is already home to the site of Saudi Arabia's first underwater excavation, but above the water, we are now finding geological and paleontological evidence of millions of years of activity in the region," said John Pagano, CEO of TRSDC.
"This partnership continues our commitment as a responsible developer to identifying, preserving, and displaying these natural treasures found right beneath our feet. Paleontology is a growing area of study within the Kingdom, and we are hoping to help support interest in discovering the ancient heritage buried along our coastline."
The excursion along the Red Sea coast, unearthed various samples spanning from the late Cretaceous to the Eocene period – roughly 80 to 45 million years ago. Approximately half of the sites surveyed produced rare fossils, with researchers expecting to discover many more on future digs. The findings represent the first record of marine mammals from the Paleogene period to be found in the Red Sea coastal area.
Scientists exploring the AMAALA site uncovered numerous fossilized remains of sea-cows, crocodiles and turtles, as well as bones of mosasaurs, a family of giant marine lizards commonly referred to as 'The T-Rex of the Sea' that existed between 80 and 66 million years ago and reached up to 18 meters in length and 14 tons in weight.
Several marine vertebrates found by the team were recorded for the very first time in the area – including remains of one of the largest turtles to have ever inhabited the region. These findings come in addition to a prior discovery of a partial plesiosaur skull recovered from the site.
Additional discoveries from younger sedimentary beds emerged during this phase of geological exploration in the area include vertebrate and invertebrate faunal assemblages of marine crocodiles and turtle bones, and massive colonies of coral reef barriers. This new information shows us that 20-16 million years ago the Red Sea depth was 200m above today's actual sea level, and the seawater encroached and flooded deep inland by approximately 100km over time.
In addition to paleontological findings, researchers identified signs of prehistoric human activity among the rocks of the crystalline basement at The Red Sea Project. These signs were in the form of prehistoric rock art thought to be petroglyphs produced by an ancient civilization yet to be identified.
The CEO of SGS, Engineer Abdullah Shamrani said: "The rare finds from the central coastal areas of the Red Sea tell fascinating stories about the evolution of life in the region over the past tens of millions of years. Our partnership with TRSDC is helping us uncover the mysteries of these important and unexplored geological areas, highlighting the true extent of the historic value of the destination. I'm sure we'll discover important landmarks for geology that tourists from around the world will want to see and learn about for themselves."
"This partnership between SGS and TRSDC intends to unveil important geological discoveries along the Red Sea region, and we are committed with our significant partner to protect and develop the priceless geological and historical heritage in the Kingdom to produce sustainable touristic destinations in accordance with the kingdom's 2030 Vision," he added.
The partnership's early successes testify to the historical significance of the Red Sea's coastal waters. Over 1,600 historical and geological sites have already been identified within TRSDC's development area, and future guests will have the opportunity to discover and explore current and emerging finds.
The Red Sea Project has already passed significant milestones and work is on track to welcome the first guests by the beginning of next year, when the first hotels will open. Phase one, which includes 16 hotels in total, will complete by the end of 2023.
Upon completion in 2030, The Red Sea Project will comprise 50 resorts, offering up to 8,000 hotel rooms and more than 1,000 residential properties across 22 islands and six inland sites. The destination will also include an international airport, luxury marinas, golf courses, entertainment, and leisure facilities.
AMAALA is set across 4,155 sq. km. and due to welcome first guests in 2024. The destination is designed to create a one-of-a-kind global wellness hub and is underpinned by a commitment to sustainable development. The whole development is targeting a minimum LEED Gold standard for environmental sustainability.
About The Red Sea Development Company
The Red Sea Development Company is a closed joint-stock company wholly owned by the Public Investment Fund (PIF) of Saudi Arabia. TRSDC was established to drive the development of The Red Sea Project, a luxury, regenerative tourism destination that will set new standards in sustainable development and position Saudi Arabia on the global tourism map.
The project is being developed over 28,000 km2 of pristine lands and waters along Saudi Arabia's west coast and includes a vast archipelago of more than 90 pristine islands. The destination also features sweeping desert dunes, mountain canyons, dormant volcanoes, and ancient cultural and heritage sites. It is designed to include hotels, residential properties, leisure, commercial and entertainment amenities, as well as supporting infrastructure that emphasizes renewable energy and water conservation and re-use, as well as a circular waste management system to achieve zero waste to landfill.
Activity for the first phase of development is well underway and is on track to be completed by the end of 2023. The project has surpassed significant milestones, with over 800 contracts signed to date, worth in excess SAR 20 bn ($5.33bn).
The 100-hectare Landscape Nursery, which will provide more than 25 million plants for The Red Sea Project and AMAALA, is now fully operational. There are more than 20,000 workers currently on-site and 90km of new roads are now complete. The Construction Village and the Waste Management Centre are both fully operational and development is progressing well at the Coastal Village, which will be home to around 14,000 people who will eventually work at the destination.
About AMAALA
Set in the Prince Mohammad bin Salman Natural Reserve along Saudi Arabia's north western coast and spanning 4,155 sq. km, the year-round destination features a pristine landscape and diverse natural ecosystems, coupled with a unique and intriguing heritage and local culture.
Designed to evolve and elevate the very best in travel, AMAALA is an ultra-luxury destination and the first global integrated family wellness destination, set to curate transformative personal journeys inspired by arts, wellness and the purity of the Red Sea. State of the art facilities and an attractive year-long events calendar will ensure AMAALA is a distinctive wellness destination worldwide.
Phase One of Triple Bay is well underway and set to complete in 2024. It will consist of eight resorts offering upwards of 1,300 hotel keys and 200 residential units. Over 250 contracts have been awarded to date worth in excess of 5 billion riyals.
Once complete, AMAALA will be home to more than 3,000 hotel rooms across 25 hotels, and approximately 900 luxury residential villas, apartments, and estate homes, alongside high-end retail establishments, fine dining, wellness and recreational facilities.
Sustainability is a cornerstone of AMAALA, which will be powered by 100% renewable energy for which the resulting saving in CO2 emissions to the atmosphere is equivalent to nearly half a million tons each year. The destination will operate with a zero-carbon footprint once fully operational. A Public Investment Fund company and a key contributor to Vision 2030, AMAALA will establish new standards in luxury and wellness.


text:
United Kingdom on Wikipedia
This is a word cloud of the 50 most frequent words on United Kingdom on Wikipedia.
This word cloud uses 50 words
Other pages on Wikipedia
Try it yourself
Let WordCloud.app analyze a web page for you. Simply enter a URL and make a colorful, interesting image in seconds.


text:
Image created with originals by cottonbro from Pexels and OpenIcons from Pixabay
Starting with macOS 10.15.5 Catalina, Apple introduced a battery health management feature that improves your battery's lifespan by adjusting charging patterns to reduce the rate at which the battery chemically ages. (Find it in System Preferences > Energy Saver > Battery Health.) One thing to be aware of with battery health management is that it might cause your MacBook to display "Battery Is Not Charging" in the battery status menu even when it's plugged in. That's normal, and it's nothing to worry about. Of course, if you regularly see that message, it's a hint that you may not be using the proper power adapter and cable or that the power source isn't delivering enough juice.
Find more information about Catalina battery health management here.


text:
Poly is a unique generative sequencer for iPad which harnesses the power of poly-rhythms to create intricate and exciting patterns.
Different coloured nodes are added to a circular area. The closer a node is to middle, the faster it repeats. Each node has its own sample, FX settings and keyboard. There are five available colours and up to 12 nodes maximum.
Poly comes with over 40 preset sounds, including a selection of awesome 808 samples.
Other features include:
– Audiobus integration
– Audio Copy and Paste (via In App Purchase)
– MIDI sync and Virtual MIDI out (via In App Purchase)
– Saving and Loading of Patterns
– Recording of performances
– SoundCloud upload and Dropbox upload and download (via the same In App Purchase as ACP)
Poly is available for FREE


text:
Limited time offer: Buy one get one free
Premium CBG infused gummies brought to you by yCBG. CBG is fast becoming the go-to option when it comes to hemp-based cannabinoid extracts. There are already numerous reports and suggestions from leading scientific bodies which detail the potential benefits of CBG being superior to CBD in certain situations.
These yCBG gummies are the perfect way to get your daily CBG dose! They combine the sweet taste of gummy style sweets with all of the benefits of CBG. They are available in a variety of fizzy gummy styles including "Fizzy Pink Bottles", "Fizzy Cola Bottles", "Fizzy Cherry Bottles" and many more.
• 160g Tub
• 320mg CBG total
• Fully lab tested
• Free from harmful chemicals
• Halal
• 100% USA hemp
Dosage: Approx. 3.0 – 3.5 mg CBG per gummy. Do not exceed 70mg of CBG Edibles per day
THC content<0.2%


text:
The publications and reports of the Association are available free of charge for registered visitors and for the members of the Association.
You have a log-in and a password:
You wish to become a member of the Association:
Join the World Road Association and share your experiences and expertise with your peers around the world.
Members also benefit from a range of quality services and resources, reduced prices, etc.
You wish to register as a visitor only:
This account is entirely free of charge and without any commitment. Your data will not be communicated to third parties or used for commercial purposes. You will be able to download immediately technical reports and other materials.


text:
Log In
LISTSERV Archives
Search Archives
Log In
Register LISTSERV Password
Register a new password for the LISTSERV web interface
Register LISTSERV Password
Please enter your email address and the desired password. If you already have a LISTSERV password but cannot remember it, this procedure will replace your existing password with the new one.
Email Address:
Password (Again):


text:
How to 'tether' your PC to your phone
Last year, the Federal Communications Commission (FCC) investigated Verizon Wireless for stifling a very useful smart-phone trick.
While laptops often need cables or Wi-Fi networks to access the Internet, phones can log on from just about anywhere. So if you find yourself with excellent cellular reception but no Wi-Fi – such as on a road trip, in an airport, or at home during a power outage – why not connect your two devices? Let your smart phone deliver Internet access to your computer. It's called "tethering."
Until last summer, when Verizon settled with the FCC for $1.25 million, tethering was costly. Phone companies locked away the feature behind an extra monthly fee. Even if you never went over your phone's data allowance, the carriers wanted $15 to $20 a month to let you pass that data along to your PC.
Now, thanks to new monthly plans and software, tethering is much less expensive.
Verizon and AT&T revamped their data plans last summer. Both now focus on a large pool of data – anywhere from 250 megabytes to 10 gigabytes a month – that people can share across multiple devices and family members.
If you sign up for Verizon's Share Everything or AT&T's Mobile Share plans, tethering is free of charge – as long as you stick to your monthly data allotment. Most smart phones come with a built-in "mobile hotspot" feature. For example, iPhone 5 owners can find the toggle by opening "Settings" and then "Cellular." Once the hotspot is turned on, computers can connect to it as if it were a Wi-Fi network.
Sprint, T-Mobile, and older plans from Verizon and AT&T still charge about $20 a month to turn on a phone's mobile hotspot. However, because of the FCC settlement, Verizon won't charge for using third-party tethering applications. The Android app store has several good options with one-time fees, such as PdaNet ($15) and EasyTether ($10). EasyTether Lite costs nothing, but blocks secure websites and instant messengers.
Tether.com tried to release a third-party iPhone app to escape Verizon's extra fee. However, Apple rejected the app, as it has all tethering apps. (Apple has not publicly said why.) So the engineers at Tether found a way around Apple. They rigged up a way to tether an iPhone to a computer completely through the phone's Web browser. The service costs $30 a year and works with Apple, Android, and BlackBerry devices. You'll need to watch your monthly data usage, but Tether.com says that its service is completely aboveboard.
For more on how technology intersects daily life, follow Chris on Twitter @venturenaut.
[Editor's note: This is an updated version of an article that appeared in the December 10 issue of the Monitor weekly magazine.]


text:
You can consider my Del.icio.us links an extension to my blog, as are my LifeTango goals and my other to-do items. My to-buy list is also public, but only for sharing any useful ideas that might be there; I'm not requesting charity, neither do I offer it.
You can find me easily in google searches, as jcomeau, jcomeau_ictx, or jcomeauictx. There are lots of other jcomeaus, but AFAIK I'm the only jcomeau_ictx out there so far.
If you want to comment on anything you see here, try the new Facebook comments, reachable by clicking the "[comment]" link at the end of each post. If for some reason that isn't working, go ahead and email me, jc.unternet.net. You know what to do with the first dot. Make the 'subject' line something reasonably intelligent-looking or it goes plunk! into the spambasket unread.
This RSS feed may or may not work. Haven't fiddled with it in forever.
Yesterday the power was out since about midnight -- had to go into SD to try finishing my current trabajito. Not quite successful, but not bad. On the way back, stopped at my favorite tacos 'n beer place, Taco Bell, in TJ (as mentioned previously, this has nothing to do with the chain in the U.S.). Some interesting-looking dude about my age was punching in some interesting Spanish-language rock'n'roll into the jukebox. Balding, all in black including long leather jacket. Probably an intellectual anarchist like myself, but lacking the language skills I just lifted a bottle to him and left it at that.
There was a group of youngsters there too, and one of them, a cute teenage girl, was also punching in some decent music. But all I could think of was how much I miss my lady. So when my last song, Comfortably Numb, was finishing up, I left my last 4 ounces or so of Pacifico in the bottle and left for Rosarito. Just now reenabled my webcam, which never came up on reboot. As a matter of fact, a whole lot of things don't work right on reboot since moving stuff to the new hard drive; something's wrong in the automount at bootup. One of these days... [comment]
I should have known. All this time my app was behaving strangely, and it turns out Java, my beloved Java, was corrupting the data. I'm sure I've seen this before, but since I never stick to the same language for very long I forget all the strange shit they do until it bites me in the ass again.
I finally solved it, once I realized what was going on, by using a DataInputStream and reading it in directly as ints. That meant that I had to change the python routine that created it to write it out in network order rather than Intel order, but that of course is trivial. Bah. Humbug. Feh. Trust Java only with text. It is not reliable with byte data, unless you mean it reliably fucks it up. Like Microsoft, or the U.S. government, it thinks it knows better what you want than you do. [comment]
Just checked my web logs, and someone had been hitting my webcam a lot, so decided just for kicks to trace it back... it went through California to Chicago, to New York, to London, Paris... and ended up in Hungary! Cool. So I tried the IP in links and got an audio retailer's website: D-audio webaruhaz: elektronikai es szamitastechnikai cikkek, akatreszek. Whatever the fuck that means.
Still hacking away at the Blackberry app. I've been getting some help from RIM, but got a little disappointed today when my contact there punted and told me the maximum .cod file size was 128kbytes. Yeah, right, that was true at one point but no more. But anyway, I think it's safe to say the 3MB filesize of my application is at least part of the problem. I'm going to bring it down to under 1MB with compression, and see if that'll fly. I'd sure like to finish this job and move onto something else. [comment]
I found some code on the web (gumuz'), but you know me, I had to code my own:
#!/usr/pkg/bin/python """testing stuff for huffman compression, based on gumuz' and othersthis is public domain!"""
import sys, types
def huffwalk(*args): """we're using lists of lists... offset [-1] will either be:
a list of length 3, which is a number and two branches, or a list of length 2, just a number and letter, or just a number, which means a list or a letter is at offset -2""" try: code, branch, codes = args except: return huffwalk('', huffmantree('test'), ()) if len(branch) == 0: return codes elif type(branch[-1]) == types.IntType: if type(branch[-2]) == types.StringType: return codes + tuple(branch) + (code,) else: # walk the left and right branches recursively return huffwalk(code + '0', branch[-2], codes) + \ huffwalk(code + '1', branch[-3], codes) else: # we should only get here on the first iteration if at all if len(code) > 0: raise Exception, 'lost! %s' % repr((branch, code, codes)) return huffwalk('', branch[-1], codes)
def huffmantree(*args): if args[0] == 'test': # example at http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/node59.html nodes = [['i', 6], ['a', 3], ['b', 3], ['d', 2], ['m', 4], ['e', 5], ['o', 3], ['c', 1], ['f', 1], ['g', 2], ['s', 4], ['t', 3], ['l', 2], ['r', 2], ['n', 5], ['p', 1], ['u', 2], [' ', 11]] else: nodes = wordfrequencies(args) while len(nodes) > 1: combined = [nodes.pop(0), nodes.pop(0)] # get the 2 lowest-weight nodes combined.append(combined[0][-1] + combined[1][-1]) # add the weights #DebugPrint('combined lowest nodes: ', combined) nodes.append(combined) # plop new node into the existing list nodes.sort(lambda a, b: cmp(a[-1], b[-1])) # re-sort for lowest weights return nodes
if __name__ == "__main__": sys.stderr.write('running huffman test\n') print repr(huffwalk('test')) else: sys.stderr.write('loaded huffman module\n')
There may be ways to simplify it even further, but this is good enough for now. Note that my result is not the same as on the referenced webpage; Huffman trees are not unique; as far as I know there's no rule that says the highest weight must go to the same side of the node. It was just easier to code it that way.
I haven't tried it on any real data yet, I may find this to be totally broken. What the hell, I'll figure it out eventually. [comment]
Sorry no updates, I'm visiting with my old friends Lempel, Ziv, Welch, and Huffman trying to solve a large problem with a small program... hopefully will get back on the blogtrail soon... [comment]
As you may know, I'm a big fan of one-liners. Scripts, that is, not jokes. Tired of having to type your password every time you log into that rarely-used machine, but don't want to go through the hassle of editing the authorized keys on the remote host? Make a script, call it 'addpublickey' or some such:
#!/bin/sh cat ~/.ssh/id_dsa.pub | ssh $1 "cat >> .ssh/authorized_keys"
OK, so that's two lines. But if you use ash or bash, you can dispense with the shebang line. So there.
You might want to check for a valid string in "$1". And don't forget the double-quotes around the remote cat statement... or it won't be remotely what you wanted to do. [comment]
One of the many criticisms of tribalism and hunter-gatherers by globalists is their apparent lack of technological progress. These critics say that, had not agriculture taken over the world, we would not have computers, robots, and the like. I was thinking this over during the transition state this morning, and have come to the conclusion that the critics may be more wrong that right.
According to my very little knowledge on the subject, most of it second- and third-hand through authors like Daniel Quinn and Ray Audette, most members of tribal societies "stayed home". Even the nomadic tribe members stuck with the group and did not socialize with other tribes (unless you call war "socializing"). But there were some exceptions.
There were, and still are, certain tribal elites who traveled the globe. They became shamans, teachers, and/or storytellers, and like technical gurus of our society, they enjoyed great status within their tribe, right up there with the great hunters, warriors, and chieftans (I'm really embellishing here, if anyone can correct me please do so). But unlike the hunters and warriors, the shamans were also welcome among other tribes; they could, and did, study with other shamans and swap secrets amongst each other. The technology they developed includes both telepathy and teleportation, if author Doug Boyd can be believed. (Note: the Amazon link shows a book with a "reading level" of "ages 9-12". Also, the editorial reviews are for a book about fighter jets, though the reader-contributed reviews are for the correct Rolling Thunder book. I wonder if it was deliberately marginalized to keep people from reading it.)
So yes, they didn't develop computers or robots. I grant you that. They bypassed all these polluting technologies and achieved far greater progress. And so shall I.
Busy day so far. Woke up early and went into S.Y. to fax RIM the code signing application. First fax place I found open was about half a mile up the road. How much? "$3.00." No thanks.
Went another few blocks. How much? "Sorry, the fax machine is broken." OK.
Another block, here's a cellphone store that doesn't offer fax services. On a whim, went in and asked how much to send a one-page fax. The guy asked the boss lady, she said "50 cents." My kind of price! There's a lesson there, which is taking me waaaayyyy to long to learn. Don't let yourself be limited by all the artificial limits in place for transactions between individuals. If two people can agree on terms, anything can take place. It's so simple.
Which reminds me. The border guard droid's brain was exploding over the fact that I lived in Rosarito and my driver license was still my (perfectly valid) Florida one. He made all kinds of strange noises and filled out this little reddish slip for me to take to another droid. He was saying that as an American I should be glad they were taking such precautions, but I cut him off and said no, I wasn't. The other droid punched in my license data, stood there like an idiot punching keys for several minutes, making faces like he was reading a rap sheet 20 pages long, and then handed me my license and sent me on my way. A block later I realized what I should have said to the first droid. Hey, Cipher! The Matrix isn't real. All these imaginary lines and limitations. They don't exist. I realize everybody has to make a living, but you don't have to believe this shit.
Anyway, on my way back I stopped at F Street and bought a couple of sex toys. I'm going to find a way to connect the, ahem, female device with the male device over an internet connection and make my first million that way. I'm sure it's been done already but nobody is really marketing it yet. I asked the guy at the store, first if they had such internet-enabled toys, and he said no. Then I asked if anybody else was asking for such things, and he said no, only interactive DVDs. But I know there's a market for teledildonics; it's just not sufficiently "out there" yet where people can appreciate the possibilities. ritx aut end fak samwan. [comment]
So, Java developers, have you checked out Blackberry's free IDE? If you have an app that's amenable to having a browser as the UI, code the engine as an extension of com.rim.samples.device.httpfilterdemo.precanned.Protocol, and register your app using code like httpfilterdemo.PackageManager. Anything that looks like a real URL ought to work, like "this.is-a.test". Then create a related project to launch the browser with your app, using, basically, one line of code:
import net.rim.blackberry.api.browser.Browser; public class MyApp { public static void main(String[] args) { Browser.getDefaultSession().displayPage("this.is-a.test"); } }
Add a 28x28 PNG icon, build, and ship. I hope. I've only tested it on the (really cool) built-in simulator; it remains to be seen how it works on the real beast. Blackberry is selling a lot of those little boogers, so it might be wise to hop on the bandwagon. Word to the wise: add RAM to your development box, the IDE is a monster. But a nice monster. [comment]
Got a good scare yesterday. Spilled coffee onto my laptop, and it was dead, dead, dead... for about 6 hours. Kept it off and in front of the space heater, and tried it every couple of hours. Finally it came back to life! Damned good thing because I had finally gotten that job I've been talking about, a Blackberry application using Java. All for now! Gotta code... [comment]
I've been having this recurring dream, and only this morning did I wake up in time to remember any of it. There are things within the matrix (simulacra) we live in that don't add up, and in my dream, one of those things is filenames. Whatever that means. I didn't regain consciousness soon enough to get down an accurate example, but it's something like this: filename.atx is in the system, but it's not known to us as that; we know it as filesomething.txt. No, that's not it. Damn. I didn't remember enough of the context to make any sense out of it. My gut feeling is that there are bugs in the system that would let us see its inner workings if we had a better grasp of what to look for; only the showy stuff catches our attention, but all the context is there, in hidden "files" as it were, and if we could just dissipate enough of the smoke and break enough of the mirrors we could see through it all. The name "Mike Ahern" came up in the dream, too. IIRC I knew a guy by that name in High School band. Or not.
On this same line of thinking, and I'm using the term very loosely here, is the video that was circulating the net some week or two ago. The one where the school kids were passing around a basketball, and you were supposed to count the number of passes. Which I did. Then you are asked about the gorilla. What gorilla? I didn't see any goddamned gorilla. Then you were prompted to watch the video again, this time just for enjoyment, not to count anything. Sure enough, there's a guy in a gorilla suit walking through the basketball players, slowly and deliberately, turning his head back and forth and waving. It is so obvious when you're just looking, and so unfuckingbelievably invisible when you're focused on counting the number of passes. It had to be the same video, because it's large and it took so long to download; the second time it was already on my hard drive so there was no lag. A real eye-opener.
Anybody with more insights into the first paragraph, especially if you've had similar dreams and/or can explain better what I'm trying to say, please email. [comment]
Whoa. Still sick from yesterday. Power went out for at least 3 blocks here, and couldn't use the internet, so I went out for some liquid refreshment. Got into conversation with 3 English blokes, Jason, Michael, and Mick, all cops on vacation. I had already had my max and then they started buying me beers. I didn't realize what I was doing until. Boom. It hit me. I staggered into the restroom and blew my cookies into the sink. Over and over, till all that was coming up was bile. I rinsed it down as best I could and then Jason tries to get a cab for me. The goddamned cabbie says "five dollars" and even though Jason was willing to pay I wouldn't let him; that's a ripoff, it should only be 20 pesos. So I walked home. Froze my ass. Finally got into the big bed, covered myself with all the blankets I could find, and survived the night. Slept a good part of today, too. Still a mild headache, and couldn't eat anything until now, when I went and got a large bowl of birria. I think I can hold it down. Hope so. [comment]
view blog for 2024-07
view blog for 2024-06
view blog for 2024-05
view blog for 2024-04
view blog for 2024-03
view blog for 2024-02
view blog for 2023-10
view blog for 2023-09
view blog for 2023-08
view blog for 2023-07
view blog for 2023-06
view blog for 2023-05
view blog for 2023-03
view blog for 2023-02
view blog for 2023-01
view blog for 2022-12
view blog for 2022-11
view blog for 2022-10
view blog for 2022-09
view blog for 2022-08
view blog for 2022-07
view blog for 2022-06
view blog for 2022-05
view blog for 2022-04
view blog for 2022-03
view blog for 2022-02
view blog for 2022-01
view blog for 2021-12
view blog for 2021-11
view blog for 2021-10
view blog for 2021-08
view blog for 2021-07
view blog for 2021-06
view blog for 2021-05
view blog for 2021-04
view blog for 2021-03
view blog for 2021-02
view blog for 2021-01
view blog for 2020-12
view blog for 2020-11
view blog for 2020-10
view blog for 2020-09
view blog for 2020-08
view blog for 2020-07
view blog for 2020-06
view blog for 2020-05
view blog for 2020-04
view blog for 2020-03
view blog for 2020-02
view blog for 2020-01
view blog for 2019-12
view blog for 2019-11
view blog for 2019-10
view blog for 2019-09
view blog for 2019-08
view blog for 2019-07
view blog for 2019-06
view blog for 2019-05
view blog for 2019-04
view blog for 2019-03
view blog for 2019-02
view blog for 2019-01
view blog for 2018-12
view blog for 2018-11
view blog for 2018-10
view blog for 2018-09
view blog for 2018-08
view blog for 2018-07
view blog for 2018-06
view blog for 2018-05
view blog for 2018-04
view blog for 2018-03
view blog for 2018-02
view blog for 2018-01
view blog for 2017-12
view blog for 2017-11
view blog for 2017-10
view blog for 2017-09
view blog for 2017-08
view blog for 2017-07
view blog for 2017-06
view blog for 2017-05
view blog for 2017-04
view blog for 2017-03
view blog for 2017-02
view blog for 2017-01
view blog for 2016-12
view blog for 2016-11
view blog for 2016-10
view blog for 2016-09
view blog for 2016-08
view blog for 2016-07
view blog for 2016-06
view blog for 2016-05
view blog for 2016-04
view blog for 2016-03
view blog for 2016-02
view blog for 2016-01
view blog for 2015-12
view blog for 2015-11
view blog for 2015-10
view blog for 2015-09
view blog for 2015-08
view blog for 2015-07
view blog for 2015-06
view blog for 2015-05
view blog for 2015-04
view blog for 2015-03
view blog for 2015-02
view blog for 2015-01
view blog for 2014-12
view blog for 2014-11
view blog for 2014-10
view blog for 2014-09
view blog for 2014-08
view blog for 2014-07
view blog for 2014-06
view blog for 2014-05
view blog for 2014-04
view blog for 2014-03
view blog for 2014-02
view blog for 2014-01
view blog for 2013-12
view blog for 2013-11
view blog for 2013-10
view blog for 2013-09
view blog for 2013-08
view blog for 2013-07
view blog for 2013-06
view blog for 2013-05
view blog for 2013-04
view blog for 2013-03
view blog for 2013-02
view blog for 2013-01
view blog for 2012-12
view blog for 2012-11
view blog for 2012-10
view blog for 2012-09
view blog for 2012-08
view blog for 2012-07
view blog for 2012-06
view blog for 2012-05
view blog for 2012-04
view blog for 2012-03
view blog for 2012-02
view blog for 2012-01
view blog for 2011-12
view blog for 2011-11
view blog for 2011-10
view blog for 2011-09
view blog for 2011-08
view blog for 2011-07
view blog for 2011-06
view blog for 2011-05
view blog for 2011-04
view blog for 2011-03
view blog for 2011-02
view blog for 2011-01
view blog for 2010-12
view blog for 2010-11
view blog for 2010-10
view blog for 2010-09
view blog for 2010-08
view blog for 2010-07
view blog for 2010-06
view blog for 2010-05
view blog for 2010-04
view blog for 2010-03
view blog for 2010-02
view blog for 2010-01
view blog for 2009-12
view blog for 2009-11
view blog for 2009-10
view blog for 2009-09
view blog for 2009-08
view blog for 2009-07
view blog for 2009-06
view blog for 2009-05
view blog for 2009-04
view blog for 2009-03
view blog for 2009-02
view blog for 2009-01
view blog for 2008-12
view blog for 2008-11
view blog for 2008-10
view blog for 2008-09
view blog for 2008-08
view blog for 2008-07
view blog for 2008-06
view blog for 2008-05
view blog for 2008-04
view blog for 2008-03
view blog for 2008-02
view blog for 2008-01
view blog for 2007-12
view blog for 2007-11
view blog for 2007-10
view blog for 2007-09
view blog for 2007-08
view blog for 2007-07
view blog for 2007-06
view blog for 2007-05
view blog for 2007-04
view blog for 2007-03
view blog for 2007-02
view blog for 2007-01
view blog for 2006-12
view blog for 2006-11
view blog for 2006-10
view blog for 2006-09
view blog for 2006-08
view blog for 2006-07
view blog for 2006-06
view blog for 2006-05
view blog for 2006-04
view blog for 2006-03
view blog for 2006-02
view blog for 2006-01
view blog for 2005-12
view blog for 2005-11
view blog for 2005-10
view blog for 2005-09
view blog for 2005-08
view blog for 2005-07
view blog for 2005-06
view blog for 2005-05
view blog for 2005-04
view blog for 2005-03
view blog for 2005-02
view blog for 2005-01
view blog for 2004-11
view blog for 2004-10
view blog for 2004-09
view blog for 2004-08
view blog for 2004-07
view blog for 2004-06
view blog for 2004-05
view blog for 2004-04
view blog for 2004-03
view blog for 2004-02
view blog for 2004-01
view blog for 2003-12


text:
Symfony and HTTP Fundamentals
Warning: You are browsing the documentation for Symfony 2.x, which is no longer maintained.
Read the updated version of this page for Symfony 7.1 (the current stable version).
Great news! While you're learning Symfony, you're also learning the fundamentals of the web. Symfony is closely modeled after the HTTP Request-Response flow: that fundamental paradigm that's behind almost all communication on the web.
In this article, you'll walk through the HTTP fundamentals and find out how these are applied throughout Symfony.
Requests and Responses in HTTP
HTTP (Hypertext Transfer Protocol) is a text language that allows two machines to communicate with each other. For example, when checking for the latest xkcd comic, the following (approximate) conversation takes place:
And while the actual language used is a bit more formal, it's still dead-simple. HTTP is the term used to describe this simple text-based language. The goal of your server is always to understand text requests and return text responses.
Symfony is built from the ground up around that reality. Whether you realize it or not, HTTP is something you use every day. With Symfony, you'll learn how to master it.
Step 1: The Client Sends a Request
Every conversation on the web starts with a request. The request is a text message created by a client (e.g. a browser, a smartphone app, etc) in a special format known as HTTP. The client sends that request to a server, and then waits for the response.
Take a look at the first part of the interaction (the request) between a browser and the xkcd web server:
In HTTP-speak, this HTTP request would actually look something like this:
1 2 3 4
Host: xkcd.com
Accept: text/html
User-Agent: Mozilla/5.0 (Macintosh)
This simple message communicates everything necessary about exactly which
resource the client is requesting. The first line of an HTTP request is the
most important, because it contains two important things: the HTTP method (GET)
and the URI (/
The URI (e.g. /
, /contact
, etc) is the unique address or location
that identifies the resource the client wants. The HTTP method (e.g. GET
defines what the client wants to do with the resource. The HTTP methods (also
known as verbs) define the few common ways that the client can act upon the
resource - the most common HTTP methods are:
- Retrieve the resource from the server (e.g. when visiting a page);
- Create a resource on the server (e.g. when submitting a form);
- Update the resource on the server (used by APIs);
- Delete the resource from the server (used by APIs).
With this in mind, you can imagine what an HTTP request might look like to delete a specific blog post, for example:
DELETE /blog/15 HTTP/1.1
There are actually nine HTTP methods defined by the HTTP specification,
but many of them are not widely used or supported. In reality, many
modern browsers only support POST
and GET
in HTML forms. Various
others are however supported in XMLHttpRequest.
In addition to the first line, an HTTP request invariably contains other
lines of information called request headers. The headers can supply a wide
range of information such as the host of the resource being requested (Host
the response formats the client accepts (Accept
) and the application the
client is using to make the request (User-Agent
). Many other headers exist
and can be found on Wikipedia's List of HTTP header fields article.
Step 2: The Server Returns a Response
Once a server has received the request, it knows exactly which resource the client needs (via the URI) and what the client wants to do with that resource (via the method). For example, in the case of a GET request, the server prepares the resource and returns it in an HTTP response. Consider the response from the xkcd web server:
Translated into HTTP, the response sent back to the browser will look something like this:
1 2 3 4 5 6 7 8
Date: Sat, 02 Apr 2011 21:05:05 GMT
Server: lighttpd/1.4.19
Content-Type: text/html

The HTTP response contains the requested resource (the HTML content in this case), as well as other information about the response. The first line is especially important and contains the HTTP response status code (200 in this case).
The status code communicates the overall outcome of the request back to the client. Was the request successful? Was there an error? Different status codes exist that indicate success, an error or that the client needs to do something (e.g. redirect to another page). Check out the list of HTTP status codes.
Like the request, an HTTP response contains additional pieces of information
known as HTTP headers. The body of the same resource could be returned in multiple
different formats like HTML, XML or JSON and the Content-Type
header uses
Internet Media Types like text/html
to tell the client which format is
being returned. You can see a List of common media types from IANA.
Many other headers exist, some of which are very powerful. For example, certain headers can be used to create a powerful caching system.
Requests, Responses and Web Development
This request-response conversation is the fundamental process that drives all communication on the web. And as important and powerful as this process is, it's inescapably simple.
The most important fact is this: regardless of the language you use, the type of application you build (web, mobile, JSON API) or the development philosophy you follow, the end goal of an application is always to understand each request and create and return the appropriate response.
See also
To learn more about the HTTP specification, read the original HTTP 1.1 RFC or the HTTP Bis, which is an active effort to clarify the original specification.
Requests and Responses in PHP
So how do you interact with the "request" and create a "response" when using PHP? In reality, PHP abstracts you a bit from the whole process:
1 2 3 4 5 6
$uri = $_SERVER['REQUEST_URI'];
$foo = $_GET['foo'];
header('Content-Type: text/html');
echo 'The URI requested is: '.$uri;
echo 'The value of the "foo" parameter is: '.$foo;
As strange as it sounds, this small application is in fact taking information
from the HTTP request and using it to create an HTTP response. Instead of
parsing the raw HTTP request message, PHP prepares superglobal variables
(such as $_SERVER
and $_GET
) that contain all the information from the
request. Similarly, instead of returning the HTTP-formatted text response, you
can use the PHP header function to create response headers and
print out the actual content that will be the content portion of the response
message. PHP will create a true HTTP response and return it to the client:
1 2 3 4 5 6 7
Date: Sat, 03 Apr 2011 02:14:33 GMT
Server: Apache/2.2.17 (Unix)
Content-Type: text/html
The URI requested is: /testing?foo=symfony
The value of the "foo" parameter is: symfony
Requests and Responses in Symfony
Symfony provides an alternative to the raw PHP approach via two classes that allow you to interact with the HTTP request and response in an easier way.
Symfony Request Object
The Request class is an object-oriented representation of the HTTP request message. With it, you have all the request information at your fingertips:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
// the URI being requested (e.g. /about) minus any query parameters
// retrieves $_GET and $_POST variables respectively
$request->request->get('category', 'default category');
// retrieves $_SERVER variables
// retrieves an instance of UploadedFile identified by "attachment"
// retrieves a $_COOKIE value
// retrieves an HTTP request header, with normalized, lowercase keys
$request->getMethod(); // e.g. GET, POST, PUT, DELETE or HEAD
$request->getLanguages(); // an array of languages the client accepts
As a bonus, the Request
class does a lot of work in the background that
you'll never need to worry about. For example, the isSecure()
checks the three different values in PHP that can indicate whether or not
the user is connecting via a secured connection (i.e. HTTPS).
Symfony Response Object
Symfony also provides a Response class: a simple PHP representation of an HTTP response message. This allows your application to use an object-oriented interface to construct the response that needs to be returned to the client:
1 2 3 4 5 6 7 8 9 10 11 12
use Symfony\Component\HttpFoundation\Response;
$response = new Response();
$response->setContent('
Hello world!
');
// sets a HTTP response header
$response->headers->set('Content-Type', 'text/html');
// prints the HTTP headers followed by the content
There are also several response sub-classes to help you return JSON, redirect, stream file downloads and more.
The Request
and Response
classes are part of a standalone component
called symfony/http-foundation
that you can use in any PHP project. This also contains classes for handling
sessions, file uploads and more.
If Symfony offered nothing else, you would already have a toolkit for easily accessing request information and an object-oriented interface for creating the response. Even as you learn the many powerful features in Symfony, keep in mind that the goal of your application is always to interpret a request and create the appropriate response based on your application logic.
The Journey from the Request to the Response
Like HTTP itself, using the Request
and Response
objects is pretty
simple. The hard part of building an application is writing what comes in
between. In other words, the real work comes in writing the code that
interprets the request information and creates the response.
Your application probably does many things, like sending emails, handling form submissions, saving things to a database, rendering HTML pages and protecting content with security. How can you manage all of this and still keep your code organized and maintainable? Symfony was created to help you with these problems.
The Front Controller
Traditionally, applications were built so that each "page" of a site was
its own physical file (e.g. index.php
, contact.php
, etc.).
There are several problems with this approach, including the inflexibility
of the URLs (what if you wanted to change blog.php
to news.php
breaking all of your links?) and the fact that each file must manually
include some set of core files so that security, database connections and
the "look" of the site can remain consistent.
A much better solution is to use a front controller: a single PHP file that handles every request coming into your application. For example:
/index.php |
executes index.php |
/index.php/contact |
executes index.php |
/index.php/blog |
executes index.php |
By using rewrite rules in your
web server configuration,
the index.php
won't be needed and you will have beautiful, clean URLs
(e.g. /show
Now, every request is handled exactly the same way. Instead of individual URLs executing different PHP files, the front controller is always executed, and the routing of different URLs to different parts of your application is done internally.
A very simple front controller might look like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// index.php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$request = Request::createFromGlobals();
$path = $request->getPathInfo(); // the URI path being requested
if (in_array($path, array('', '/'))) {
$response = new Response('Welcome to the homepage.');
} elseif ('/contact' === $path) {
$response = new Response('Contact us');
} else {
$response = new Response('Page not found.', Response::HTTP_NOT_FOUND);
This is better, but this is still a lot of repeated work! Fortunately, Symfony can help once again.
The Symfony Application Flow
A Symfony framework application also uses a front-controller file. But inside, Symfony is responsible for handling each incoming request and figuring out what to do:
This may not make sense yet, but as you keep reading, you'll learn about routes and controllers: the two fundamental parts to creating a page. But as you go along, don't forget that no matter how complex your app gets, your job is always the same: read information from the Request and use it to create a Response.
Summary: The Request-Response Flow
Here's what we've learned so far:
- A client (e.g. a browser) sends an HTTP request;
- Each request executes the same, single file (called a "front controller");
- The front controller boots Symfony and passes the request information;
- Internally, Symfony uses routes and controllers to create the Response for the page (we'll learn about these soon!);
- Symfony turns your
object into the text headers and content (i.e. the HTTP response), which are sent back to the client.