text:
Why did Squirrelmail, Dovecot/IMAP & Outbound mail break?
Help! I need some seasoned advice please.
We're running the OldStable version of Debian Etch from August 2008. We've been using squirrelmail connecting through Dovecot's Imap and Pop3 servers since then to provide either SSH or TLS/SSL connections to postfix mail via squirrelmail on our server. Although the SSL capability is installed, we're really not using it -- choosing to use SSH with strong passwords instead.
This configuration has given us NO problems since we started... until today. For unexplained reasons this morning the IMAP interface suddenly began refusing or failing connections to everyone trying to connect through SquirrelMail (or that's the way it looks from the outside). It also fails to send out any emails. I've tried rebooting the server but that made almost no difference.
The problem was first reported by a user. I then verified it. What I was seeing BEFORE the reboot when I tried to login was an error from SquirrelMail that said:
Error connecting to IMAP server: myserver.com.
11074 :
but what I'm seeing since the server reboot is:
Error connecting to IMAP server: myserver.com.
11087 :
The IMAP server connect problem seems to be isolated to SquirrelMail. At least I ran 2 tests and found I CAN connect to the IMAP server using both Microsoft Outlook 2003 and Outlook Express and can see the contents of all folders on the server. So the IMAP problem only shows up in SquirrelMail. But it DOES prevent ANY users from loggin in through SquirrelMail
However, the inability to send mail OUT from the server shows up everywhere. Mail sent internally between accounts on the server -- either within a single domain or between domains -- and even from remote users connected to the server through Outlook or Outlook express gets delivered fine. But email addressed to anyone outside the server to any domain -- whether Yahoo or or MSN or Google or whereever is all bouncing back with a "relay request denied" error.
For instance, I sent an email from one of my server accounts to my yahoo inbox and it bounced back.
Other things I've tried are:
checked port status with
nmap -qT
both port 443 and 993 are reported as open -- one with imap and the other with imaps.
I restarted inetd. It had no effect.
I restarted postfix. It had no effect.
I restarted the whole server. The IMAP login error code when attempting to login via SquirrelMail changed 11074 to 11087. That's all. All other behaviors remain the same.
I also confirmed the SquirrelMail login failure problem occurs in IE 7, IE 8 and Firefox from 3 different machines in multiple geo-locations and networks AND both with and without the user's local firewall running. So the issue is definitely ON the server and seems to be isolated to squirrelmail even though no changes have been made to squirrelmail or any of its components in months.
When I checked the mail.err log, I found the following series of seemingly useless error messages:
Oct 25 08:40:33 axx012503 dovecot: POP3(sarah): unlink(/var/mail/sarah.lock) failed: Permission denied
Are you using Maildir or mbox? What's the output of
ls -la /var/mail/
Are there any errors in your mail log?
Can you check if your server has been blacklisted? http://mxtoolbox.com/blacklists.aspx
Second, here's the result of that ls -la /var/mail/ command
drwxrwsr-x 2 root mail 4096 Oct 28 08:31 .
How's that again? How is it possible for the server's IP address to be listed as a spam source if all domains on the server are innocent? As is common these days, all domains on the server do share the same IP address.
As you saw, I checked the mail error log and did find some issues there - although I couldn't make heads nor tails out of what they were telling me. I have not checked the mail log yet. I'll do that and see what I find. I admit though that I'm not sure exactly what to look for there.
For the record, I watch emails and email bounces on this server pretty close and I DO see some email bounces I can't explain which purport to be bouncing emails from sites I KNOW aren't sending those emails. I control all domains on the server. I KNOW what emails are sent out by those domains and the email loads aren't heavy, Frankly, the number of weird bounces I've seen hasn't been large enough to be a big concern to me or produce a full scale investigation into how those emails are happening to begin with. I'm very aggressive about trying to keep spammers and click-phishers out of the two sets of forums hosted on our server... manually reviewing and approving all join requests, and running queries every day that are designed to identify and remove the dozens of bots that try to register in those forums daily.
In short, I'm using every standard technique I know of to prevent server hacking -- ssh-secured logins, hard-to-guess usernames, strong and hard to guess 12 - 25 character passwords, limited telnet/putty access, limited email accounts, etc. But I'll admit I'm NOT using IPTables. I couldn't see the benefit to that. What the heck can an outsider do with a port that's not being used by the server? Or conversely, if the port is being used for outgoing smtp mail, I don't see why it's a security concern? I don't mean to seem stupid or ignorant here. But I don't get it. What am I missing?
Still, I want to STOP the blasted spam as much as anyone else does. So, I'll gladly listen to suggestions on how to further tighten security on my server... and how to chase down, isolate and kill the source of those unexplained outbound emails. I'm NOT averse to fighting the spam wars. I'm just not sure how to isolate and kill the mysterious sources of "how-the-heck-did-that-happen?" spam that seems to occur on many servers despite the best efforts of the admins to stop it. Like most server admins, I do have my limits. I can't spend my whole life to fighting spam either.
One more piece to the puzzle...
I just realized there is another possibly-relevant piece to this puzzle.
There is a single domain on this server for which I host a mailman mailing list. When I first moved that site and its list to my server a couple of years ago it was receiving a huge load of junk mail every hour of evey day. Worse yet the inbound email address most of the spam was being sent to was the same one the mailman list had long been hooked to.
So, when I installed mailman, I configured it to only accept mail from known list members and configured things so the server would bounce all mail that wasn't accepted by mailman back to the sender. Later I realized that this so-called junk mail "back-scatter" was an issue that caused some Black lists to rate the server poorly. So, I changed that bounce solution to accept all such mail and deliver it to >null instead.
As far as I know, it's still operating that way on that mailman domain. That approach shouldn't cause a black-list problem, should it?
|All times are GMT +2. The time now is 06:51.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.


text:
- Home
- News
- Neighborhoods
- Arts & Lifestyle
- Special Sections
- Community Directory
- Ticket Offers
- Classes
- Calendar
Books & Bars, says Courtney Algeo, "is something that those who like a free show, enjoy discovering new books, and who need a reason to go out and have a few drinks should experience at least once." Today the popular open book club meets at St. Paul's hottest new venue, the Amsterdam Bar & Hall, to discuss Just Kids (2010), Patti Smith's acclaimed memoir of her friendship with photographer Robert Mapplethorpe. If the late, controversial photographer was working in Minnesota today, would he get Legacy money? Discuss.
Coverage of issues and events affecting Central Corridor communities is funded in party by a grant from the Central Corridor Collaborative.
Our primary commenting system uses Facebook logins. If you wish to comment without having a Facebook account, please create an account on this site and log in first. If you are already a registered user, just scroll up to the log in box in the right hand column and log in.

subset: commoncrawl


text:
Body Condition
Hard at Work or Hardly Working? Equine Work Intensity
May 11, 2009
Optimal nutrition of the performance horse hinges foremost on the exercise it performs. Just as the diet of a human bodybuilder is dissimilar to that of a marathon runner, most horses are fed with performance goals in mind. Therefore, accurately... Read More
Cushing's or Metabolic Syndrome?
April 17, 2009
A horse with equine metabolic syndrome (EMS) is typically middle-aged with either generalized or regional adiposity (fat deposits). The horse with Cushing's or pituitary pars intermedia dysfunction (PPID) is typically older than the horse with EMS;... Read More
Causes of Laminitis (AAEP 2008)
April 01, 2009
Progression of obesity and insulin resistance exacerbates laminitis risk. As a horse gets fatter, insulin sensitivity decreases. Insulin resistance worsens with chronic obesity, making a horse more susceptible to laminitis and less tolerant ... Read More
Competent Horse Care
April 01, 2009
Timely deworming, immunizations, and farrier work are only part of the equation. Ongoing observation is required to ensure your horse is properly fed and cared for.... Read More
9 Keys to Equine Nutrition
March 17, 2009
Lydia F. Gray, DVM, MA, described 9 keys to understanding equine nutrition at the 2008 AAEP Convention.... Read More
Managing the Easy Keeper
March 01, 2009
Much like humans, horses need a proper diet and adequate exercise to maintain a healthy body weight.... Read More
AAEP 2007 Convention Complete Coverage
February 12, 2009
A complete wrap-up of the 2007 American Association of Equine Practitioners Convention held in Orlando, Fla.... Read More
Tart Cherry Juice May Reduce Muscle Damage
February 08, 2009
A recent human study has found that tart cherry juice blend (TCJB) had beneficial effects on exercising muscle. The objective was to determine if TCJB can lessen exercise-induced muscle damage in horses, as measured by serum enzymatic markers.... Read More
Feeding Emaciated Horses (AAEP 2008)
February 04, 2009
Dr. Maria Luke explains her approach to rehabilitating emaciated horses. ... Read More
Safely Increasing Weight in Emaciated Horses
January 31, 2009
Rehabilitating emaciated horses to nutritional health is a challenge--there's a fine line between not getting results and risking the horse's health by introducing too much, too soon.... Read More
Starving Horse Series: Freeway Shows Signs of Improvement
January 23, 2009
Freeway, the starving horse that Sue Thompson of Clayton, Calif., rescued in late 2007 and has rehabilitated over the past year, could be a step closer to recovery. The Quarter... Read More
Older Horses Require Extra Care
January 15, 2009
Stiff joints, poor teeth, and weight changes aren't just signs of aging in humans; they afflict horses, too.... Read More
Horse Health Tips for Extreme Cold Weather
January 14, 2009
This winter has been unusually cold in some areas, with temperatures well below freezing for many days in a row. This extreme cold weather can be particularly dangerous to animals that live outdoors. The Michigan State University Veterinary... Read More
Older Horses: Respecting Our Elders
January 06, 2009
Seasonal tips for enhancing & even extending the life of an older horse.... Read More
12 Months of Feeding Tips
January 06, 2009
A 12-month rundown of some of the year's most important feeding concerns. ... Read More
Keeping Horses Warm
January 04, 2009
Winter is in full force, and horse owners need to make sure their animals stay warm, according to North Dakota State University Extension Service equine specialist Carrie Hammer, DVM, PhD.
Horse owners have several ways to do that. One of... Read More
12 Months of Feeding Tips
January 01, 2009
Here's how to roll with Mother Nature through the seasons, nutritionally speaking.... Read More
Older Horses: Respecting Our Elders
January 01, 2009
If your horse is already a senior, there's no reason to turn him out to pasture. Here's a seasonal look at some factors to consider for the care of your equine elder.... Read More
Saving a Starving Horse: Part 2
January 01, 2009
The second part in aseries on saving Freeway, a horse rescued from starvation and neglect by a passer-by.... Read More
Saving a Starving Horse: Part 1
December 31, 2008
She could've just kept driving. But instead of dismissing the idea of intervention as someone else's sad... Read More
Survey Finds Eventers Nutritionally Sound, but Oversupplemented
December 28, 2008
In a survey of leading three-day event riders, researchers found that the majority of riders fed their horses based on research-driven recommendations, but the number of supplements used per horse did raise some eyebrows.
During the Jersey... Read More
Teff Hay for Foundered Horses: A Good Fit?
December 22, 2008
In California, teff is being called the "perfect grass for foundered horses." But is teff hay always safe for horses that are intolerant of high-sugar forage? Teff grass (Eragrostis teff) is a new type of grass being introduced around the... Read More
Feeding Horses When Temperatures Drop
November 30, 2008
Winter presents a challenge to horse owners when it comes to feeding their horses. Low temperatures, harsh winds and rain, snow, and ice all contribute to the increasing nutrient requirements a horse has to keep themselves warm and maintain their ... Read More
Measuring the Physiologic Response to Nutrition
November 24, 2008
Whether for weight gain or loss, speed or shine, nearly everything we offer our horses is given to bring about a desired effect. Stacie Appleton, PhD, and Mike Jerina, BS, presented a demonstration on "Measuring the Physiologic ... Read More
Caring for Older Horses: The Elmer Bandit Diet
November 23, 2008
As it turns out, feeding Elmer requires careful consideration and a serious time commitment.... Read More
Related Topics
Related Multimedia & Downloads
Ask The Vet Audio
Winter Horse and Barn Care
Podcasts Audio
Equine Life Stages: Stallions and Mares
Special Report Download
The Key to the Future: Broodmare and Stallion Care
Special Report Download
Equine Body Condition Score Poster
Special Report Download
Athletes to Trail Warriors: Caring for the Adult Horse
Ask The Vet Audio
Equine Cushing's Disease (PPID)
Farm Call: Your Questions Answered
Ribby Race Filly
Q. How can an owner help a ribby but successful racehorse gain weight, and what might be behind the filly's body condition? Our source shares some thoughts.


text:
Rugkasa, Jorun and Knox, Barbara and Sittlington, Julie and Kennedy, Orla and Treacy, Margaret P. and Abaunza, Pilar Santos (2001) Anxious adults vs. cool children: children's views on smoking and addiction. Social Science & Medicine, 53 (5). pp. 103-112. ISSN 0277-9536
Full text not available from this repository.
Official URL: http://dx.doi.org/10.1016/S0277-9536(00)00367-1
|Item Type:
|Research Community:
|University of Westminster > Life Sciences, School of
|ID Code:
|Deposited On:
|09 May 2007
|Last Modified:
|07 Apr 2008 14:32
Repository Staff Only: item control page


text:
PROTIP: Press 'i' to view the image gallery, 'v' to view the video gallery, or 'r' to view a random entry.
This entry has been rejected due to incompleteness or lack of notability.
To dispute this DEADPOOL flagging, please provide suggestions for how this entry can be improved, or request editorship to help maintain this entry.
"We Saw Your Boobs" is a phrase stemming from the 2013 Oscar Academy Awards Ceremony, in which host Seth MacFarlane presented a song about the various movies in which actresses (all of whom were present at the award ceremony) have shown more of their cleavage then necessary.
The lyrics to this performance are as follows:
"We saw your boobs
We saw your boobs
In the movie that we saw, we saw your boobs.
Meryl Streep, we saw your boobs in "Silkwood"
Naomi Watts' in "Mulholland Drive"
Angelina Jolie, we saw your boobs in "Gia"
They made us feel excited and alive.
Anne Hathaway, we saw your boobs in "Brokeback Mountain"
Halle Berry, we saw them in "Monster's Ball"
Nicole Kidman in "Eyes Wide Shut"
Marisa Tomei in "The Wrestler," but
We haven't seen Jennifer Lawrence's boobs at all.
We saw your boobs
We saw your boobs
In the movie that we saw, we saw your boobs.
Kristen Stewart, we saw your boobs in "On the Road"
And in "Monster" we saw Charlize Theron's
Helen Hunt, we saw them in "The Sessions"
And Scarlett Johansson, we saw them on our phones.
Jessica Chastain, we saw your boobs in "Lawless"
Jodie Foster in "The Accused"
Hilary Swank in "Boys Don't Cry"
Penelope Cruz in "Vanilla Sky."
And Kate Winslet in "Heavenly Creatures" and "Jude"
And "Hamlet" and "Titanic"
And "Iris" and "Little Children"
And "The Reader"
And whatever you're shooting right now.
We saw your boobs
We saw your boobs."
While some applauded this song as hilarious and fitting with MacFarlane's popularity as creator of Family Guy, many viewers were horrified at the song and MacFarlane, labeling it as inappropriate for the Academy Awards. In fact, many guests at the Oscars were visibly upset at the act, most prominently Charlize Theron, who facepalmed when her name was mentioned.
Recent Videos 2 total
Recent Images
There are no images currently available.


text: Preheat the oven to gas 6, 200ºC, 180ºC. Place the mince and onion in a large saucepan and fry for 5 minutes over a medium heat. Add the Worcestershire sauce, stock cube, 125ml water and seasoning and fry for a further 5 minutes, covered. Transfer to an ovenproof serving dish. Rub the butter into the flour until it resembles breadcrumbs. Stir in the oats and cheese, season to taste. Sprinkle over the mince and bake for 20-25 minutes. Serve with fresh vegetables. Cook's tip: Try adding some peas or frozen mixed vegetables to the mix. See more British classics Textingredients Email recipe details Print recipe


text:
|Recent | Best | Popular
|40.5733, -111.754 View Map Incorrect?
|Page Views:
|Andrew Gram, Perin Blanchard, grk10vq, Kristine Hoffman (sitewide)
|Submitted By:
|Eric Jacobsen on Oct 26, 2003
|The land is owned by the LDS Church; please be respectful of this. MORE INFO >>>
|Topic Title
|re: Christmas at the Creek
|11 hours ago
|re: 2014 - 2015 Utah Region Ice
|11 hours ago
|re: Beehive Ice - A Guide to Utah's Ice and Mixed Climbs
|ERiK Ostrander
|2 days ago
|re: Anyone familiar with Mule Hollow in Big Cottonwood Canyon?
|Daniel Winder
|3 days ago
|New Years climbing in moab.
|jacob talley
|3 days ago
|re: Seasonal work in Alaska, looking for advice
|jacob m s
|3 days ago
|re: Ice and ice partners in Boise
|Benjamin Johnson
|3 days ago
|Red duffel of gear left in Momentum Sandy lot
|Brennan Crellin
|3 days ago
|Comments on Schoolroom Area
|Add Comment
|Show which comments —
By Greg G
From: SLC, UT
Jun 13, 2009
|Once you finish on either the final 5.6 crack system or the movie variation please continue up and slightly left along a ledge with some trees. Here you will find a large pine tree with chains around the trunk for the rappel. It is very unpleasant to have a rope throw down on top of you when your leading hatchet, school room west or anything under the hook. So please do not rappel the face itself.
By Michael Buchanan
Aug 8, 2009
|Hey whats with the overly bolted new routes above the schoolroom rappel. There all stupid easy and kinda pointless. Anyone have any info? Detracts from a great trad/hard slab area.
By Brian in SLC
Nov 4, 2009
Me and mine have always scrambled down to the standard Schoolroom rappel. Instead of rappelling from the tree mentioned in the descent description, climb slightly up and traverse over towards the west on a ledge with a handcrack rail (easy, maybe 3rd class). Then down climb the low angle chimney for 25 feet. Hike/scramble pretty much straight down low angle terrain and you'll hit the rappel ledge.
Climbers who haven't done this descent before, who may be a tad sketched, can easily be belayed from just about any spot, but, the traverse from the tree that folks rappel from has a comfortable ledge with a nice crack for medium to large size cams (#1 and 2 camalots, etc).
I'll attach a couple of pictures showing some details of the traverse and chimney.
By DCrane
From: Taylorsville, Utah
Jun 11, 2012
|If anyone finds a cell phone - or pieces of one - please message me, I hope to at least get the memory card back. Phone fell out of my pocket at the top of p2 on Schoolroom west, I can't imagine it's in good shape...
By skinnypidgeon
Sep 26, 2014
|dropped a nice alpine draw on schoolroom direct on 9/19/14. it is composed of a black and white wild country sling tripled and 2 camp photon wire biners. I was dismayed to find it gone when i rapped, if you grabbed this please do the right thing and return it to me. thanks. 801-557-8396 (david)


text: Both the Arab Spring and the ongoing struggles in Syria are giving a new shape to the Muslim world. The power of the state is shifting from dictators to Islamic parties. Naturally, the international community is following this transition closely. Will centralised, religiously based political forces succeed in bringing together the heterogeneous population of the region? Will it put them on a path towards embracing adequate political and economic reforms?


text:
http://apcmag.com –
Looks like there'll be no shortage of iPad-compatible Micro-SIMs at Optus, then...
(IT news)
Optus has launched a new range of BYO Business Class Mobile Broadband plans with standard SIMs and Micro SIMs, which will compatible with Apple's new iPad.
Optus is making a play for business users of the iPad 3G with microSIM 'BYO mobile broadband plans' – and adding a 'cash back rebates' of $100 to $300 on Apple's slate.
Optus today confirmed its range of data plans for micro-sim devices, including the iPad.
As expected, Optus joins Telstra, Vodafone and 3 as all Aussie 3G carriers offer a group hug to Apple's delayed iPad.
Hot off the heels of Telstra's iPad announcement, Optus have announced their own range of data plans for Apple's hot new device.
The nation's number two telco Optus has revealed a refresh of its iPad plans in preparation for this afternoon's 5PM Australian launch of the second version of Apple's flagship tablet.
Apple's decision to pioneer the use of the new micro-sim format in the iPad has enabled operators, such as Optus and Telstra, to launch iPad specific mobile data plans even through they are not selling iPads. But if you can get a better deal on another plan, you can simply hack the standard sim.
Optus 'microSIM' plans for the iPad 3G kick off at $15 for 500MB, stretch to $130 for 14GB, with expiry periods ranging from 15 days to six months.
Telstra and Optus confirm their respective iPad microSIM prepaid broadband starter kits will go on sale days ahead of the iPad's launch this Friday.


text:
|World English Bible (WEB)
|New International Version (NIV)
|21 For him who knew no sin he made to be sin on our behalf; so that in him we might become the righteousness of God.
|21 God made him who had no sin to be sin for us, so that in him we might become the righteousness of God.
|The World English Bible is in the public domain. (The World English Bible Online)
|Scripture quoted by permission. Quotations designated (NIV) are from THE HOLY BIBLE: NEW INTERNATIONAL VERSION®. NIV®. Copyright © 1973, 1978, 1984 by Biblica. All rights reserved worldwide. (New International Version Bible Online)


text:
Problem Solversproblem solvers: problem: Fall festival fun
Edited by Jane Wilburne
October 2012, Volume 19, Issue 3, Page 136
Wonderful opportunities to engage students in enjoying the beauty and products of the season, autumn celebrations are also ripe with themes for various mathematics problems and activities: pumpkins, hay rides, apples, scarecrows, and the changing colors of the leaves. To promote problem solving and critical thinking, the October problems are situated in the context of an elementary school's fall festival.
Pre-K-2ArticleGrades 3-5Permutations / Combinations / Counting ProblemsProblem Solving / Problem Posing
About NCTM | Standards & Focal Points | Membership | Conferences | Professional DevelopmentJournals & Books | Research, News & Advocacy | Shop Online | Jobs | Advertise | Site Map
The National Council of Teachers of Mathematics is the public voice of mathematics education, supporting teachers to ensure equitable mathematics learning of the highest quality for all students through vision, leadership, professional development, and research.
Use of this Web site constitutes acceptance of the Terms of Use.
1906 Association Drive, Reston, VA 20191-1502Contact and Directions | TEL: (800) 235-7566 or (703) 620-9840 | FAX: (703) email@example.com
Copyright © 2014, National Council of Teachers of Mathematics.


text:
There are no items in your cart at this time.
Year-End Sale: Extra 15% Off All Sale Items! (Discount shown in cart.)
Select your desired product options and we will notify you when it is back in stock.
The Drew Rose Blue Marble Leather Women's Shoe features clean lines and a simple Velcro® brand closure. Designed with our proprietary Plus Fitting System®, Drew Rose shoes feature two removable insoles that provide for double the added depth and the perfect fit - you can even insert your own orthotics. Layers of lightweight materials pamper and protect the foot while a polyurethane slip-resistant outsole keeps you sure on your feet and provides incredible all-day comfort and support. Add in a soft, foam-padded collar and the result is one of the most comfortable and stylish women's therapeutic shoes in the industry.
Drew Rose Blue Marble Leather Women's Shoe
Features include:
Sign up to receive new arrival, sale & special event info from us.
Note: we do not share your personal information with anyone. Period.
"I just received my MBT Mary-Janes and they are absolutely heavenly. I love 'em so much I turned around and ordered another pair just for power walking. Best shoes I've ever had on my feet. I have a spinal cord injury and I have compensated for the last eight years. I can't thank you enough. Great staff to work with with I ordered my first pair on the phone. "
©2014 Footwear Etc. All Rights Reserved. For any questions or assistance call 1-800-720-0572.


text:
Daniel Markham's Pretty Bitchin'
By Kelly Dearmore
Americans Under 30 the Most Cynical Bunch Ever
By Jim Schutze
13 of the Best Female-Fronted Bands in DFW
By Rachel Watts
Your Baseball Season Guide to Pre- and Post-Game Eats...
By Lauren Drewes Daniels
The Bizarre Life and Troubling Death of DarkSide
By Anna Merlan
The Ten Most Badass Band Names in DFW
By Lee Escobedo
The Cheap Bastard Guide to Dallas
By Alice Laussade
Well, here's an all-local line-up you wouldn't really piece together, which is the point of this night. Dallas hip-hop collective Brain Gang and punk duo Leg Sweeper certainly have a "party on" theme going on. Brain Gang even go as far as having a song all about it. Leg Sweeper, well , they're best absorbed with beer either going in you or being thrown at you. Add to that rapper B. Dogg, Denton scrappers Atomic Tanlines and lady emcee Dead Nugin and see if opposites attract.
Sponsor Content


text:
Track Tuesday showers using Interactive Radar
Published On: Jun 18 2013 10:55:51 AM EDT
Track rain showers moving through Maine on Tuesday.
Click here for Interactive Radar.
The views expressed are not those of this site, this station or its affiliated companies. By posting your comments you agree to accept our terms of use.blog comments powered by Disqus


text:
Close X
Design Toscano PM1935 Versailles Telephone
Product Description
This Versailles Telephone is modeled after the elegant desk phones found at the Royal Palace at Versailles. In a stylish polished brass finish with resin components, this working model captures the best of both eras - the beauty of European design and a fully modern touch-tone dial pad. A functional work of art, it includes redial button, volume control and a pleasant electronic ring.
- Brass finish
- Touch-tone dialing
- Modern wiring and connections
|2 Pounds
|Dial Method
Would you like to update product info, give feedback on images, or tell us about a lower price?
Coordinating Items
- Design Toscano NE36832 British Teleph…
- Design Toscano AF4353 Authentic Repli…
Related Items
Questions & Answers
Didn't get the answer you needed?
We'll respond to your question in three days or less
There are no questions from the community yet
Customer Reviews
This product has no customer reviews yet
Write an online review and be the first to share your thoughts with other customers
Write an online review and be the first to share your thoughts with other customers
Tag This Product
A tag is a keyword assigned to a product which helps describe the item and allows it to be found by other customers
Add a new tag:
Separate multiple tags with commasWhat's this?
Additional Details
|Mfr Part #
|Group #
|Phones - 1773
|Traditional - 143
|Sales Rank
Your Recently Viewed Items
You have no recently viewed items. After viewing product detail pages or search results, look here to find an easy way to navigate back to products you are interested in.
Your Recommended Items
You currently have no recommended items. Browse a few more items to give us an idea of what you like.
©1999 - 2014 ATGStores.com.Copyright notice | Site Map | By using this site you agree to our Terms & Conditions of Use and Privacy Statement
Server: WWW115 DBServer: EASTDB01 Created On: 12/26/2014 10:25:56 AM


text:
Did you hear the news?
Even as gays and lesbians fight for the right to the legal protections of marriage, the culture at large moves away from marriage and toward shacking up. Marriage is yearned after still, yes, by the readers of bridal magazines and watchers of several choice "reality" TV shows. But on an emotional level, a vast majority perceives it as a chimera -- a myth which gets exploded almost as often as it is avowed.
The disposable culture we invented and exported post-WWII in order to build our unsustainable growth-monster-economy has caught up with our deepest relationships. Now we've nothing but disposable friendships, disposable lovers, disposable people.
In light of this, I would like to explore for a moment the very concept of "compatibility" itself.
To do this, I propose we ask if this idea is, itself, a chimera -- and if in fact everybody is actually compatible with everybody else. And incompatible. At the same time.
Lunacy, I know.
It's a concept I first explored fictionally in my short story, "Fear, a Love Story" (click the link to read), and I think it may have some merit. Not only that, but I think it's possible that on a subconscious level, at least, we are aware that it has merit, and that our current cultural proclivity toward disposable relationships is less derivative of Disney's "princessification" of relationships than it is the cause of it.
I think we are aware, deep down, that relationships are hard work... and we just don't like this. As a culture, we have become addicted to the idea that Good Things Ought to be Effortless. The internet has spread our self-gratification culture to the point where it has infected our souls.
Perhaps an altered understanding might help.
Here, then, is my two-pronged proposal: First, that I begin to see any claims of "incompatibility" I catch myself making as being byproducts of my inherent selfishness and laziness. And second, that I begin to see true compatibility as being a byproduct of the ego-less self at work. Which is to say, the mysterious place where humility converges with willpower.
If this were the case, I could look at any problems in a romantic relationship and say that a higher quotient of incompatibility probably results from one or both partners having too high a quotient of selfishness; or one or both partners perceiving too high a quotient of selfishness, or one or both partners doing things (intentionally or otherwise) that activate the other partner's quotient of selfishness. And then, theoretically, I could find a way out.
In some ways, this whole proposal feels like nonsense to me.
I have known and dated a number of different women in my life, and there have been obvious differences between us in terms of our respective values and goals -- differences which have varied wildly from woman to woman, altering in turn the degree of difficulty in each relationship.
In a perfect, ideal world, the degree of difficulty would not be a primary determinant factor in my ability to practice the selfless kind of love necessary to elevate said relationships toward ever-increasing levels of mutual fulfillment (as if that were the point -- another essay entirely).
But this is not an ideal world and I am most definitely not an ideal person. I have only so much energy and willpower to expend, and given that it is extremely important to me to expend a lot of my energy in other, non-romantic-relational directions (such as my creative work, or my relationships with my siblings, parents, and son), it seems unkind to punish myself with what may very well be an impossible expectation.
I am left, as always, to flounder around in the imperfection -- in the place where my aspirations hold hands with my dreams and believe their way out of an admittedly inescapable reality, toward something that more closely resembles hope. Or faith. Or love.
I do not know how to do this.
I have tried, and I have sucked at it.
I do believe, however, that I may have latched onto a key principle that could serve me well as I swim against the current that would have me treating people as things -- as objects for the fulfillment of my immediate desires.
I think that the antidote to selfishness is gratitude and humility.
Gratitude, because in the act of vocalizing and thinking and expressing my gratitude for the Bounteous Treasure inherent in Being Alive, I am able to momentarily look outside the consciousness-of-deprivation inherent in all desire. In gratitude is freedom from slavery to the ever-demanding self.
In humility (which is symbiotically intertwined with gratitude), I believe, there is a willingness towards release. In humility I can relinquish all the absurd things I do to fabricate a false sense of control. In humility, my eyes are off of me, and I become free to look Other-ward. Not just in relationships of a romantic nature, but in relationships of all kind.
Gratitude must generally be directed away from myself to shift my perspective.
Humility is perhaps the inward reflection of that outward expression.
In writing this gratitude, I feel it more acutely. It becomes more real to me, and as it does, the un-reality of the deprivations of what I do not have (most notably for this discussion: a fulfilling, long-term romantic relationship) drift away.
This sensation won't last... not for long.
But what does?
- - -
*Note: I put a lot of time into giving you this ad-free reading experience. If this post means something to you, you are more than welcome to pay me back by linking the bejeebers out of it on your social medias. And/or better yet, you could go pick up a copy of my book, "IMMORTALITY (and other short stories)." Dankegratzithanks.
Tuesday, January 14, 2014
We're incompatible, darling... will you marry me?
Posted by JOSH BARKEY at 4:47 AM
Labels: faith, gratitude, identity, relationships
1 comment:
As a young woman (say 17)[!!!] my mother explained to me that, "It does not really matter WHO you marry, darling. The point is that you have to WORK to be able to live and love that person." Dang! She was right. Since then, I have agreed more and more with her sentiment, and though she was not a religious person, or follower of Jesus, she got it right. Thanks, Mum.ReplyDelete
Subscribe to: Post Comments (Atom)
Popular Posts
Wry, ironic comment explaining why the gratuitous picture of the hot chicks to the left is actually relevant and somehow empowering to wom...
I came across this picture on Facebook last night, shared by someone named "Progressive Secular Humanist Examiner," and -- as I&...
I am writing to apologize for my behavior last Sunday. I want you to know that I am not normally one of those guys who acts like an idio...
An old family friend recently wrote me regarding my previous rant about the movie "Fireproof", wanting me to know that some of h...
Things that whirr and click make me nervous, and not just because it seems likely that at some point they're going to take over, submerg...
I'm such a spastic poster that I doubt anybody'd notice, but I'm most likely gonna be off the bloggin' grid for a week, from...
The thing about women is, they're like cats. And like cats, if there is one thing you can count on with women it's their curios...
When a friend of mine wrote to ask if I'd ever thought of attending the Glen Workshop, my answer was a resounding "yes"... b...
I recently read a cracked.com article arguing that film-makers are the myth-creators of our time, and that Hollywood's myths directly ...
Is it sexist to assume you're guys? It seems to me that if women wanted to steal cars, they'd be awesome at it. But since most crim...


text:
Please login to get more out of this site
You are currently not logged in, do so now to add comments, like articles as well as photos, submit to competitions, translate articles and gain access to unlimited photo upload! If you are not registered yet, go here to find out more about Lomography and join now! If you just want a limited account for now you can use Twitter or Facebook. We would love to have you as a member here!
16 people like this photo
Liking photos helps us to present the best ones to you and others. 16 people like this photo. 16 people like this photo: tatocientos, kristine-morgendorffer, warning, javihacefotos, parky, lady_diana, paramir, susielomovitz, stouf, anomalocaris, andrejrusskovskij, locutus, corali, flashstalker, davefilkins, and kylesherman.


text:
We are currently recruiting for a 1st Line Support Technician to fill a full-time position within the ICT team of Oasis Community Learning. This is an ideal opportunity for a motivated self-starter to join the ICT department at Oasis, one of the largest Academy sponsors in the UK. The Oasis ICT department services our Academies nationwide, providing staff, pupil and external customers support for all aspects of an IT infrastructure, including Networking, Server, Desktop & Laptop Hardware (Tier 1 Products) and Software. This essential role will be part of a Service Desk within the IT Services Department, conveniently located at our Waterloo Hub in Central London, working with a sociable, hardworking and friendly team of ICT professionals providing:
• 1st Line hardware and software support
• incident management
• logging calls
• administering asset management
• general IT administration and other IT facility services If you are pro-active, keen to learn, have a basic understanding of Microsoft technology, TCP/IP, DNS, DHCP,possess a good understanding of computer hardware and troubleshooting hardware problems and have an enthusiastic approach to customer service, then we would love to hear from you. This is an exciting opportunity to be part of a National IT Team which has recently invested ¾ of a millionpounds in IT systems.
As part of the package, Oasis offers:
• A good ContinuousProfessional Development (CPD) Programme using industry certified accreditatione.g. Microsoft Certified professional, COMPTIA etc.
• An opportunity to work with new technology e.g. HP Servers, CISCO etc.
• A final salary pension scheme with a Local Government pension provider
• A generous holiday allowance for support staff, starting at 25 days per year, rising to 30 days after two years (including 8 Bank Holidays) Oasis is committed to making a difference to the lives of the communities it works in, and as such you must show a willingness to demonstrate commitment to the values and behaviours which flow from the Oasis ethos.
We are committed to safeguarding and promoting the welfare of children and young people. We expect all staff to share this commitment and to under go appropriate checks, including enhanced DBS checks. If you are interested in this position, please send your CV to: firstname.lastname@example.com
Closing date for applications is: Monday 2 December 2013
Interviews will take place in the Oasis Community Learning national office in Waterloo, London on Friday 6 December 2013.
Please contact Nathan Lodge, HR Advisor (020 7921 4267), should you have any questions about this job role.
Oasis Community Learning supports Equal Opportunities Employment.
Oasis Community Learning is a company limited by Guarantee registered in England and Wales no. 5398529.Oasis Community Learning is an exempt charity under the terms of the Charities Act 1993 and 2006


text:
Handling the rename of get_query_set to get_queryset in Django 1.6 is very tricky - much trickier than it might seem.
For many 3rd party libraries, you will have a few aims:
Subclassing makes this much, much harder.
Suppose you have:
class FooManager(models.Manager): def active(self): return self.get_query_set().filter(active=True) def get_query_set(self): return FooQuerySet(model=self.model)
How do you update this code?
The tricky bit is that you need to consider a class that subclasses FooManager, which you don't control. That code might not be updated yet.
A very important example is the RelatedManager class in Django, which dynamically subclasses the default manager on a model to provide access to related objects. You use this all the time, in ORM calls like person.schools.all() — roughly speaking schools returns a dynamic subclass of School.objects. In Django 1.5, this subclass overrides the get_query_set method so that it calls super.get_query_set (e.g. School.objects.get_query_set) and then adds some filters to limit to the particular related object it is attached to.
You certainly need compatibility with this if you want to still support Django 1.5. But there could be other examples of things that subclass FooManager explicitly and are outside your control. Let's represent all these subclasses as follows:
class FooManagerSubClass(FooManager): def get_query_set(self): return super(FooManagerSubClass, self).get_query_set().order_by('bar')
Now, imagine an instance of FooManagerSubClass, and calling the active method on it. The call look like:
FooManager.active -> FooManagerSubClass.get_query_set -> FooManager.get_query_set
So all the defined behaviours combine as they should.
Now you come to update FooManager so that it will still work with Django 1.5, but works on Django 1.6 and later without issuing warnings if everyone is using get_queryset.
How should you rewrite it?
First pass:
class FooManager(models.Manager): def get_queryset(self): return FooQuerySet(model=self.model) get_query_set = get_queryset # Django 1.5 compat def active(self): return self.get_queryset().filter(active=True)
This looks correct, but FooManagerSubClass().active() is now broken, because calling it runs:
FooManager.active -> FooManager.get_queryset
— that is, it misses out FooManagerSubClass.get_query_set, because active is calling get_queryset, and the subclass knows nothing about that, it's only overridden the get_query_set method.
(This type of failure is particularly nasty, because the failure is silent. It applies to related managers, which are going to be broken in a nasty way - they no longer have filtering applied, so person.schools.all() returns all schools, not just the ones related to person. And you probably won't have an explicit unit test for this).
So, now you need something like this:
class FooManager(models.Manager): def get_queryset(self): return FooQuerySet(model=self.model) get_query_set = get_queryset def active(self): m = (self.get_query_set if hasattr(self, 'get_query_set') else self.get_queryset) return m().filter(active=True)
But now you now get warnings emitted when active() is called in some cases, even on Django 1.6 and later - in particular, you get it when you call it via a RelatedManager on Django 1.6 and later, due to the way that Django sticks get_query_set wrappers on manager subclasses that don't define get_query_set explicitly (such as RelatedManager) - via RenamedMethodsBase.
Also, if you reverse the conditional so that get_queryset is called in preference to get_query_set, then active() breaks as above, so you can't do that.
This is trickier than it seems!
Due to the subclassing issue, I can't find a way, even with modifying Django's behaviour, to satisfy all the constraints, at least if you want warnings to be emitted when they need to be, and silenced when you've fixed your code. I've updated the Django docs to my best ideas so far.]]>
A lot of programming language debate is of the form "feature X is really good, every language needs it", or "feature X is much better than its opposite feature Y". The classic example is static vs dynamic typing, but there are many others, such as different types of meta-programming etc.
I often find myself pulled in both directions by these debates, as I'm rather partial to both Haskell and Python. But I'd like to suggest that doing this kind of comparison in the abstract, without talking about specific languages, is misguided, for the following reasons:
In my experience, static typing in Haskell is almost entirely unlike static typing in C, and different again from C# 1.0, and, from what I can tell, very different from static typing in C# 5.0. Does it really make sense to lump all these together?
Similarly, dynamic typing in Shell script, PHP, Python and Lisp are perhaps more different than they are alike. You can't even put them on a spectrum — for example, Python is not simply a 'tighter' type system than PHP (in not treating strings as numbers etc.), because it also has features that allow far greater flexibility and power (such as dynamic subclassing due to first class classes).
One of my favourite features of Python, for example, is keyword arguments. They often increase the clarity of calling code, and give functions the ability to grow new features in a backwards compatible way. However, this feature only makes sense in combination with other features. If you had keyword arguments but without the **kwargs syntax for passing and receiving an unknown set of keyword arguments, it would make decorators extremely difficult.
If you are thinking of how great Python is, I don't think it helps to talk about keyword arguments in general as a killer feature. It is keyword arguments in Python that work particularly well.
For example:
So, a dynamic typing advocate might say that static typing means lots of repetitive and verbose boilerplate to indicate types. That criticism might apply to Java, but it doesn't apply to Haskell and many other modern languages, where type inference handles 95% of the times where you might need to specify types.
The corollary to the above fallacy is that if you are only debating language features in the abstract, you can pick whichever implementation you want in order to refute a claim. Someone claims that dynamic typing makes IDE support for refactoring very difficult, and a dynamic typing advocate retorts that this isn't the case with Smalltalk — ignoring the fact that they don't use Smalltalk, they have never used Smalltalk, and their dynamically-typed language of choice does indeed present much greater or even insurmountable problems to automated refactoring.
Defending the best implementation goes further when you actually defend one that doesn't exist yet.
The mythical "smart enough compiler" is an example of this, and another would be dynamic typing advocates might talk about "improving" dynamic analysis.
Hypothetical implementations are always great for winning arguments, especially as they can combine all the best features of all the languages, without worrying about whether those features will actually fit together, and produce something that people would actually want to use. Sometimes a hybrid turns out like Hercules, and sometimes like the Africanized bee.
In choosing a programming language, it's not only the features of the language that you have to consider — there is long list of other factors, such as the maturity of the language, the community, the libraries, the documentation, the tooling, the availability (and quality) of programmers etc.
Sometimes the quality of these things are dominated by accidents of history (which language became popular and when), and sometimes they can be traced back to features of the language design.
Many language-war debates ignore all these things. But it's even easier if you are not actually comparing real languages — just language features, abstracted from everything else.
I understand that comparing everything at once is difficult, and we will always attempt to break things down into smaller pieces for analysis. But I doubt that this goes very far with programming languages, because of the way the different features interact with each other, and also exert huge influence on the way that everything else develops e.g. libraries.
Language features exist within the context of a language and everything surrounding that language. It seems to me that attempts to analyse them outside that context simply lead to false generalisations.
Of course, being really concrete and talking about specific languages often ends up even more personal, which has its own pitfalls! Is there a good way forward?
This page reports my success with installing and using Linux on an HP Pavilion 17 laptop, model e153sa.
These results apply to Linux Mint Debian Edition (2014-03) and Linux Mint 16. (These are similar to Debian and Ubuntu).
Overall status: Almost everything works perfectly.
Tests included:
To install Linux from CD/DVD, you have to press 'Esc' during bootup to go into the BIOS settings. Change the boot order to boot from the install CD/DVD before hard drive, and disable UEFI secure boot, then exit and reboot.
The laptop monitor seems to have some kind of default brightness that is really, really low (almost black).
Thankfully, you can adjust this using the keys on the keyboard. After you've fixed it once after bootup, it can sometimes be triggered again e.g. when you go into "System Settings" on Linux Mint - the laptop screen goes completely black. This is a bit annoying, and can make you think it's not working at all, but after setting the brightness once or twice I usually don't have a problem again until I reboot, which is pretty rare.
The wifi/webcam/graphics all worked perfectly out of the box with no extra drivers needed.
WebGl in Firefox works great. I found it was disabled on Chrome by default, but this can be easily fixed by enabling "Override software rendering list" (opening a tab with the URL chrome://flags/#ignore-gpu-blacklist) and then it works fine.
Initially I found that SD cards were not recognised at all when inserted into the slot. After some Googling, I found this can be solved by having an SD card in the slot while the laptop boots, and whenever you resume from suspend. Annoying, but not too serious if you have an old SD card that you don't mind leaving in your laptop.
Very occasionally my external USB mouse stops working when I plug other devices in to the nearby USB ports. Solved by unplugging and re-plugging the USB mouse. I'm not sure if this is a hardware or Linux issue.
Multi-touch for touchpad works, at least to a basic level e.g. two finger scrolling, using the Linux Mint control panel.
I have not succeeded in getting HDMI audio output to work (using PulseAudio).
Here is way of learning to create a website using the Django web framework without having to install anything on your local computer.
This might be useful if:
I'm assuming you already know how to program in Python, or are sufficiently experienced with programming that you don't mind learning Python while learning Django at the same time. If not, have a look at these starting points:
If you don't know much about programming, try Learn Python The Hard Way.
If you are experienced with other programming languages, but not Python, try, Dive Into Python.
I'm assuming you are reasonably comfortable with typing things into a command prompt or terminal. Thankfully, even if you are not, you'll be doing everything in a virtual machine somewhere on the internet, so you can't break anything!
Go to http://runnable.com/ and sign up for an account.
Create a new project, choosing 'Django'.
You'll be presented with an almost empty Django project, complete with a terminal. However, we want to remove some things so that we can follow the Django tutorial exactly.
In the terminal, type the following commands and hit enter. First, delete all the files created in /var/www:
rm -rf /var/www/*
Now, we need to upgrade Django, because runnable.com installed an old version:
pip install --upgrade Django
Now, open up the Django docs and start the tutorial, from part 1:
Because you are running on runnable.com, rather than your own computer, you'll need to make some very slight adjustments to the instructions at certain places:
After you have run startproject in the tutorial, you will need to find the settings.py file and make an adjustment. Find the block that defines MIDDLEWARE_CLASSES and remove the line:
This middleware is an important security feature, but it interferes with the way that runnable.com displays your project in a frame (in its normal workflow), and without this change you will be presented with a blank page after you press 'Run'.
When it comes to running the your Django project, the easiest way is if you use the green 'Run' button, but adjust the command. Click on the gear icon to configure it, and change the command to:
cd /var/www/mysite; python manage.py runserver 0.0.0.0:80
Now press the 'Run' button.
And that's it! You should be able to complete the tutorial with these adjustments.
I hope this has been helpful! Please comment with any corrections.
To go further, you'll probably want to have a look at Getting started with Django.
With slightly different concepts of "self-hosting":
I'm struggling to define this concept exactly. A common thread with all of them is that there will be some kind of boot-strapping problem before maturity is reached. Also, most of these things can be classified more simply as "software development tools" — due to the fact that most software development tools are software, there is the possibility of this kind of "recursion".
Are there other things in this category that I haven't thought of? Are there lots of areas of life outside the software world where this is common?]]>
For a long time, one of my fellow core developers on the Django project has had an email signature which contains the following:
"I disapprove of what you say, but I will defend to the death your right to say it." -- Evelyn Beatrice Hall (summarising Voltaire)
My perception of the reaction and noise around Brendan Eich's appointment (and subsequent resignation) as CEO of Mozilla has been that many (though by no means all) in the tech community haven't held true to this (though I think many would claim that they have).
I'm afraid I can't be silent on this issue any more, and I have to speak out. You are more than welcome to disagree with me (as I'm sure many of you will!) but please at least hear me out.
I was pushed further by a comment on a blog post (both of which have since disappeared) in which the author said that he would be very scared to speak out if he opposed gay marriage, and that fear is not the tactic we should be using to discourage this view.
I agree completely with that sentiment. The current temperature in the programming community feels extremely hostile to anyone, like me, who opposes the concept of gay marriage.
I should mention that for many Christians like me this is far from the most important moral issue. Divorce and pornography within the church itself are, unfortunately, much more pressing concerns. Although our views on those matters are probably offensive to a much greater fraction of the population, it's around this issue that most discussion is taking place at the moment.
The first thing I want to address in this post is the alarming tendency to demonise those who disagree with you. I've seen so many tweets in which Brendan Eich has been called a bigot or gay-hater. The reality is that you don't know how he has come to his convictions, or how he is motivated. To accuse someone of being hateful without good reason is slander, and, however you were motivated to do that, you cause real pain when you do so, as well as increasing suspicion and animosity in the community.
The second thing I want to do is give a justification of my views. I think that one of biggest reason that people feel compelled to characterise their opponents as haters is that they cannot imagine any other motivation. The most prominent speakers from a 'Christian' perspective on this subject have been people like Fred Phelps — thankfully now forever silenced.
I haven't seen anyone in the tech community presenting a view which represents something I'd believe to be a genuinely Christ-like perspective. Brendan Eich's own post, while rejecting the label of 'bigot' and 'hater' as I do, declines to give a reason for his views, on the basis that "online communication doesn't seem to work very well for potentially divisive issues". I have a huge amount of sympathy for that position, and realise that I will be risking massive misinterpretation with every line that I write. But I cannot agree with the sentiment that religion is not something you should talk about in polite company.
In fact, this vacuum can give the impression that the only way that people can believe what I believe is from an irrational, indefensible, hate-filled religious bias. So I'm going to try to address that.
This blog post is long. I'm sorry, if I'd had more time it would be shorter! On the other hand, it brings up many topics that could be discussed at much greater length, so I guess this could have been much longer!
The first important issue is the distinction between acceptance and approval. There is an idea in our society today that if you love and accept a person, you must also give total approval of their behaviour. Forgive my bluntness, but this idea is just plain wrong! You will see counter examples in any parent-child relationship. Most importantly for me, the life of Jesus illustrates my ideal.
Jesus scandalised the religious leaders of his day by his willingness to associate with the 'sinners' — tax collectors (national traitors and thieves) and prostitutes. (Matthew 9:9-13, for example). His response was "It is not the healthy who need a doctor, but the sick... For I have not come to call the righteous, but sinners."
Notice that while Jesus was happy to associate with these people, and they clearly were happy to be around him, he still calls them 'sick' and 'sinners' — broken people who needed fixing. In other places, we're told that a summary of his message was "Repent, for the kingdom of God has come near." (Matthew 3:2). This is not a message of "Stay as you are, you're just fine." It's exactly the opposite — you need a complete turnaround in your life if you want to be a part of God's world. Jesus spoke extremely clearly about the deadliness of sin, and the reality of hell, and the need to deal with sin severely on that basis (e.g. Mark 7:20-23, Mark 9:42-50).
One of my favourite passages in the Bible is the story Jesus told of the prodigal son (Luke 15), where the context of accepting sinners is again the big issue. This amazing, powerful story emphasises the love, compassion and patience that God has towards those who reject him. While we don't deserve God's mercy or love, his arms are always outstretched in forgiveness towards us. But nowhere does that acceptance mean approval of lifestyle. The lost son comes to his senses and returns to his father — he repents. He admits that he has behaved terribly. And for us to receive the forgiveness and power to change that God loves to give, we have to be ready to say the same thing.
Please note that Jesus makes clear that this applies to everyone, myself included — we are all broken people, and rebels too, whether we are outwardly respectable or not. Jesus' harshest words are for those who refused to admit this.
The behaviour of Christians needs to be modelled on the attitude of Jesus, and the waiting father in Luke 15. I'm ashamed that we Christians constantly fail to live up to the standard of Jesus in his love, compassion and patience and I apologise for that. Yet Jesus sets the pattern of loving and accepting people while not condoning their behaviour, and in fact calling them to change.
I understand that if you feel disapproval you can also feel rejection, or even hate. But my opposition to homosexual practice is not a rejection of you as a person. I also disapprove of all sex outside of marriage, and yet the many people who engage in that, who I brush shoulders with daily, do not feel rejected by me.
I confess that I don't do it nearly as well as Jesus did. Luke 7:36-50 shows the kind of effect Jesus had on people — people whom he welcomed kindly, yet still called their sin 'sin', and called them to leave it. I aspire to that, and ask your forgiveness when I fail.
There may not be many people in the online community I interact with who can vouch for my behaviour, but it seems that those who know Brendan Eich can vouch for his. From the sounds of it, Brendan is a great example in this matter. People have seen the way he treats gay people and been impressed, and then been surprised, as Mitchell Baker was, to know his views on gay marriage. But their surprise is because they assume that a welcoming acceptance of a person means approval of their behaviour, and vice-versa, and that if you disapprove you will also demonstrate hate. But Jesus has shown us a better way.
My second main point — I want to defend my view.
As I start to do that, you might be surprised to know that I actually feel I don't really need to give a long defence. I think my view is philosophically and morally far easier to defend than the alternative. But I'll come on to that.
I have no idea what Brendan Eich's reasons are for his views, but I will give an extremely short, inexhaustive defence of mine:
The Bible, including Jesus' teaching about sexuality, makes it thoroughly clear that sex is for marriage only, and that homosexual practice (like other forms of sex outside of marriage) is a sin before God. (Re-interpreting the Bible to make it more palatable to today's society might be tempting, but simply not possible to do honestly).
Jesus believed the Bible, and strongly taught its centrality as the basis for all our ethical decisions as well as our understanding about God. (See above link, which contains a section on this.)
Jesus was the sinless Son of God, as demonstrated by his astonishing life and death, and his miraculous resurrection, which is extremely convincing on an historical level, God has appointed him as the current ruler and saviour of the world, and future judge of all mankind. As such he is uniquely qualified to guide us on these matters. The way he has impacted my own life further convinces me of the reality of his claims about himself. So if he accepted and endorsed the Bible's teaching, that's good for enough for me — in fact it's the only wise and safe thing to do.
So, supporting gay marriage would be supporting a relationship which is wrong, bad for the individual, and bad for society (since God knows best). This puts it into the same category as laws that promote easy divorce or sponsor sex outside of marriage, on all counts. I accept Jesus' and the Bible's wisdom on all these, because I think he is wiser than the tide of current opinion.
(I do feel the need to emphasise the thing about other forms of sexual immorality. The Bible also condemns adultery, sex outside of marriage, lust, pornography (Matthew 5:28), etc., with the result that virtually everyone, myself included, has sexual sins, at least in their past, that leave us guilty before God. Evangelical Christians haven't changed their minds about those things, but for some reason, this doesn't bother people that much, but our disapproval of homosexual acts, which affects far fewer, makes lots of people angry. In our own circles, it is these other forms of sexual immorality that are the overwhelming focus of our teaching.)
I could include other reasons, which I will touch on later in this post, but these are my fundamental ones.
On the other hand, I've always struggled to find a persuasive defence of the concept of gay marriage. In the post linked above I gave my reasons why I think Christians who attempt to combine acceptance of homosexual marriage with their Christian faith are totally without sound basis. But non-Christians, especially athesists, are usually no better off. The rest of this post is primarily targeted at people who are arguing from an atheistic perspective.
It seems that most defence of homosexual practice and marriage today is made on the basis of moral relativism - "you can't tell me what is right for me. You can keep your Bible/religion/moral absolutes." Especially over the past 5 decades, much of Western society has thrown off the shackles of religion as a basis for deciding morality — the Christian religion in particular. So the response to everything I've said is simply "we reject the Bible's teaching on sexual ethics, and anyone else's for that matter".
However, people still have fairly well defined sexual ethics (see below), it's just really not at all obvious where they come from.
Further, moral absolutism is extremely evident in the response to Brendan Eich's position. Everyone seems to think they have the right to tell him that he is wrong, and that he and Mozilla need to apologise, at the very least.
In fact, there is very little genuine moral relativism among atheists I know. Moral outrage about what other people have done pre-supposes moral absolutes.
In reality, what has happened is that our society has replaced one form of moral absolutism with another. However, the replacement has no basis at all. There are others in the programming community who have, refreshingly, noticed how lame moral relativism is, but haven't come up with a basis for moral absolutes. So the basis ends up being either personal preference, or the tide of current opinion.
This is far more arrogant and dangerous than the position of conservative Christians, who see themselves as under an external law that they are not free to re-define or re-interpret. Many atheists end up with a horrible combination of moral relativism and absolutism. It combines the attitude of freedom from restraint, saying "you can't tell me what to do" to the rest of the world, with an unchallengeable conviction of moral superiority that is quite happy to add "but I can certainly tell you what to do." It also makes them totally vulnerable to whatever people happen to think right now. People in our society have changed their views on homosexual practice astonishingly quickly. This could be because they've become enlightened on an issue, or it could be because they have no moral anchor, and so are tossed around on every wave of fashion. And they've got no way of knowing the difference.
Before you criticise my view, I'd ask you to challenge yourself on whether you have a solid, consistent, thought out basis for your moral view point? I've yet to meet an atheist with anything approaching this. Patches welcome!
If you believe that homosexual relationships are on the same footing as heterosexual marriage, why?
Here are some arguments that simply will not work:
"It's obvious". It seems most people assume this — their position is so obvious it does not need to be argued. But this is no more convincing than people simply saying that the opposite position is equally "obvious", basing things only on what is "natural".
"It's logical". You cannot argue ethics purely from logic. "Do not steal" cannot be derived from Modus ponens and friends. Logic certainly has a place in applying moral principles to specific situations, but can't produce those principles in the first place.
"Science". People often want to argue things from science, because it works, or something. They might make arguments from biology etc. But science cannot tell you what ought to be. It can only ever help us to describe what is. There is no experiment you can do that will tell you if murder is wrong. Science might help confirm that some people are born with a certain sexual orientation, which can help me have compassion on those people, but it doesn't decide morality.
I'm a science geek myself — I did physics and material science at university, and loved it. But when it comes to ethics, science can help inform us, but it is always interpreted in a pre-existing moral and philosophical framework, which is the thing that atheists are still searching for.
"History". Unless you are a theist, there is basically nothing you can deduce about ethics from the flow of history. There is no reason to think that history has a purpose or ethical direction. There is no "wrong side of history" — you will find plenty of examples in history when the generally accepted morality has gone in the 'wrong' direction (whatever your definition of right and wrong).
At this point you might be tempted to combine history and science, and look to evolution to encourage you to think things will progress. But you can't equate physical progress with moral progress. If you want to make this your basis, then you are left with only the survival ethic, as C.S. Lewis puts it eloquently in his Evolutionary Hymn. With this ethic, any change has to be defined as good, especially things like the growth of black slavery in the 17th century, which helped another 'race' to succeed.
"It's about doing people good." Cicero put it this way:
"The people's good is the highest law."
Many would try to build an ethical system based on whatever will produce good outcomes — things that are good for people. This is called teleological ethics. The fundamental problem with these systems of ethics is that they must pre-suppose a value system. So, for the atheist, this simply shifts the problem to an equally difficult problem of defining what is good.
For example, I recently read an article promoting basic income — a concept that was new to me. In it, the author essentially assumed that "enabling most of our race to live a life of leisure should be something we strive for". However, my definition of "good" is very different. As a Christian, I think that humans being were meant to work — to do something useful for other people in this world.
Before you can decide whether something is good for individuals or society, you need to know what humans beings are for. It seems that if you are an atheist, it's not possible to have any definite answer to this, because human beings, along with the rest of nature, have no pre-defined purpose at all.
(As a Christian, I do know what I'm for, what my purpose is. As a famous catechism has put it, summarising the Bible's teaching:
"Man's primary purpose is to glorify God and to enjoy Him forever." (Westminster Shorter Catechism in Modern English)
In case you are wondering — yes, this is incredibly fulfilling and wonderful!)
"It's about equal rights."
There are two issues here. The first is about access to certain legal rights, such as next-of-kin hospital rights. This is something that can be addressed by other legal means such as civil partnerships and civil unions, which I think are a good thing, especially when they are defined broadly enough to cater for non-sexual relationships.
The gay rights movement has gone beyond this, however, in insisting that equal rights means there must be no distinctions made between things that are different, which is a flawed definition of equality.
The comparison between gay marriage and interracial marriage is often drawn. The argument goes that laws against interracial marriage are racist, so laws against homosexual marriage are homophobic. But the comparison is flawed.
Let's consider the case of a black man and a white man who both want to marry a white woman. If we say that the black man cannot marry her because he is black, this is racial discrimination.
Suppose, secondly, there is a man of 25 and a boy of 8, and both want to marry a woman. If we say that the boy cannot marry her because he is only a boy, this is age discrimination.
Now let's come to the point: suppose a man and a woman both want to marry a woman. If we say that the woman is not allowed to marry the woman because she is a woman, what kind of discrimination is this?
While some immediately see homophobic discrimination here, or discrimination on the basis of sexual orientation, that isn't the issue. The woman was not allowed to marry the woman because she was a woman. This is gender discrimination.
When it comes to marriage, there has never been any discrimination on the basis of sexual orientation, in the US or the UK. Homosexual people have identical rights to heterosexual — the same marriage relationships are open to both, and always have been. The traditional view of marriage is not based on the idea that homosexual people are inferior in any way, because homosexuals are not denied access to marriage for any reason relating to their orientation. The traditional view of marriage is based on discrimination between the sexes. It is based on the idea that men and women are fundamentally different in some important ways — which I'll leave to a biology text book if you are not aware of them :-)
We are happy to discriminate in this area on the basis of age, because there are fundamental differences between children and adults. The line is pretty blurred, of course, but the distinction is real, so most societies draw a (somewhat arbitrary) line of a specific age, and make that the law. This isn't the only way you might do it, but it's probably as good as any.
When it comes to gender, there might occasionally be grey areas, such as hermaphrodites. However, in the overwhelming majority of cases, it is very clear cut — much more so than for the case of childhood/adulthood.
There are clearly grounds on which we think it is OK to discriminate when it comes to marriage, such as age. What is the uniting factor?
I would argue that the whole reason that marriage deserves state recognition and protection is because heterosexual marriage has a unique place in society when it comes to producing and raising children. This provides more than reasonable justification to discriminate on the basis of both age and gender.
You might object that although this form of marriage discrimination is technically on the basis of gender, in practice it discriminates against gay people because it is only gay people who are stopped from marrying the people they want to marry.
However, that ignores various other reasons we have for stopping people from marrying:
The people involved must not be married to other people. But why not? Who are we to define marriage in such an exclusionary way?
The people must not be siblings, or parent/child. But why not? In an age of effective contraceptives and abortion, arguments from genetics no longer work, and even without them, who are you to say that the genetic problems caused are worse than the deprivations inflicted when forbidding marriages like this?
And, in the age of gay marriage, what about two brothers or two sisters, where there is no chance of them producing a child? Or a mother/daughter, or father/son?
The fact remains that when it comes to defining marriage, you have to come up with a bunch of restrictions and constraints which will always exclude someone. If your definition of marriage doesn't exclude some relationships, then you have no definition at all, in which case the word becomes meaningless, and it becomes impossible to even talk about.
If your definition of "equality" is "we must make no distinctions between anything", then you cannot justify the restrictions that we place on marriage and many other distinctions that we make in society. The definition of equality that makes this a matter of equal rights is totally flawed.
"You are encouraging atrocities against gay people."
I don't think that the teachings of Jesus will ever encourage people to commit atrocities — as outlined in the first main section above.
Of course it is true that if people read the Bible selectively, they can find motivation for all kinds of terrible things, but that is true of every religion or philopsophy. (Take, for example, the massacres of Aboriginal peoples, along with eugenics and other terrible things, often justified on the basis of Social Darwinism).
I don't want to downplay for one second the terrible things that have been done against gay people, some in the name of so-called Christianity. These things, however, highlight the terrible truth about humans: there is an evil nature inside each one of us that is capable of using any reason, or none at all, for inflicting cruelty on other people. An honest response to this reality is at the heart of the message of the Bible and Jesus. (Mark 7:20-23, Jeremiah 17:9).
"I feel moral outrage about this!"
I think this is probably the biggest reason that people are convinced they are right on this issue. When you feel outraged over a particular issue, it seems inconceivable to your sense of justice and conscience that any informed person could disagree or believe differently. This is particularly strong for issues such as gay rights, where there are many examples of homosexual people being treated abominably — which we would both deplore.
In this frame of mind, it's incredibly hard to believe that there is even a tiny possibility of being wrong or outrage being misdirected.
But consciences can be trained and educated, for better or worse. We all know that simply doing something changes our attitude towards it. We can even find certain acts amusing or pleasing when we are not on the receiving end, but outrageous when we are.
Consciences are slippery, and can be manipulated both internally and externally, and are often influenced by media and public opinion, as demonstrated by the rapidly shfting tide of public opinion regarding gay marriage. If we were having this conversation in 1988, only 11% of American readers would be supporting same-sex marriage (source), and many of the rest would feel plenty of moral outrage at the thought of it being introduced. I'd ask you to think — how has your moral framework led you to this position and is it consistent with other moral issues you do or don't feel strongly about?
Unfortunately, moral relativism has pervaded our culture, making it almost impossible to think critically about this subject. Without any real standard for ethical beliefs, moral relativists are imprisoned into the belief that they are right, and progressing towards some as yet unknown moral ideal. This is why those in the liberal movement call themselves "progressive", assuming that change is indeed progressive and cannot in fact be "regressive". Genuine self criticism is impossible because it is philosophically unthinkable.
To sum up, from my perspective, a solid moral framework is needed for making any ethical decisions, which atheism struggles to provide.
But as a Christian I do have a solid foundation — the person of Jesus Christ himself. It is his understanding and example that I attempt to follow. And it is his example that provides a way for us to demonstrate genuine acceptance and love towards those whose behaviour we strongly disapprove of, without insulting or attacking. I think we still have a lot to learn from him — myself included.
It is Christians (or those claiming to be) who need to learn from him first of all. There are those who claim to be Christians yet completely fail to follow Jesus' model and are driven by malice in their disapproval of others, and they have no excuse. Another tendency amongst my own camp is to focus on homosexual behaviour as a (usually subconscious) cover for sins that are in reality just as serious before God, but are uncomfortably close to home, like a lax attitude towards divorce, lying, gossiping, greed, pride... the list goes on. We need to repent of that.
If I haven't convinced you on any of these points, please be assured that I will continue to treat you with respect and kindness, whether you are gay, straight, Christian, atheist or anything else. If I have any understanding of the Christian message, this is the only thing I can sensibly do.
Note 1: it probably goes without saying that these are my personal views. I don't know what Brendan Eich would think about these things, and I'm not representing the views of other organisations that I'm involved in like Django, etc.
Note 2: I have disabled comments on this post due to the low signal-to-noise ratio that I expect in response to this post, sorry. If you would like to engage me in genuine, respectful discussion, I'd love to hear from you, but please do so by email.
If you are using Linux and the Gnome/Mate/Cinnamon desktop environments, Chrome stores passwords in the Gnome password manager (also known as Seahorse).
The following script will find these passwords, and export them to an XML password file that can be imported by the Firefox "Password Exporter" extension, so that, between them, you can transfer saved passwords from Chrome to Firefox.
Please see the top of the script for instructions, item 3. (The script also has other modes, for pure export/import of Seahorse passwords). You'll need to know how to install Python and related packages - this is not a point-and-click solution, sorry!
Without much ado, here is a Python script that will allow you to dump password from the Gnome password manager (also known as Seahorse, and used in other desktop environments such as Cinnamon) into a JSON file.
This is useful for just viewing all your stored passwords (which are not always visible in the password manager GUI), but it will also import them again, which is especially useful when you want to pull in all your saved passwords from an old machine.
Please see the top of the script for instructions. You'll need to know how to install Python and related packages - this is not a point-and-click solution, sorry!
It's often said that the zero-based indexing common in programming languages is a completely "unnatural" (and therefore wrong) way to do indexing. If you count (and label) a list of things in the real world, who in their right mind would start with zero?
This post describes a place in "the real world" where zero-based indexing makes perfect sense, whether or not it is the most obvious thing to do initially. This may be helpful to someone new to programming, when it seems that this zero-based indexing has been deliberately invented just to make like difficult.
Suppose you sell books (hi Stephen!), and you need to store them.
You have shelves that can store 100 books. If you need more than that, you can get more shelves - you can stack 10 shelves on top of each other into an aisle. If you get more than 1000 books, then you can have multiple aisles. Since you want to keep things organised, you keep going with the whole 10 thing - so you have 10 aisles to a room, 10 rooms to a floor, 10 floors to a building etc.
Suppose you haven't got that far yet, and you've just got a single room of aisles and shelves, and can store up to 10,000 books.
You "natually" decided to start labelling things at 1. The first book is book 1, the first shelf is shelf 1, the first aisle is aisle 1.
Now, someone orders book 8650, and you need to find it. Where is it? It's on aisle 9, shelf 7. Hmm, not so obvious. But it's fairly simple to add 1 to each digit, right? So book 8699 is also on aisle 9, shelf 7. And book 8700 is on — oh, actually, that is also on aisle 9, shelf 7. Book 8701 is the first one on aisle 9 shelf 8. So the add 1 thing doesn't really work. The rules are:
For book XYZZ: Add 1 to X to get the aisle, add 1 to Y to get the shelf. And if ZZ is 0, subtract 1 from the shelf number you calculated. No wait, what about book 1000? - that would give me aisle 2, shelf 0, which doesn't exist. OK, try again...
No, let's start again.
You think about things slightly longer, and you decide to start labelling things at 0. The first book is 0, the first shelf is 0, the first aisle is 0.
Now, someone orders book 8650, and you need to find it. Where is it? It's on aisle 8, shelf 6 - just like every book labelled 86ZZ. That's it.
So, it turns out that the most "natural" way to number things ended up being a pain in the neck.
In fact, if I was given the task of indexing things in a library or book store etc., I'm fairly certain that I would consider starting at zero to be the most natural and obvious choice, because of my experience with computers. It might not be the most obvious choice for someone else, or the easiest to learn initially, but it is certainly easier to use long term (at least in my hypothetical book store).
From the analogy, when would it make sense to start from zero when labelling things?
These are things that are true of computer memory. There are lots of pieces of data in a computer that we need to be able to reference. For practical reasons, computers tend to use base 2, not base 10, so there are constraints on the number of binary digits rather than the number of decimal digits. A 32-bit computer can't (easily) address a number that requires more than 32 binary digits to express.
So computer memory is best labelled starting at zero. But it's not just memory. To organize the amount of data that computers can process, we often store the size of the data in the data itself, and include this when we pass it around - for example when we send it over a network, or store it in a file. So, a file, or a section of a file, might have a header at the beginning that contains 4 bytes (a 32 bit number) that indicates how long that file or section is, or might contain an offset indicating where another piece of data is.
So, when you deal with computer data, you are often having to deal with labels for the data, and numbers that represent offsets into data etc. To avoid all the adding 1 etc., and errors or head-aches associated with that, the zero-based indexing makes most sense.
Now, there are many problems in programming where the constraints of the underlying architecture do not show through. Very often, the upper limits are so far away that they are of no concern, and the way things are organized in memory is of no concern, and you aren't dealing with numbers that are constrained to be 32-bits, for example.
But that leads to a dilemma. Should you use the more "natural" 1-based indexing for those problems, and stick to zero-based indexing for the others? Doing so can cause huge problems. Having more than one convention is very confusing. And often, code can be general enough that it will work for a wide variety of problems, so for a given line of code, there is no clue which type of problem it applies to.
So it's best to stick to one convention to avoid confusion. Which one? Well, that's the subject of wars, and there are lots more arguments (in both directions). But if you are struggling with the choice of zero-based indexing, it wasn't made just to annoy you, it was made because it works really well for some types of problems. And you might find it becomes natural eventually.]]>
This is the third in a seris of posts in which my upcoming wedding has exercised my programming skills.
There are a lot of ways to seat approx 130 guests in tables of 10.
(Digression: how many ways?
There are n! ways to order a list of n people.
However, we then group that list of n people into j groups (tables) of size k each (assuming an exact division is possible for simplicity).
In each group, there are k! different ways to order the people, but all these are considered equivalent for our purposes (we don't care what order people are listed within a table). So we divide by k!, and do it j times, once for each table.
We could then shuffle all the groups, and all the results of such shuffling are also considered equivalent. So we divide by j! to count for these permutations.
So, I make it: n!/((k!^j)*j!)
(You can get the same formula by considering 'n choose k' to choose the people for the first table, multiplied by '(n-k) choose k', for the second, etc., with n reducing by k each time as the pool of available people shrinks, dividing by j! to account for permutations of tables, and simplifying).
Or, in my case:
54, 890, 022, 949, 532, 268, 126, 852, 483, 022, 955, 182, 591, 896, 498, 645, 394, 651, 998, 355, 750, 163, 025, 911, 301, 922, 700, 044, 395, 961, 856, 125, 066, 251, 303, 921, 134, 714,366, 269, 440, 000
But my maths is shockingly bad — corrections in comments are welcome! Whether I've got it right or not, there are still definitely lots of potential arrangements...
[Edit 2014-02-28: previous incorrect formula got me a larger figure, 2.201437978814401e+202]
End of digression...)
So, we haven't got into the business of doing the table plan yet, but this is such a nice programming puzzle that I couldn't resist starting now (and we probably need to get a move on if we are to get this done...).
I found one commercial solution, Perfect Table Plan, but:
I found a paper tackling the problem, but:
So I wrote my own. I used a model very similar to the one given in the paper, with some tweaks.
The idea is that you define a matrix of connections, with a zero indicating that the people don't know each other, 1 that they do know each other, plus 50 indicating that they must be together, and negative numbers for people who should be kept apart!
You then use this matrix to rate different potential seating plans — essentially trying to maximise the strength of connections on tables, summed over all people. In order to explore the possible solutions, I'm using simulated annealing, and a simulating annealing Python module that I found.
Defining a matrix for how 130 people know each other is a challenge. I've created a UI with a grid, and added controls to make it easy to enter connections for groups of people together. This provides a reasonable solution, but a grid 130x130 is a bit of a pain.
The UI is all in a web browser, with the main algorithmic code running server side, written in Python. I've used Flask as the web framework, instead of Django which I almost always use, since it is nice and light, and I don't need an ORM or admin etc.
I also discovered a few tricks along the way.
I don't want this web app to be storing any data on the server at all, not even temporarily, but people still need to be able to save their data (the connection matrix that they have defined, and also any generated seating plans they want to save) in a convenient way, and be able to upload the data that they saved previously. Copy-paste to a text file works, but it is far from convenient.
For downloading data, I've found a trick using an iframe with an auto-submitting POST form. The server simply echoes back the POSTed data with "Content-Disposition: attachment", and the data will be saved — in Chrome and Firefox this works very well, since they can be instructed very easily not to prompt you for every file that is downloaded, so this becomes a one-click process.
For uploading data, within a single page app, there is now a way to do this using XHR, at least for modern browsers. I then have a simple view which again just echoes the data back client-side, allowing me to use a browser's normal file upload mechanism to get the data back into the client-side app.
From my tests so far, I don't think the algorithm is going to be up to the job, especially with the machine time I have available. It worked quite well for 25 people, but 130 is another matter. I'm leaving it to run for a few hours, using a high number of "exploration steps", and fairly high "annealing time", but I'm not that hopeful.
First, I think there is a flaw in the model: it tries to maximises the total strength of connections between people on a table, summed across all people and tables. However, this has some bad implications: if someone is moved to a table where they know lots of people, the score will increase a lot, due to everyone on the destination table being happier. If they have left a table where they knew, say one person, that will be a penalty, but not a big one. But it is possible that the person they abandoned is now left friendless on that table. Overall, the score will still increase — the misery of the one friendless person having been outweighed by the happiness of the larger group.
So, basically, it is too utilitarian. Or it doesn't weigh the misery of being alone strongly enough.
Second, I suspect that the solution space is just too large to explore. Simulated annealing requires you to define a 'move' function, to change the system from one state to a nearby one. I just swap two random people on two random tables.
Now, in many cases you have a strong requirement that two or more people sit together e.g. a connection coefficient of 50. There is first of all the problem of random swaps getting these people together in the first place. Second, once they are together, you get a local maxima, but because each move only moves one person, not the group, they are basically stuck at that table, barring a small miracle in which they are both swapped to the same table by chance within a few moves.
So I'm thinking that a different physical metaphor is needed — something more like gravity or springs, which kind of guarantees that couples and their children will find each other, and stick together. I can't think how to continue that model so that you satisfy the strict constraints of so many people to a table.
I have very little experience with this kind of code, so it is fun to be stretched in this direction!
Since this is highly algorithmic code, I experimented with PyPy.
Initially I found PyPy was actually a bit slower. However, my code uses lists of integers to represent people, and originally I used 'None' as a sentinel value to represent an empty seat. I realised this might be killing PyPy's JIT. Switching to a sentinel value of '-1' gave me approximately 5x to 10x improvement with PyPy. So it is now worth using PyPy.
Other than that one optimisation, I've done very little, so there are probably big ways the code could be improved.
It's all free, and on BitBucket:
I'm kind of hoping that someone will turn this into something that actually works. It is quite a fun problem, but it has taken up far too much of my time this week, given that sitting on the floor with bits of paper is probably going to be much more effective...
[Update: having let it work for a longer run of a few hours, the results are surprisingly good. It has at least managed to satisfy all of the '50' connections, grouping families of up to 6 together, and managing to get other '50' couples onto the same table. And so far, the only examples I can find of people without any friends on a table are people for whom I haven't put in any connection info yet. I'm impressed! But it still lacks that human touch...]


text:
iTS SHAKES WIN AT HIGH MPH BUT NOT AT LOW MPH.
1999 Dodge Stratus
Dodge Q&AAsk Your Question
1999 Dodge Stratus Question: why would my front end stakes at 75-80mph in one but not 70mph in under?
Answer #1goodguy February 05, 2013, 23:11Master
check front end components and tires if eveythings seems ok then I would balance and rotate tires
ReplyAlexe2610, February 05, 2013, 23:14Rookie
I balance and rotated tires and still the problem is there can it be something else
Replypushrod, February 06, 2013, 01:28Master
Drive slower!
ReplyAlexe2610, February 06, 2013, 01:44Rookie
can my ball joint or outter tie rod be going bad.?
Replypushrod, February 06, 2013, 03:36Master
Should show up at all speeds, See answer 1, may need to see front end shop as well.
Sure sounds more like a tire problem to me, out of round or balance!
Replygoodguy, February 06, 2013, 06:39Master
I agree with wetry it sounds like a tire problem but I would check the front end just to be sure
Answer #2ziptie12 February 06, 2013, 05:06Master
Get up to 75 , then gently apply the brakes while maintaining 75 , if it stops shaking , start with the struts.
Answer #3Greg's Orange Auto (14224 Answers) , Orange, CA - (714) 361-9386globalhelper February 06, 2013, 06:11Master
seek insp from alignment shop and they will see loose parts if any are worn
Answer #4barberacares from Barbera's Autoland, February 06, 2013, 10:29Enthusiast
A vehicle's front end may shake for numerous reasons and it is important to set up an appointment to fix your car. It is possible that parts may require replacement and maintenance may be needed. A factory trained technician at Barbera's Autoland can test drive your vehicle and try to verify your complaint. Please call 215-333-3700 to set up an appointment today to correct your vehicle and receive a diagnosis quote. We look forward to hearing from you. Thank you, Jessie Barbera's Autoland Chrysler Dodge Jeep Ram
This week's top 10
|1 pushrod
|6 Hal...
|2 CharlesAutomotive
|7 IamSteve
|3 ziptie12
|8 lordwoton
|4 globalhelper
|9 ProfessorG
|5 csubak30
|10 wrayauto