text:
Should I be worried that I am not having morning sickness? I am 6 weeks.
Posted: 08/30/2007 by JMiller79
Mom Answers
Sort by: best answers | most recent answers
41 - 50 of 132 answers
I'm six weeks along as well and beyond a day of vomiting and migraine right after implantation, I've been feeling great! I can feel something going on down there for sure, but no real discomfort. I was very concerned about morning sickness with pregnancy because I've struggled with hormonal nauseous migraines for years which have been debilitating at times. I can handle the puking no problem but it's the headaches I can't stand. But so far I've been feeling better than ever and am so grateful. Haven't gained weight yet, 1st child. But I took a test on my 26th cycle day (I have short cycles) and the moment it came up positive I've been eating very well. It seems so much easier when I think of how i'm feeding my baby every time I eat haha!posted 09/08/2013 by redhairedbabies
I'm 17 weeks and I haven't had it so you shouldn't be worried about that at all just enjoy your pregnancy and be happy you do have itposted 08/08/2013 by adamsdaijon
i didnt have morning sickness i was seven weeks and lost the baby im trying agian wish me luckposted 11/11/2012 by debbiechelsee
well i am 8 monthes and having my baby on april 8 i have never had morning sickness so it is normal dont worry just keep on eating healthy it would be best if you eat crackers in the morning just in case if you eat something that makes you sick. dont worry you are fineposted 03/07/2008 by marie bebo baby
Don't worry, every pregnancy is different, you won't always get the typical symptoms that most women expect. I was two and a half months along with my first one before I had any morning sickness.posted 09/13/2012 by gypsyvitae
I am 31 weeks pregnant, and i have never once had morning sickness. Every thing is going great, baby and i are as healthy as it gets:)posted 08/15/2012 by Emalee Anne
I am having my third child. I had absolutely no sickness with my firstborn. I was more tired (sleepy/fatigued) than usual but no nausea at all. With my daughter, I was mildly nauseated on occasion. Relax and enjoy your growing baby. Everything is fine.posted 07/26/2012 by a BabyCenter Member
I was bed ridden for 5 weeks with sickness that lasted all day. I tried to tell myself, be happy, you know the baby is healthy.... what a crock, about three weeks in I started to cry and begging for it to stop. It is waning now, rearing it's ugly head every few days or so..... I am ever so grateful when I don't have it and thank your stars you don't either. Imagine feeling like you have the flu, and those moments just before you puke when your mouth waters and your hands and feet sweat and you know your going to loose it at any second. Now think about living like that with no end in sight. Some women have it the entire time! MISERY!posted 07/22/2012 by kidsndakitchen
I'm 15 weeks and I have NEVER had morning sickness with my pregnancy, I'm very happy about this too! If it wasn't for my missing period and tender breasts, I would never know I'm pregnant.posted 07/14/2012 by shjchica
if you don't have morning sickness, consider yourself blessed...if you want to know what it's like, try hiking to high altitudes very quickly without acclimating, or sitting in the back of a hot, crowded bus on a curvy road for a few hours, or taking 3 birth control pills in one day...you'll get the idea and be glad you don't feel that way.posted 02/05/2009 by shaggy36
Answer this question


text:
The Moleskine notebook comes with an elastic band to hold the cover closed. I added a small velcro patch to hold the in place when the cover is open.
I love it. It provides protection and it is much easier to hold than the Amazon cover--the front folds over the back. It is quite comfortable this way: this is the classic "reporter" style notebook for taking notes when holding the book.
If you haven't seen this Moleskine notebook, there is a picture on
the Moleskine site at http://www.moleskines.com/moleskine-repor

subset: commoncrawl


text:
Email to a Friend
Be the first to review this product
Sign up to get notified when this product is back in stock
Availability: Item No Longer Available
Sugg. Retail:
Replaces OEM Part Exactly. Sold Each
Only registered users can write reviews. Please, log in or register
You have no items to compare.
You have no items in your shopping cart.


text: Our sales team had an interesting request from a new customer recently. Their CIO challenged us to "de-concern me" with the design, provision and management of integrated IT and network infrastructure. In other words, he wanted to focus on delivering a service to the business, and not worry about the technology that makes it work.


text:
An excerpt from www.HouseOfNames.com archives copyright © 2000 - 2016
Viking settlers in ancient Scotland were the ancestors of the first people to use the name Hutchins. It comes from Huchon, a diminutive form of Hugh. Patronymic surnames arose out of the vernacular and religious given name traditions. This name is the equivalent of Hugh in the vernacular of Scotland.
The surname Hutchins was first found in Ross-shire (Gaelic: Siorrachd Rois) a former county, now part of the Council Areas of Highland and Western Isles in Northern Scotland, which emerged from the Gaelic lordship of the Earl of Ross, where they held a family seat from very ancient times.
Translation and spelling were non-standardized practices in the Middle Ages, so scribes had only their ears to rely on. This was a practice of extremely limited efficiency, and spelling variations in names, even within a single document, were the result. Over the years, Hutchins has appeared Hutchins, Hutchings, Hutchin, Hutcheon, Huchens, Hutcheons, Hutchon, Houchin, Houchen, Houchens, MacCutcheon, MacQuestion and many more.
This web page shows only a small excerpt of our Hutchins research. Another 320 words (23 lines of text) covering the years 1481, 1494, 1577, 1598, and 1726 are included under the topic Early Hutchins History in all our PDF Extended History products.
More information is included under the topic Early Hutchins Notables in all our PDF Extended History products.
Some of the Hutchins family moved to Ireland, but this topic is not covered in this excerpt. Another 116 words (8 lines of text) about their life in Ireland is included in all our PDF Extended History products.
The fertile east coast of what would become US and Canada was soon dotted with the farms of Scottish settlers. Some of them remained faithful to the crown and called themselves United Empire Loyalists, while others had the chance to pay back their old oppressors in the American War of Independence. That brave spirit lives on today in the highland games that dot North America in the summer. Passenger and immigration lists indicate that members of the Hutchins family came to North America quite early:
Hutchins Settlers in United States in the 17th Century
Hutchins Settlers in United States in the 18th Century
Hutchins Settlers in United States in the 19th Century
Hutchins Settlers in Canada in the 17th Century
Hutchins Settlers in Canada in the 18th Century
Hutchins Settlers in Australia in the 19th Century
Hutchins Settlers in New Zealand in the 19th Century
The Hutchins Family Crest was acquired from the Houseofnames.com archives. The Hutchins Family Crest was drawn according to heraldic standards based on published blazons. We generally include the oldest published family crest once associated with each surname.
This page was last modified on 12 December 2015 at 09:42.
Sign Up


text: Description Suggest an Edit The Flint River Trail begins near downtown at the University of Michigan-Flint campus and heads north along both sides of the Flint River to Bluebell Beach on the reservoir. Another segment takes you to Stepping Stones Falls. From there, you can take sidewalks and/or the road to pick up the trail again at E. Coldwater Road and carry on to Genesee.Along the way, you will pass through older neighborhoods, a few city parks and learn about Flint's heritage from wayside historical signs. At E. Boulevard Drive, you can take an out-and-back side trip through Kearsley Park. In 2010, the trail was extended from the University of Michigan west into historic Carriage Town, passing by Atwood Stadium, the former "Chevy in the Hole" site, the Kettering University campus and Mott Park. It ends at Ballenger Highway and McLaren Regional Medical Center on Flint's west side.At the northern end, Stepping Stone Falls is a picturesque, manmade waterfall, and the family-friendly Bluebell Beach has a playground and sprayground.The Friends of the Flint River Trail lead bike rides every Sunday, May-October at 2 p.m. from the Flint Farmer's Market. Click to read more Parking and Trail Access The trail can be accessed from I-475 at Robert T. Longway Blvd. (exit 8B if coming from the north, exit 8A if coming from the south). Parking is available in the lot next to the Flint Farmers Market at Robert T. Longway Blvd. Click to read more Reviews Take the Northern side of the Flint river at the University April, 2015 by scott.welliver.7 The western end of the trail starts just north of the McLaren hospital on the south side of the river. This portion is very urban and I learn that concrete flood controls are a prominent portion of the river through this urban zone. Once reaching the ...read more most riders forget the trail continues August, 2014 by melcool1 When riding the flint river trail if you continue going beyond Stepping Stones you ride on branch road beyond the closed road section and the trail picks up again and contines for another 5 miles to.Stanley and Genesee roads. I might add that it is simply ...read more Love the Flint River Trail November, 2013 by melcool1 I ride the Flint River Trail frequently and I enjoy every mile. You Begin the trail across the street from McLaren Hospital at Ballenger Hwy and Sunset Dr. Then you ride past Kettering University where you will do different level grade hills as you approach ...read more


text:
Harris Leads Gophers to Upset of MSU
Willhite, Lindsey, Daily Herald (Arlington Heights, IL)
Byline: Lindsey Willhite Daily Herald Sports Writer
Mateen Cleaves' reign as Big Ten Player of the Year ended when the postseason began.
No one in an official capacity deemed that so - just someone in the best place to make Cleaves look bad and himself look great.
Let the trumpets blare for the first king of the Big Ten postseason - Minnesota senior point guard Eric Harris.
Harris poured in a career-high 29 points on 10-of-12 shooting in Minnesota's 76-73 quarterfinal shocker over top-seeded Michigan State.
But that's only half of what the Bronx native did Friday afternoon. He suffocated an impatient Cleaves on the other end. He forced the sophomore to shoot 2 of 18 from the field and induced enough bricks to pave the Spartans' way back to East Lansing.
In the final two minutes, when any contribution by Cleaves could have cut into Minnesota's one-possession lead, Cleaves missed three 3-pointers, a pair of free throws and fouled Harris to hand the Gophers a key point with 31.3 seconds left.
"Sometimes you're going to have games you're never going to forget in your life, the best games you ever have," said a gracious Cleaves. "Then you're going to have your frustrating games. I really couldn't get myself going today.
"I've just got to go back, watch the film and learn from the mistakes I made. I think I learned a valuable lesson today."
Harris traveled the same high road as Cleaves.
"Our first two meetings I was sort of disappointed with myself," said Harris, who managed just 10 points on 2-of-16 shooting in the two Gophers losses. …


text:
Po vetkém hovno, enem po včelách med.
I actually kind of dig bike #1, the twisty one.
There are lot's of folks in the world with too much time on their hands, lol.
The gladiator chopper bike reminded me of a Big Wheel (I always wanted one when I was a kid).


text:
BlackBerry Will be Profitable Within Two Years, CEO Says
BlackBerry has been in an embattled state for several years now, undergoing multiple leadership changes, a fluctuating but mostly sinking stock price, unpopular product launches, and a diminished brand reputation.
Undaunted by all of this, current CEO John Chen is determined to steer BlackBerry back into a state of success.
In an interview with USA Today, Chen cited BlackBerry's road to recovery as an "eight-quarter journey."
"The first thing I have to do is to get into profitability, as well as cash flow breaking even," he said.
Chen believes BlackBerry can be cash-flow positive from operations by the end of this fiscal year. Then within the next fiascal year, he believes the company can be profitable, something it hasn't been for a long while.
BlackBerry in March reported a fourth-quarter loss of $423 million, down from a profit of $98 million in the year-ago quarter. Selling 3.4 million smartphones—more than two-thirds of which were legacy BlackBerry 7 devices—during the quarter, revenue came in at only $976 million, a steep fall from the $2.68 billion it generated in the year-ago quarter.
But even then, Chen affirmed his company was on financially on track for the future.
"I am very pleased with our progress and execution in fiscal Q4 against the strategy we laid out three months ago. We have significantly streamlined operations, allowing us to reach our expense-reduction target one quarter ahead of schedule," he said. "BlackBerry is on sounder financial footing today with a path to returning to growth and profitability."
The Waterloo-based smartphone maker still has a sizeable cash horde at $2.7 billion.


text:
A woman's Mahram is a person whom she is never permitted to marry because of their close blood relationship (such as her father, grandfather, great-grandfather, etc., and her son, grandson, great-grandson, etc., her paternal and maternal uncles, her brother, brother's son and sister's son), or because because of radaa'ah or breastfeeding (such as the brother and husband of the ...Read More »
Woman in Islam
Women in Islam
Islam came to affirm the dignity of women, their full human rights, their eligibility for high rank and status both in this world and in the hereafter. The history of Islam testifies that when the teachings and principles of Islam were properly applied, women were fully empowered and thus wonderful women pioneers emerged, excelling in social work, knowledge, and activism. ...Read More »
A Woman of Perfection Lady Fatimah: The Youngest Daughter of the Prophet
A woman in today's society is not free from scrutiny about how she meant to dress, behave, or appear in public. The public eye falls on every woman who strolls within its purview and its perception is often one that is rigid and judgmental. Physical beauty essentially becomes the talk of the season, every season, as the definition of physical ...Read More »
Thai actress Nook Suthida converts to Islam
Suthida has changed her name to Assieh and is taking courses at a school in Bangkok to learn the Islamic principles, IRNA reported. Nook Suthida said that despite many objections raised by people around her, she finally decided to convert to Islam. She has made the decision after travelling to many countries for finding the most perfect religion. The move ...Read More »
Khadijah Bint Khuwayled: The Pure Woman By ;- Muhammad `Ali Qutb
The life of Khadijah bint Khuwaylid (may Allah be pleased with her) is a journey of notable wisdom, unlimited giving, and boundless love for Allah and His Messenger. Khadijah had a previous marriage before she married the Messenger of Allah (peace and blessings be upon him). After her first husband died, she was free, conducting the affairs of her life ...Read More »
A Perfect Woman 1
`A'ishah, the mother of the faithful, exemplifies the character of a Muslim nurtured from an early age in a pristine Islamic environment. Having been educated by the best of all teachers, the Messenger of Allah (peace and blessings of Allah be upon him), she serves as a role model for the perfection that Muslims can aspire for and attain. It ...Read More »
Hijab protects islamic women
Amazed by Muslim Women's Dress By a Revert Sister
I am an American who grew up in a strict religious Christian family. By the time I was sixteen I became very devout and religious myself. The church was like a home away from home. I enjoyed it thoroughly. I had read and studied the Bible on a regular basis. All the while I was noticing many errors in the ...Read More »
Tasnim Nazeer: A writer for the people By Duvindi Illankoon
Named as one of the most influential Muslims under 40 in the world, British born journalist and author of Sri Lankan heritage Tasnim Nazeer wants to be the voice of those who do good work. Tasnim Nazeer realised the might of the pen while she was in Sri Lanka following the tsunami, covering relief efforts. Being a college student and still ...Read More »
What do you Want me to Wear? By Binth Niwas –
The spread of hate speech and campaign against Muslims is not something novel in history. We have witnessed this happening in our very own Sri Lanka in the recent past, in direct terms as well as in forms of manipulative sugarcoated speech. An important issue that is directed against Muslims is against the dress – Abaya worn by Muslim women. ...Read More »


text:
ROC 2 by blackorb00Watch
©2012-2016 blackorb00
>>> R.O.C, a little personal project im working in.. is on early stages so its nothing to be excited for.. yet.
Nicely done!
the armour design ALONE is enough to get exited about, I'll be awaiting what is to come ^^
good design on the armor
and the details too~
and the details too~
I love how you designed the armour.
impressive style , he looks like siegfried from soul calibur !
Really good and pure work, I like it ^^
Really nicely done! : D
Looks pretty cool.
more mystery!


text:
Popular Subjects
Sign up for an exclusive coupon good on your next order.
By signing up you enjoy subscriber-only access to the latest news,
personalized book picks and special offers, delivered right to your inbox.
We never share your information and you can unsubscribe at any time.
Browse All Subjects
How to Tell If Your Cat Is...
Buy from $0.99
The Terrible and Wonderful...
My Dog: The Paradox: A...
Why Grizzly Bears Should Wear...
Buy from $5.76
5 Very Good Reasons to Punch...
Warum Grizzlybaren Immer...
Buy from $31.55
Die Schrecklichen Und...
Buy from $21.32
Woran Du Erkennst, Dass Deine...
Buy from $9.99
Mein Hund - Ein Paradoxon:...
Buy from $13.99
Cómo Saber Si Tu Gato Planea...
Buy from $29.55
Les Terribles Et...
Buy from $38.61
Crazy, a little irreverent - PG13? Very funny and entertaining book. Off the wall humor, creative and clever. Read More
The Walking Dead: Rise of the Governor
Starting at $0.99
Why Grizzly Bears Should Wear Underpants
Starting at $20.36
Tales Told by Dead Friends
What If?: Serious Scientific Answers to Absurd Hypothetical Questions
Starting at $3.60
I Could Pee on This: And Other Poems by Cats
Subscribe now for coupons, newsletters, and more!
Let's Get Social
Terms of Use |
Privacy Policy |
Recommendations by Simularity |
Copyright © 1998 - 2016 Alibris. All rights reserved.
Alibris, the Alibris logo, and Alibris.com are registered trademarks of Alibris, Inc.
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited, Baker & Taylor, Inc., or by their respective licensors, or by the publishers, or by their respective licensors. For personal use only. All rights reserved. All rights in images of books or other publications are reserved by the original copyright holders.


text:
Surface survey, shovel testing, and stratigraphic excavations were done on Atafu Atoll in Tokelau during August 2008. Initial results suggest that Fale Islet has the most potential for further archaeological research. Dense cultural deposits on this islet are >1 m (39 in.) deep. Cultural material recovered includes food bone, fire-affected volcanic rock, tool-grade basalt flakes and tool fragments, Tridacna shell adzes, and pearl-shell fishhook fragments. Dog bone occurs from the earliest deposits through to the late prehistoric, while pig bone is found only in historic contexts. Fish bone is common throughout, and, with the exception of Tridacna, there are few edible mollusk remains. Initial EDXRF (Energy Dispersive X-Ray Fluorescence) analyses have found the basalt to be consistent with documented sources on Tutuila, Samoa. Basal radiocarbon dates from two excavation units are 660-540 cal. BP and 500-310 cal. BP (at 2σ).
Show full item record
Your Library - virtually everywhere
The Library - Te Whare Pukapuka
The University of Waikato - Te Whare Wānanga o Waikato


text:
Reload the page and try again.
Party Scene:
Lots of alcohol, usually pretty good music
Campus Housing:
LOVED Carman hall freshman year!
Simple guest policy in the dorms
Love going to mens basketball games
Local Area:
Not much to do unless you go downtown
Local Area:
I mean, it's New York City. The greatest city in the world. Atmosphere doesn't get much better than that.
Campus Food:
Decent options in my opinion. John Jay, Ferris, and JJ's Place are the three main options. JJ's is the late night spot but doesn't always have the healthiest options.
The general athlete community and die hard athletic fans attend all the games. Some casual fans attend here and there. Especially men's basketball. But other than that, athletics isn't really a major part of campus life. It's there if you want it, but you wouldn't exactly feel like you're missing out if you're not involved.
Off-Campus Dining:
Anything you could possibly want
Party Scene:
You find the nightlife gets better and better when you leave Columbia's no-fun-bubble.
Columbia is one of the most diverse schools in the world
Choosing Columbia if you care about school sports in any fashion is a terrible idea. However you have plenty of professional sports in NYC
Professors in the engineering curriculum are very informative and have a passion for their subjects
Party Scene:
Parties are limited depending upon your major
The advisors are great and flexible to meet. They want the students to succeed.
The engineering and science program is very challenging and offers diverse courses.
Financial Aid is extremely difficult to get for a family with average income and assets. The application does not ask what hardships a family has taken or how secure your current income is. A home should not be taken as wealth, this is the place you live in.
Health & Safety:
Safety is stressed on campus with strict measures taken if not obeyed
Columbia students are from many different ethnic and religious backgrounds.
Campus Food:
It ok for campus dining, not like home.
Overall Experience:
Courses are very challenging, some classes are small while others are 100+
Overall Experience:
The University has a strong reputation and is well respected in the industry.
They provide a lot of financial aid, but it's still really expensive.
Off-Campus Dining:
In NYC the dining options are endless, but it's very expensive.
They are not too strict, except for the honor code and plagiarism
{{review.SectionLabel}} at {{review.EntityName}}:
Sorry, there are no reviews.
Columbia has a unique culture and school spirit. The intense workload and level of academic rigor bring students together in a culture of cozy complaint. Columbians constantly whine about their amount of work, but they also find a way to come together and persevere, and friendships are formed in this shared struggle.
Columbia is not for the faint of heart or those who need their hand to be held every step of the way through their college career. If you need help and seek it out, you will find it. But no one is going to sit down and explain everything to you, and Columbia can be pretty intimidating for that reason. However, this means that students are given the opportunity from the get-go to be independent and to decide for themselves what their college experience will mean for them. Columbia provides amazing resources and can help you achieve just about anything, or will at the very least encourage you to pursue whatever it is you want. The academics are amazing, and the Core Curriculum gives students a shared knowledge of Western thought, which is hugely influential in the way students will approach academics, careers, and life in general. The Columbia experience is an incredible one, and any student lucky enough to get in should definitely take advantage of such a wonderful, rare opportunity!
Compared against the students in the chart, you are in the:
Non-registered users are limited to 5 school profile page views per month.
Register for free to gain full access!


text:
Video: Capt. Brian Kerg Talks About His Unit's Mission & Training the Afghan Army & Police
Video by Cpl. Ned Johnson
Marine Capt. Brian Kerg of Piqua, Ohio, talks about an upcoming deployment and how the Marines in his unit are doing. Kerg is the executive officer for the Headquarters Battalion detachment. His unit will be training the Afghan National Police and Army with NATO forces. Accompanying B-roll is titled "Marines Prepare to Train Afghan Army and Police" Produced by Cpl. Ned Johnson. Also available in High Definition.
This work, Capt. Brian Kerg Talks About His Unit's Mission & Training the Afghan Army & Police, by LCpl Ned Johnson, identified by DVIDS, is free of known copyright restrictions under U.S. copyright law.
Date Taken:12.3.2011
Date Posted:12.7.2011 6:35AM
Video ID:132047
Location:CAMP PENDLETON, CA, US


text:
view full screen
Silvertone Pave Friendship Bracelet
Style: 570080697
Additional 50% Off Prices as Marked
Out of Stock
Glittering silvertone bar of pavé crystals bridges the shimmer of faceted jet beads on this darling friendship bracelet.
- 7.5" long.
- Tasseled slide closure.
- Glass crystals; nickel-free metal.
Read more… Read less…


text:
Newegg.com - A great place to buy computers, computer parts, electronics, software, accessories, and DVDs online. With great prices, fast shipping, and top-rated customer service - once you know, you Newegg.
If you are reading this message, Please click this link to reload this page.(Do not use your browser's "Refresh" button). Please email us if you're running the latest version of your browser and you still see this message.
Newegg.com - Computer Parts, Laptops, Electronics, HDTVs, Digital Cameras and More!
Sold and Shipped by antonline.com
THE SIMS 3 PLUS ISLAND PARADISE (LIMITED) PC New adventures await your Sims on the sunny shores and beneath the glistening water of an island paradise! From exploring the tropical isles to creating a five-star resort experience, your Sims can decide to embark on an unforgettable journey or make themselves a new home in this new utopia. Nautical Sims can even take the helm of fully customizable houseboats and set sail between islands! If your Sims would rather be in the water than on it, they can snorkel and scuba dive their way through the ocean. Who knows, they might uncover sunken treasure or befriend a mermaid!
This item is eligible for Newegg Premier benefits. Are you a Newegg Premier Member? If not, sign up today and get:
Your request will be processed within the next 24 hours.
Please add "firstname.lastname@example.com" to your address book to ensure delivery.See Today's E-Blast Promo


text:
Shapeways: Bring your creativity to life in 3D http://www.shapeways.com/forum/index.php Shapeways: Bring your creativity to life in 3D Making molds for silicone in ceramic, glass thickness. http://www.shapeways.com/forum/index.php?t=rview&goto=59045&th=12111#msg_59045 <![CDATA[Hi

 I want to make a long thin mould to pour in silicone, I think cereamic would be best as I have made these before on a dimension 3d printer and it speeds up the curing process if you warm the mould up after pouring (and de gassing). and the plastic versions melt.

 My question is one about the thickness of the glaze.

 It would be useful to know.

 a) The thickness of the glaze roughly as I am sure it varies.

 b) Do we add this thickness to our model, (Hence make the mould a bit larger to allow for the extra thickness) or does way you submit the job allow for the thickness of the galze.

 Thanks in advance

 ]]> mintra 2012-12-21T20:43:21-00:00


text:
The Bacon Disaster, 'Odd Man In' and the Japanese 'Charity Breast-Squeeze' – 'News of the WTF?' [AUDIO]
If you wanna see a bunch of grown men cry, dump forty-thousand pounds of bacon on the highway.
If you wanna see a bunch of grown men cry, dump forty-thousand pounds of bacon on the highway.
Because the logical thing to do after whoopin' a kid's ass is to "Tebow", I have the story of an old dude who just couldn't get over the fact that a 17-year-old on a riding lawnmower cut him off in today's "News of the WTF?".
Apparently folks in India aren't exactly in the know when it comes to what it is that Adolph Hitler is known for, so a shop owner there was a little taken aback when Jewish residents had an issue with him calling his joint "Hitler".
Leave it to some fashion designer to convince people with more money than sense to spend nearly three hundred bucks on a brown paper bag.
With cases of West Nile Virus increasing here in Texas it's easy for me to sympathize with people freakin' out when they get bit by a mosquito.
It's official - Chuck Norris is no longer the baddest mofo on the planet.
Not that it's anything unusual for a bunch of Canadian dudes to get drunk and raise a little hell, but going as far as to put wheels and a lawnmower motor on a picnic table and then taking it for a joyride is nothing less than epic.
While it may not seem like a bad idea to the people making it, it's hard for me to get a grasp on a person actually marketing their product as "Meth Candy".
Being from the country, I fully understand the power of firing off a shotgun in front of a woman you're trying to impress.
Now one's instinct might be to swallow the joint they're smoking when they see the cops but an Alaska man found out the hard way that it's considered tampering with evidence and severely ups the ante as far as severity of the crime and I provide the details in today's "News of the WTF...
Sometimes a brother can't help himself once the smell of some good ole bud hits his nose, it's just that it's not a good idea to go ahead and grab yourself a handful from the police station.
You don't f*** around with a bunch of scrabble champions.


text:
|Adhiga Instruments Company is committed to offering quality aeronautical and scientific laboratory products while catering to the unique needs of the individual customer. For over a century our dedication has been to provide committed service to our customers paying great attention to their individualized requirements and satisfaction. We offer the best aeronautical and scientific equipments, whether it is in a lab setting or a testing in the field. What makes us unique is our personalized efficient service to our customers.
Aeronautical Engineering Institution, Agricultural, Educational,Pharmaceutical, Chemical, Electronic, Mechanical, Oil & Petroleum, Earth Elements, Food, Cement, Paint, Soap, Textile and Environmental Testing Services.


text:
This is a brand new 2008 Trek FX 7.5 with Bontrager SSR wheelset. No matter how much clearance and precise centering of the rear wheel, there is still brake rubbing when I m on the bike. I weigh 185 lbs. The brakes are set almost loose enough to run out of caliper pull--approximately 1/8" clearance on both sides of the rim. The wheel can
easily be pushed off center, by hand, laterally, about 1/8". Is this a common problem with Bontrager SSR wheels? When I put on another rear wheel(inexpensive Shimano Nexave C500 w/ Sun CR-18 rim, 36 spoke, laced 3x) the problem does not occur. I would not have thought that 185 lbs. would be too heavy for the Bontrager SSR wheels. Is it common for these lower level Bontrager SSR wheels to come through needing additiional tensioning to make them laterally stiff enough not to give with me on the bike? Will this be a recurring problem, or should my LBS be able to fix this. Advice and comments appreciated. Thank you.


text:
10 Steps to Pick the Right Doctor
Whether you need a primary care doctor or a specialist, these 10 steps will ensure you find the right doctor for you. View Slideshow
Dr. Pearson's Experience
- Sports Medicine
Board Certifications
- Family Practice
- Sports Medicine
Procedures Dr. Pearson Performs
Dr. Pearson does not have any procedures listed. If you are Dr. Pearson and would like to add procedures you perform, please update your free profile.
Conditions Dr. Pearson Treats
Dr. Pearson does not have any conditions listed. If you are Dr. Pearson and would like to add conditions you treat, please update your free profile.
Background Check for Dr. Pearson
Malpractice Claims not available
- Healthgrades does not collect malpractice information for Michigan.
- No sanctions history found for the years that Healthgrades collects data.
0 Board Actions
- No board actions found for the years that Healthgrades collects data.
Awards & Recognitions
Education & Training
Medical School
- Wayne State Univ Som
- Graduated in 1981
Residency Hospital
- St Lawrence Hospital
- Complete in 1984
Languages Spoken by Dr. Pearson & Staff
- English


text:
The Corporate Counsel Section of the New York State Bar Association is pleased to welcome Section members and visitors. The Section sponsors CLE, networking and other events and offers LinkedIn and Facebook pages where members can reach out to each other with questions and advice.
Meet the Section Chair
Jeffrey P. Laner of New York City
(Law Firm of Jeffrey P. Laner) is the new chair of the Corporate Counsel
Section. Laner focuses his
practice on business,
contracts and regulatory matters for corporations,
nonprofits, small businesses and start-ups. His current practice follows a
career in public service, volunteering for political campaigns in college;
serving as an aide and later legislative director for a New York City council
member; and after law school, working for two public-private institutions.
He was the
section's treasurer for four years. He currently serves as trea-surer for the
Board of Queens Legal Services Corporation.
View Member Perspectives on the Corporate Counsel Section:
View Immediate Past Chair Natalie Sulimani's perspective here.View Yamicha Stephenson's perspective here.View Member Barbara Levi's perspective here.
Helpful Links for Navigating this SectionExecutive Committee Roster
Archives of Section Videos
List of Section Committees
Inside (Corporate Counsel Section Newsletter) features peer-written, substantive articles about current issues facing the corporate counsel attorney, and provides updates on Section activities. Inside is published by the Corporate
Counsel Section and distributed to Section Members free of charge.
Read Now >
Soon! Corporate Counsel Section Members Professional Online Private Community
We are pleased to announce
that the Corporate Counsel Section will soon offer a Private Online Professional Community—for Corporate Counsel Section members only.
NYSBA Communities offer a
wide variety of options, ranging from traditional listserves to searchable
directories, collaborative workspaces, member profiles and even mentoring
Stay tuned for details!
Now Available! Corporate Counsel Section Executive Committee Community


text:
John Frieda Luxurious Volume Lavish Lift Root Booster
John Frieda Luxurious Volume Lavish Lift Root Booster with a targeted lifting complex boosts hair from the roots and thickens strands, for full hair styles that are soft and touchable.
New Luxurious Volume line builds fullness at the roots, thickens individual strands and increases lift for noticeably thicker, full-bodied hair.
Guaranteed AuthenticGuaranteed Authentic
Folica is an authorized distributer of this product and guarantees its authenticity.Close
- Targeted lifting complex
- Boosts hair from the roots
- Thickens strands
- Creates soft and touchable hair
- 110% more fullness
- 50% more thickness
- 90% more lift
Start with Luxurious Volume shampoo and conditioner. Towel dry hair. Spray onto hair, concentrating on roots, ensuring that undersection and surface are fully covered. Blow dry and style as usual.
Style Tip: For great body and lift, blow dry upside down. For best results, follow with Luxurious Volume hairspray.
Water, VP/VA Copolymer, VP DMAPA Acrylates Copolymer, Phenoxyethanol, PEG/PPG 14/4 Dimethicone, Tropolone, Polysorbate 20, Panthenol, Triethanolamine, Benzophenone 4, Ext. Violet 2, Fragrance


text:
Wednesday, October 02, 2013
0 Comments | Copyright: IANS
Contrary to rumours that Shruti Haasan is playing a character with grey shades in Telugu action-drama "Ramaiya Vastavaiya", its director Harish Shankar said she will only be seen in a guest appearance in the movie.
"She is not playing a negative character, but I have roped her in for a special character. Since we have worked together, I was keen on working again. My concern to have her eventually led her to sign the film," Shankar told IANS.
Harish and Shruti previously worked together in blockbuster Telugu action-drama "Gabbar Singh", a remake of "Dabanng".
In "Ramaiya Vastavaiya", she is paired opposite Junior NTR alongside Samantha Ruth Prabhu. The film is produced by Dil Raju and is slated to release Oct 10.
Shruti is currently awaiting the release of Telugu film "Yevadu", which also stars Ram Charan Teja.
User Comments & RatingsJoin India Forums for free to comment on this story. Have an account already? Use Quick Login to comment.
Kajal Aggarwal, who works in Tamil, Telugu and Hindi films, believes ...
Actor Allu Arjun, who is basking in the phenomenal success of his ...
Disclaimer: All Logos and Pictures of various Channels, Shows, Artistes, Media Houses, Companies, Brands etc. belong to their respective owners, and are used to merely visually identify the Channels, Shows, Companies, Brands, etc. to the viewer. Incase of any issue please contact the webmaster.
Popular Channels :Star Plus | Zee TV | Sony TV | Colors TV | SAB TV | Life OK
Quick Links :Top 100 TV Celebrities | Top 100 Bollywood Celebs | About Us | Contact Us | Advertise | Forum Index


text:
Marriage dissolutions
Duffy, Vicki Lynn and William Ryan.
Kennan, Thomas H. and Janette Marie.
Koch Sr., William Jacob and Koch, Tina Marie.
Lemar, David James and Jane Ann.
Piper, Jeremy Dwayne and Lona Irene.
Thies, Matthew Delno and Emma Mallari.
Ziyu, Men Ok and Dimitriy Y.
Hacker, Gary R. and Spencer, Diane F.
Marriage licenses
Beard, Guy Arthur, 83, Vancouver, and McConnell, Dolores Harriet, 78, Vancouver.
Bereitschaft, Frank Richard, 66, Noblesville, Ind., and Trujillo, Sharon Lea, 56, Vancouver.
Bunnell, Michael Dean, 53, Camas, and Munroe, Shari Lynn, 45, Camas.
Burgess, Casey Eugene, 21, Vancouver, and Litsey, Alison Elizabeth, 19, Vancouver.
Snyder, Gregory Wayne, 40, Vancouver, and Apsley, Geneva Kae, 25, Vancouver.
Zakharov, Yevgeniy Mikhailovich, 23, Vancouver, and Piontkevich, Zhanna Olegovna, 25, Vancouver.
Court sentencings
The Columbian's policy is to publish all Clark County Superior Court felony sentencings, as provided by the Clark County Clerk's Office. DC signifies that the defendant has entered drug court. Addresses are provided by the courts and may have changed by the time of sentencing. Misdemeanor sentencings, provided by District Court, are published for the following crimes: DUI (driving under the influence), DWS/revoked (driving while license is suspended or revoked), theft-3 (third-degree theft), and assault-4 (fourth-degree assault). If the defendant is sentenced for other misdemeanors at the same time, those offenses are also listed. Money figures represent fines.
Judges John Hagensen, John Nichols, James Swanger, Ed Poyfair, Barbara Johnson, James Rulli, Vernon Schreiber, Robert Lewis, Richard Melnick, Darvin Zimmerman, Diane Woolard, Scott A. Collier, John Wulle, Greg Gonzales, Kelli Osler, Sonya Langsdorf and Dan Stahnke. Judge Protem: Terry Vetter. Court Commissioners: Carin Schienberg, Amy Swingen, Alison Greene, Suzan Clark, Clayton Spencer, Jeff Witteman, Mary Arden, Kristen Parcher and Dayann Liebman.
Levine, Joseph Michael, 20, 815 Riverside Drive, Washougal, 40 months, possession of heroin with intent to deliver. (Johnson, March 22)
Lovitt, John Joonho, 52, Seattle, 30 days, theft-1. (Lewis, March 22)
Mukha, Ivan, 63, 1903 Brandt Road, 30 days, retail theft with extenuating circumstances-3. (Lewis, March 22)
Nguyen, Tan Trong, 35, no address, 11 days, fail to register as a sex offender. (Lewis, March 22)
O'Bryant, Kevin Timothy, 44, address not available, 366 days, felony domestic violence court order violation (at least two previous convictions). (Collier, March 22)
Pederson, Jason Michael, 32, address not available, 150 days, assault-3 – domestic violence. (Collier, March 22)
Valencia, Rigoberto Arias, 44, address not available, 49 days, forgery. (Collier, March 22)
Campbell, Stephanie Leeann, 23, 2407 S.E. 183rd Loop, $800, 6 days, assault-4 and DUI. (Hagensen, March 13)
Carroll, Jonathan Alan, 21, 9101 N.E. 54th St., $100, 1 day, DWS/revoked. (Witteman, March 13)
Casey, Nicholas Howard, 23, 284413 Division St., Ridgefield, $200, 3 days, DWS/revoked. (Witteman, March 15)
Charlo, Opee, 33, Omak, $200, 5 days, DWS/revoked. (Parcher, March 15)
Chis, Cornel, 53, Milwaukie, Ore., $850, 4 days, DUI. (Zimmerman, March 13)
Cobb, Patrick Dewight, 33, 9606 N.E. 63rd St., DWS/revoked. (Parcher, March 15)
Draper, Tracy Ann, 46, Gresham, Ore., $100, 4 days, assault-4, (Hagensen, March 12)
Eastham, Scott Daniel, 40, 1107 W. Main St., Battle Ground, and 15203 N.E. 47th St., Portland, $1,200, 120 days, three counts theft-3. (Swanger, March 13)
Edwards, Lisa L., 44, 8701 N.E. 54th St., $595, 1 day, DUI. (Parcher, March 12)
Engerman, Todd Robert, 36, Phoenix, $100, 2 days, DWS/revoked. (Witteman, March 15)
Frahm, Candace, 21, 6912 N.E. 131st Ave., $800, 20 days, four counts theft-3. (Schreiber, March 12)
Gary, Christian Michael, 40, 33 Algona Drive, $595, 1 day, DUI. (Schreiber, March 14)
Goforth, Jimmy Lee Richard, 20, 1600 N.E. 91st Circle and 10804 N.E. Highway 99, $1,390, 12 days, two counts DWS/revoked and two counts DUI. (Osler, March 16)
Gonzalez, Eduardo, aka Gonzalez Moreno, Eduardo, 19, 2011 Brandt Road, $1,950, 8 days, two counts DUI. (Swanger, March 12)
Gorman, Michael Lee, 30, 338 19th St., Washougal, $200, two counts assault-4. (Hagensen, March 14)
Greenwood, Brian Jerome, 38, 10804 N.E. Highway 99, $200, 4 days, DWS/revoked. (Parcher, March 15
Grose, Adam Michael, 38, 4115 E. 18th St., $400, 4 days, two counts DWS/revoked. (Osler, March 13)
Hammond, Arlene M., 57, 10918 N.E. Highway 99, $500, 74 days, theft-3. (Zimmerman, March 14)


text:
The Village Voice in New York may have been cutting their writers/staff earlier this year, but they aren't afraid to tack on a new culinary event on the New York scene. Following in the foot steps of their 'Choice Eats' food event and their beer-themed 'Brooklyn Pour', the Voice will introduce 'Holiday Spirits' to Queens at Studio Square on December 5th, "the 80th anniversary of the day that ended the Prohibition era".
Latest Blog Posts
NYC Beer Week doesn't come around again until 2014, but that doesn't mean the New York City Brewers Guild hasn't already started getting ready for the festivities. To kick off fundraising for next year's week filled with fine brews from around the world, the Brewers Guild will be throwing a Block Party at The Well in Brooklyn on August 25.
While a number of notable beer festivals in the area have gone for quantity, the Brewers Guild has decided to take a different approach. Inviting only 25 of the finest breweries from both the local New York scene and across the country, this year's Block Party is set to feature some rare and exquisite offerings that you won't be able to find just anywhere.
Let's start with the music, which was provided by the good folks at Blue Note. With three excellent bands spread throughout the venue, the main stage was kicked off by pianist Joe Alterman and his trio. It was the perfect way to set the mood for the event, as patrons paced the main floor checking out some fine offerings from the likes of Blue Point, Bronx Brewing, Kuka, and more. Following Alterman was the lively High & Mighty Brass Band, which had the crowd dancing and cheering throughout the set.
Last weekend marked the latest installment of SAVOR, the country's ultimate beer and food pairing arena. Taking to New York City this year, the Brewers Association made sure to solidify their most memorable event yet. Enlisting over 70 of America's finest breweries, SAVOR was met with unique and innovative beers, matched with equally inventive finger foods.
When tackling a beer festival, it is key to prepare accordingly. There was a ton of ground to cover Friday night, and with a liberal two ounce pour, it was a challenge to experience some of the more hyped beers, as well as discover some of the newcomers and hidden gems.
Last winter's NYC Craft Beer Festival proved to be an event filled with wholesome food and warming brews. But as the warmer months roll around, it is time to think about spring seasonals. Thanks to the folks behind NYC's Craft Beer Festival Winter Harvest, March presents itself with a fine opportunity to sample some of the finest spring offerings from a rather impressive collection of the finest breweries. With that, look out for the Spring Seasonal Festival, which goes down on March 30 at Lexington Armory in New York City.
For those not as well-accustomed to the styles of beer that become available once the flowers start to bloom, here is a brief review of what you should expect. While there will certainly be a plethora of standard styles like IPAs and blonde ales, expect to see some imported greats like the delicate yet spicy Belgian-style saison, or the German spring seasonal, bock. Many of the breweries present at this year's festival will be domestic, though, so be on the lookout for some varying interpretations of these classic styles.
Shabazz Palaces "Dawn in Luxor" (Singles Going Steady) // Music
Randy Rogers and Wade Bowen "West Texas Rain" (audio) (premiere) // Music
Kaytranada "Lite Spots" (Singles Going Steady) // Music
Rachael Sage "I Don't Believe It" (video) (premiere) // Music
Moving Pixels Podcast: Our Own Points of View on 'Hardcore Henry'
// Moving Pixels
"Hardcore Henry gives us a chance to consider not how well a video game translates to film, but how well a video game point of view translates to film.READ the article


text:
In an effort to polish the recently released draft of the strepr v1 specification, I've spent the last couple of days in a Go reference implementation.
The implemented algorithm is relatively simple, efficient, and consumes a conservative amount of memory. The aspect of it that deserved the most attention is the efficient encoding of a float number when it carries an integer value, as covered before. The provided tests are a useful reference as well.
The API offered by the implemented package is minimal, and matches existing conventions. For example, this simple snippet will generate a hash for the stable representation of the provided value:
value := map[string]interface{}{"a": 1, "b": []int{2, 3}}
hash := sha1.New()
fmt.Printf("%x\n", hash.Sum(nil))
// Outputs: 29a77d09441528e02a27dc498d0a757da06250a0
Along with the reference implementation comes a simple command line tool to play with the concept. It allows easily arriving at the same result obtained above by processing a JSON value instead:
$ echo '{"a": 1.0, "b": [2, 3]}' | ./strepr -in-json -out-sha1
Or YAML:
$ cat | ./strepr -in-yaml -out-sha1
a: 1
- 2
- 3
Or even BSON, the binary format used by MongoDB:
$ bsondump dump.bson
{ "a" : 1, "b" : [ 2, 3 ] }
1 objects found
$ cat dump.bson | ./strepr -in-bson -out-sha1
In all of those cases the hash obtained is the same, despite the fact that the processed values were typed differently in some occasions. For example, due to its Javascript background, some JSON libraries may unmarshal numbers as binary floating point values, while others distinguish the value based on the formatting used. The strepr algorithm flattens out that distinction so that different platforms can easily agree on a common result.
To visualize (or debug) the stable representation defined by strepr, the reference implementation has a debug dump facility which is also exposed in the command line tool:
$ echo '{"a": 1.0, "b": [2, 3]}' | ./strepr -in-json -out-debug
map with 2 pairs (0x6d02):
string of 1 byte (0x7301) "a" (0x61)
=> uint 1 (0x7001)
string of 1 byte (0x7301) "b" (0x62)
=> list with 2 items (0x6c02):
- uint 2 (0x7002)
- uint 3 (0x7003)
Assuming a Go compiler and the go tool are available, the command line strepr tool may be installed with:
$ go get launchpad.net/strepr/cmd/strepr
As a result of the reference implementation work, a few clarifications and improvements were made to the specification:
Here is a small programming brain teaser for the weekend:
uf is an unsigned integer with 64 bits that holds the IEEE-754 representation for a binary floating point number of that size.
The questions are:
uf represents an integer number?
2. How to serialize the absolute value of such an integer number in the minimum number of bytes possible, using big-endian ordering and the 8th bit as a continuation flag? For example,
float64(1<<70 + 3<<21) serializes as:
The background for this problem is that the current draft of the strepr specification mentions that serialization. Some languages, such as Python and Ruby, implement transparent arbitrary precision integers, and that makes implementing the specification easier.
For example, here is a simple Python interactive session that arrives at the result provided above exploring the native integer representation.
>>> f = float((1<<70) + (3<<21))
>>> v = int(f)
>>> l = [v&0x7f]
>>> v >>= 7
>>> while v > 0:
... l.append(0x80 | (v&0x7f))
... v >>= 7
>>> l.reverse()
>>> "".join("%02x" % i for i in l)
Python makes the procedure simpler because it is internally converting the float into an integer of appropriate precision via standard C functions, and then offering bit operations on the resulting value.
The suggested brain teaser can be efficiently solved using just the IEEE-754 representation, though, and it's relatively easy because the problem is being constrained to the integer space.
A link to an implementation will be provided next week.
UPDATE: The logic is now available as part of the reference implementation of strepr.Read more
Note: This is a candidate version of the specification. This note will be removed once v1 is closed, and any changes will be described at the end. Please get in touch if you're implementing it.
This specification defines strepr, a stable representation that enables computing hashes and cryptographic signatures out of a defined set of composite values that is commonly found across a number of languages and applications.
Although the defined representation is a serialization format, it isn't meant to be used as a traditional one. It may not be seen entirely in memory at once, or written to disk, or sent across the network. Its role is specifically in aiding the generation of hashes and signatures for values that are serialized via other means (JSON, BSON, YAML, HTTP headers or query parameters, configuration files, etc).
The format is designed with the following principles in mind:
Understandable — The representation must be easy to understand to increase the chances of it being implemented correctly.
Portable — The defined logic works properly when the data is being transferred across different platforms and implementations, independently from the choice of protocol and serialization implementation.
Unambiguous — As a natural requirement for producing stable hashes, there is a single way to process any supported value being held in the native form of the host language.
Meaning-oriented — The stable representation holds the meaning of the data being transferred, not its type. For example, the number 7 must be represented in the same way whether it's being held in a float64 or in an uint16.
The following values are supported:
nil/null/none singleton
true and
false singletons
nil = 'z'
nil/null/none singleton is represented by the single byte
'z' (
bool = 't' / 'f'
true and
false singletons are represented by the bytes
't' (
0x74) and
'f' (
0x66), respectively.
unsigned integer = 'p' <value>
Positive and zero integers are represented by the byte
'p' (
0x70) followed by the variable-length encoding of the number.
For example, the number
131 is always represented as
{0x70, 0x81, 0x03}, independently from the type that holds it in the host language.
negative integer = 'n' <absolute value>
Negative integers are represented by the byte
'n' (
0x6e) followed by the variable-length encoding of the absolute value of the number.
For example, the number
-131 is always represented as
{0x6e, 0x81, 0x03}, independently from the type that holds it in the host language.
string = 's' <num bytes> <bytes>
Strings are represented by the byte
's' (
0x73) followed by the variable-length encoding of the number of bytes in the string, followed by the specified number of raw bytes. If the string holds a list of Unicode code points, the raw bytes must contain their UTF-8 encoding.
For example, the string
hi is represented as
{0x73, 0x02, 'h', 'i'}
Due to the complexity involved in Unicode normalization, it is not required for the implementation of this specification. Consequently, Unicode strings that if normalized would be equal may have different stable representations.
binary float = 'd' <binary64>
32-bit or 64-bit IEEE754 binary floating point numbers that are not holding integers are represented by the byte
'd' (
0x64) followed by the big-endian 64-bit IEEE754 binary floating point encoding of the number.
There are two exceptions to that rule:
1. If the floating point value is holding a
NaN, it must necessarily be encoded by the following sequence of bytes:
{0x64, 0x7f, 0xf8, 0x00 0x00, 0x00, 0x00, 0x00, 0x00}. This ensures all
NaN values have a single representation.
2. If the floating point value is holding an integer number it must instead be encoded as an unsigned or negative integer, as appropriate. Floating point values that hold integer numbers are defined as those where
floor(v) == v && abs(v) != ∞.
For example, the value 1.1 is represented as
{0x64, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a}, but the value 1.0 is represented as
{0x70, 0x01}, and -0.0 is represented as
{0x70, 0x00}.
This distinction means all supported numbers have a single representation, independently from the data type used by the host language and serialization format.
list = 'l' <num items> [<item> ...]
Lists of values are represented by the byte
'l' (
0x6c), followed by the variable-length encoding of the number of pairs in the list, followed by the stable representation of each item in the list in the original order.
For example, the value
[131, -131] is represented as
{0x6c, 0x70, 0x81, 0x03, 0x6e, 0x81, 0x03, 0x65}
map = 'm' <num pairs> [<item key> <item value> ...]
Associative maps of values are represented by the byte
'm' (
0x6d) followed by the variable-length encoding of the number of pairs in the map, followed by an ordered sequence of the stable representation of each key and value in the map. The pairs must be sorted so that the stable representation of the keys is in ascending lexicographical order. A map must not have multiple keys with the same representation.
For example, the map
{"a": 4, 5: "b"} is always represented as
{0x6d, 0x02, 0x70, 0x05, 0x73, 0x01, 'b', 0x73, 0x01, 'a', 0x70, 0x04}.
Integers are variable-length encoded so that they can be represented in short space and with unbounded size. In an encoded number, the last byte holds the 7 least significant bits of the unsigned value, and zero as the eight bit. If there are remaining non-zero bits, the previous byte holds the next 7 bits, and the eight bit is set on to flag the continuation to the next byte. The process continues until there are non-zero bits remaining. The most significant bits end up in the first byte of the encoded value, which must necessarily not be
For example, the number 128 is variable-length encoded as
{0x81, 0x00}.
A reference implementation is available, including a test suite which should be considered when implementing the specification.
draft1 → draft2
10gen, the company behind the MongoDB database, recently announced the availability of the MongoDB Backup Service. This is not a traditional backup service, though. Rather than simply sending scheduled snapshots of the data over to a remote system, the backup service has an agent sitting next to the database that monitors its operation log, and streams the individual operations over to the remote backup servers. This model enables the service to offer some non-conventional features, such as restoring the state of the database at any point in the last 24h, in addition to more traditional snapshots over longer periods.
There's another interesting fact about how the system was developed: the backup agent is also the first software 10gen releases that is written in the Go language. Reportedly, the agent started as a Java project but, as the project matured, the team wanted to move to a language that compiled to native machine code to make it easier to install. After considering a few options, the team decided that Go was the best fit for its C-like syntax, strong standard library, first-class concurrency, and painless multi-platform support.
I've invited Daniel Gottlieb, the main 10gen engineer behind the service agent, to provide some high-level feedback about the use of Go and mgo, the MongoDB driver, and he kindly replied:
Programming the backup agent in Go and the mgo driver has been extremely satisfying. Between the lightweight syntax, the first-class concurrency and the well documented, idiomatic libraries such as mgo, Go has become my language of choice for writing small scripts up to large distributed applications.
The mgo driver is a real pleasure to use. The code is of high quality, the documentation is thorough, clear and detailed, and the API is a thoughtful, natural blend of idiomatic Go and Mongo.
Those are encouraging words, Daniel. It's great to see not only 10gen making good use of the Go language for first-class services, but contributing to that community of developers by providing its support for the development of the Go driver in multiple ways. Good chance to say thanks!Read more
There are a number of common misconceptions in software development surrounding the idea of concurrency. This has been coming for decades, and some of the issues have just been reinforced one more time in an otherwise interesting post in LinkedIn's engineering blog that recommends their development framework.
Such issues may be observed throughout the post, but can be elucidated via this short paragraph:
As we saw with the Scala and JavaScript examples above, for very simple cases, the Evented (asynchronous) code is generally more complicated than Threaded (synchronous) code. However, in most real-world scenarios, you'll have to make several I/O calls, and to make them fast, you'll need to do them in parallel.
At a glance, this may look like a sane proposition. There's agreement that an asynchronous API or framework is one that does not block the flow of execution when faced with a task that has a long or non-predictable deadline, and this coding style is harder for human beings to get right. For example, if you see code such as:
data = read(filename)
There's less brain work to process and build on it than so called asynchronous logic such as:
read(filename, callback)
It's also true that there are important interfaces that follow the asynchronous style to prevent resource waste. Some of these exist in the kernel I/O API.
So what's the issue, then?
There are a few. The first one is the statement that to make I/O scale you have to do it in parallel. That's clearly not true. Scalable I/O requires your program to not waste an irresponsible amount of memory and CPU per operation. This may be achieved with simple concurrent techniques, and concurrency is not parallelism.
This drives to the next point, which is the strong association between synchronous programming and threads. You can have synchronous programming, and its simplified mental model, without operating system threads. This can be done by having a compiler and runtime that is mindful about performance and resource consumption, building on the efficient interfaces to implement its abstractions.
These ideas have also been covered in this paper from 2003, including benchmark results that debunk the performance myth. What seems most interesting about this paper is that it theorizes such a compiler and runtime that would allow "overcom[ing] limitations in current threads packages and improv[ing] safety, programmer productivity, and performance", by using techniques such as dynamic stack growth, stack moving, cheaper synchronization, and compile-time data race detection.
That exact mix, including all of the properties described in the paper, are available today in the Go language. You can have synchronous programming, concurrency, parallelism, and performance. We live in the future.Read more
Circular buffers are based on an algorithm well known by any developer who's got past the "Hello world!" days. They offer a number of key characteristics with wide applicability such as constant and efficient memory use, efficient FIFO semantics, etc.
One feature which is not always desired, though, it the fact that circular buffers traditionally will either overwrite the last element, or raise an overflow error, since they are generally implemented as a buffer of constant size. This is an unwanted property when one is attempting to consume items from the buffer and it is not an option to blindly drop items, for instance.
This post presents an efficient (and potentially novel) algorithm for implementing circular buffers which preserves most of the key aspects of the traditional version, while also supporting dynamic expansion when the buffer would otherwise have its oldest entry overwritten. It's not clear if the described approach is novel or not (most of my novel ideas seem to have been written down 40 years ago), so I'll publish it below and let you decide.
Traditional circular buffers
Before introducing the variant which can actually expand during use, let's go through a quick review on traditional circular buffers, so that we can then reuse the nomenclature when extending the concept. All the snippets provided in this post are written in Python, as a better alternative to pseudo-code, but the concepts are naturally portable to any other language.
So, the most basic circular buffer needs the buffer itself, its total capacity, and a position where the next write should occur. The following snippet demonstrates the concept in practice:
buf = [None, None, None, None, None] bufcap = len(buf) pushi = 0 for elem in range(7): buf[pushi] = elem pushi = (pushi + 1) % bufcap print buf # => [5, 6, 2, 3, 4]
In the example above, the first two elements of the series (0 and 1) were overwritten once the pointer wrapped around. That's the specific feature of circular buffers which the proposal in this post will offer an alternative for.
The snippet below provides a full implementation of the traditional approach, this time including both the pushing and popping logic, and raising an error when an overflow or underflow would occur. Please note that these snippets are not necessarily idiomatic Python. The intention is to highlight the algorithm itself.
class CircBuf(object): def __init__(self): self.buf = [None, None, None, None, None] self.buflen = self.pushi = self.popi = 0 self.bufcap = len(self.buf) def push(self, x): assert self.buflen == 0 or self.pushi != self.popi, "Buffer overflow!" self.buf[self.pushi] = x self.pushi = (self.pushi + 1) % self.bufcap self.buflen += 1 def pop(self): assert self.buflen != 0, "Buffer underflow!" x = self.buf[self.popi] self.buf[self.popi] = None self.buflen -= 1 self.popi = (self.popi + 1) % self.bufcap return x
With the basics covered, let's look at how to extend this algorithm to support dynamic expansion in case of overflows.
Dynamically expanding a circular buffer
The approach consists in imagining that the same buffer can contain both a circular buffer area (referred to as the ring area from here on), and an overflow area, and that it is possible to transform a mixed buffer back into a pure circular buffer again. To clarify what this means, some examples are presented below. The full algorithm will be presented afterwards.
First, imagine that we have an empty buffer with a capacity of 5 elements as per the snippet above, and then the following operations take place:
for i in range(5): circbuf.push(i) circbuf.pop() # => 0 circbuf.pop() # => 1 circbuf.push(5) circbuf.push(6) print circbuf.buf # => [5, 6, 2, 3, 4]
At this point we have a full buffer, and with the original implementation an additional push would raise an assertion error. To implement expansion, the algorithm will be changed so that those items will be appended at the end of the buffer. Following the example, pushing two additional elements would behave the following way:
circbuf.push(7) circbuf.push(8) print circbuf.buf # => [5, 6, 2, 3, 4, 7, 8]
In that example, elements 7 and 8 are part of the overflow area, and the ring area remains with the same capacity and length of the original buffer. Let's perform a few additional operations to see how it would behave when items are popped and pushed while the buffer is split:
circbuf.pop() # => 2 circbuf.pop() # => 3 circbuf.push(9) print circbuf.buf # => [5, 6, None, None, 4, 7, 8, 9]
In this case, even though there are two free slots available in the ring area, the last item pushed was still appended at the overflow area. That's necessary to preserve the FIFO semantics of the circular buffer, and means that the buffer may expand more than strictly necessary given the space available. In most cases this should be a reasonable trade off, and should stop happening once the circular buffer size stabilizes to reflect the production vs. consumption pressure (if you have a producer which constantly operates faster than a consumer, though, please look at the literature for plenty of advice on the problem).
The remaining interesting step in that sequence of events is the moment when the ring area capacity is expanded to cover the full allocated buffer again, with the previous overflow area being integrated into the ring area. This will happen when the content of the previous partial ring area is fully consumed, as shown below:
circbuf.pop() # => 4 circbuf.pop() # => 5 circbuf.pop() # => 6 circbuf.push(10) print circbuf.buf # => [10, None, None, None, None, 7, 8, 9]
At this point, the whole buffer contains just a ring area and the overflow area is again empty, which means it becomes a traditional circular buffer.
Sample algorithm
With some simple modifications in the traditional implementation presented previously, the above semantics may be easily supported. Note how the additional properties did not introduce significant overhead. Of course, this version will incur in additional memory allocation to support the buffer expansion, bu that's inherent to the problem being solved.
class ExpandingCircBuf(object): def __init__(self): self.buf = [None, None, None, None, None] self.buflen = self.ringlen = self.pushi = self.popi = 0 self.bufcap = self.ringcap = len(self.buf) def push(self, x): if self.ringlen == self.ringcap or self.ringcap != self.bufcap: self.buf.append(x) self.buflen += 1 self.bufcap += 1 if self.pushi == 0: # Optimization. self.ringlen = self.buflen self.ringcap = self.bufcap else: self.buf[self.pushi] = x self.pushi = (self.pushi + 1) % self.ringcap self.buflen += 1 self.ringlen += 1 def pop(self): assert self.buflen != 0, "Buffer underflow!" x = self.buf[self.popi] self.buf[self.popi] = None self.buflen -= 1 self.ringlen -= 1 if self.ringlen == 0 and self.buflen != 0: self.popi = self.ringcap self.pushi = 0 self.ringlen = self.buflen self.ringcap = self.bufcap else: self.popi = (self.popi + 1) % self.ringcap return x
Note that the above algorithm will allocate each element in the list individually, but in sensible situations it may be better to allocate additional space for the overflow area in advance, to avoid potentially frequent reallocation. In a situation when the rate of consumption of elements is about the same as the rate of production, for instance, there are advantages in doubling the amount of allocated memory per expansion. Given the way in which the algorithm works, the previous ring area will be exhausted before the mixed buffer becomes circular again, so with a constant rate of production and an equivalent consumption it will effectively have its size doubled on expansion.
UPDATE: Below is shown a version of the same algorithm which not only allows allocating more than one additional slot at a time during expansion, but also incorporates it in the overflow area immediately so that the allocated space is used optimally.
class ExpandingCircBuf2(object): def __init__(self): self.buf = [] self.buflen = self.ringlen = self.pushi = self.popi = 0 self.bufcap = self.ringcap = len(self.buf) def push(self, x): if self.ringcap != self.bufcap: expandbuf = (self.pushi == 0) expandring = False elif self.ringcap == self.ringlen: expandbuf = True expandring = (self.pushi == 0) else: expandbuf = False expandring = False if expandbuf: self.pushi = self.bufcap expansion = [None, None, None] self.buf.extend(expansion) self.bufcap += len(expansion) if expandring: self.ringcap = self.bufcap self.buf[self.pushi] = x self.buflen += 1 if self.pushi < self.ringcap: self.ringlen += 1 self.pushi = (self.pushi + 1) % self.bufcap def pop(self): assert self.buflen != 0, "Buffer underflow!" x = self.buf[self.popi] self.buf[self.popi] = None self.buflen -= 1 self.ringlen -= 1 if self.ringlen == 0 and self.buflen != 0: self.popi = self.ringcap self.ringlen = self.buflen self.ringcap = self.bufcap else: self.popi = (self.popi + 1) % self.ringcap return x
This blog post presented an algorithm which supports the expansion of circular buffers while preserving most of their key characteristics. When not faced with an overflowing buffer, the algorithm should offer very similar performance characteristics to a normal circular buffer, with a few additional instructions and constant space for registers only. When faced with an overflowing buffer, the algorithm maintains the FIFO property and enables using contiguous allocated memory to maintain both the original circular buffer and the additional elements, and follows up reusing the full area as part of a new circular buffer in an attempt to find the proper size for the given use case.Read more
When I started programming in Python long ago, one of the features which really hooked me up was the quality interactive interpreter offered with the language implementation. It was (and still is) a fantastic way to experiment with syntax, semantics, modules, and whatnot. So much so that many first-class Python practitioners will happily tell you that the interactive interpreter is used not only as a programming sandbox, but many times as the their personal calculator too. This kind of interactive interpreter is also known as a REPL, standing for Read Eval Print Loop, and many languages have pretty advanced choices in that area by now.
After much rejoice with Python's REPL, though, and as a normal human being, I've started wishing for more. The problem has a few different levels, which are easy to understand.
First, we're using Python Twisted in Ensemble, one of the projects being pushed at Canonical. Twisted is an event-driven framework, which among other things means it works a lot with closures and callbacks. Having to redefine multi-line functions frequently to drive experiments isn't exactly fun in a line-based interactive interpreter. Then, some of the languages I've started playing with, such as Erlang, have limited REPLs which differ in functionality significantly compared to what may be done in a text file. And finally, other languages I've been programming with recently, such as Go, lack a reasonable REPL altogether (there are only unusable hacks around).
Alright, so here is the idea: what if instead of being given an interactive REPL, you were presented with your favorite text editor, and whenever you wrote the file down, it was executed and results presented? That's The Hacking Sandbox, or hsandbox. It supports 11 different programming languages out of the box, and given its nature it should be trivial to support any other language.
Here is a screenshot to clarify the idea:
Note that if you open a sandbox for a language like C or Go, the skeleton of what's needed to run a program will already be in place, so you just have to "fill the blanks".
For more details and download information, please check the hsandbox web page.Read more
I was just rambling randomly yesterday, in the usual microblogging platforms, about how result checking seems to be ignored or done badly. The precise wording was:
It's really amazing how little attention error handling receives in most software development. Even *tutorials* often ignore it.
It indeed does amaze me. It sometimes feels like we write code for theoretical perfect worlds.. "If the processor executes exactly in this order, and the weather is calm, this program will work.". There are countless examples of bad assumptions.. someday I will come with some statistics of the form "Every N seconds someone forgets to check the result of write().".
If you are a teacher, or a developer that enjoys writing snippets of code to teach people, please join me in the quest of building a better future. Do not tell us that you're "avoiding result checking for terseness", because that's exactly what we people will do (terseness is good, right?). On the contrary, take this chance to make us feel bad about avoiding result checking. You might do this by putting a comment like "If you don't do this, you're a bad programmer." right next to the logic which is handling the result, and might take this chance to teach people how proper result handling is done.
Of course, there's another forgotten art related to result checking. It sits on the other side of the fence. If you are a library author, do think through about how you plan to make us check conditions which happen inside your library, and try to imagine how to make our lives easier. If we suck at handling results when there are obvious ways to handle it, you can imagine what happens when you structure your result logic badly.
Here is a clear example of what not to do, coming straight from Python's standard library, in the imaplib module:
def login(self, user, password): typ, dat = self._simple_command('LOGIN', user, self._quote(password)) if typ != 'OK': raise self.error(dat[-1]) self.state = 'AUTH' return typ, dat
You see the problem there? How do you handle errors from this library? Should we catch the exception, or should we verify the result code? "Both!" is the right answer, unfortunately, because the author decided to do us a little favor and check the error condition himself in some arbitrary cases and raise the error, while letting it go through and end up in the result code in a selection of other arbitrary cases.
I may provide some additional advice on result handling in the future, but for now I'll conclude with the following suggestion: please check the results from your actions, and help others to check theirs. That's a good life-encompassing recommendation, actually.Read more
For some time now I've been wanting to research more deeply about the internals of Android. Until now, though, this was just a sentiment. Then, a couple of weeks ago I've finally managed to replace my iPhone for an Android phone, and that was the final motivator for me to actually get into learning more about the inner workings of the Linux-based OS.
Now, I just had to pick an actual task for digging into. The Dalvik VM is certainly one of the most innovative and advertised technical details about the OS, so something around it would be a nice start.. some kind of bytecode fiddling perhaps, but what? Luckily, even without trying too hard, I eventually stumbled upon an interesting case for researching upon.
The "victim" of this research is the application gbaSafe version 1.1.0a, which claims to protect user passwords using unbreakable algorithms (how's that for a hint of a Snake oil case?).
Before we get into some hacking, let's see some words on the software security by the author himself, and then render some analysis on conceptual issues on it:
The confidential data can only be decrypted if the master key is known. You should choose a long key (at least 16 characters) with mixed case and unreadable text. Of course you cannot enter this key each time you want to access the confidential data, so it is stored in the user settings encrypted with a shorter key (4 to 6 digits) and normally you only have to enter this unlock key. Theoretically it is possible to try all possible values (brute force attack), but then you must use another program, since gbaSafe deletes the encrypted master key from the user settings when you enter the unlock key wrong three times repeatedly, and then you must enter the master key. If you wrote a program to decrypt the master key, you would have to know the algorithm used, the salt bytes and iteration count (used to augment the short unlock key), which are very hard to extract from the binary program module gbaSafe.
If you have some security background, I'm sure that by now you're already counting the issues on this single paragraph.
The most obvious issue is the fact that there's a "strong key" and a "weak key", and the strong key is encrypted with the weak one. This is a very common cryptography sin, as would say my friend and coworker Andreas Hasenack (a security researcher himself). A security system is only as secure as its weakest spot. It obviously makes little difference for an attacker if he has to attempt decrypting a master key or the actual data, since decrypting the master key will give access to the data.
Then, it mentions en passant that the software enforces the use of digits for the weak key. This ensures that the weak key is really weak! Four digits is basically ten thousand attempts, which is absolutely nothing for nowadays's hardware. This number would move up to about 15 million by simply allowing upper and lowercase letters as well (which isn't great either, but a few orders of magnitude never hurt in this scenario).
It follows up encouraging people to think that it's actually hard to figure the algorithm and other implementation details. Considering that there's absolutely nothing preventing people from getting their hands in the implementation itself, this is in fact asserting that the security mechanism is based on the ignorance of the attacker. Counting on the ignorance of people is bad at all times, and in a security context it's a major error.
There's a final security issue in this description which is a bit more subtle, but further analysis on the logic used leaves no doubt. In cryptography, the salt is supposed to increase the work needed in a brute force attack by strengthening the number of bits of the actual passphrase, in a case where the salt is actually unavailable, or at least prevent that a single large word dictionary can be used to attack several encryptions or hashes at once, in a case where the salt is known but variable. In the latter case, it helps because encrypting a single key with two different salts must be done twice, rather than once, so it increases the computational task when attacking multiple items. A salt which is known and does not change across all processed items is worth pretty close to nothing.
So, indeed, considering the many security issues here, this isn't something I'd store my passwords or credit card numbers on, and I suggest you don't do it either.
In my next post on this topic I'll actually implement a trivial brute force attack to prove that these issues are very real, and that, actually, it's not even hard to break into a security system like this.
The application author has been contacted about this blog post, since he'll likely want to fix some of these issues.Read more
Some interesting changes have been happening in my professional life, so I wanted to share it here to update friends and also for me to keep track of things over time (at some point I will be older and will certainly laugh at what I called "interesting changes" in the ol'days). Given the goal, I apologize but this may come across as more egocentric than usual, so please feel free to jump over to your next blog post at any time.
It's been little more than four years since I left Conectiva / Mandriva and joined Canonical, in August of 2005. Shortly after I joined, I had the luck of spending a few months working on the different projects which the company was pushing at the time, including Launchpad, then Bazaar, then a little bit on some projects which didn't end up seeing much light. It was a great experience by itself, since all of these projects were abundant in talent. Following that, in the beginning of 2006, counting on the trust of people which knew more than I did, I was requested/allowed to lead the development of a brand new project the company wanted to attempt. After a few months of research I had the chance to sit next to Chris Armstrong and Jamu Kakar to bootstrap the development of what is now known as the Landscape distributed systems management project.
Fast forward three and a half years, in mid 2009, and Landscape became a massive project with hundreds of thousands of very well tested lines, sprawling not only a client branch, but also external child projects such as the Storm Object Relational Mapper, in use also by Launchpad and Ubuntu One. In the commercial side of things it looks like Landscape's life is just starting, with its hosted and standalone versions getting more and more attention from enterprise customers. And the three guys which started the project didn't do it alone, for sure. The toy project of early 2006 has grown to become a well structured team, with added talent spreading areas such as development, business and QA.
While I wasn't watching, though, something happened. Facing that great action, my attention was slowly being spread thinly among management, architecture, development, testing, code reviews, meetings, and other tasks, sometimes in areas not entirely related, but very interesting of course. The net result of increased attention sprawl isn't actually good, though. If it persists, even when the several small tasks may be individually significant, the achievement just doesn't feel significant given the invested effort as a whole. At least not for someone that truly enjoys being a software architect, and loves to feel that the effort invested in the growth of a significant working software is really helping people out in the same magnitude of that investment. In simpler words, it felt like my position within the team just wasn't helping the team out the same way it did before, and thus it was time for a change.
Last July an external factor helped to catapult that change. Eucalyptus needed a feature to be released with Ubuntu 9.10, due in October, to greatly simplify the installation of some standard machine images.. an Image Store. It felt like a very tight schedule, even more considering that I hadn't been doing Java for a while, and Eucalyptus uses some sexy (and useful) new technology called the Google Web Toolkit, something I had to get acquainted with. Two months looked like a tight schedule, and a risky bet overall, but it also felt like a great opportunity to strongly refocus on a task that needed someone's attention urgently. Again I was blessed with trust I'm thankful for, and by now I'm relieved to look back and perceive that it went alright, certainly thanks to the help of other people like Sidnei da Silva and Mathias Gug. Meanwhile, on the Landscape side, my responsibilities were distributed within the team so that I could be fully engaged on the problem.
Moving this forward a little bit we reach the current date. Right now the Landscape project has a new organizational structure, and it actually feels like it's moving along quite well. Besides the internal changes, a major organizational change also took place around Landscape over that period, and the planned restructuring led me to my current role. In practice, I'm now engaging into the research of a new concept which I'm hoping to publish openly quite soon, if everything goes well. It's challenging, it's exciting, and most importantly, allows me to focus strongly on something which has a great potential (I will stop teasing you now). In addition to this, I'll definitely be spending some of that time on the progress of Landscape and the Image Store, but mostly from an architectural point of view, since both of these projects will have bright hands taking care of them more closely.
Sit by the fireside if you're interested in the upcoming chapters of that story.Read more
In my previous post I made an open statement which I'd like to clarify a bit further:
(…) when the rules don't work for people, the rules should be changed, not the people.
This leaves a lot of room for personal interpretation of what was actually meant, and TIm Hoffman pointed that out nicely with the following questioning in a comment:
I wonder when the rule is important enough to change the people though. For instance [, if your] development process is oriented to TDD and people don't write the tests or do the job poorly will you change them then?
This is indeed a nice scenario to explore the idea. If it happens at some point that a team claims to be using TDD, but if in practice no developer actually writes tests first, the rules are clearly not working. If everyone in the team hates doing TDD, enforcing it most probably won't show its intended benefits, and that was the heart of my comment. You can't simply keep the rule as is if no one follows it, unless you don't really care about the outcome of the rule.
One interesting point, though, is that when you have a high level of influence over the environment in which people are, it may be possible to tweak the rules or the processes to adapt to reality, and tweaking the processes may change the way that people feel about the rules as a consequence (arguably, changing people as a side effect).
As a more concrete example, if I found myself in the described scenario, I'd try to understand why TDD is not working, and would try to discuss with the team to see how we should change the process so that it starts to work for us somehow. Maybe what would be needed is more discussion to show the value of TDD, and perhaps some pair programming with people that do TDD very well so that the joy of doing it becomes more visible.
In either case, I wouldn't be simply asking people "Everyone has to do TDD from now on!", I'd be tweaking the process so that it feels better and more natural to people. Then, if nothing similar works either, well, let's change the rule. I'd try to use more conventional unit testing or some other system which people do follow more naturally and that presents similar benefits.Read more
For a long time I've been an advocate of Python's notion of controlling access to private and protected members (attributes, methods, etc) with conventions, by simply naming them like "_name", with an initial underline. Even though Python does support the "__name" (with double underscore) for "private" members (this actually mangles the name rather than hiding it), you'll notice that even this is rarely used in practice, and the largely agreed mantra is that convention should be enough and thus one underscore suffices. This always resonated quite well with me, since I generally prefer to handle situations by agreement rather than enforcement. Well, I'm now changing my opinion.that this works well for this purpose, at least in certain situations.
This methodology may work quite well in situations where the code scope is within a very controlled environment, with one or more teams which follow strictly a single development guideline, and have the power to refactor the affected code base somewhat easily when the original decisions are too limiting.
Having worked on a few major projects now, and some of them being libraries which are used by several teams within the same company or outside, I now perceive that people very often take shortcuts over these decisions for getting their job done quickly. It's way easier to simply read the code and get to the private guts of a library than to try to get agreement over the right way to do something, or sending a patch with a suggested change which was carefully architected.
Many people by now are probably thinking: "Well, that's their problem, isn't it? If their code base breaks on the next upgrade they'll get burden and won't be able to upgrade cleanly.", and I can honestly understand this feeling, since I shared it. But, for a number of reasons, I now understand that this isn't just their problem, it's very much my problem too.
Most importantly, on any serious software, these problems will usually come back to the implementors, and many times the problem will have a much larger magnitude by then than they had at the time a change could have been done "the right way" on the implementation, because code dependent on the private bits will have settled.
Most people are optimist by nature and believe that the implementation won't change, but, of course, one of the reasons why private information is made private in the first place is exactly because the implementor believes that having the freedom to change these details in the future is important, and not rarely there's already a plan of evolution in place for these private pieces, which may include revamping the implementation entirely for scalability or for other goals.
In the best case, the careless people will get burden on the upgrade and will ask for support or simply won't upgrade silently, and both cases hurt implementors, because providing support for broken software takes time and energy, and amazingly can even hurt the software image. Lack of upgrades also means more ancient versions in the wild to give support for. Besides these, in the worst case scenario, the careless people have enough influence on the affected project to cause as much burden on it as if the private data was public in the first place.
As much as I'm a believer in handling situation by agreement rather than enforcement, I'm also a believer that when the rules don't work for people, the rules should be changed, not the people. So my positioning now is that the language supported access constraints (public, protected, private), as available in languages like Java and C++, are a better alternative when compared to convention as used today in Python, since they provide an additional layer of encouragement for people to not break the rules carelessly, and that helps in the maintenance and reuse of software that has greater visibility.Read more
© 2010 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.


text:
3 weeks ago I turned my AC on, it blew for about 3 mins and stopped. No blower at all, nothing. I stopped at my destination and when I started the truck again, all was normal again. Now two days ago the same thing happened except it will not come on again. Gauges are fine, fuse is good (replaced), fairly new compressor (14-16 mos old). It seems electrical in nature and some of the radio buttons are going out over time. Any thoughts?
by mtwhite02 in Memphis, TN on May 05, 2014


text:
RANGERS unveiled goalkeeper Cammy Bell as a forthcoming addition to Ally McCoist's squad on May 22 2013.
The Scotland international, who won first cap against the Faroe Islands in 2010, agreed to be registered with effect from September 1.
He consequently joined the first-team squad for the start of pre-season training at Murray Park in June.
Bell played 33 times for Kilmarnock in the season before arriving at Ibrox and had been contracted to the Ayrshire side for the previous decade.
He made his debut for them in May 2009 after playing 16 games on loan at Queen of the South.
He then made another 130 appearances for the Rugby Park outfit and was widely linked with a move to Ibrox for several months before his move.


text:
Hello Guys,
I have one query regarding the digital signature. I know that the basic use of digital signature is to ensure the security of our document. But I don't know how to create the digital signature. I have it in Microsoft word but didn't successful. Do you know any method to create Digital Signature in word or excel or PowerPoint? I would greatly appreciate your any help.