Public Member Functions | |
| void | Callback (const sensor_msgs::PointCloud2::ConstPtr &msg) |
| ModelTraining (ros::NodeHandle nh, std::string work_dir) | |
| void | run () |
| void | saveCallback (const std_msgs::Bool::ConstPtr &msg) |
| Public Member Functions inherited from cloudUtilities< pcl::PointXYZI > | |
| cloudUtilities () | |
| void | meanFilter (pcl::PointCloud< pcl::PointXYZI > &res) |
| void | modelFromGroudtruth (const boost::shared_ptr< const pcl::PointCloud< pcl::PointXYZI >> &groud, const boost::shared_ptr< const pcl::PointCloud< pcl::PointXYZI >> &raw, double tolerence, pcl::PointCloud< pcl::PointXYZI > &model) |
| void | outlineRemover (const boost::shared_ptr< const pcl::PointCloud< pcl::PointXYZI >> blob, int width, int height, float perW, float perH, pcl::PointCloud< pcl::PointXYZI > &res) |
| ~cloudUtilities () | |
Protected Attributes | |
| geometry_msgs::TransformStamped | _cameraPose |
| pcl::PointCloud< pcl::PointXYZI >::Ptr | _cloud |
| pcl::PointCloud< pcl::PointXYZI >::Ptr | _ground |
| pcl::PointCloud< pcl::PointXYZI >::Ptr | _model |
| ros::NodeHandle | _nh |
| ros::Publisher | _pub |
| tf2_ros::StaticTransformBroadcaster | _staticTrans |
| ros::Subscriber | _sub |
| ros::Subscriber | _sub_save |
| std::string | _working_dir |
| pcl::PointCloud< pcl::PointXYZI >::Ptr | blob |
| pcl::PointCloud< pcl::PointXYZI >::Ptr | blob_removed |
| bool | save_point_cloud |
Additional Inherited Members | |
| Public Attributes inherited from cloudUtilities< pcl::PointXYZI > | |
| pcl::SynchronizedQueue< pcl::PointCloud< pcl::PointXYZI > > | _queue |
Definition at line 20 of file train_model.cpp.
|
inline |
Definition at line 38 of file train_model.cpp.
|
inline |
Definition at line 58 of file train_model.cpp.
|
inline |
Definition at line 75 of file train_model.cpp.
|
inline |
Definition at line 70 of file train_model.cpp.
|
protected |
Definition at line 34 of file train_model.cpp.
|
protected |
Definition at line 23 of file train_model.cpp.
|
protected |
Definition at line 24 of file train_model.cpp.
|
protected |
Definition at line 25 of file train_model.cpp.
|
protected |
Definition at line 29 of file train_model.cpp.
|
protected |
Definition at line 32 of file train_model.cpp.
|
protected |
Definition at line 33 of file train_model.cpp.
|
protected |
Definition at line 30 of file train_model.cpp.
|
protected |
Definition at line 31 of file train_model.cpp.
|
protected |
Definition at line 35 of file train_model.cpp.
|
protected |
Definition at line 26 of file train_model.cpp.
|
protected |
Definition at line 27 of file train_model.cpp.
|
protected |
Definition at line 28 of file train_model.cpp.


In my previous post, I showed how to use SKiDL to describe the circuit for a simple USB-to-JTAG interface circuit. That circuit used a PIC32MX microcontroller in a 28-pin SSOP package:
and the corresponding SKiDL code was:
pic32 = Part(pic32_lib, 'pic32MX2\*0F\*\*\*B-SSOP28-SOIC28-SPDIP28',
footprint='Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mm')
I wanted to try using the same processor, but housed in a smaller QFN package:
To do that, I changed the SKiDL code to reference a different part and footprint like this:
pic32 = Part(pic32_lib, 'pic32MX2\*0F\*\*\*B-QFN28',
footprint='Housings_DFN_QFN:QFN-28-1EP_6x6mm_Pitch0.65mm')
That’s it! No other changes were needed because I wrote my SKiDL code to use
pin names instead of pin numbers.
For example, I connected the 12 MHz crystal to the microcontroller OSC1
and OSC2
pins like this:
pic32['OSC1, OSC2'] += xtal[3, 1]
This works for either version of the microcontroller because they both have
pins named OSC1
and OSC2
.
But, if I had made the crystal connections for the microcontroller in the 28-pin SSOP
using pin numbers:
pic32[9,10] += xtal[3, 1] # OSC1==9, OSC2==10 for 28-pin SSOP version.
then I would have had to change the code when I switched to the QFN packaged version of the microcontroller:
pic32[6,7] += xtal[3, 1] # OSC1==6, OSC2=7 for 28-pin QFN version.
Multiply this by the number of pins a device has (which can be over a thousand for modern-day parts like FPGAs), and you can see how using pin names reduces the effort and likelihood of errors when making a design change.
For the new board, I also changed from using a mini USB connector:
usb_conn = Part(xess_lib, 'USBB', footprint='XESS:UX60SC-MB-5ST')
to a micro connector:
usb_conn = Part(xess_lib, 'USB-MicroB', footprint='XESS:USB-microB-1')
Once again, using pin names meant I didn’t have to touch the rest of the code:
usb_conn['D\+, D-, VCC, GND, NC'] += pic32['D\+, D-'], vusb, gnd, NC
After the changes to the SKiDL script were done, I just ran it and imported the
netlist into KiCad’s PCBNEW
layout program.
At that point, it didn’t matter whether I used pin names or numbers: I still had
to re-route the wire traces on the PCB because the physical location
of the pins had changed. There’s no getting around that.
Here’s a side-by-side of the previous and new USB-to-JTAG boards:


Books on massage available from Amazon
You can order the books listed below online from Amazon.comAmazon bookstore, usually
at a considerable discount from the list price.
- 5-Minute Massage : Quick & Simple Exercises to Reduce Tension & Stress
- Robert The / Paperback / Published 1995
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Amma Therapy : An Integration of Oriental Medical Principles, Bodywork, Nutrition and Exercise
- Tina Sohn, Robert C. Sohn / Hardcover / Published 1996
Amazon Price: $31.50 ~ You Save: $13.50 (30%)
- Anne Hooper's Ultimate Sexual Touch : The Lovers' Guide to Sensual Massage
- Anne Hooper / Hardcover / Published 1995
Amazon Price: $17.47 ~ You Save: $7.48 (30%)
- Arnold Schwarzenegger : Larger Than Life
- Craig A. Doherty, Katherine M. Doherty / Hardcover / Published 1993
Amazon Price: $10.46 ~ You Save: $4.49 (30%)
- The Aromatherapy and Massage Book
- Christine Wildwood / Paperback / Published 1995
Amazon Price: $16.00 ~ You Save: $4.00 (20%)
- The Art of Erotic Massage
- Andrew, Dr. York, Andrew Yorke / Paperback / Published 1988
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- The Art of Sensual Aromatherapy : A Lover's Guide to Using Aromatic Oils and Essences
- Nitya Lacroix, Sakina Bowhay / Paperback / Published 1995
Amazon Price: $15.16 ~ You Save: $3.79 (20%)
- The Art of Touch : A Massage Manual for Young People
- Chia Martin, Sheila Mitchell (Photographer) / Paperback / Published 1996
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Atlas of Therapeutic Motion for Treatment and Health
- Hardcover / Published 1995
Amazon Price: $17.50 ~ You Save: $7.50 (30%)
- Ayurvedic Massage : Traditional Indian Techniques for Balancing Body and Mind
- Harish Johari / Paperback / Published 1996
Amazon Price: $15.96 ~ You Save: $3.99 (20%)
- Baby Massage : A Practical Guide to Massage and Movement for Babies and Infants
- Peter Walker / Paperback / Published 1996
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Baby Massage : Parent-Child Bonding Through Touch
- Amelia D. Auckett / Paperback / Published 1989
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
- The Back Rub Book : How to Give and Receive Great Back Rubs
- Anne Kent Rush / Paperback / Published 1989
Amazon Price: $10.40 ~ You Save: $2.60 (20%)
- Basic Shiatsu
- Michio Kushi, Edward Esko / Paperback / Published 1995
Amazon Price: $7.16 ~ You Save: $1.79 (20%)
- Beard's Massage
- Giovanni De Domenico, et al / Paperback / Published 1997
Amazon Price: $32.50
- Beef It : Upping the Muscle Mass
- Robert Kennedy / Paperback / Published 1983
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Beyond Built : Bob Paris' Guide to Achieving the Ultimate Look
- Bob Paris / Paperback / Published 1992
Amazon Price: $12.79 ~ You Save: $3.20 (20%)
- Bigger Muscles in 42 Days
- Ellington Darden / Paperback / Published 1992
Amazon Price: $12.80 ~ You Save: $3.20 (20%)
- Body Flex-Body Magic
- Bill Reynolds, Anja Katharine Langer / Paperback / Published 1992
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Body Shaping : A Slim-Down, Shape-Up Guide to Conquering Your Body's Trouble Spots and Fat Zones
- Michael Yessis, Porter Shimer / Paperback / Published 1994
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Bodybuilding : A Scientific Approach Vol 1
- Frederick C. Hatfield / Paperback / Published 1984
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Bodybuilding : The Weider Approach Vol 1
- Joe Weider / Paperback / Published 1981
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- Bodybuilding Basics
- Robert Kennedy / Paperback / Published 1991
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
- Bodybuilding for Beginners Vol 1
- Bill. Reynolds / Paperback / Published 1983
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Bodywisdom : An Easy-To-Use Handbook of Simple Exercises and Self-Massage Techniques for Busy People
- Amiyo Ruhnke, Anando Wurzburger / Paperback / Published 1996
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Bodywork : What Type of Massage to Get-And How to Make the Most of It
- Thomas Claire / Paperback / Published 1996
Amazon Price: $12.00 ~ You Save: $3.00 (20%)
- Bodywork : What Type of Massage to Get-And How to Make the Most of It
- Thomas Claire / Hardcover / Published 1995
Amazon Price: $17.50 ~ You Save: $7.50 (30%)
- Bodywork Shiatsu : Bringing the Art of Finger Pressure to the Massage Table
- Carl Dubitsky / Paperback / Published 1997
Amazon Price: $19.96 ~ You Save: $4.99 (20%)
- The Book of Massage : The Complete Step-By-Step Guide to Eastern and Western Techniques
- Lucinda Lidell, et al / Paperback / Published 1984
Amazon Price: $12.00 ~ You Save: $3.00 (20%)
- The Book of Massage and Aromatherapy
- Nitya Lacroix, Sharon Seager / Hardcover / Published 1996
Amazon Price: $15.99
- Bottoms Up! : The Total-Body Workout from the Bottom Up from Cellulite to Sexy--In 24 Workout Hours
- Joyce L., Ph.D. Vedral / Paperback / Published 1993
Amazon Price: $10.39 ~ You Save: $2.60 (20%)
- Cat Massage - the Whiskers-to-Tail Guide to Your Cat's Ultimate Petting Experience
- Maryjean Ballner / Paperback / Published 1997
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- Chi Nei Tsang : Internal Organ Chi Massage
- Mantak Chia, Maneewan Chia / Paperback / Published 1991
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Chi Self-Massage : The Taoist Way of Rejuvenation
- Mantak Chia / Paperback / Published 1991
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
- Chinese Family Acupoint Massage
- Wang Chuangui / Hardcover / Published 1996
Amazon Price: $17.50 ~ You Save: $7.50 (30%)
- Chinese Qigong Massage : General Massage
- Jwing-Ming, Dr. Yang / Paperback / Published 1992
Amazon Price: $19.96 ~ You Save: $4.99 (20%)
- Compassionate Touch : Hands-On Caregiving for the Elderly, the Ill and the Dying
- Dawn, M.F.A. Nelson / Paperback / Published 1993
Amazon Price: $14.36 ~ You Save: $3.59 (20%)
- The Complete Body Massage : A Hands-On Manual
- Fiona Harrold, Sue Atkinson (Photographer) / Paperback / Published 1992
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- The Complete Book of Massage
- Clare Maxwell-Hudson / Paperback / Published 1988
Amazon Price: $13.60 ~ You Save: $3.40 (20%)
- The Complete Book of Partner Massage and Aromatherapy
- Brian Green, Royston Scott-Green / Paperback / Published 1995
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- The Complete Book of Relaxation Techniques
Usually ships in 24 hours
- Jenny Sutcliffe / Paperback / Published 1996
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- The Complete Guide to Foot Reflexology
- Barbara Kunz, Kevin Kunz / Paperback / Published 1993
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- The Complete Guide to Massage
- Susan Mumford / Paperback / Published 1996
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- The Complete Illustrated Guide to Reflexology : Therapeutic Foot Massage for Health & Well-Being
- Inge Dougans / Paperback / Published 1996
Amazon Price: $17.56 ~ You Save: $4.39 (20%)
- Discover Reflexology (Discover)
- Rosalind Oxenford / Paperback / Published 1997
Amazon Price: $7.16 ~ You Save: $1.79 (20%)
- Discovering the Body's Wisdom
- Mirka Knaster / Paperback / Published 1996
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Do-It-Yourself Shiatsu : How to Perform the Ancient Japanese Art of 'Acupuncture Without Needles'
- Wataru Ohashi, Watari Ohasi / Paperback / Published 1992
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- The Encyclopedia of Aromatherapy
- Christine Wildwood, Chrissie Wildwood / Paperback / Published 1996
Amazon Price: $19.96 ~ You Save: $4.99 (20%)
- Equine Massage : A Practical Guide
- Jean-Pierre Hourdebaigt / Paperback / Published 1997
Amazon Price: $22.36 ~ You Save: $5.59 (20%)
- Erotic Partner Massage
- Christine Unseld-Baumanns / Paperback / Published 1990
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- Exotic Massage for Lovers
- Timothy Freke, et al / Paperback / Published 1996
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Feet First : A Guide to Feet Reflexology
- Laura Norman / Paperback / Published 1988
Amazon Price: $11.20 ~ You Save: $2.80 (20%)
- Flawless : The Ten-Week, Total-Image Method for Transforming Your Physique Vol 1
- Bob Paris / Paperback / Published 1993
Amazon Price: $12.79 ~ You Save: $3.20 (20%)
- Foot Reflexology : A Visual Guide for Self-Treatment Vol 1
- Jurgen Jora / Paperback / Published 1991
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Full Body Reflexology
- Barbara Dodd / Hardcover / Published 1996
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Get Rid of Your Gut; Look Better, Feel Better, Prevent Back Pain in Only 64 Minutes a Week
- Jeanette Micelotta / Paperback / Published 1993
Amazon Price: $4.76 ~ You Save: $1.19 (20%)
- The Gift of Touch
- Helen Colton / Paperback / Published 1996
Amazon Price: $9.60 ~ You Save: $2.40 (20%)
- Grow : A 28-Day Crash Course for Getting Huge
- Ellington, Ph.D. Darden, Chris Lund (Photographer) / Paperback / Published 1993
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Hand and Foot Reflexology : A Self-Help Guide
- Kevin Kunz, Barbara Kunz / Paperback / Published 1992
Amazon Price: $9.60 ~ You Save: $2.40 (20%)
- Hand Reflexology : Key to Perfect Health
- Mildred Carter / Paperback / Published 1988
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- Hand Reflexology Workbook
- Kevin Kunz / Paperback / Published 1997
Amazon Price: $7.16 ~ You Save: $1.79 (20%)
- Hands-On Healing : Massage Remedies for Hundreds of Health Problems
- John Feltman (Editor) / Paperback / Published 1991
Amazon Price: $15.16 ~ You Save: $3.79 (20%)
- Hard Bodies
- Gladys Portugues, Joyce Vedral / Paperback / Published 1988
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Hardcore Bodybuilding : A Scientific Approach
- Frederick C. Hatfield / Paperback / Published 1993
Amazon Price: $15.16 ~ You Save: $3.79 (20%)
- The Healing Art of Sports Massage
- Joan Johnson / Paperback / Published 1995
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- The Healing Benefits of Acupressure : Acupuncture Without Needles
- F. M. Houston / Paperback / Published 1993
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Healing Massage Techniques : Holistic, Classic, and Emerging Methods
- Frances M. Tappan / Paperback / Published 1988
Amazon Price: $23.96 ~ You Save: $5.99 (20%)
- The Healing Touch : The Proven Massage Program for Cats and Dogs
- Michael Fox, Michael W. Fox Dr. / Paperback / Published 1990
Amazon Price: $9.56 ~ You Save: $2.39 (20%)
- The Healing Touch of Massage
- Carlo De Paoli / Paperback / Published 1995
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- High-Performance Bodybuilding
- John Parrillo, Maggie Greenwood-Robinson / Paperback / Published 1993
Amazon Price: $12.80 ~ You Save: $3.20 (20%)
- Hot Hips & Fabulous Thighs
- Ellington Darden / Paperback / Published 1991
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- How to Massage Your Cat
- Jane Buckle / Hardcover / Published 1996
Amazon Price: $6.96 ~ You Save: $2.99 (30%)
- How to Massage Your Dog
- Jane Buckle, Ron Young (Illustrator) / Hardcover / Published 1995
Amazon Price: $6.96 ~ You Save: $2.99 (30%)
- Hydrorobics : A Water Exercise Program for Individuals of All Ages and Fitness Levels
- Joseph A. Krasevec, Diane C. Grimes / Paperback / Published 1989
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Instant Massage for Stress Relief
- Mark Evans / Hardcover / Published 1997
Amazon Price: $6.96 ~ You Save: $2.99 (30%)
- Joe Weider's Muscle and Fitness Training Diary Vol 1
- Joe Weider / Paperback / Published 1982
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- Joe Weider's Ultimate Bodybuilding : The Master Blaster's Principles of Training and Nutrition
- Joe Weider, Bill Reynolds / Paperback / Published 1989
Amazon Price: $15.96 ~ You Save: $3.99 (20%)
- John Parrillo's 50 Workout Secrets
- John Parrillo, Maggie Greenwood-Robinson / Paperback / Published 1994
Amazon Price: $12.80 ~ You Save: $3.20 (20%)
- The Joy of Sensual Massage
- Jack Hofer, Marjett C. Schille / Paperback / Published 1989
Amazon Price: $11.20 ~ You Save: $2.80 (20%)
- Kum Nye Relaxation Part 1 : Theory, Preparation, Massage Vol 1
- Tulku Tarthang, Tarthang Tulku / Paperback / Published 1979
Amazon Price: $12.95
- Learn Massage in a Weekend (Learn in A A Weekend Series)
- Nitya Lacroix, Jo Foord (Illustrator) / Hardcover / Published 1992
Amazon Price: $11.20 ~ You Save: $4.80 (30%)
- Lee Haney's Ultimate Bodybuilding
- Lee Haney, Jim Rosenthal / Paperback / Published 1993
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Little Big Men : Bodybuilding Subculture and Gender Construction (Suny Series on Sport, Culture, and Social Relations)
- Alan M. Klein / Paperback / Published 1993
Amazon Price: $16.95
- Lose the Love Handles : 30 Days to an Arrow-Straight Waist
- Dave Kuehls / Paperback / Published 1997
Amazon Price: $5.56 ~ You Save: $1.39 (20%)
- Lou Ferrigno's Guide to Personal Power, Bodybuilding, and Fitness
- Lou Ferrigno / Paperback / Published 1996
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- The Magic of Massage : A New and Holistic Approach
- Ouida West / Paperback / Published 1990
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Mass/New Scientific Bodybuilding Secrets
- Robert Kennedy / Paperback / Published 1986
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- Massage (Teach Yourself Books)
- Denise Whichello Brown / Paperback / Published 1996
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- Massage : 101 Essential Tips (101 Essential Tips)
- Nitya Lacroix / Hardcover / Published 1995
Amazon Price: $5.56 ~ You Save: $1.39 (20%)
- Massage : A Career at Your Fingertips
- Martin Ashley / Paperback / Published 1995
Amazon Price: $15.96 ~ You Save: $3.99 (20%)
- The Massage Book
- George Downing / Paperback / Published 1972
Amazon Price: $9.60 ~ You Save: $2.40 (20%)
- Massage for Pain Relief : A Step-By-Step Guide
- Peijian Shen / Paperback / Published 1996
Amazon Price: $11.20 ~ You Save: $2.80 (20%)
- Massage for Therapists
- Margaret Hollis / Paperback / Published 1987
Amazon Price: $32.95
- Massage for Total Stress Relief
- Nitya Lacroix, Nitya Lacroux / Paperback / Published 1991
Amazon Price: $12.80 ~ You Save: $3.20 (20%)
- Massage Made Easy
- Mario-Paul Cassar / Paperback / Published 1995
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Massage Techniques
- D. Baloti Lawrence / Paperback / Published 1986
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
- Milady's Theory and Practice of Therapeutic Massage
- Mark F. Beck / Hardcover / Published 1994
Amazon Price: $48.95
- Mind Pump : The Psychology of Bodybuilding
- Tom Kubistant / Paperback / Published 1988
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- The Modern Book of Massage : Five-Minute Vacations and Sensuous Escapes
- Anne Kent Rush, Patrick Harbron (Photographer) / Paperback / Published 1994
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Mosby's Fundamentals of Therapeutic Massage
- Sandy Fritz, Sandra Fritz / Paperback / Published 1995
Amazon Price: $38.00
- Moving Medicine : The Life and Work of Milton Trager, M.D.
- Jack Liskin / Hardcover / Published 1996
Amazon Price: $17.47 ~ You Save: $7.48 (30%)
- The New Hardcore Bodybuilding
- Robert Kennedy / Paperback / Published 1990
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- The New Massage : Total Body Conditioning for People Who Exercise
- Gordon Inkeles, Greg Peterson (Photographer) / Paperback / Published 1993
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- The Ohashi Bodywork Book: Beyond Shiatsu With The Ohashiatsu Method
- Wataru Ohashi / Paperback / Published 1997
Amazon Price: $19.20 ~ You Save: $4.80 (20%)
- Pamper Your Partner
- Penny Rich / Paperback / Published 1990
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Perfect Parts
- Rachel McLish / Paperback / Published 1993
Amazon Price: $11.19 ~ You Save: $2.80 (20%)
- The Perfectible Body : The Western Ideal of Male Physical Development
- Kenneth R. Dutton / Paperback / Published 1995
Amazon Price: $19.96 ~ You Save: $4.99 (20%)
- Performance Massage
- Robert K. King / Paperback / Published 1992
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Pocket Massage for Stress Relief
- Clare Maxwell-Hudson / Hardcover / Published 1996
Amazon Price: $6.96 ~ You Save: $2.99 (30%)
- Power : A Scientific Approach
- Frederick C. Hatfield / Paperback / Published 1989
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Pumping Up! : Super Shaping the Feminine Physique
- Ben Weider, Robert Kennedy / Paperback / Published 1985
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Reflex Zone Therapy of the Feet : A Textbook for Therapists ; Introduction by Erich Rauch ; Translated from the German by Ann Callard Lett
- Hanne Marquardt / Paperback / Published 1990
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- Reflexology
- Chris Stormer / Paperback / Published 1996
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- Reflexology (Tuttle Alternative Health)
- Anya Gore, Shaun Williams (Illustrator) / Paperback / Published 1993
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Reflexology : A Step-By-Step Guide ('in a Nutshell' Series)
- Nicola Hall / Hardcover / Published 1997
Amazon Price: $5.56 ~ You Save: $2.39 (30%)
- Reflexology Today : The Stimulation of the Body's Healing Forces Through Foot Massage
- Doreen E. Bayly / Paperback / Published 1989
Amazon Price: $7.16 ~ You Save: $1.79 (20%)
- The Reflexology Workout : Hand & Foot Massage for Super Health & Rejuvenation
- Stephanie Rick, et al / Paperback / Published 1995
Amazon Price: $11.20 ~ You Save: $2.80 (20%)
- Reflexology; A Way to Better Health
- Nicola M. Hall / Paperback / Published 1991
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Reps! : The World's Hottest Bodybuilding Routines!
- Robert Kennedy / Paperback / Published 1985
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
- Romantic Massage : Ten Unforgettable Massages for Special Occasions
- Anne Kent Rush / Paperback / Published 1991
Amazon Price: $11.20 ~ You Save: $2.80 (20%)
- Sandow the Magnificent : Eugen Sandow and the Beginnings of Bodybuilding (Sport and Society)
- David L. Chapman / Hardcover / Published 1994
Amazon Price: $18.87 ~ You Save: $8.08 (30%)
- Save Your Hands! : Injury Prevention for Massage Therapists
- Lauriann Greene, Robert A. Greene / Paperback / Published 1995
Amazon Price: $14.36 ~ You Save: $3.59 (20%)
- Self-Massage : A Complete 15-Minutes-A-Day Massage System for Health and Healing
- Jacqueline Young / Paperback / Published 1992
Amazon Price: $12.80 ~ You Save: $3.20 (20%)
- Sensual Massage
- Nitya Lacroix / Paperback / Published 1990
Amazon Price: $12.76 ~ You Save: $3.19 (20%)
- Shiatsu : Japanese Finger-Pressure Therapy
- Tokujiro Namikoshi / Paperback / Published 1995
Amazon Price: $9.60 ~ You Save: $2.40 (20%)
- The Shiatsu Handbook : A Guide to the Traditional Art of Shiatsu Acupressure
- Shizuko Yamamoto, Patrick McCarty / Paperback / Published 1996
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- The Six-Week Fat-To-Muscle Makeover
- Ellington Darden / Paperback / Published 1990
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
- Sports Massage for Peak Performance
- Greg Pike / Paperback / Published 1997
Amazon Price: $16.00 ~ You Save: $4.00 (20%)
- Sportsmassage : A Complete Program for Increasing Performance and Endurance in Fifteen Popular Sports
- Jack Meagher, et al / Paperback / Published 1995
Amazon Price: $13.56 ~ You Save: $3.39 (20%)
- Supercut : Nutrition for the Ultimate Physique Vol 1
- Bill Reynolds, Joyce L. Vedral / Paperback / Published 1985
Amazon Price: $11.16 ~ You Save: $2.79 (20%)
- Superflex : Ms. Olympia's Guide to Building a Strong & Sexy Body
- Corinna Everson, Jeff Everson / Paperback / Published 1987
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- Supervixen : Secrets for Building a Lean and Sexy Body
- Negrita Jayde / Paperback / Published 1995
Amazon Price: $14.36 ~ You Save: $3.59 (20%)
- The Tao of Sexual Massage
- Stephen Russell, Jurgen Kolb / Paperback / Published 1992
Amazon Price: $12.00 ~ You Save: $3.00 (20%)
- Tao Shiatsu : Life Medicine for the 21st Century
- Ryokyu Endo / Paperback / Published 1995
Amazon Price: $15.20 ~ You Save: $3.80 (20%)
- Thorsons Introductory Guide to Reflexoloty : A Patient's Guide
- Nicola M. Hall / Paperback / Published 1996
Amazon Price: $6.40 ~ You Save: $1.60 (20%)
- Touch for Health : A Practical Guide to Natural Health Using Acupressure Touch and Massage to Improve Postural Balance and Reduce Physical and Mental
- John F. Thie / Paperback / Published 1979
Amazon Price: $24.95
- Ultra-Ripped Abs (Musclebuilder's Body Parts Series)
- Robert Kennedy / Paperback / Published 1987
Amazon Price: $7.96 ~ You Save: $1.99 (20%)
- Understanding Sports Massage
- Patricia J. Benjamin, Scott P. Lamp / Paperback / Published 1996
Amazon Price: $22.00
- The Weider System of Bodybuilding Vol 1
- Joe Weider, Bill Reynolds / Paperback / Published 1983
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
- What's Really Wrong With You : A Revolutionary Look at How Muscles Affect Your Health
- Thomas Griner, Maxine Nunes / Paperback / Published 1996
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
- A Woman's Book of Strength
- Karen Andes / Paperback / Published 1995
Amazon Price: $9.60 ~ You Save: $2.40 (20%)
- Better Health With Foot Reflexology
- Dwight C. Byers / Paperback / Published 1983
Amazon Price: $15.95
(Back Ordered)
- Bodywork Tantra on Land and in Water
- Harold Dull / Paperback / Published 1993
Amazon Price: $10.95
(Back Ordered)
- Built Hard
- Charlie Mann / Paperback / Published 1997
Amazon Price: $15.96 ~ You Save: $3.99 (20%)
(Not Yet Published -- On Order)
- Chinese Bodywork : A Complete Manual of Chinese Therapeutic Massage
- Sun Chengnan (Editor) / Hardcover / Published 1993
Amazon Price: $50.00
(Back Ordered)
- Como Mejorar La Salud Con La Reflexologia/Body Reflexology; El Arte de Curar Al Alcance de Su Mano/H
- Mildred Carter / Paperback / Published 1997
Amazon Price: $10.36 ~ You Save: $2.59 (20%)
(Not Yet Published -- On Order)
- Como Mejorar La Salud Con La Reflexologia/Body Reflexology; El Arte de Curar Al Alcance de Su Mano/H
- Mildred Carter / Hardcover / Published 1997
Amazon Price: $17.47 ~ You Save: $7.48 (30%)
(Not Yet Published -- On Order)
- The Complete Illustrated Guide to Massage : A Step-By-Step Approach to the Healing Art of Touch
- Stewart Mitchell / Paperback / Published 1997
Amazon Price: $19.96 ~ You Save: $4.99 (20%)
(Not Yet Published -- On Order)
- Discover Shiatsu : A First-Step Handbook to Better Health
- Catherine Sutton / Paperback / Published 1997
Amazon Price: $7.16 ~ You Save: $1.79 (20%)
(Not Yet Published -- On Order)
- The Handbook of Chinese Massage : Tuina Techniques to Awaken Body and Mind
- Maria Mercati / Hardcover / Published 1997
(Not Yet Published)
- Instant Stress Relief
- Ladis-Gaskin, Carol Ladas-Gaskin / Paperback / Published 1998
Amazon Price: $8.76 ~ You Save: $2.19 (20%)
(Not Yet Published -- On Order)
- Massage : A Practical Introduction (Health Essentials)
- Stewart Mitchell / Paperback / Published 1993
Amazon Price: $9.95 + $0.85 special surcharge (Back Ordered)
- Massage : A Step-By-Step Guide ('in a Nutshell' Series)
- Yvonne Worth / Hardcover / Published 1997
Amazon Price: $5.56 ~ You Save: $2.39 (30%)
(Not Yet Published -- On Order)
- Massage for Beginners : The Eye-Level and Hands-Free Guide to the Art of Self and Partner Massage
- Marilyn Aslani / Paperback / Published 1997
Amazon Price: $16.95
(Not Yet Published)
- Reflexology : Simple Techniques to Relive Stress and Enhance Your Mind (New Life Library)
- Rosalind Oxenford / Hardcover / Published 1997
Amazon Price: $12.95
(Back Ordered)
- Romantic Massage
- Randy Nikola / Paperback / Published 1997
Amazon Price: $11.96 ~ You Save: $2.99 (20%)
(Not Yet Published -- On Order)
- The Royal Treatment : How You Can Take Home the Pleasures of the Great Luxury Spas
- Steve Capellini / Paperback / Published 1997
Amazon Price: $14.95
(Not Yet Published)
LinkExchange member
Member of 123Banners


| US Cons Conf Index YoY | |||||
| Date | Market Expectation | Kshitij Expectation | Previous | Release | Revision |
| 27-Dec-17 | 13.15 | - | 17.6 | 7.8 | 8.65 |
| 30-Jan-18 | 10.39 | 11.72 | 8.6 | 12.4 | 11.38 |
| 27-Feb-18 | 8.70 | 9.06 | 11.4 | 12.7 | - |
| 27-Mar-18 | - | - | 12.7 | - | - |
| Copyright: Kshitij Consultancy Services |


HTML Link Example
Expand your tech knowledge at
EverythingTech
via tutorials, articles and starter kits.


I made this card for study and test the capabilities of the chip 8266 and to test it in an extreme environment condition ,i inserted it inside my freezer.
http://emoncms.org/dashboard/view&id=29698
The card uses a battery CR123 and theoretically should run out in about 1.5 years .. (circuit consumes 50 microamps in dsleep and about 50 ma during operation.
(every 900 seconds of dsleep, work for about 8 sec.)
It will be really interesting to see how long the battery work at about -20 degrees of environment temperature.
All files and schematics are available for download at this address :
http://www.portalsole.it/archivio/ds1820.emoncms.zip
Some other information (in Italian) and image is available here:
http://www.portalsole.it/sezione.php?d=161
Ciao,
Fabrizio.
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
That's really cool Fabrizio!
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
And that's a very bad joke!
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
..joke ?
Why ?
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Hi Fabrizio,
Nice work! Thanks for sharing it with us.
Regards,
Bill
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
British humour Fabrizio, don't worry.
I'm planning to do the same thing effectively to add temperature control to a low cost cool box which runs either on 12v or mains. We had one in our camper van and it is either fully on on 12V, or has a control knob on mains supply. So an esp8266 taking power from the coolbox and acting as an access point will do the job I reckon.
Not emoncms, but a great, cheap solution.
Simon
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
"..joke ?
Why ?"
Because JD described your project, that works at -20°C, as "cool!"
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Very good idea, I could do with knocking a couple of these up. I'm impressed the wiifi signal is able to escape the freezer.
I read your blog and noted the use of the emoncms.org IP to save a dns lookup and therefore battery life, and that means re-editing the devices code directly if the ip address changes. I don't know if you use emonHub, but for those that do, sending to an emonhub socket at eg http://IP.OF.HUB.PI:50011 would allow the target url(s) to use DNS and the url(s) and apikey keys changed at will, plus not needing the apikey or variable name in the payload could help increase battery life further still by shortening the tx time.
(just added this to the "list of monitored stuff" list too)
Paul
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
I dont have emonhub but is true that it can reduce the payload of communication, and transmission time and this can increase battery life.
Probably also use fix ip instead of dhcp can reduce draw of current by module.. i've to test this .
@Robert.. Thank for your reply.. i have some problem with British umor and also Google translator cant help me for this :)
Ciao,
Fa.
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
i recently bought some wireless tags http://www.wirelesstag.net/ and made an app on their cloud services that send the sensor data to emoncms. It uses a 3v CR2032 or CR2450 battery and i have set it up so that it only sends out the temprature data every 30 minutes. they communicate over radio frequncies and you need to have a tag manager to communicate with them. These tags can also be used to place inside a fridge / freezer. but they said somewhere on the site of the tags that the voltage / chemistry of the batteries drop when they are placed in cold environments see support page here : http://store.wirelesstag.net/pages/support quote from their page:
At the same amount of remaining capacity, battery voltage may be 2.5V at -20°C when it is 2.8V at 23°C.
so i don't know what batteries you are using but it could be they are showing lower voltages as well when being placed inside a cold environment
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Great, thanks
Will try this out. Have all the hardware laying around. :-)
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Interesting project, i want to do something similar but with a small solar panel and lithium-ion battery, only 1 question: why you place the esp8266 into the freezer???, with ds18b20 you can use a very long (and thin) cable, even you can use a weatherproof version, so you can place electronic inside a box... outside of the freezer.
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
I do this only for test.
If this system will work at least 1 year i think this solution is better than wire solution..
Eventually, the wire can damage the door seal but if the battery will run out energy in 2-3 weeks the card inside freezer is not the solution...
Now the card ( proto-board) is in a plastic bag..
Ciao,
Fabrizio
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
I think the battery last... between 1 and 2 months
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Fabrizio,
Have you tried using Lithium batteries? They are good down to about -35F. I used them in my weather station outdoor electronics package when I lived in Montana, where wintertime lows routinely get between -20 and -40F.
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Yes Bill, i already use Lion battery.
Referring to this link posted by Willems ( joyrider3774 ) http://store.wirelesstag.net/pages/support , i do the same test with my battery ( CR123) .
( see the paragraph "The battery voltage drops very quickly when tag is placed in fridge/freezer.")
In the wirelesstag.net diagramm is tested a CR2032 battery, that have same chemistry as my CR123, but i do the test with 1 kohm resistance instead of 3 kohm ( more current should increase dropping in voltage ).

I think this is very good result..
I plan to do the same test with 100 ohm load...
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
Yes Bill, i already use Lion battery.
Not Lithium Ion, just Lithium i.e. the non-rechargeable type. Different battery chemistry.
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
I use battery non-rechargeable at 3.0 volt... You suggest rechargeable type or non-rechargeable ?
There is another interesting non-rechargeable battery.. but is at 3.6 volt :
http://www.amazon.com/Saft-LS-14500-3-6V-Lithium-Battery/dp/B002GK406C
Ciao,
Fa.
Re: Battery powered, low cost temp monitor with esp8266 and emoncms.org
I use battery non-rechargeable at 3.0 volt...
Correct. The non-rechargeable type gives superior cold environment performance, especially at sub-zero (F) temperatures.
Here's some additional info: http://toolguyd.com/flashlight-tool-batteries-cold-weather/


Find all elements on the page matching the given selector and options.
Both XPath and CSS expressions are supported, but Capybara does not try to automatically distinguish between them. The following statements are equivalent:
page.all(:css, 'a#person_123') page.all(:xpath, '//a[@id="person_123"]')
If the type of selector is left out, Capybara uses {Capybara.default_selector}. It’s set to :css by default.
page.all("a#person_123") Capybara.default_selector = :xpath page.all('//a[@id="person_123"]')
The set of found elements can further be restricted by specifying options. It’s possible to select elements by their text or visibility:
page.all('a', :text => 'Home') page.all('#menu li', :visible => true)
@overload all(, locator, options)
@param [:css, :xpath] kind The type of selector @param [String] locator The selector @option options [String, Regexp] text Only find elements which contain this text or match this regexp @option options [Boolean] visible Only find elements that are visible on the page. Setting this to false finds invisible _and_ visible elements. @option options [Boolean] exact Control whether `is` expressions in the given XPath match exactly or partially
@return [Capybara::Result] A collection of found elements
# File lib/capybara/node/finders.rb, line 128 def all(*args) resolve_query(Capybara::Query.new(*args)) end
Find an {Capybara::Element} based on the given arguments. find
will raise an error if the element is not found.
If the driver is capable of executing JavaScript, find
will
wait for a set amount of time and continuously retry finding the element
until either the element is found or the time expires. The length of time
find
will wait is controlled through {Capybara.default_wait_time}
and defaults to 2 seconds.
find
takes the same options as all
.
page.find('#foo').find('.bar') page.find(:xpath, '//div[contains(., "bar")]') page.find('li', :text => 'Quox').click_link('Delete')
@param (see #all) @option options [Boolean] match The matching strategy to use. @option options [false, Numeric] wait How long to wait for the element to appear.
@return [Capybara::Element] The found element @raise [Capybara::ElementNotFound] If the element can’t be found before time expires
# File lib/capybara/node/finders.rb, line 28 def find(*args) query = Capybara::Query.new(*args) synchronize(query.wait) do if query.match == :smart or query.match == :prefer_exact result = resolve_query(query, true) result = resolve_query(query, false) if result.size == 0 and not query.exact? else result = resolve_query(query) end if query.match == :one or query.match == :smart and result.size > 1 raise Capybara::Ambiguous.new("Ambiguous match, found #{result.size} elements matching #{query.description}") end if result.size == 0 raise Capybara::ElementNotFound.new("Unable to find #{query.description}") end result.first end.tap(&:allow_reload!) end
Find a element on the page, given its id.
@param [String] id Which element to find @return [Capybara::Element] The found element
# File lib/capybara/node/finders.rb, line 88 def find_by_id(id, options={}) find(:id, id, options) end
Find a form field on the page. The field can be found by its name, id or label text.
@param [String] locator Which field to find @return [Capybara::Element] The found element
# File lib/capybara/node/finders.rb, line 54 def find_field(locator, options={}) find(:field, locator, options) end
Find a link on the page. The link can be found by its id or text.
@param [String] locator Which link to find @return [Capybara::Element] The found element
# File lib/capybara/node/finders.rb, line 66 def find_link(locator, options={}) find(:link, locator, options) end
Find the first element on the page matching the given selector and options, or nil if no element matches.
@overload first(, locator, options)
@param [:css, :xpath] kind The type of selector @param [String] locator The selector @param [Hash] options Additional options; see {#all}
@return [Capybara::Element] The found element or nil
# File lib/capybara/node/finders.rb, line 143 def first(*args) all(*args).first end


Nice spoiler.(Venom 600 pictured here)
Specs(Venom 650R)
Price |
$108,500 |
Top Speed |
215mph |
Acceleration |
|
Engine |
|
0-30mph |
1.5sec* (!!) |
Type |
V10, 20valve OVH |
0-60mph |
3.3sec* |
Displacement |
8.4L(8424cc) !! |
0-100 |
7.1sec* |
Power |
650hp@5800rpm (!!) |
1/4 mile |
11.2sec/131.7mph* |
Torque |
650 lbs-ft@4500rpm (!!) |
Weight |
3,250 lbs |
Handling |
|
Gas mileage |
N/A |
Skidpad |
1.06g (!!) |
City |
N/A |
600ft slalom |
75.1mph (!!) |
Highway |
N/A |
Powertrain |
Front engined, rear wheel drive, 6 speed manual |
(? = incomplete data or unverified info, N/A = info Not Available, * = tested with special aftermarket tires)
Note: The version from which these specs were obtained costs $165,450 due to the required options and special paint.
Beyond the specs:
John Hennessey heavily modified this Dodge Viper, as you can see from the specs above the modifications were not just useless visual add-ons. This Venom priced at an extremely low price for a vehicle that is only .1 seconds slower to 60 and across the quarter mile than the much more expensive Mclaren F1! Its acceleration under 130mph is second only to the Mclaren F1! With such massive torque it had to be fitted with special tires (which were technically street legal) to prevent wheel spin and allow the testers to see it true performance. The tires still did not help acceleration much though, and they only affected off the line acceleration. The handling numbers are unmatched by any production car ever and doing 75.1mph on the 600ft shalom required the drivers to change direction from left to right suddenly every .9 seconds! With so much awesome speed at such a bargain price I do not see why an enthusiast would buy anything else priced above $160,000! However, with 200more hp and 160 more lbs.-ft of torque to add to the difficulty of driving a viper this is not for the under-skilled driver (a.k.a. non-racecar driver). Still it has the tires enlarged to 18 inches front and rear, the weight has been reduced with carbon fiber and fully function front and rear spoilers added it should make up for some of that extra power. This car is for the highly skilled pure driving enthusiast who can resist the temptation to tap on the throttle when the radar detector (a required device on a car this fast, in my opinion) is warning you. Remember to exercise control when driving this car, after all 100mph comes as fast as a Jeep Cherokee can hit 60mph.
~Oracle


WISP
Legend
Cherry
ice cream
museum
park
hotel
guest house
lake
river
japnese
WISP
version: 0.0.8-beta
©Jimut Bahan Pal
Author<EMAIL_ADDRESS>Location: Kyoto
Lat, Lon: 35.021041,135.7556075
Radius: 9000
Date: 2019-04-25T22:46:54


STRIKING DISTANCE A film review by Jon Webb Copyright 1993 Jon Webb
This is the film whose working title was THREE RIVERS when it was made in Pittsburgh some months ago. I remember that the city offered extremely good cooperation during the making of this film; they willingly shut down streets, closed tunnels and bridges, at the convenience of the filmmakers.
All the cooperation paid off. The film is like an advertisement for Pittsburgh; it conveys a wholly different image from the conventional one of a worn-out steel town. Pittsburgh is clean, a city of rivers. We should be able to use this film to recruit new faculty and students.
The orientation of the film, toward's Pittsburgh's rivers, is strong enough to make one think of Pittsburgh differently. It seems like we all should have boats, to give the impressive Pittsburgh Rescue Force something to do.
The plot is the obvious cop-movie plot. A policeman has suffered damage in the past as a result of his encounter with evil. He has been weakened to his very soul. He must confront the evil again; will he triumph.
There's very little surprise in the film, though I suppose the ending qualifies. A few scenes were oddly filmed, and for that reason striking: for example, the shot of the three people tied to chairs, and the drowning scene at the end. It's something of a fresh view.
But basically, this is a Bruce Willis film, with Bruce using brutality softened by sarcastic quips to get his way, which is always right.
-- J
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


(hide)
rs28371685, also known as 1003C>T, 42542C>T or R335W is a SNP in the CYP2C9 gene. The rs28371685(T) allele defines the CYP2C9*11 variant, which has decreased activity. According to a 23andMe discussion This is one of the SNPs which were re-analyzed April 2009. Customers with older data may wish to redownload. SNPs effected rs4420638, rs34276300, rs3091244, rs34601266, rs2033003, rs7900194, rs9332239, rs28371685, rs1229984, and rs28399504. [PharmGKB:Curated Phenotype: In African Americans patients, weekly warfarin dose requirements were lower in those with the CYP2C9*8 allele (34 (30-47) mg; P = 0.023) and the CYP2C9 *2, *3, *5, *6, or *11 allele (33(28-40 mg); P < 0.001) as compared with those with the CYP2C9*1/*1 genotype (43 (35-56) mg). Adding the *5,*6,*8 and *11 alleles to a...


SOLARIS (1972) A Film Review by Ted Prigge Copyright 1998 Ted Prigge
Director: Andrei Tarkovsky Writers: Friederich Gorenstein and Andrei Tarkovsky (based on the novel by Stainislaw Lem) Starring: Donatas Banionis, Natalya Bondarchuk, Jüri Järvet, Anatoli Solonitsyn, Nikolai Grinko, Sos Sarkissian, Vladislav Dvorjetzki
Andrei Tarkovsky's "Solaris" was advertised as "Russia's answer to '2001'" when it first came out in 1972, bringing many people to believe that this was the film that held the answers to the film, that expanded and made sense out of it. This is completely untrue once you see the film, although one could see that the two films have many things in common: they're both, what some people call, "cinematic poems;" both deal with space and alien intelligence in more reserved and complex fashions; and both are leisurely paced with long periods of silence and little going on in terms of action.
But this is where the films' similarities end. After all, "2001" dealt with the dehumanization of man; "Solaris" takes the opposite view, showing the humanity of man. Instead of dealing with the way technology has crippled evolution, and turned us into inhuman droids, "Solaris" takes on an independent from "2001" theme: the way that memories haunt us, and the way that human contact is only a form of perception. The film doesn't try to be a "Russian '2001'"; it tries to be a completely different film.
"Solaris," based on a science fiction novel by Stainislaw Lem, deals with what would probably be a trite episode of "Star Trek" (pick a version): a space station hovers over a planet called Solaris that is filled completely with an ocean. It is believed that the ocean is the brain of the planet, and that the ocean is basically the alien lifeform. But some people who have come back from the station claim that they saw visions that materialized and haunted them, and all but three scientists remain there when the story begins.
In the film's opening scene, we are introduced to Kris Kelvin (Donatas Banionis), a psychologist/cosmonaut who has been chosen to go to the space station to discover what has happened and make a decision to either continue working at Solaris or leave (which means they may destroy the planet). After a 40 minute introduction to Kris, the plot, and to his family, including his dying father (Nikolai Grinko), Kris gives a heart-felt goodbye, and he's off to the station.
Upon arriving there, he discovers that his one friend who worked there, Gibarian (Sos Sarkissian), has committed suicide, and has left him a bizarre video message that sort of explain his actions. He also finds the other two scientists - Snauth and Sartorious (Jüri Järvet and Anatoli Solonitsyn, respectively) - acting really weird and reclusive. Soon enough, Kris sees weird images, such as his wife from years ago, Khari (Natalya Bondarchuk), who committed suicide years ago, who then materializes and tries to live life with him like it was before.
Of course, she's not the real Khari as much as it is a materialization thereof. The fake Khari is unable to recall any memories that the real Khari had, and merely looks just like her and perhaps even acts a bit like her. However, she is only able to live when she is in his presence, or else she dies or commits suicide, only to come back to life shortly afterwards. She soon becomes Kris' second chance, and he soon begins to think of her as an entirely different person than the real Khari, given a chance to love again.
The film deeply explores these themes, and actually goes beyond the realm of being merely a cool sci-fi flick, becoming an existential exploration of humanity and the ways that memories can be frightening and painful, but also can be soothing and warming. Watching Kris lie with his dead wife's fake "guest" all day while the other scientists complain that he isn't doing anything is one of the saddest and unnerving things in cinema because after all, don't we have a point in our lives we wish we could re-live so that we could take as much advantage of it? It's the fact that this film evokes universal deep emotions and does it without insulting our intelligence that makes this a truly haunting experience.
Tarkovsky has been called a "cinematic poet" by so many critics that I won't even try and be original by saying that he is. But I will say that he is definitely one of the best directors of mise-en-scene and shot development that I have ever seen, up there with Kubrick, Welles, Ophuls, and Bergman. Shots aren't there to just show the story but are crafted to evoke deep feelings, and give a sense of hypnotic mysticism. The opening shot of the reeds flowing in the water is a gorgeously simple shot, and it's the simplicity that really makes the shots the most effective. In fact, everything else has a very minimalistic yet extremely deep feel to them, noted as early on in the simple opening credits with Bach's "F Minor Choral Prelude" playing somberly in the background, giving the film its unique feel.
Tarkovsky also tells his story at a very leisurely pace, much like, say, Kurbick. I imagine that the story by Lem is perhaps 100 pages, if that, but Tarkovsky turns it into a 167-minute film, filled with long shots, extremely long scenes of very little going on, and various other techniques to make everything last longer than a typical director would allow. Yet all of these never result in boredom, and the entire film has a hypnotic feel to it. You know the kind of long scenes where very little happens, and the actors speak in long, hushed tones, and you just sit there, staring at it, afraid to breathe, waiting for the director to screw up and ruin the experience? These kinds of shots, filled with all sorts of complex layering that requires complete audience attention, seem to be Tarkovsky's forte.
While the science fiction and special effects take a back-seat to the themes and ideas postulated by the film, this film nevertheless is really cool to look at. The space station itself is a pretty atmospheric locale, and the white background of Kris's chambers creates a cool-looking and almost lonely feeling for the disturbed character. We never see much of the technology though (it works here), and we only get glimpses of the planet they're on, seeing that everything is a gorgeously wavy ocean. The cinematogaphy is absolutely gorgeous, perfectly accenting Tarkovsky's complex shots, and making this just one of the better-looking films in film history.
The final shot of "Solaris" is one of the most haunting final shots in film history, bringing the film's themes and ideas to a dramatic and poignant close, and also allowing some very heart-felt emotion to pour in. It's the fact that we can all (probably, I hope) identify with Kris's connection to the past that makes "Solaris" a real experience, not only in the cinematic sense of the word, but also in the emotional one. We all have done something that we regretted afterwards, and there's at least one moment we wish we could live over again with the knowledge we have today. That's what "Solaris" is about. I'm not knocking other sci-fi films that deal with general fear and horror (like the "Alien" series), but because "Solaris" dives deep into the questions of humanity, and puts that focus in the forefront, it is, along with "2001," the best science fiction film ever made.
MY RATING (out of 4): ****
Homepage at: http://www.geocities.com/Hollywood/Hills/8335/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


MsgpackConnection
Constructor Summary
| Public Constructor | ||
| public |
constructor(url: *, connectionLabel: string) |
Member Summary
| Public Members | ||
| public |
|
|
| public |
onClose: * |
|
| public |
onEnd: * |
|
| public |
onError: * |
|
| public |
onMessage: * |
|
| public |
onOpen: * |
|
| public |
options: {"codec": *} |
|
| public |
url: * |
|
| public |
websocket: * |
Method Summary
| Public Methods | ||
| public |
close() |
|
| public |
connect(onMessage: *, onEnd: *, onOpen: *, connectionOptions: *) |
|
| public |
request(message: *): * |
|
| public |
send(message: *) |


First things first.
make sure you've connected RPM to your device via USB.
Place your artwork in front of the RPM camera, switch to ‘Capture’ and press the button.
Search for your desired album or playlist to begin tagging your artwork.
Simply flick the switch onto ‘play’ and press the button to start your album or playlist.


|
gadget - A gadget handle
left,right,top,bottom - Integer alignment flags |
|
SetGadgetLayout lets you control the automatic layout of a gadget when a window is resized
by the user. Each alignment flag corresponds to an edge of the gadget, and indicates how that edge is to be aligned with respect to the corresponding edge of its group. 0 - The edge of the gadget is free to move. 1 - The edge of the gadget is 'locked' in place. 2 - The edge of the gadget 'floats' proportionally. |


This page is intending to display how Controllers are written in this framework and the ways of how to use the controllers.
At this moment, the following ways of implementing a controller are available (we will get into detail in the chapters below):
controller
folder of the application. This class needs to be registered.
By writing javascript code inside the tag script
. This tag will be connected as controller only inside There is also a default controller that is available, which is named "ContainerController"
. Our suggestion is that when you want to create a controller, is to extend this already available controller.
Why? There are two reasons for this: First, we already handle the HTML container where you desire to use the controller and the second reason is that the controller already handles the possibility to listen or to trigger events. More about these, in the chapters below.
Also, after you define your custom controllers, or maybe you want to use the provided controller, you have the following ways to include the controller inside your components, all of them by using the component
(we will get into detail in the chapters below):
controller-name
attribute.
Load the controller-name
attribute, and also, write javascript source code inside script
tag.
Javascript classes that will serve as controllers should be created in the directory /src/scripts/controllers
in order to mentain the project structure.
Also, in the folder structure, there are also a folder, base-controllers
. It is very important that these controllers remain not changed, as we are under development and we will provide updates from time to time.
After the creation of this class, you should extend the base controller named ContainerController
, like in the below example. If you chose not to extend the controller, then you will nt have to possibility to use the binding features.
The base controller has already some functionalities provided, like triggering and listening to events, binding (one-way and two-way binding) and in the future we will bring other features.
The starting point of your class should look like the below one (the class must be created in the base path of controllers - /src/scripts/controllers
)
Let's assume that you want to have displayed a list of sale products on a page, but for some of them you want a specific behavior, like triggering an event when a special product has been clicked. In order to do this, you can write some javascript logic only for that product.
The source code for that product will look something like the following one:
To load a controller by name is possible using one of the following methods:
controller-name
attribute.
Load the script
source code.
This type of controller is the easiest to be instantiated. You just need to load the
This type of controller can be loaded by providing to
If the controller given as attribute does not exists, no controller will be attached to the container, so pay attention when you type the controller-name.
The source code of the container component should look like this:
In the chapter above, Create a controller by writing javascript source code
, we have described how to create a controller inside the HTML tag script
and provided a small example of usage.
Here we have two cases, to provide a controller-name
attribute or not. If we provide a controller, it will be verified and only if it exists, the script
tag will be taken into consideration.
If the controller-name
attribute is not provided, then ContainerController
will be attached to the container and the script defined will be executed.
The function on
will listen for the event and when the event is triggered, the callback function given as parameter will be executed.
controller.on(eventName: string, callback: Function, options?: Object)
addEventListener
method
undefined
The function off
will remove the provided event listener.
In order to remove the correct event listener, the function should receive the same arguments (eventName, callback, options) like on the registering the event.
controller.off(eventName: string, callback: Function, options?: Object)
addEventListener
method
undefined
The function send
is resposable with triggering events by using a given name and optionaly, some information to be sent with the event.
controller.send(eventName: string, data: any, htmlElement?: HTMLElement)
undefined
The function setModel
is a setter for the model. The model will be attached to the controller, so after that one-way and two-way binding can happen.
controller.setModel(model: Object)
The proxified model


ABOUT SANJEEVANI
WHY SANJEEVANI?
We believe it's the responsibility of a student not just to pursue his education but also to make the society he is in better. As the name suggests we aim to render a new life to the needy sections of the society and act as an oasis of hope for the needy sections of the society.
OUR INITIATIVES
Go Green!
Reduce Reuce Recycle has always been the mantra to sustainability. We sanjeevani believe in making ourselves eco-friendly before asking others to do. A campaign to minimize the use of flex and other platics within the campus is the best way to begin Promote use of eco-friendly products such as paper pen and bags both within and outside the campus is a need of the hour A tree planting drive within and outside the campus we aim to plant and take care of 50 trees in total
Wheels of hope
Not everyone is gifted with the ability to move around freely. We believe gifting wheelchairs could act as Wheels of hope for a better tomorrow. If not all, lives of a few could be changed
Colour the corners
Every nook and corner has been blessed with a bus stop in every locality. But the impoverished condition of those is dilemma faced by every citizen. Sanjeevani with the help of young artists have come up with an idea to revamp the grimy bus stops to a maze of art
COORDINATOR
Rakshith Sathish -<PHONE_NUMBER>
Sruthy Pradeesh -<PHONE_NUMBER>


This chapter is a collection of miscellaneous attitude related problems and deficiencies that I have encountered in various engineers.
Sometimes, if you report a problem to an engineer, his first reaction is that it cannot be a problem with his code, because he is sure that he had written correct code.
Often times, when you get a problem description, one of many components could be responsible for the problem, and it is hard to immediately point out why. If the engineers responsible for one of those components is sure that his component is correct and does not have an open mind in discussions, it makes the environemnt a bit toxic.
In such situations, I find it useful for the rest of the team to do investigation. If the root cause of the problem is in some other component, then the confidence of the engineer in question was justified. However, if on further investigation, the component in question is implicated, you should make it a point to tell the engineer that his confidence was misplaced. I have seen that after one such incident, the engineer exhibits more humility.
In a good team, all the members understand there are going to be problems with the components they have written, and they are always alert to uncovering problems in them. Even if they hear of a problem in which their component is not implicated (yet), they are always scanning how their component could be somehow responsible for the problem.
A more severe manifestation fo "Can't be my problem" is when a developer, during the process of development, starts blaming the universe (the computer) for his software not working. He would show you his (not particularly comprehensible) code, run it, display the wrong answer and raise up his hand, frustrated by the universe conspiring against him.
In such cases you should tell him that the problem always lies between the keyboard and the chair.
I once had a friend whose writing Java code, and the compiler was throwing a single compilation error that some class did not define a certain function which was being used. The class under question was the standard Java String class. My friend looked at the API refrence available online and found that he was correctly spelling the function name. He tried other functions of the class and they were working as expected. At this, he started he came up with a weird hypothesis: "The code for class String has been written by an intern at Sun Microsystems, and that intern has made a typo while writing the function. Thus, while the documentation is correct (we did not know then, in our sophomore years, that documentation can be generated automatically from the code and code annotations), the actual function name as a typo in it." Then, my friend started trying various misspellings of the function name, hoping that he would uncover the actual function name used by the hypothetical intern.
Several hours later of chasing the intern, the problem was found to be between the keyboard and the chair: my friend was making a spelling mistake in his code.
While some engineers throw up at the first hurdle, sure in their minds that "it is someone else's problem", there are others who keep on working, suffering silently without making progress.
If something is not happening within reasonable time, you should report to your manager about it. This is different from blaming someone for the delay. You are simply informing that something is taking more time than expected. Perhaps your manager may know a trick to solve the problem quickly. Or the problem may be inherently difficult in a way that was overlooked by everyone else, and given the new information, it may not make sense to solve the problem at all.
Don't delay giving bad news to your manager. If something cannot happen, tell that sooner so that an alternative is found sooner than later. Admitting defeat now is better than admitting defeat a few days later.
I once had a friend at University of Illinois. We often used to have arguments on various topics about life, computer science, religion and so on. Slowly I started to feel that I am losing most of the times. I started to observer our arguments more closely. I found that my winning rate was pretty good. However, in the arguments in which I won, he gave up quickly (as soon as he realised he was losing), and thus those arguments lasted for a short time. However, I always gave him a good fight, even when I was losing an argument. Hence, in the long run, most of the time I was engaged in a losing argument. Thus, it appeared that I mostly lost the arguments, when in reality the record was pretty even.
Cutting your losses is a good strategy. Give up soon when it is clear that you cannot win. But then you should know how to distinguish between the cases when the situation is hopeless and the situation where you just need to fight a bit more. And that can come only with experience.
One difference between good and not good engineers that I have seen is that not good engineers "max out" too soon.
I once interviewed an android developer for our company. When asked why he wanted to leave is current company, he replied that "there was nothing left to do" in the android app of the current company.
That was clearly untrue: the app was mediocre at best: its look and feel could be improved, its usability could be improved and its performance could be improved. However, the candidate thought that there was nothing else to be done, since a raw product was out in the place.
On the other hand, we had a super engineer at VMware who, every few days, would submit a new change to the Virtual Machine Monitor (the core virtualization code). Each checkin would improve the performance of our product in a minor way, and he would submit comparision like this:
| Earlier | Now | |
| Component A | 12.2 | 9.6 |
| Component B | 5.6 | 5.9 |
| Component C | 2.1 | 2.1 |
| Component D | 0.8 | 0.9 |
| Total | 20.7 | 18.5 |
The lesson to be learnt it not be satisfied with status quo. A good engineer is always on lookout to improve the quality, performance, debuggability, maintanability, deployability, reliability of his systems. He never maxes out.
Most human endeavours are so vast that no one person, nor even a team consisting of great persons can be perfect. The more you learn, the more you realize about your ignorance and folly. That's why they say that while doing PhD, you learn more and more about less and less and finally you know everything about nothing.
This holds so much true in Sciences. The nature is so vast and so mysterious that while very smart and hardworking humans have worked on uncovering its mysteries since the dawn of the civilization, a complete understanding is no where on the horizon. Theroems like Godel's incompleteness theorem actually seem to suggest that it is not possible for us complete understand the universe. Who knows we are all a simulation in a giant computer program and we can never understand our true nature.
As in Science, so in Computer Engineering. Several generations of bright computer scientists have developed computer engineering to the discipline that it is now. Since the underlying hardware changes fast (faster processeors, more memory capacities, larger bandwidths, mobile devices), the best practices to develop software change too. Even for bright people it is not possible to operate in a perfect way. And most of, by definition, are mediocre.
Despite our limitations, we need to write code and build systems that work. How are we supposed to do this?
We should try to make our systems what Nassim Nicholas Taleb calls "Antifragile": systems which become stronger from shocks. In other words, we try to make our systems such that what does not break it makes it stronger.
The way we do this is by learning from our mistakes.
Did you find a bug in your software? Don't just fix it and move on. Analyze why the bug happened. Is it because the developer missed something while implementing a new feature? Then write a test case for it, so that a similar mistake does not happen in future.
Sometime, the bug may have happened because of duplicate code: while developer modified the code at one place, he forgot to modify it at the other place. This is a great reason to do the code deduplication now.
While implementing a new functionality, you may realize that the code is not designed well. If it were designed some other way, new functionality could have been implemented more easily. Well, take time and do it right way.
Sometimes, some incorrect behavior may persist for days. It may be related or unrelated to the correctness of the code, but could be a lapse in monitoring. In that case, set up the relevant monitoring. Set up proper charts and alarms to ensure that you know of the incidents soon after they happen.
While Ostriches are needlessly vilified by the myth that they bury their head in sand in the face of danger, to "avoid" the danger, ostrich attitude is a common attitude affecting many of us.
I once opened a closet in my home and found a bunch of cockroaches in it. I did not open again. Many times, we are aware of the problems that might arise, but we are too afraid to check, because it will be a lot of work to fix the problem. So, we just wait for the problem to exacerbate and start harming us in visible ways before we are reluctantly forced to find some solution.
A wakeful engineer fights against this tendency. He does not hestitate to cross check if he thinks there can be problems in some component, and solves them in a timely way. A stitch in time saves nine.
A framework which is to helpful in improving from the mistakes is to think in terms of proximate and ultimate causes.
As discussed earlier, we had a Python function in our code
def some_func(param1, respect_frequency=False): #some functionality. By default, frequency will not be respected.
Now, one developer, while coding up a feature which required him to use some_func(), completely forgot that he needed to make sure that frequency needs to be respected. He was so engrossed with the intriciacies of the code that he was writing that the through of respecting the frequency did not come to his mind. He simply called some_func() with one argument as one other module was doing, and everything seemed to be working. It was only in production that we found out that the frequency was not being respected.
Now, let us analyze why did the problem happen? The proximate cause is that the developer did not pay full attention to the code that he was writing. He should have paid attention to the default values of various arguments and seen if default values were suitable for him.
But the ultimate cause is that using default values in this situation was a bad practice. Such a setting should not be hidden in defaults.
When we encounter the bugs, we should not only try to solve the proximate cause of the bug (like using the correct value of the parameter in the above example), we should also solve the ultimate cause of the bug (perhaps making the particular value required, rather than optional, and taking a look whether you are using optional values at many places where you should be using required values)
In other cases, the ultimate cause may lie outside tech. In one instance, I found that a particular component was broken for a long time and we did not detect it.
The proximate cause of us not detecting the problem for a long time was that we had not set up any monitoring or alarm on the component. However, the ultimate cause was that no one owning the component. The developer who had written the component had left the company, and the developer who took knowledge transfer from him never really internalized the fact that the component was now his responsibility. The reliability of the component increased when it was made explicit to the engineer that the component was his responsibility.
STEM (Science, technology, engineering, mathematics) are different from the fields like religion or politics in that there is, for the most part, an objective reality in STEM which the pursuers of STEM like to strive towards. This is unlike religion, politics or to varying degree, other softer disciplines where "correctness" is often determined by how many people believe in what you say, and strongly they belive in some things.
(Bottom note) Note that the notion of "objective reality" is debatable though. At the deepest level, Quantum Physics tells us, there is no objective reality, it is all a cloud of probabilities.
Presence of an objective reality is very consoling for truth seekers. In various other fields you need to convince people that you are right, and convincing is an art of pursuation, and your position need not be backed by truth. Thus, populists rise to the highest echelons of power. However, by no means is finding the objective truth easy.
Consider medicine. Till some years ago, they used to think that meat is very good for human health, but slowly vegetarianism and even veganism is gaining ground. They used to bad mounth egg yolk, but now they say it is okay to eat it.
In Physics, they thought that classical mechanics was as all that there was to discover, and then it was a matter of calculation to calculate the state of the world at any given time. But then we discovered quantum mechanics and found that the reality is much more complicated.
Despite the hits and misses of the science, seems to be continually making improvement. The sum total of our knowledge keeps on increasing and as time passes, we understand the world around us in a better way.
As in science, so in systems development. Computer systems, starting from microprocessor and instruction set architecture, all the way up to opearating systems and compilers and network protocols, are incredibly complicated. It is not possible for you to have more than a superficial knowledge of most of the stack. What you should have a is a very simple mental model about what the things that you work with. When required, you should refine your mental model with finer details. At times, new facts will emerge which will be in conflict with the mental model that you have.
Any new software or technology that you come across should augment your mental model.  That way you will be able to understand new technology in a proper context.
For instance, you can have a mental of model of a computer as a machine which executes instructions. Each instruction is about doing some arithmetic on numbers. We have discarded all I/O in above mental model, but it suffices as a basic model.
 For instance, disk access is slower than memory access because memory is located closer to the processor. C is faster than Python because being dynamically typed, the interepretor needs to infer the type before executing every instruction, which slows it down.
Mental models can help you like they helped me in the following case. There was a time when I was not familiar with columnar dateabases. We used to store our data in MySQL. We started facing scaling challenges with our OLAP workloads and we discovered columnar databases, in particular, Vertica. On a simple proof of concept, we found vertica to be blazingly faster compared to MySQL. So, now I needed to form a mental model about why Vertica is way faster than MySQL.
On reading a few papers, I found that Columnar databases store data column wise, rather than row wise, which is what is done in usual, row oriented databases like MySQL. Thus, for the queries which access only a few columns, we avoid reading other columns, leading to better performance. Further, values in columns are similar to each other (all are strings, or all are integers), and can be efficiently compressed, leading to further performance gains.
Given this mental model, I was able to design the DB schema, specificy compression algo for various columns (like, run length encoding would be very suitable for the columns in which value stored is usually 0), and achieve great performance gains.
Once Amazon sales people came to our office and tried to sell us redshift. Redshift too is a columnar database. They claimed that redshift would be 5x faster than vertica. I asked them why that is so. I was ready to accept their claim, but their claim had to fit in my mental model. They just kept saying the redshift is faster. I researched about redshift, but could not find a fundamental difference. Vertica was a well known name in columnar databases, so it was hard to believe that some other company can outperform vertica so drastically.
Anyway, since Amazon sales people were insistent, they were able to make use do a proof of concept study on our real workloads. We found redshift's performance to be around 50% of that of vertica. Redshift people asked us for a slice of our workload so that they can do the study themselves. We complied and they never returned back.
What saved me was the mental model. I tried to fit and redshift in my mental model, and when I could not, I had to discard it.
There have been other scenarios where the mental model has failed me. I could not fit something, discarded it, only to find later that there was a way to neatly fit the new phenomena in the mental model. That is fine. You continually revise your mental models in light of all the facts that you know.
As programmars, we write a lot of code. With time, the code base grows and various systems that we have written interact with each other in ways which overwhelm our abilities to comprehend.
When things don't work as planned, or there are unexpected problems, we need to do detective work to find out the source of the problem. Many a times, even otherwise good engineers have a hard time doing this.
Humans are ingrained with certain biases, which hinder accurate redressal of problems. Here are a few of them:
Firstly, there is Jumping to the conclusion fallacy. We sometimes form unsubstantiated opinions about why things are the way they are, and start blaming incorrect things.
At VMware, I worked with two teams: Virtual Machine Monitor (VMM) team and Virtual Machine Kernel (VMKernel) team. When new type of virtualization technology, called NPT (Short for nested page tables) was introduced, VMM team needed what is called "large pages" to maintain enhanced levels of performance. It was the duty of VMKernel team to provide large pages. It was not very easy for VMKernel team to provide large pages: they put only a small effort in providing large pages.
When performance measurements were made, workloads were running signficantly slower than earlier, and we could see stats that number of large pages being used was small.
VMM put team put pressure on VMKernel team to provide more large pages, and VMkernel team reluctantly worked to improve the availability of large pages, but they could not increase it by much. The algorithm to drastically available the availability was complex and they were shying away from it. In private they complained that the number of large pages they were providing ought to be enough. Performance of workloads being deteroritated, there was perssure on VMM team to improve it, and there were noises that they be given control of VMKernel code if VMkernel engineers are reluctant to make desired changes.
The two teams were nearly siloed, and had limited communications (partly the location was to blame: the two teams sat in different offices). I was a sort of intermediary and could appreciate the concerns of both teams: VMM team needed more large pages to increase performance, and VMkernel team argued that if its minor efforts were not yield measurable benefits, how are we sure that major efforts will. I did an investigation and found a startling fact: VMM was unable to use the large pages it was being provided. For reasons that had escaped our attention till now, VMM was "breaking" the large pages that were being provided to it. On this news, VMkernel team sighed with relief, and VMM team became busy with strategies to avoid breaking the pages.
Why did all this happen? The reason is that everybody, including VMkernel team, jumped to the conclusion that deterioration in performance is because of unavailability of pages. In midst of all the heat and several tasks to be done, it is tempting to take such shortcuts. What we should have done is, to get an estimate of how many large pages are required for a good performance, and then check if VMkernel is giving those many large pages. That would have avoided a catch-all excuse to blame VMkernel for any performance problems.
The lesson is that we our initial guess is only a hypothesis, which needs to be validated. You cannot conjure up something and start believing in it. There should be some validation that your hypothesis is indeed correct. Confusing hypothesis with validated statement should be avoided.
When you solving problems such as the one outlined in the previous section, you need to scrutinize each of your statements, as to wheter it is:
A hypothesis: which is something which you think can be true, or strongly believe to be true, but has not been supported by other facts. While solving a problem, there could be multiple competing hypotheses.
An assumption is something which you take for true with investigating, often even without thinking that it could be false as well. Sometimes, while solving a problem, you are unable to come up with any hypothesis to explain the phenomenon, or else non of your hypotheses are able to stand the test of validation, you should start questioning your assumptions.
Suppose someone reports a bug in your system, and you are unable to find the cause of the bug, you should start questioning various assumptions: (a) Is the reporter mistaken? Can he reproduce the bug? (b) Is the reporter using the software in a correct way? There are many cases, where this assumption breaks down: the problem is really a problem of understanding and not a problem of software.
When a hypothesis is supported by some facts, it becomes "validated". Then it becomes a conclusion, or a validated fact.
Epistomologically, there are various problems with above thinking: how can be sure that a hypothesis has been validated, how can you enlist all your assumptions, and so on. But we are not philosophisizing an air tight way to acquire knowledge, we only want to solve the problems at hand in an efficient way.
Firstly, there is is Post hoc fallacy: Since event Y happened after event X, event Y must have been caused by event X. The problem is just before Y, there are so many events that happened. You will usually have an incomplete picture of what all happened before Y. Thus, you would be biased towards those activities which you did.
You have to start somewhere, so it is okay to have the hypothesis that "X has caused Y". However, before you start taking actions, you need to validate your hypothesis.


About Me
I am working from artist from an web developer. Since I loved games and apps, I want to make a huge record and do something for community.
I am currently attending the coding boot camp at Columbia and soon will graduate in April. I would like to create powerful content through learning.
I want to expand my knowledge of math and use them with technology. I would like to enter into the fields and create my own league.