text:
AROUND ROCHESTER
ROC Summer 2019
NY Lake Flooding 2019
Rochester PD 200th Anniversary
"Weight of the Badge" (Full Special)
Seen On AirFind more details about upcoming events here.
Voter's GuideSpectrum News is your place for election coverage.
WATCH NOW:See how our small everyday decisions have a tremendous impact on the quality of our lives in "Exploring Your Health."
Weather AlertsView full list of weather alerts.
Wendy Mills
By Spectrum News Staff Rochester
PUBLISHED 12:00 PM ET Apr. 09, 2019 PUBLISHED 12:00 PM EDT Apr. 09, 2019
Working and living in her hometown, Wendy is the first face you see reporting in the mornings. A West Virginia University graduate, Wendy received her degree in journalism and, to this day, is still a proud and true Mountaineer.
Wendy joined the Spectrum News team 18 years ago after working in Atlanta for seven years. Prior to this, Wendy kicked off her reporting career as a Spectrum News sports intern – when the opportunity arose for her to return to the Spectrum News team, she knew it was something she couldn't pass up. Winner of the "Best Sports Programming" award, this former three-year sports reporter has done it all, including being an anchor for Gwinnett News.
When Wendy isn't out in the field chasing the latest stories, you can find her enjoying family time with her twin boys. They love spending the summer out on the water and at the family fruit farm and winery.
Follow her on Twitter or email her here.

redpajama_set_name: RedPajamaCommonCrawl


When it comes to keeping your face and neck warm while outside, nothing beats a scarf. A scarf can also act as an extra head covering if it starts to snow or rain lightly outside if you are without a hat or hood on your coat.
If you can't find a scarf in the closet because the kids decided to decorate snow people outside, you can make a few extra scarves right in your sewing room.
Here are several scarf tutorials that you can make using a sewing machine or crochet needles. I've also included several projects that don't even require any sewing.
This fun no-sew fleece rainbow scarf is a great project for a beginner or young child. The soft fleece will feel comfortable around a child's neck as they will want to wear it everywhere they go.
You can even make the scarf more personalized by having the child pick out their favorite colors and decide on the color pattern.
There are times when you have to hold your small credit card holder, phone or keys in your hands because you don't have outer pockets on your jacket. Here is a hidden pocket scarf tutorial that will show you how to make a pocket to store your items.
You won't lose your things ever again as they will be safely tucked away and out of sight.
This beautiful fringed blanket scarf looks complicated. Yet it only requires a little bit of sewing as you'll learn how to make a decorative fringe just by pulling the bottom threads out. You'll want to make several in different colors and patterns.
An infinity scarf is one that doesn't have two ends. Instead they are sewn together into one piece of circular fabric that slips over the head.
This flowery infinity scarf tutorial will show beginners how to make one in a few simple steps. This scarf uses lightweight materials as you can use it during the early spring and late fall while doing outdoor chores.
Don't blink! You will miss the owls watching you from the confines of this scarf. The crochet owl scarf will allow you to practice your crocheting skills. On the bottom of the scarf, you will create owls with pompoms as their legs. This chunky project can become a great gift for friends and family.
This infinity scarf will keep you warm and stylish at the same time. The roses' crossing scarf is another crochet project as it has a bit more detail than the others. Yet the end result is just absolutely beautiful with the type of pattern that was chosen.
Another amazing tutorial from Sarah! Feel the luck of the Irish with the crochet shamrock scarf. Make your friends green with envy when you walk down the street with this scarf -- until you make some for them too!
Sometimes, you just want a large fluffy scarf to bury your head into when the wind chill goes down outside. You will feel nice and toasty with this fluffy clusters crochet infinity scarf tutorial.
For a more lightweight and elegant scarf to wear on dates, dances, and other formal events, you want to wear the Solomon's knot scarf. This scarf tutorial has a lacy appearance that makes it look luxurious and fancy.
Here is another great beginner project you can crochet when you have a free weekend. The chevron infinity scarf is colorful and festive as it has a unique zigzag design. It adds just the right amount of style without looking too flamboyant.
Check out these 10 scarf tutorials that will have you creating those wonderful neck wraps to keep warm in the chill weather. You can make them for yourself or every member of your family. Don't forget to make a few extra as gifts for your friends.


I revisited my first Berkley Stairway experience. My plan is get more involved with the stairs in the bay area and not just through social media. I believe that spiritual awareness starts on stairways. In the meantime, I changed up my formula and am doing more videos. Pics are still included in the links.
My favorite part of this hike was towards the end. Witnessing all kinds of animals including geese in a home alongside a path. The thing I love about East Bay Walks is there always seems to be something unusual or interesting next to these stairs or paths. My guess is that proud neighbor want to decorate their backyards for the walkers.
Started on Claremont and The Uplands. Was surprised to see that the 36 stairs on The Uplands was closed off. I trudged up anyways and headed right on Hillcrest.
''The Steps'' is the name of the stairway on Hillcrest. 65 steps down.
On Eucalyptus Rd, headed right and in a loop until reaching Hillcrest Rd again.
The tennis court is Across the street from is the Crossways. 49 steps plus a path to lead me to Roselyn Court.
Turned left onto Chabot Crest, left on Manor Crest, and then left uphill on Raonoke Rd. There are a plethora of massive homes on this road.
Made it back to The Crossroads again and there is a path just across the street from the first Crossroad. Took that downhill until landing on the Uplands.
Turned right and walked on for a block. Parkside Road reaches a dead end and there is a green park, nut I passed it and turned right on Parkside.
The ''cutoff'' features about 70 stairways and glamorous plants. After the culmination of these steps, just turn right for a bit and the ''Oakridge'' Steps are next. These 125 steep steps bring you up to a fine view of San Francisco and the bay.
Turning left on Oakridge Rd brings you to Oakridge Path. I saw ducks and roosters on this path, it was intriguing and I left a video for you.
Albany Hill was a surprise. It was a shorter walk, but very rewarding. A total of 2 stairways and a park with views of Angel Island. I began my walk on Jackson St and San Pablo Ave. Turned a sharp left as Washington met Cerrito Ave and trotted up hill for a bit. My first stairway is located on Washington. 100 steps up. As I culminated up to the top I appreciated the views of San Francisco, behind the freeway 80. The stairway was very impressive a multiple flights of 100 steps to land me on Hillsdale Ave.
Turned left as the road curved and took the road all the way to Albany Hill Park. Albany Park is filled with an abundance of wild chirping birds and tall eucalyptus trees. I enamored the views and sat down on a bench and was intrigued by the sighting of an adult swing set. I sat down and drank some water and just listened to birds chirping. I felt like I could spend an eternity there, it was that enthralling. After a few moments, got up and headed uphill. The hill was in fact very steep and was great exercise, perhaps even more challenging than the stairway. I kept on trotting uphill until it flattened out on the northern end.
Climbed down to Taft Ave. Taft Ave took me back south again to Hillside Ave. Turned sharply left and found my next stairway very quickly. This particular stairway was 55 steps down. Nothing special about this stairway, but it did add more stairs to this walk. I then was deposited on Jackson St.


This online service is provided to allow local citizens easy access to information about their community.
The images and data provided are for information purposes only. The data provided is not a legal representation of the features depicted and any assumption of the legal status of this data is hereby disclaimed.
If you have any problems with these maps or need an official copy contact Roy Lilja / Engineering or phone 850-265-5989.
The information contained in these pages is NOT to be construed or used as a "legal description".
Lynn Haven, PCBay GIS, their agents, and employees make no warranty as to the correctness or accuracy of the information set forth on this media whether express or implied, in fact or in law, including without limitation the implied warranties of merchantability and fitness for a particular user. Any errors or omissions should be reported the City of Lynn Haven.
In no event shall the City of Lynn Haven be liable for any direct, incidental, exemplary, special, reliance or consequential damages, or pecuniary loss regardless of whether they were advised of the possibility of such damages. Resale of any content contained herein is strictly prohibited.


text:
Q: Appropiate std container for (only) insertion and iteration Which will be the std container to use if I only want to insert a lot (10.000-100.000) of small (int,floats and doubles) items and then iterate over all of them (order is not important)? (Note: the number of items is unknown at the start)
I have noticed that unsorted_set, list and forward_list have O(1) for insertion and O(n) for iteration. Is there any other which also has that complexity? Which one of those is the fastest? (if there is significant differences in memory use i will also be interested in knowing about them.
(I'm only interested in std containers, not Boost or other libraries ones)

A: My bet is std::vector with a call to std::vector::reserve().

A: vector might be a good choice. It is same as array in memory consumption. O(1) insertion(If you are inserting at the end) and O(n) iteration. It's simplest of containers and is a good choice if deletion or random insertion is not on your list.

A: All of the classes in your question have optimal complexity for what you want, but std::vector may be faster, in particular if you know how many elements you want to insert approximately, i.e. you have an upper bound available.
I suppose that performance may differ depending on your compiler, compiler version and the number of elements you want to insert. Sorry for not providing more specific help.

A: Well according to me it depends on what you want to do with the elements in the container.

*

*If you want to insert elements at some positions, then list is the fastest because arrays and vectors have to move all the items after the insert position, one step forward.

*On the other hand, if you want to access an item at a position, then arrays and vectors are faster.

Moreover, other than these there are container adapters as well like queue, stack, priority_queue etc.
So again, it all depends on your implementation and what you want from the container of elements.

redpajama_set_name: RedPajamaStackExchange


text:
Q: How to Write a conditional statement in postman based on a value in an array Within each element in an array, there may or may not be a value that I need to grab.  If the value is not in one element, I want to go to the next element to look for it.  I'd like to know how to write the statement to do that in my Postman test.  I already know how to get the values when they exist, but I want to go through each element until I find what I'm looking for to put in the variable.
I've googled how to write the code, but I'm new to this and I'm having trouble.
var jsonData = JSON.parse(responseBody);
postman.setGlobalVariable("Date", jsonData.array[0].field[1]);
if (postman.setGlobalVariable("Date", jsonData.array[0].field[1]) === ???
else (postman.setGlobalVariable("Date", jsonData.array[1].field[1]);)
Hi,  Here is a sample response (thanks!):  You can see the first element does not have the value, "NeedTheseDates" that I need to grab, but the second element does.
"SampleArray": [
        {
            "Date": "2019-05-18T00:00:00.0000000-04:00",
            "NeedTheseDates": [],
            "Anything": "data",
            "OnlyDate": "2019-06-03T00:00:00.0000000-04:00"
        },
        {
            "Date": "2019-06-16T00:00:00.0000000-04:00",
            "NeedTheseDates": [
                "2019-07-02T00:00:00.0000000-04:00",
                "2019-07-03T00:00:00.0000000-04:00",
                "2019-07-04T00:00:00.0000000-04:00",
                "2019-07-05T00:00:00.0000000-04:00",
                "2019-07-06T00:00:00.0000000-04:00",
                "2019-07-07T00:00:00.0000000-04:00",
                "2019-07-08T00:00:00.0000000-04:00",
                "2019-07-09T00:00:00.0000000-04:00",
                "2019-07-10T00:00:00.0000000-04:00",
                "2019-07-11T00:00:00.0000000-04:00",
                "2019-07-12T00:00:00.0000000-04:00"
            ],

A: Not very sure about the problem statement. So trying all combinations
If there are only two cases where the value could be (index 0 or 1)
let someDate = jsonData.array[0].field[1] === '???' ?
    jsonData.array[0].field[1] : jsonData.array[1].field[1];

postman.setGlobalVariable('Date', someDate);

If the length of array is dynamic but the date you are looking for in field is always at index 1
let someDate;

jsonData.array.forEach((element) => {
  element.field[1] === '???' && (someDate = element.field[1]);
});

postman.setGlobalVariable('Date', someDate);

This will traverse all the items irrespective of whether it finds the correct element before. You can use some to stop that
let someDate;

jsonData.array.some((element) => {
  if (element.field[1] === '???') {
    someDate = element.field[1]);
    return true; // this will stop the loop
  }
});

postman.setGlobalVariable('Date', someDate);

If the length of array is dynamic and field is also dynamic
let someDate;

jsonData.array.some((element) => {
  element.field.some((oneDate) => {
    if (oneDate === '???') {
      someDate = oneDate;
      return true; // this will stop the inner loop
    }
  });

  if (someDate) {
    return true; // this will stop the outer loop
  }
});

postman.setGlobalVariable('Date', someDate);


I had never heard of a chocolate cobbler till I found JAP. I fell in love ! I have tweaked this recipe till it became, in my opinion, THE ultimate chocolate cobbler. My hubby loves it and I'm sure your chocoholics will too ! Great with a scoop of homemade vanilla ice cream.
Slice stick of butter into about 6 slices and put in 9x13 baking pan (I used a glass pan) and put in oven to melt.
You will need two (2) bowls, a medium and a large.
The batter will go in the large bowl. To each bowl add the dry ingredients and mix well to remove lumps. (make sure to fluff your flour BEFORE you measure it) Now set aside the medium bowl with the topping mix in it.
Put water on to boil. To batter bowl, add in buttermilk, walnuts and vanilla extract and hand mix well. If it is too thick add more buttermilk. You want a thicker pancake batter consistency .
NOTE: You can use milk but you must reduce amount to about one (1) cup.
When butter is melted, remove pan from oven. Now carefully pour the batter into pan. I will pour in the middle then around the edges. DO NOT STIR !!!
Now spoon topping mix evenly over the batter. Try to work quickly here.
Carefully and slowly pour the boiling water over the top.
Bake 15 minutes then add * pecans(optional) and return to oven and bake 12 - 15 more minutes. Let sit for at least 20-30 minutes before serving. Great with a scoop of vanilla ice cream !


Go team? Kanye West ended his controversial Twitter rant on Wednesday, April 25, by expressing support for Tristan Thompson.
The "Famous" rapper's support for the Cleveland Cavaliers comes at a tumultuous time as the team's Tristan Thompson recently cheated on West's sister-in-law, Khloé Kardashian, days before the pair welcomed their first child, daughter True Thompson.
West's wife, Kim Kardashian, supported the Revenge Body host while she gave birth. Sister Kourtney Kardashian and family matriarch Kris Jenner were also spotted in Cleveland after True's arrival.
This is not the first time that West has voiced his support for one of Khloé's former flames. Earlier this month, the "Gold Digger" rapper praised ex-brother-in-law, Lamar Odom, who was married to Khloé from 2009 to 2013.
Odom was hospitalized in October 2015 after he was found unconscious after overdosing in a Nevada brothel. He returned to the spotlight in February 2016 by supporting West at his Yeezy Season fashion show release party in New York City.


Strategy, of course, lines up the arenas and markets in which a company will compete, proclaims a targeted customer base, and asserts the matters by which the company will seek to differentiate itself. Chandler described how the successful progress of mid-twentieth century General Motors can be attributed to the strategic foresight of Alfred P. Sloan, who laid out the famous divisions of GM: Chevrolet, Pontiac, Oldsmobile Buick, Cadillac – listed here in order of pricing segment and lined up with market segments — so that each division could seek to please an intended customer segment.
This is structure following strategy. Chandler showed that the need to reorganize — or to "restructure" — is triggered by a strategic shift driven by new technologies or market changes.


text:
Neminem captivabimus nisi iure victum (łac. nikogo nie uwięzimy bez wyroku sądowego) - immunitet nietykalności przyznany szlachcie przez Władysława Jagiełłę przywilejami z 1425, 1430 i 1433 r – zasada gwarantująca w Rzeczypospolitej nietykalność osobistą szlachcie, a więc zapewniająca, iż posiadający takie prawo nie zostanie uwięziony bez wyroku sądowego.

Zasada ta została pierwotnie sformułowana w przywileju nadanym przez Władysława Jagiełłę w Brześciu Kujawskim 25 kwietnia 1425, jednak nie wszedł on w życie. Ostatecznie wprowadzono ją przywilejem jedlneńskim z 4 marca 1430 i krakowskim z 9 stycznia 1433.

Prawo nietykalności osobistej zostało wówczas nadane posesjonatom. W 1447 przywilej ten został rozszerzony na szlachtę litewską (bojarów). Na mocy ustawy Prawo o miastach (1791) przywilej ten rozszerzono na mieszczan z miast królewskich posiadających majątek nieruchomy.

Konstytucja Królestwa Polskiego z 1815 w art. 18 głosiła, że prawo neminem captivari permittemus nisi iure victum stosować się ma do wszystkich mieszkańców wszelkiego stanu.

Zobacz też

 Habeas Corpus Act

Literatura
 Andrzej Nowak: Dzieje Polski, tom 3, 1340-1468, Królestwo zwycięskiego orła, Kraków 2017, wyd. "Biały Kruk"
 Encyklopedia Britannica: "Neminem captivabimus - Polish law" - zob.: https://www.britannica.com/place/Poland/The-states-of-the-Jagiellonians#ref396761 (dostęp: 29 sty 2023)
 Władysław Kopaliński: Słownik wyrazów obcych i zwrotów obcojęzycznych, Warszawa 1989, wyd. XVI,"Wiedza Powszechna"
 CDP (Codex diplopaticus Poloniae), t.I, nr 194
 Robert I. Frost: Oksfordzka historia unii polsko-litewskiej - Powstanie i rozwój 1385-1569, tom I, wyd.pierwsze, Poznań, 2018, "Dom Wydawniczy Rebis"
 Norman Davies: Boże igrzysko - Historia Polski, Kraków 1990, wyd. II, "Znak"
 Maciej A. Pieńkowski: Kogo dotyczył przywilej zwany neminem captivabimus nadany przez Władysława II Jagiełłę 4 III 1430 r. w Jedlni?, "Teka Historyka", z. 50 (2015)

Przypisy

Linki zewnętrzne
 Przywilej jedlneńsko-krakowski
 Kogo dotyczył przywilej zwany neminem captivabimus nadany przez Władysława II Jagiełłę 4 III 1430 r. w Jedlni?

Historia Polski 1386–1454
Przywileje szlacheckie w historii Polski
Przywileje wydane przez Władysława II Jagiełłę

redpajama_set_name: RedPajamaWikipedia


text:
<openerp>

    <data noupdate="1">

        <record id="mail_template_hotel_reservation" model="mail.template">
            <field name="name">Reservation-Send by Email</field>
            <field name="email_from">${(object.warehouse_id.partner_id.email or '')}</field>
            <field name="subject">Hotel Reservation Detail</field>
            <field name="partner_to">${(object.partner_id.id or '')}</field>
            <field name="model_id" ref="hotel_reservation.model_hotel_reservation"/>
            <field name="auto_delete" eval="True"/>
            <field name="body_html"><![CDATA[

Hello ${object.partner_id.name},

This is to confirm your booking for a room at the ${object.warehouse_id.name} Hotel,
                   % if object.warehouse_id.partner_id.city:
                   ${object.warehouse_id.partner_id.city},
                   % endif
                   % if object.warehouse_id.partner_id.country_id.name:
                   ${object.warehouse_id.partner_id.country_id.name}.
                   % endif
                   On behalf of the hotel, we would like to express our gratitude to you for choosing our services.
                   Please find all the details regarding the confirmation of the reservation on Date ${object.date_order} are listed below:

                  Details :

                  Name Of Guest : ${object.partner_id.name}

                  Date Of Arrival : ${object.checkin}

                  Date Of Departure : ${object.checkout}

                  Reservation Number : ${object.reservation_no}

                  Number Of Persons : ${object.adults} Adults and ${object.children} Childrens

                  Rooms Rates Per Night :

                            Room No
                            Amount

                        %for line in object.reservation_line:
                            %for line2 in line.reserve:

                                    ${line2.product_id.name}
                                    ${line2.product_id.list_price}

                            %endfor
                        %endfor

We would appreciate it if you could let us know in case there are any changes in your schedule or program.
In case you require check-in facilities at an earlier time due to flight changes or any other reasons, kindly inform us.
We are sure that you will find our services satisfactory. In case you need to cancel your reservation,
please Reply or Call us within 24 hours before the day of the check-in.
We look forward to providing you quality services at our hotel.

Kind Regards,

Reservations Team

[${object.warehouse_id.name} Hotel]

% if object.warehouse_id.partner_id.street:
${object.warehouse_id.partner_id.street}

% endif
% if object.warehouse_id.partner_id.city:
${object.warehouse_id.partner_id.city},

% endif
% if object.warehouse_id.partner_id.country_id.name:
${object.warehouse_id.partner_id.country_id.name},

% endif

% if object.warehouse_id.partner_id.website:
${object.warehouse_id.partner_id.website}

% endif
    		 ]]></field>
</record>

        <record id="mail_template_reservation_reminder_24hrs" model="mail.template">
            <field name="name">Reservation Reminder Before 24hrs</field>
            <field name="email_from">${(object.warehouse_id.partner_id.email or '')}</field>
            <field name="subject">Hotel Reservation Reminder</field>
            <field name="partner_to">${(object.partner_id.id or '')}</field>
            <field name="model_id" ref="hotel_reservation.model_hotel_reservation"/>
            <field name="auto_delete" eval="True"/>
            <field name="body_html"><![CDATA[

<left>Hello ${object.partner_id.name}.</left>

<left>Greetings from ${object.warehouse_id.name} Hotel.</left>

This email is for reminding you that the Reservation at the ${object.warehouse_id.name} Hotel.
                   % if object.warehouse_id.partner_id.city:
                   ${object.warehouse_id.partner_id.city},
                   % endif
                   % if object.warehouse_id.partner_id.country_id.name:
                   ${object.warehouse_id.partner_id.country_id.name}.
                   % endif
                    Your checkin has been confirmed on Date ${object.date_order} .
                   Please find all the details regarding to the reservation as listed below:

                  Details :

                  Name Of Guest : ${object.partner_id.name}

                  Date Of Arrival : ${object.checkin}

                  Date Of Departure : ${object.checkout}

                  Reservation Number : ${object.reservation_no}

                  Number Of Persons : ${object.adults} Adults and ${object.children} Childrens

                  Rooms Rates Per Night :

                            Room No
                            Amount

                        %for line in object.reservation_line:
                            %for line2 in line.reserve:

                                    ${line2.product_id.name}
                                    ${line2.product_id.list_price}

                            %endfor
                        %endfor

We would appreciate it if you could let us know in case there are any changes in your schedule or program.
Please inform us immediately, so that we can refund your money according to Hotel policies.
We are sure that you will find our services satisfactory. We look forward to providing you quality services at our hotel.

Best Regards,

Reservations Team

[${object.warehouse_id.name} Hotel]

% if object.warehouse_id.partner_id.street:
${object.warehouse_id.partner_id.street}

% endif
% if object.warehouse_id.partner_id.city:
${object.warehouse_id.partner_id.city},

% endif
% if object.warehouse_id.partner_id.country_id.name:
${object.warehouse_id.partner_id.country_id.name},

% endif

% if object.warehouse_id.partner_id.website:
${object.warehouse_id.partner_id.website}

% endif
             ]]></field>

  		</record>
	</data>
</openerp>

redpajama_set_name: RedPajamaGithub


Image Title: Madison Park Caledon 7 Piece Comforter Set Pertaining To Inspirations 12. Post Title: Madison Park 7 Piece Comforter Set. Filename: madison-park-caledon-7-piece-comforter-set-pertaining-to-inspirations-12.jpg. Image Dimension: 500 x 500 pixels. Images Format: jpg/jpeg. Publisher/Author: zamocowania. Uploaded Date: Wednesday - October 10th. 2018 13:49:27 PM. Category: Bedroom. Image Source: homedit.com. Madison Park Trinity 7 Piece Comforter Set EBay Pertaining To Design 6. Madison Park Laurel 7 Piece Comforter Set 9 Colors 4 Sizes Grey King With Idea 8. Madison Park 7 Piece Comforter Set Amazon Com Laurel King Blue 10 Regarding Decorations 14. Amazon Com Madison Park Palmer 7 Piece Comforter Set Plum Queen In Inspirations 5. Shop Madison Park Ventura Blue 7 Piece Comforter Set Free Shipping Intended For Plans 19. Amazon Com Madison Park MP10 922 Quinn 7 Piece Comforter Set Queen Throughout Plans. New Savings On Madison Park 7 Piece Miranda Comforter Set Beige Pertaining To Inspirations 10. Shop Madison Park Harvard 7 Piece Comforter Set Free Shipping For Plans 4. Amazon Com Madison Park Dallas 7 Piece Comforter Set King Tan Throughout Ideas 18. Shop Madison Park Novella Grey 7 Piece Comforter Set Free Shipping Inside Remodel 2.


text:
Q: Do Agile projects use abbreviated defect reporting? I'm accustomed to relatively rigid defect reporting, something like this.
Steps to reproduce:
1. Access customer manager for user Test01
2. Check "User must change password" and click Apply
3. Access login page
4. Enter user name and password
5. Click Login

Expected results:
6. Site displays user profile page (see use case 21.1.2)

Actual results:
6. Site displays error page (see attached screen shot)

I recently joined an Agile project where the defect reports look more like this:
Can't sign on with user Test01, see screenshots

In my many years of development experience, I've found that the longer defect reports serve numerous purposes, e.g. it succinctly communicated the precise problem and avoids any sort of judgmental language, and clearly represents the defect as a departure from a required behavior, rather than allowing the QA engineer to make up defects for behaviors that "seem" wrong.
Agile methodology de-emphasizes the importance of documentation.  Instead we're encouraged to pick up the phone and talk to each other.
Is this a valid application of Agile principles?  Or should defect reports be fairly verbose even when we're trying to be agile?

A: "Agile" does not mean you have no rules and processes - just that you should try to get by with as little as possible (but no less, to paraphrase the Einstein quotation). The Agile Manifesto expresses this as "Individuals and interactions over processes and tools".
In your case that means you should discuss this with your colleagues. Explain the benefits you see in having more structured bug reports, and try to find a solution that everyone can work with.
Maybe some of your colleagues have good reasons for not wanting to require more structured reports (for example, not scaring off users who want to report bugs, or because they found that the structure never quite made sense) - or maybe they just never thought about it.
You'll only find out by asking :-).

A: Bug reports from users always seem to follow this template:

I can't {action here} when I {another action here}

Or

When I {action here} it doesn't work

There's not much you can do about that. However, regardless of your development methodology, getting these kinds of bug reports from QA testers is absolutely unacceptable. When QA sends a bug report my way with that little information, I kick it back telling them to give me steps to reproduce and clearly state what went wrong and what should be happening.
If QA can only give you a bug report in one of the formats above, that means the QA tester may need some help from a developer to root out the problem, or if the tester is new to the project and not familiar with the business rules. This is acceptable, but not until after due diligence from the tester.
You can encourage users to give you more detailed bug reports, but know that you will get probably get little information. When that happens, have QA vet the bug to see if it can be reproduced, or contact the client and set up a walk through.

A: It is important to remember that Agile is not a set of strict rules, but rather a mindset of process improvement. As Dave Thomas has famously pointed out, agile is an adjective, not a noun. By definition, you can't do agile, you can only be agile.
So how an agile team handles bug reports should be based on the most effective way that the team has discovered that helps deliver working software. This could be different for different teams depending on the context they work in. If the process you are using doesn't work for you, change it. If you see a way that it could be better, change it. (If it cannot be changed, you aren't agile)
The thing to do would be to find out why it is the way that it is. Other answers here have proposed possible explanations. Talk to your tech lead or your team lead and ask how they came to the current process. Make suggestions about how to improve the process.

A: If encouraging people to frequently interrupt each other just because of plain laziness is considered Agile, then I have to admit that my understanding of Agile is seriously broken.
A sufficient problem description is not a (potentially superfluous) product documentation, rather it is a distinct collection of all facts necessary to efficiently reproduce and solve the issue.
If the description in whatever form is sufficient, fine. If that's not the case, close it as "Not reproducible, reopen if new infomation becomes available" - with one exception:  If you feel the need to investigate because of the potential risks uncovered by the issue, you may consider biting the bullet and follow-up. You don't want (e.g.) a security issue left unfixed just because of a poor description.

A: There are no rules in Agile that say you must have abbreviated bug reports -- the type of bug reports is controlled by whatever works best for your team or organization. If the abbreviated reports work for everyone, that's agile. If complex bug reports work best, that's agile too.
Agile is empowering the team to do whatever it is that lets them be the most productive, without being forced to adhere to a particular set of rules established by someone outside the team.

A: Both of your examples might be perfectly agile. It all depends on your needs, your people, and the current phase of the development cycle. Generally I've seen QA teams use screen captures and recording as a support tool to complement the bug report. Why? According to QA people, getting good screen captures and recordings is not as easy as just typing. Also there are some steps that are less prone to be represented as a screen capture, like changing configurations by command line; developers will love that you typed that, so they can just c&p it; they will hate you if you only attached a screen capture :)


text:
Could the New UBIT Fringe Benefit Tax Be Repealed This Year?
Enacted as part of the Tax Cuts and Jobs Act, section 512(a)(7) introduced a new tax on amounts employers pay for parking and transit benefits. Several bills have been introduced to repeal the measure:
S. 1282: The Preserve Charities and Houses of Worship Act. Introduced by Sens. Ted Cruz (R-TX) and Jeanne Shaheen (D-NH) and proposes repealing both the TCJA UBIT Tax on employer provided parking and transportation benefits and the TCJA requirement that organizations with more than one source of UBIT income compute their tax liability separately for each trade or business.
H.R. 1223/S. 501: Stop the Tax Hike on Charities and Places of Worship Act. Introduced by Majority Whip James Clyburn (D-SC) in the House of Representatives and by Senator Sherrod Brown (D-OH) in the Senate and proposes repealing the TCJA UBIT Tax on employer provided parking and transportation benefits. The House bill proposes to offset the cost of eliminating the tax by raising the corporate tax rate by 0.03%, the Senate version proposes to offset the cost of eliminating the tax by raising the corporate tax rate by 1%.
H.R. 1545/S. 632: The Lessening Impediments from Taxes for Charities (LIFT) Act. Introduced by Congressman Mark Walker (R-NC) in the House of Representatives and Sens. James Lankford (R-OK) and Chris Coons (D-DE) in the Senate and proposes repealing the TCJA UBIT Tax on employer provided parking and transportation benefits. This legislation was also introduced in the 115th Congress.
H.R. 513: Nonprofits Support Act. Introduced by Congressman Mike Conaway (R-TX) and proposes repealing both the TCJA UBIT Tax on employer provided parking and transportation benefits and the TCJA requirement that organizations with more than one source of UBIT income compute their tax liability separately for each trade or business.
Advocacy and Outlook. NACUBO, along with a coalition of nonprofit groups, is reaching out to staff in key congressional offices and tax-writing committees, to explain the impact of the tax on colleges and universities and pushing for repeal of the so-called parking tax.
In the coming months, Congress will be under pressure to address the federal budget deadline and the debt limit. It is possible that with growing support for repeal of the parking tax, a provision could be included with future "must pass" legislation that develops in the fall.
Take Action. We urge business officers to continue to work with your institution's governmental relations team to weigh in with your elected officials on this issue. You can find a one-pager on the issue here.
Liz Clark
Vice President, Policy and Research
What Did I Miss in Washington? December 3-16, 2019
In this edition: Congress passes legislation to provide funding for Title III schools and to simplify the FAFSA, ED proposes expanding Title IV access for faith-based groups, NACUBO produces a new HEA video, and more.
Higher Ed Tax Victories Pass With Budget Bill
An amendment to the FY20 budget package repealed the detrimental parking tax on all nonprofit organizations, among other improvements for colleges, universities, and students. The budget bill itself allocated an additional $1.3 billion to the Department of Education.
What Did I Miss in Washington? December 17, 2019-January 13, 2020
In this edition: Congressional leaders call for parking tax refund guidance, the IRS issues final rules on opportunity funds, NACUBO creates a new HEA video, and more.


Madazine : Immobility for the Millions?
What a coincidence that this matter should be referred to me only a couple of weeks after I had tinkered with one of its aspects. Heaven knows I am not a specialist in physics, though I believe I may qualify as one of the few genuine polymaths of our time. A former student of mine recently brought to my attention the parlous state of our railways. This induced me to devote a little time to that situation. I am not too proud to borrow from whatever sources are available, and in this case I leaned on US military advances, in particular the advent of the Stealth bomber, supposedly undetectable by defences. Harking back to my earlier interests, I addressed this issue for five hours, at the end of which I had devised a Stealth train, a conveyance which could pass through stations virtually unseen, thus reaching its destination on time. In due modesty, I must say that I did not get so far as to deal with the picking up of intermediate passengers at places between the two terminal points, but I shall deal with that in due course.
The above passage is merely an aside, included only because it demonstrates that my ability to grasp technological problems matches the intellectual rigour I apply when dealing with social ones. Now to the nub. Questions put before me normally meet at least one of two criteria, in that they are either urgent or important. Some have both characteristics. This matter is unusual, as it does not have either. I shall now explain why this is so.
The UK is among the most crowded countries in the world. Consequently it is a perfect place for reliable cheap public transport – so many potential customers in such limited space. But what do we have? I do not travel much, but am given to understand that we are obliged to contend with unsatisfactory and ridiculously expensive rail travel, crowded, sweaty bus stations and air services which, if we are to believe the protestations of their operators, constantly gallop a hairsbreadth ahead of gridlock. For those seeking independent solutions, we have hopelessly overburdened roads. What is to be done?
I hear that the government recently charged some old duffer with the responsibility for 'blue sky' thinking, and that his suggestion was that we should have even more motorways. What nonsense! This is a time for fundamental reconsideration. I do not have the exact figures to hand, but don't need them, as it is obvious that most journeys undertaken are discretionary, frivolous or both. I remember my time in business, when I was often told that people needed to take long trips, as there was no substitute for eye-contact. Poppycock! We have telephones, text and fax machines, e-mail and remote conference arrangements. The people I have just referred to simply wished to get away from their normal workplaces, enjoy a little unsupervised activity and run up costs they would never have incurred had they been paying from their own pockets. Would you fork out £120 or more per person for one overnight stay with breakfast, knowing that you would not be reimbursed? No? Nor would I. Only a month ago, I had B&B in a pleasant boarding house for £25. Business expenses are a huge swindle.
We do not need more transport and accommodation facilities, but less mindless pressure upon those we already have. There is capacity enough for what we need, as distinct from what we want – not my first reference to this syndrome. I suggest that instead of trying to cater for apparently limitless demand, we curtail our gallivanting to what is necessary. How many Britons go abroad each year in search of the beer and fish and chips available on their own doorsteps? It is bad enough that these drunken people are often such terrible ambassadors, but even worse that their movements cause massive pollution. Aeroplanes may fly in thin air, but they do not fly on it.
As with so many supposedly large questions, this matter is basically trivial, requiring as it does only a change of attitude. If you don't need to go anywhere, stay at home. You will find this less stressful than getting around and you will help to save the planet. I repeat my above assertion that this issue does not have either of the criteria I mentioned early, the reason being that if my advice is taken, any currently perceived element of urgency or importance will vanish as a consequence. That is all.


Miami Booker T. Washington, which just won Class 4A, would have a new neighbor in the region — defending Class 3A state champion Fort Lauderdale University School. And making the area even stronger is a potential move down from Class 5A by perennial powerhouse Belle Glade Glades Central. Cocoa and Jacksonville Bolles would remain in Class 4A, and Madison County would move up from 3A.
Schools do have the option of appealing the FHSAA to move in classification until Jan. 18. The state will finalize the districts shortly after all appeals are reviewed.
Central's 10-team district would be the largest in the state and also include Hialeah American, Homestead, Miami Springs, Miami Sunset, Miami Southridge, North Miami Beach, Reagan/Doral, South Miami and Westland Hialeah.
Class 8A would remain mostly the same, with state champion Apopka, runner-up Weston Cypress Bay and semifinalist Miami Columbus staying put. The notable exception, however, would be the move up from Class 7A by Bradenton Manatee, a team ranked No. 1 nationally earlier this season.
Central's departure from Class 6A would create a new District 16-6A featuring Miami Northwestern, Miami Carol City and Miami Norland.
Miami Jackson, a state semifinalist in Class 5A, would stay put but would be joined in its district by seven other schools, including Plantation American Heritage — the team it has eliminated from the playoffs in each of the past two seasons.
American Heritage-Delray would remain in Class 3A, as would Hollywood Chaminade-Madonna in neighboring districts. Class 2A would remain relatively unchanged as well, with state runner-up Miami Dade Christian, champion Jacksonville University Christian and Belle Glade Glades Day all staying put.
A day after announcing that former Dolphin Jeff Dellenbach would no longer be the school's football coach, Plantation American Heritage replaced him with another former local star. American Heritage named former University of Miami and NFL defensive back Mike Rumph its new coach.
Rumph, 33, guided the Patriots boys' and girls' track and field teams to state championships in May in his first season as the school's head coach. Rumph was named The Miami Herald's Track and Field Coach of the Year.
With Dellenbach also no longer the school's athletic director, Heritage also announced that the position will be filled by Karen Stearns, a 15-year employee with the school. Stearns most recently has been the school's compliance officer, dealing with matters involving the Department of Education and the FHSAA bylaws and guidelines, and has a long history and background with athletics and management.
Rumph, a graduate of American Heritage-Delray and former first-round draft pick of the San Francisco 49ers, replaces Dellenbach, who guided the Patriots to back-to-back 9-2 seasons that ended with district championships and first-round playoff losses to Miami Jackson.
It is the first head football coaching job for Rumph, a member of UM's 2001 national championship team.
Rumph played six seasons in the NFL, four of which came with the 49ers before brief stints with the Washington Redskins and St. Louis Rams. He retired in 2008.
Allan Sachs tipped in a missed shot at the buzzer, as reigning Class 4A state champion Pine Crest shocked Coral Springs Christian.
Sach's game-winning shot capped a wild finish that saw Crusaders forward Alowei Talent convert two consecutive shots, including the go-ahead basket with 7.7 seconds left to put the Crusaders up 48-47.
But Sachs was the hero as Pine Crest (10-2, No. 10 in 4A), which faces High Point Christian (N.C.) in the title game at 9 p.m. Saturday, avenged a 67-42 loss to the Crusaders (9-3, No. 6 in 3A) earlier this season.
Lance Crawford dominated the point guard matchup for Pine Crest and finished with 14 points.
Kalvin Cline added 14 points and Veerain Gupta provided a spark off the bench with 10 points.
Crusaders star forward Nura Zanna had a game-high 19 points but missed three crucial free throws in the closing seconds.
Talent added 10 points for the Crusaders.
Vrankovic 2, Gupta 9, Crawford 14, Goldman 2, Cline 14, Buckley 4, Sachs 4.
Zanna 19, Prophete 4, Pierre-Louis 5, Talent 10, Barnes 6, Bell 2, Spencer 2. Three-pointers: Crawford 3, Gupta 1, Pierre-Louis 1, Barnes 1. Half: PC 27-24.
– TER (9-7): Morales 10, Fernandez 10, Munoz 4, Alfaro 2, Grant 6, Novo 3, Melamud 2, Barrios 4, Mayor 9, Escuti-Tremblay 2, Shau 7. Mast: Zaratecc 11, Hiller 3, Carvalho 6, Sellar 6, Morales 5.
– CAM: Daniel 3-0-6, Scott 9-8-27, Merritt 5-0-14, C. Mitchell 1-1-3, B. Mitchell 3-0-6, Baugh 1-0-2 PC: Gardner 1-2-5, Satchell 12- 4-31, Graves 1-0-2, Cheatham 4-6-14, Ali 6-4-16, Meade 2-3-7. Three-pointers: Gardner, Satchell 3, Scott, C. Merritt 2.
– CEN (9-2): Simeon 16, Wilder 14, Hardy 12, Fils-Aime 11, Johnson 9, Francious 6. HML: Clestino 16, Santana 13, Gato 8, McDonald 6, Baidnich 3, Morron 2. Halftime: CEN 31-28. Three-pointers: Hardy 2, Wilder 2, Simeon. Rebounds: Johnson 9. Assists: Wilder 4, Simeon 4. Steals: Johnson 3.


text:
If you are in crisis call the National Suicide Prevention Hotline at
1-800-273-8255 or text HOME to 741741 to talk with a counselor.
Hub Team and Committees
Participating Clinics
Secure Portal Login
Texas Tech University Health Sciences Center El Paso
Texas Tech University Health Sciences Center Lubbock
University of Texas Health Science Center at San Antonio
University of Texas at Tyler Health Science Center
University of Texas Medical Branch
University of Texas at Austin's Dell Children's Medical Center
University of North Texas Health Science Center
Mobile Leadership
University of Texas Health Science Center at Tyler
University of Texas Medical Branch (UTMB)
Psychiatry and Behavioral Sciences
UTMB's Psychiatry and Behavioral Sciences' research team is highly trained in research implementation. The Node Lead, Dr. Melissa DeFilippis, will work closely with Dr. Kimberly Gushanas, Node Co-Lead. The University of Texas Medical Branch is the oldest medical school in the state of Texas and has been providing medical care for Texans for over a century. The department of psychiatry provides care to children and adolescents across the region with a variety of mental health concerns and is active in the training and education of medical students, psychiatry residents, and child and adolescent psychiatry fellows. The department led or participated in many of the psychopharmacology studies for mood disorders in youth (depression, bipolar disorder).
These studies contributed to the current evidence-based treatments available for children and adolescents with depression and bipolar disorder. The chair of our department, Dr. Karen D. Wagner, served as president of the American Academy of Child and Adolescent Psychiatry from 2017-2019. Her presidential initiative was on Depression Awareness and Screening in youth. She has done extensive research on mood disorders in youth, including depression and suicidality, and has contributed much to our understanding of these disorders. UTMB's department of psychiatry is dedicated to improving access to quality mental health care for children in Texas and believes their participation in the Youth Depression and Suicide Research Network (YDSRN) is an important step toward reaching this goal.
Melissa DeFilippis, MD
Node Lead
Dr. DeFilippis is an associate professor of psychiatry at the University of Texas Medical Branch, Galveston. She graduated from the University of Texas Health Science Center in Houston, TX with her medical degree in 2006. She completed her general psychiatry residency and child and adolescent psychiatry fellowship at UTMB and joined their faculty upon completion of training in 2011.
She has served as the director of the child and adolescent psychiatry division since 2015. She is active in education and training at UTMB, and she has a busy clinic where she sees children, teens, and young adults with psychiatric conditions, including depression and suicidality.
Dr. DeFilippis has several publications in peer-reviewed journals and chapters for textbooks focusing on mood disorders in youth, treatment-resistant depression in youth, and depression in youth with autism. She has given regional, national, and international talks on mood disorders in children and teens, autism spectrum disorder in youth, and suicidality and non-suicidal self-injury in the juvenile justice population. She is an active member of the Galveston Suicide Prevention Coalition.
She is excited to be working as a node lead for the YDSRN network and collaborating with the other Texas teams on this project. She believes the research done by the network will create an opportunity to better understand depression and suicidality in Texas youth and highlight areas of need in the state.
She hopes this work leads to improved access to high quality mental health care for youth in Texas and, ultimately, decreases morbidity and mortality in youth suffering from depression. She is proud of the work being done by this network and is excited to be involved in such an impressive collaborative effort by the health-related institutions across Texas.
Kimberly Gushanas, PhD
Node Co-Lead
Dr. Gushanas is a Licensed Psychologist and Assistant Professor in UTMB's Department of Psychiatry and Behavioral Sciences. She received her doctorate from the University of Texas at Austin where she studied as a graduate research assistant with Dr. Kevin Stark in the Texas Child Study Center at Dell Children's Medical Center.
After completing her predoctoral internship in Pediatric Psychology and Integrated Behavioral Healthcare via Dell Medical School, Dr. Gushanas was fortunate to receive a fellowship at Texas Children's Hospital in Houston where she furthered her expertise in the prevention and treatment of childhood trauma, grief, and suicide through working with pediatric patients and their families, schools, and medical providers.
Dr. Gushanas is heavily involved in both clinical and research initiatives that focus on improving access to evidence-based care for youth and families exposed to chronic stressors, trauma, and inequity. She is an active member of the Galveston County Suicide Prevention Coalition and has published and presented frequently in the areas of suicide and stress prevention, anxiety and related disorders, and resilience.
Dr. Gushanas is thrilled to support YDSRN as she believes better understanding the stories and experiences of individuals affected by depression or suicide to be a key ingredient for improving how we prevent and respond to the current epidemic in Texas' youth.
Node Team
Evan Reynolds
Matthan Moy
Melanie Aing
Michaella Petrosky
Ryan Dao
UT Southwestern Medical Center's Center for Depression Research and Clinical Care (CDRC) is a nationally recognized center of excellence in the research and treatment of mood disorders, including depression and bipolar disorder.
The TX-YDSRN Hub is located at the Center for Depression Research and Clinical Care, Paul M. Bass Administrative and Clinical Center – Tower 2 6363 Forest Park Road Dallas, TX 75235
ydsrn@utsouthwestern.edu
The resources listed above are for informational purposes, and their inclusion does not constitute an endorsement by the TX-YDSRN. TX-YDSRN does not recommend using these resources as a substitute for proper diagnosis and treatment. Please contact a qualified health care provider if you have any questions about your diagnosis and/or treatment.
Copyright © 2021 TX-YDSRN. All Rights Reserved.


Tinvosolar contributes in renewable energy utilization to home lighting system, street lighting system and wind power generation. Since 2007, we have begun to research and manufacture assorted photovoltaic products(PV) and horizontal axis wind turbines(HAWT) to domestic and overseas market. We always satisfy our clients with professional services and efficient off-grid and on-grid solar and wind power solution in house, garden, farms, cities, islands, etc. We insist on the purpose of "Good Value to Money".
Small scale wind turbine is a sort of mechanism that converts wind energy into electrical power for home and farm. Horizontal wind turbine are more efficient than other type wind turbine generator. We took the lead in the mechanical centrifugal variable pitch wind turbine in the field of R&D and manufacture in China, now has production of 2kW, 5kW, 10kW, 20kW, 30kW variable pitch wind turbine, All products stand on our own research and development, have complete independent intellectual property rights, has obtained Chinese Invention patents 8pcs, Utility model patents 16pcs, International PCT patents 3pcs, and has applied patents in The United States and European .
Photovoltaics (PV) is a method of converting solar energy into electricity using monocrystalline solar panel and polycrystalline solar panel. Power generation from solar system has been seen as a clean energy technology, as well as a free resource that can wipe out your electricity bill. As one of the most professional solar LED lighting system manufacturers in China, we TINVOSOLAR have designed and produced solar street light, solar garden lamp, landscape light, solar generating systems, controller, etc.. It has introduced reliable and cost-effective outdoor solar lighting systems in more than 50 countries since 2008.


text:
No longer tolerating the decline of American industry
Image credit goes here
https://lux-capital.webflow.io/ideas-blog/no-longer-tolerating-the-decline-of-american-industry
share and subscribe
Danny Crichton
All our transcripts are made by human listeners and reviewed by our team for accuracy. Though we try hard to keep them error-free, there may be differences between the recorded audio and written transcripts. Please verify any statements in the audio before quoting in print.
The history of economic progress is the study of tolerances. Social tolerance is the linchpin for closing a transaction: a buyer and a seller both have to understand, respect and trust one another in order to do business together. But that's not the only form of tolerance involved in progress, for tolerances are also at the heart of industry and manufacturing. In fact, it's reasonably fair to argue that the entire wealth of the world has come from the increasingly cheap availability of precision around our collective output.
For millennia, manufacturing was conducted by hand, with every tool and part custom crafted. There's a quality of workmanship in such work, which is why handmade goods often fetch a premium for consumers today and many historical products are on display at museums. With manufacturing though, those loose tolerances are taxing. If parts are variable in size and quality, then the assemblage constructed from them will similarly be variable in reliability.
The Industrial Revolution brought a number of innovations to these processes. Machines powered by steam handled more manufacturing work, delivering a more consistent product. Specialization of labor, as Adam Smith famously depicted in the pin factory in The Wealth of Nations, enhanced quality, allowing workers to hone their technique and craft goods to tighter specifications. That additional precision allowed for interchangeable parts — ultimately leading to the rapid economic progress of the past two centuries.
Yet, there's never enough precision. In semiconductors, extreme ultraviolet lithography equipment from the likes of ASML has to perform in the nanometer range under exacting constraints. Satellites must be built with absolute precision to survive a launch into space and on-going operations. The most advanced forms of medicine require extraordinary attention to sequencing and potential polymorphs.
Even more vexing, it's a recursive problem. In order to build a rocket, its parts must be precisely produced. That requires manufacturing equipment that must itself be precisely designed to offer the necessary degree of manufacturing tolerance. In order for the end product to be within the tolerances required, potentially dozens of layers need to be equally up to the task.
All of which is to say that precision manufacturing is one of the most important ingredients to long term economic growth and human flourishing. Every additional degree of tolerance we can tighten — at cost or cheaper — can open up a wide range of new applications that have never been possible before.
I talked earlier this week here on "Securities" that the world needs more investment in capabilities and not markets. Few areas are more ripe for improving capabilities than manufacturing. People really will come if you build it, because better tools and processes means that parts that couldn't be built at all or couldn't be built as cheaply before suddenly become available.
Nowhere is this more obvious than in space manufacturing, where launch costs continue to decline but purchasing the right parts remain an incredible chore. Getting the manufacturing tolerances right in this business is crucial: a single part that's slightly off spec could result in complete failure, or worse.
It's a tight-knit industry, and social tolerances matter just as much as manufacturing performance. Space companies outsource the bulk of their parts manufacturing, and there are thousands of small shops attempting to fulfill these custom demands as accurately as possible. Paperwork abounds, and errors can creep in even with the best of intentions. As we looked into space manufacturing deeper, we saw potential for a company that could solve both the repetitive hard work of manufacturing to exacting specifications with automation while also building software to better integrate the space supply chain together.
That led us to Hadrian, which makes precision engineering for space, aerospace and defense easier and cheaper than ever before. Founded by Chris Power, it's a company that couples the best of autonomous factory design with a software stack which verifies that tolerances are always maintained across the supply chain.
We backed the company with Founders Fund last year in its $9.5 million seed round, and we're doubling down today by leading the company's Series A round. Lux partner Brandon Reeves will join the company's board. We're also excited that the company is announcing that Katherine Boyle of a16z is leading a Series A Prime round, joining the company's board as well. Hadrian raised a total of $90 million across the two sequential rounds of funding.
The reasons for our enthusiasm for Hadrian are manifold: the company has rapidly recruited an exceptional manufacturing team; it has developed relationships and signed key customers in its target industries; its manufacturing systems are quickly reaching maturity; and its supply chain and procurement software is already receiving notable traction. All this in a matter of months, too.
Perhaps most importantly, our view that space has limitless potential for economic growth has only expanded and intensified over the past years. The rapidly improving cost calculus for space flights is empowering a whole new generation of uses for launch vehicles, from manufacturing and pharmaceutical research to installing satellite constellations in low-earth orbit. Meanwhile, increasing geopolitical competition between the United States, China, Russia, India and others has made space an important environment for national supremacy.
In short, we're going to need more precision manufacturing for these industries than ever before, and we are going to need that precision at ever lower costs if America is going to effectively compete. To get there, we'll need better automation at lower tolerances, while also increasing the leverage of human workers throughout the cycle. Hadrian is building precisely the capabilities America and the world needs just as it wants them — and the history of economic progress continues.
This is pull quote—an excerpt pulled out of its context and repeated to give either emphasis, or to aid the reader in scanning the article.


text:
Q: Data from .json in socket.io I have a socket.io connection running with
Client
  var socket = io.connect('http://localhost:8080');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });

And server
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')

var url = 'pathtojson';

app.listen(8080);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html', function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
 socket.emit('news', url);
 socket.on('my other event', function (data) {
    console.log(data, 'server');
  });
});

This is just an example from socket.io. I want to send json data to the client whenever it is updated.
But where do I start ?

A: You need to have an event fire whenever the data you're interested in updating has changed, and then you need to have the client listen for that event and respond as desired.
You don't really give a context other than "send json data to the client whenever it is updated", so assuming that you are in whatever process is updating your JSON on the server:
if (req.url === '/endpoint') {
  yourJSON.foo = 'bar';
  // doing whatever you're interested in to the JSON
  socket.emit('JSON changed', yourJSON);
  //an event is defined by the first argument,
  //a value is passed with it as the second
}

NB: Getting more fancy/thoughtful with this means changing your JSON in such a manner that the socket only emits in response to the data change (event, callback, etc). Explicating this pattern is perhaps outside the scope of the question.
Then on the client, you want to define a function to handle those changes:
socket.on('JSON changed', updateFunction);
//where updateFunction is a function you define
//that is expecting arguments that match the output
//from the connected socket.emit event

function updateFunction(newJSON) {
  //do whatever with new JSON data
}

This is assuming there is some external endpoint being accessed to update JSON; having it come from a client over socket.io would simply involve defining another event, but this time having it emit from the client, and be listened to by the server.


text:
British tennis stars heading to World Intellectual Impairment Sport Global Games
5 August 2019 /in News /by Mousumi Mazumdar
Five of Great Britain's leading tennis players have been selected to compete for their country at the 2019 International Federation for Athletes with Intellectual Impairments (World Intellectual Impairment Sport) Global Games in Brisbane, Australia, from 12-19 October.
The selection of the British team is managed by the Lawn Tennis Association (LTA), with the team's entry enabled through strong collaboration between them and the UK Sports Association (UKSA), the national World Intellectual Impairment Sport member.
Earlier this year, the International Tennis Federation (ITF) announced that it would be endorsing the tennis competitions at the World Intellectual Impairment Sport Global Games for the very first time.
Coached by Karen Ross, Dominic Iannotti, Fabrice Higgins, Thomas Mellor, Oliver Beadle and Anna McBride will go for titles.
Iannotti, Higgins and Mellor all played at the last World Intellectual Impairment Sport Global Games in 2015, where Great Britain walked away with four medals – including gold in the men's team event. Since then they have continued on a successful streak, with the team winning an impressive three golds at the World Intellectual Impairment Sport Tennis World Championships in Paris, France, in 2018.
Anna McBride is the women's singles champion whilst Ianotti and Higgins picked up the men's doubles titles. McBride also teamed up with Ianotti to claim the mixed doubles gold.
Speaking of the team selection Ross commented:
"Great Britain is one of the leading nations for disability tennis and our record at previous World Intellectual Impairment Sport World Championships and World Intellectual Impairment Sport Global Games is proof of that. We've had some great success in the past few years and we're excited to head out to Brisbane in October and continue our medal winning streak! I hope our team will inspire more people to pick up a racket and get involved with one of the many disability tennis sessions supported by the LTA across the UK."
Tracey McCillen, Chief Executive of the UK Sports Association said:
"I am really excited to see what this team can do. Britain has consistently topped the table in tennis at World Intellectual Impairment Sport Championships and I have high hopes that this team will do the same. The Global Games is the pinnacle of World Intellectual Impairment Sport high performance events and I am proud of the work between UKSA and the LTA enabling players to achieve their ambitions at this level. Good luck to each and every one of the players. I know it will be a tough event, but I am confident you will represent Great Britain well."
Alongside tennis, nine other sports will be contested in Brisbane. More than 1,000 athletes from around the world are expected to compete in the world's biggest high performance sports event for athletes with an intellectual impairment.
https://c3k8ff.n3cdn1.secureserver.net/wp-content/uploads/2018/07/2018-inas-summer-games_luc_percival_20180719_02010_29644104968_o.jpg?time=1675087877 2667 4000 Mousumi Mazumdar https://c3k8ff.n3cdn1.secureserver.net/wp-content/uploads/2022/09/Virtus-LOGO-01.png Mousumi Mazumdar2019-08-05 12:11:052019-08-05 12:11:05British tennis stars heading to World Intellectual Impairment Sport Global Games
Italy reveal team for World Intellectual Impairment Sport Global Games Iran's futsal team ready to challenge for gold in Brisbane


For this special issue of Celebrity Studies, the editors are seeking proposals on the topic of feminism and celebrity culture. In recent years, contemporary celebrity culture has broached the topic of feminism, and increasingly, celebrities – men and women – are expected to make very public subscriptions to or rejections of a feminist identity. For instance, popular magazines like Cosmopolitan, provides "A Handy Guide to Celebrity Feminists" – and ask questions like, Where do our favourite celebrities stand on feminism? Without question, celebrity culture has become an important site for the production of meaning or understanding about feminism, especially in light of the commonly held belief that the struggles of the feminist movement – gender equality, equal pay, and so on – have been achieved, rendering it outdated or not in tune with the concerns of young women in contemporary society. In this way, the concept of "postfeminism" has been a useful tool for thinking about how feminism is framed within popular culture. Yet, these ongoing debates about what feminism is, or is not, or who can claim membership, as writ large in celebrity culture and through celebrities, clearly demonstrates that the movement still carries importance and resonates with audiences. And in such a way, it seems key for scholars to attend to the question, what does feminism look like in this culture?
While we welcome proposals that attend to these issues from a Western perspective, our goal for this special issue is to reflect a diverse array of perspectives in terms of content and location. Therefore, this special issue aims to explore discursive struggles over the meaning of feminism and celebrity culture in both Western and non-Western contexts.
Thinking beyond Western borders – what can studies of celebrities cross-culturally, tell us about the state of feminism globally?
How do feminist theories/frameworks help us to understand or critically interrogate celebrity culture? What inequalities or power dynamics invite feminist critiques of celebrity culture?
The concept of (white) celebrity feminism and how this idea has gained ground globally via social media, particularly through the politics of the feminist celebrity philanthropist (e.g. #HeforShe/Emma Watson).
Interested authors should send a 500 word proposal and 200-word biography to fameinism@gmail.com by January 15, 2016. Please direct general enquiries to this email address as well. Acceptance notices will be sent out by February 15 2015. For accepted proposals, completed essays of 6000-8000 words will be due no later than June 1, 2016. Final publication of the special issue is expected late 2017. Only previously unpublished essays will be considered.
Cobb, Shelley. (2015). "Is this what a feminist looks like? Male celebrity feminists and the postfeminist politics of 'equality'." Celebrity Studies 6. 1: 136-139.
Hamad, Hannah and Taylor Anthea. (2015). "Feminism and Contemporary Celebrity Culture." Celebrity Studies Forum Special 6. 1: 126-127.
Holmes, Su and Diane Negra, eds. (2011). In the Limelight and Under the Microscope: Forms and functions of female celebrity. NY: Continuum.
McElroy, Ruth and Rebecca Williams. (2011). "Remembering Ourselves, Viewing the Others: Historical Reality Television and Celebrity in the Small Nation." Television & New Media, 12 (3), 187-206.
Redmond, Sean and Su Holmes, eds. (2007). Stardom and Celebrity: A Reader. London: Sage.


text:
Q: Epson thermal printer status from NodeJS with ESC/POS I have created an Electron app to configure and launch a NodeJS printer server. The NodeJS part is using https://github.com/song940/node-escpos to send ESC/POS command to an Epson thermal printer on a serial port. That's work fine, I am able to print something.
Now, I am trying to get real-time status from the printer (printer status or roll paper sensor status or ink status). There is an ESC/POS command DLE EOT: https://www.epson-biz.com/modules/ref_escpos/index.php?content_id=118
I tried something like this, using node-serial object (node-escpos dependency) to be able to read a return (device.device.on(...)):
const escpos = require('escpos');
const _ = require('escpos/commands');

const device = new escpos.Serial('COM1');
const printer = new escpos.Printer(device);

device.open(function (err) {
    device.device.on('data', function (data) {
        console.log(data);
        console.log(data.toString('hex'));
    });

    device.write(_.DLE);
    device.write(_.EOT);
    device.write(String.fromCharCode(1));

    setTimeout(() => {
        printer.close();
    }, 1000);
});

But the result doesn't seem to match the doc, I got:
{ type: 'Buffer', data: [ 22 ] }
16

Does anybody ever try this? Am I misunderstanding the Epson's documentation?
Thank you

A: It seems that the obtained value is appropriate.
The value of Printer status (n = 1): you got is 0x16, and it is 0b00010110 in binary, and it is as follows when it is applied to the description of the document.
0:Fixed
1:Fixed
1:Drawer kick-out connector pin 3 is HIGH
0:Online
1:Fixed
0:Not waiting for online recovery
0:Paper feed button is not being pressed
0:Fixed


finding.wine - Bodega Numanthia _ 2010 - Termes _ 750 ml.
Bodega Numanthia 2010 - Termes 750 ml.
Bodega Numanthia is an estate in the Toro region of northwest Spain, making two high-end red wines wines solely from the Tinta de Toro grape (aka Tempranillo). It is credited with playing a key role bringing the region into the international spotlight.
This is a ripe, dark but balanced Toro with pastry, prune, blackberry and vanilla aromas. The palate is fiercely tannic on the surface but not overly hard at the foundation. Flavors of burnt toast, blackberry, spice, licorice and chocolate finish warm, toasty and dark, with echoes of ripeness and hard tannins. Drink now through 2018.


text:
Q: Overlapping pannels I have two panels with the same classes but two seperate content. Whenever I click on the first link for the first panel or the second link for the second one, they both show up at the same time, creating an overlapping. I tried adding two ids for each one of them but it seems not working.
https://codepen.io/jinzagon/pen/VwammbJ
HTML

    First Panel

Second panel

FIRST PANEL

SECOND PANEL

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ultricies aliquet quam quis faucibus. Maecenas at nibh hendrerit ex lobortis tristique. Ut hendrerit aliquet lacus, sed bibendum nisl dapibus non. Etiam eleifend eu ipsum at varius. Nam metus odio, placerat eu lacus quis, euismod finibus magna.

ESC - Close all windows

R> - Open panel with pressing "R"

CSS
    .content {
      padding: 50px;
      position: absolute;
      width: 90%;
      -webkit-transition: all .7s ease;
      transition: all .7s ease;

      transform: scale(1);
      opacity:1;
      bottom:10%;
    }
    .content.hidefor-panel-up {
        bottom: 20%;
        transform: scale(0.95);
        opacity:0;
    }

    .ip {
      display:block;
      width:100%; height:100%;
      object-fit: cover;
      position: absolute;
      -webkit-transition: all 1s ease;
      transition: all 1s ease;
      opacity:1;
      top:0;
      opacity:1; z-index:-5; position:absolute;
    }
    .ip.hidefor-panel-up {
        opacity:1;
        top: 10%;
    }

    *,
    *:before,
    *:after {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
      padding: 0;
      margin: 0;
    }
    body {
      font-family: "Lucida Console", Monaco, monospace;
      background: #06113E;
      line-height: 1.5em;
      font-size: 15px;
      overflow: hidden;
    }
    code {
      border: 1px solid #dddddd;
      background: #efefef;
      border-radius: 3px;
      padding: 3px 5px;
    }
    h1,
    h2,
    h3 {
      margin-bottom: 0.5em;
    }
    ul {
      margin: 30px 40px;
    }
    li {
      margin: 5px 0;
    }
    .panel {
      padding: 20px;
    }
    .panel-content {
      position: relative;
      /*background: #efefef;*/
      padding: 30px 50px;
      overflow-y: auto;
      height: 100%;
    }
    .panel-content .close {
      line-height: 15px;
      position: absolute;
      text-align: center;
      cursor: pointer;
      display: block;
      color: #ffffff;
      right: 5px;
      top: 5px;
      height: 15px;
      width: 15px;
      content: "✖";
    }
    .panel-content .close:before {
      line-height: 15px;
      position: absolute;
      text-align: center;
      cursor: pointer;
      display: block;
      color: #ffffff;
      right: 5px;
      top: 5px;
      height: 15px;
      width: 15px;
      content: "✖";
    }
    .panel-left {
      z-index: 10;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
      background: #eeeeee;
      position: fixed;
      display: block;
      bottom: 0;
      top: 0;
      -webkit-transition: all 0.3s ease;
      transition: all 0.3s ease;
      left: -100%;
      width: 45%;
    }

.panel-left.expanded {
  left: 0;
}
.panel-up {
  z-index: 10;
  position: fixed;
  display: block;
  bottom: 0;
  -webkit-transition: all .7s ease;
  transition: all 0.7s ease-out;
  bottom: -20%;
  width: 100%;
}
.panel-up.expanded {
  bottom: 0;
}
.reveal-left {
  float: left;
}
.reveal-up {
  float: right;
}
.nav {
  padding: 10px;
  margin: 0 auto;
  height: 10px;
  width: 90%;
}
.nav button {
  padding: 4px 6px;
}
.nav a {
  font-weight: bold;
  color: #222;
}

.bottom {
  background: yellow;
  display: block;
  position: fixed;
  width: 100%;
  bottom: 0;
}

JS
// Reveal & Close Panels
var revealPanel = function (buttonReveal, panel, buttonClose) {
  $(document).ready(function() {
    // Reveal panel
    $(buttonReveal).on('click', function() {
      $(panel).addClass('expanded');
      console.log('hidefor-'+panel);
      $(".content").addClass('hidefor-'+panel.substr(1));
      $(".ip").addClass('hidefor-'+panel.substr(1));
    });

    // Close panel
    $(buttonClose).on('click', function() {
      $(panel).removeClass('expanded');
      $(".content").removeClass('hidefor-panel-up');
            $(".ip").removeClass('hidefor-panel-up');
    });

    // ESC to close Panel
    $(document).bind("keydown", function(e) {
      if (e.keyCode == 27) {
          $(panel).removeClass('expanded');
          $(".content").removeClass('hidefor-panel-up');
         $(".ip").removeClass('hidefor-panel-up');
      }
    });
  });
}

revealPanel('.reveal-up','.panel-up', '.close');
revealPanel('.reveal-left','.panel-left', '.close');

// Reveal Panel with Shortcuts
$(document).ready(function() {
  $(document).bind("keydown", function(e) {
    if (e.keyCode == 76) {
    console.log(e.keyCode);
        $('.panel-left').addClass('expanded');
    }
    if (e.keyCode == 82) {
        $('.panel-up').addClass('expanded');
        $(".content").addClass('hidefor-panel-up');
        $(".ip").addClass('hidefor-panel-up');
    }
  });
});

A: Try to add unique id's for every .reveal-up and then modify your revealPanel(). By the way I'm not sure what is the function revealPanel('.reveal-left','.panel-left', '.close');.

// Reveal & Close Panels
var revealPanel = function (buttonReveal, panel, buttonClose) {
  $(document).ready(function() {
    // Reveal panel
    $(buttonReveal).on('click', function() {
      $(panel).addClass('expanded');
      console.log('hidefor-'+panel);
      $(".content").addClass('hidefor-'+panel.substr(1));
      $(".ip").addClass('hidefor-'+panel.substr(1));
    });

    // Close panel
    $(buttonClose).on('click', function() {
      $(panel).removeClass('expanded');
      $(".content").removeClass('hidefor-panel-up');
            $(".ip").removeClass('hidefor-panel-up');
    });

    // ESC to close Panel
    $(document).bind("keydown", function(e) {
      if (e.keyCode == 27) {
          $(panel).removeClass('expanded');
          $(".content").removeClass('hidefor-panel-up');
         $(".ip").removeClass('hidefor-panel-up');
      }
    });
  });
}

revealPanel('.reveal-up','.panel-up', '.close');
//revealPanel('.reveal-left','.panel-left', '.close');

    $('#open').on('click', function() {
      $('.panel-up').hide();$('#1').show();
    });
    $('#close').on('click', function() {
      $('.panel-up').hide();$('#2').show();
    });

// Reveal Panel with Shortcuts
$(document).ready(function() {
  $(document).bind("keydown", function(e) {
    if (e.keyCode == 76) {
    console.log(e.keyCode);
        $('.panel-left').addClass('expanded');
    }
    if (e.keyCode == 82) {
        $('.panel-up').hide();$('#1').show();
        $('.panel-up').addClass('expanded');
        $(".content").addClass('hidefor-panel-up');
        $(".ip").addClass('hidefor-panel-up');
    }
  });
});
.content {
  padding: 50px;
  position: absolute;
  width: 90%;
  -webkit-transition: all .7s ease;
  transition: all .7s ease;
  transform: scale(1);
  opacity:1;
  bottom:10%;
}
.content.hidefor-panel-up {
    bottom: 20%;
    transform: scale(0.95);
    opacity:0;
}

.ip {
  display:block;
  width:100%; height:100%;
  object-fit: cover;
  position: absolute;
  -webkit-transition: all 1s ease;
  transition: all 1s ease;
  opacity:1;
  top:0;
  opacity:1; z-index:-5; position:absolute;
}
.ip.hidefor-panel-up {
    opacity:1;
    top: 10%;
}

*,
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}
body {
  font-family: "Lucida Console", Monaco, monospace;
  background: #06113E;
  line-height: 1.5em;
  font-size: 15px;
  overflow: hidden;
}
code {
  border: 1px solid #dddddd;
  background: #efefef;
  border-radius: 3px;
  padding: 3px 5px;
}
h1,
h2,
h3 {
  margin-bottom: 0.5em;
}
ul {
  margin: 30px 40px;
}
li {
  margin: 5px 0;
}
.panel {
  padding: 20px;
}
.panel-content {
  position: relative;
  /*background: #efefef;*/
  padding: 30px 50px;
  overflow-y: auto;
  height: 100%;
}
.panel-content .close {
  line-height: 15px;
  position: absolute;
  text-align: center;
  cursor: pointer;
  display: block;
  color: #ffffff;
  right: 5px;
  top: 5px;
  height: 15px;
  width: 15px;
  content: "✖";
}
.panel-content .close:before {
  line-height: 15px;
  position: absolute;
  text-align: center;
  cursor: pointer;
  display: block;
  color: #ffffff;
  right: 5px;
  top: 5px;
  height: 15px;
  width: 15px;
  content: "✖";
}
.panel-left {
  z-index: 10;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
  background: #eeeeee;
  position: fixed;
  display: block;
  bottom: 0;
  top: 0;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
  left: -100%;
  width: 45%;
}

.panel-left.expanded {
  left: 0;
}
.panel-up {
  z-index: 10;
  position: fixed;
  display: block;
  bottom: 0;
  -webkit-transition: all .7s ease;
  transition: all 0.7s ease-out;
  bottom: -20%;
  width: 100%;
}
.panel-up.expanded {
  bottom: 0;
}
.reveal-left {
  float: left;
}
.reveal-up {
  float: right;
}
.nav {
  padding: 10px;
  margin: 0 auto;
  height: 10px;
  width: 90%;
}
.nav button {
  padding: 4px 6px;
}
.nav a {
  font-weight: bold;
  color: #222;
}

.bottom {
  background: yellow;
  display: block;
  position: fixed;
  width: 100%;
  bottom: 0;
}

    First Panel

Second panel

FIRST PANEL

SECOND PANEL

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ultricies aliquet quam quis faucibus. Maecenas at nibh hendrerit ex lobortis tristique. Ut hendrerit aliquet lacus, sed bibendum nisl dapibus non. Etiam eleifend eu ipsum at varius. Nam metus odio, placerat eu lacus quis, euismod finibus magna.

ESC - Close all windows

R> - Open panel with pressing "R"


text:
<?php

/**
 * Stock model
 *
 * @method Mage_CatalogInventory_Model_Resource_Stock _getResource()
 * @method Mage_CatalogInventory_Model_Resource_Stock getResource()
 * @method string getStockName()
 * @method Mage_CatalogInventory_Model_Stock setStockName(string $value)
 *
 * @category    Mage
 * @package     Mage_CatalogInventory
 * @author      Magento Core Team <core@magentocommerce.com>
 */
class Mage_CatalogInventory_Model_Stock extends Mage_Core_Model_Abstract
{
    const BACKORDERS_NO             = 0;
    const BACKORDERS_YES_NONOTIFY   = 1;
    const BACKORDERS_YES_NOTIFY     = 2;

    /* deprecated */
    const BACKORDERS_BELOW          = 1;
    const BACKORDERS_YES            = 2;

    const STOCK_OUT_OF_STOCK        = 0;
    const STOCK_IN_STOCK            = 1;

    const DEFAULT_STOCK_ID          = 1;

    protected function _construct()
    {
        $this->_init('cataloginventory/stock');
    }

    /**
     * Retrieve stock identifier
     *
     * @return int
     */
    public function getId()
    {
        return self::DEFAULT_STOCK_ID;
    }

    /**
     * Add stock item objects to products
     *
     * @param   collection $products
     * @return  Mage_CatalogInventory_Model_Stock
     */
    public function addItemsToProducts($productCollection)
    {
        $items = $this->getItemCollection()
            ->addProductsFilter($productCollection)
            ->joinStockStatus($productCollection->getStoreId())
            ->load();
        $stockItems = array();
        foreach ($items as $item) {
            $stockItems[$item->getProductId()] = $item;
        }
        foreach ($productCollection as $product) {
            if (isset($stockItems[$product->getId()])) {
                $stockItems[$product->getId()]->assignProduct($product);
            }
        }
        return $this;
    }

    /**
     * Retrieve items collection object with stock filter
     *
     * @return unknown
     */
    public function getItemCollection()
    {
        return Mage::getResourceModel('cataloginventory/stock_item_collection')
            ->addStockFilter($this->getId());
    }

    /**
     * Prepare array($productId=>$qty) based on array($productId => array('qty'=>$qty, 'item'=>$stockItem))
     *
     * @param array $items
     */
    protected function _prepareProductQtys($items)
    {
        $qtys = array();
        foreach ($items as $productId => $item) {
            if (empty($item['item'])) {
                $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
            } else {
                $stockItem = $item['item'];
            }
            $canSubtractQty = $stockItem->getId() && $stockItem->canSubtractQty();
            if ($canSubtractQty && Mage::helper('catalogInventory')->isQty($stockItem->getTypeId())) {
                $qtys[$productId] = $item['qty'];
            }
        }
        return $qtys;
    }

    /**
     * Subtract product qtys from stock.
     * Return array of items that require full save
     *
     * @param array $items
     * @return array
     */
    public function registerProductsSale($items)
    {
        $qtys = $this->_prepareProductQtys($items);
        $item = Mage::getModel('cataloginventory/stock_item');
        $this->_getResource()->beginTransaction();
        $stockInfo = $this->_getResource()->getProductsStock($this, array_keys($qtys), true);
        $fullSaveItems = array();
        foreach ($stockInfo as $itemInfo) {
            $item->setData($itemInfo);
            if (!$item->checkQty($qtys[$item->getProductId()])) {
                $this->_getResource()->commit();
                Mage::throwException(Mage::helper('cataloginventory')->__('Not all products are available in the requested quantity'));
            }
            $item->subtractQty($qtys[$item->getProductId()]);
            if (!$item->verifyStock() || $item->verifyNotification()) {
                $fullSaveItems[] = clone $item;
            }
        }
        $this->_getResource()->correctItemsQty($this, $qtys, '-');
        $this->_getResource()->commit();
        return $fullSaveItems;
    }

    /**
     *
     * @param unknown_type $items
     */
    public function revertProductsSale($items)
    {
        $qtys = $this->_prepareProductQtys($items);
        $this->_getResource()->correctItemsQty($this, $qtys, '+');
        return $this;
    }

    /**
     * Subtract ordered qty for product
     *
     * @param   Varien_Object $item
     * @return  Mage_CatalogInventory_Model_Stock
     */
    public function registerItemSale(Varien_Object $item)
    {
        $productId = $item->getProductId();
        if ($productId) {
            $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
            if (Mage::helper('catalogInventory')->isQty($stockItem->getTypeId())) {
                if ($item->getStoreId()) {
                    $stockItem->setStoreId($item->getStoreId());
                }
                if ($stockItem->checkQty($item->getQtyOrdered()) || Mage::app()->getStore()->isAdmin()) {
                    $stockItem->subtractQty($item->getQtyOrdered());
                    $stockItem->save();
                }
            }
        }
        else {
            Mage::throwException(Mage::helper('cataloginventory')->__('Cannot specify product identifier for the order item.'));
        }
        return $this;
    }

    /**
     * Get back to stock (when order is canceled or whatever else)
     *
     * @param int $productId
     * @param numeric $qty
     * @return Mage_CatalogInventory_Model_Stock
     */
    public function backItemQty($productId, $qty)
    {
        $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
        if ($stockItem->getId() && Mage::helper('catalogInventory')->isQty($stockItem->getTypeId())) {
            $stockItem->addQty($qty);
            if ($stockItem->getCanBackInStock() && $stockItem->getQty() > $stockItem->getMinQty()) {
                $stockItem->setIsInStock(true)
                    ->setStockStatusChangedAutomaticallyFlag(true);
            }
            $stockItem->save();
        }
        return $this;
    }

    /**
     * Lock stock items for product ids array
     *
     * @param   array $productIds
     * @return  Mage_CatalogInventory_Model_Stock
     */
    public function lockProductItems($productIds)
    {
        $this->_getResource()->lockProductItems($this, $productIds);
        return $this;
    }

    /**
     * Adds filtering for collection to return only in stock products
     *
     * @param Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection $collection
     * @return Mage_CatalogInventory_Model_Stock $this
     */
    public function addInStockFilterToCollection($collection)
    {
        $this->getResource()->setInStockFilterToCollection($collection);
        return $this;
    }
}


Yes, we've moved again. This time it was through the lift bridge and into the pound where we moored at the facilities block to fill the water tank. Managed to do it in between showers!
Jan very kindly waited whilst all the vehicles crossed the lift bridge over the A340 before raising it. This tested my ability to keep Waiouru 'hovering' in midstream waiting for her to raise it. Chewed my nails to the quick but got there in the end without damaging anything.
You may have noticed the bright yellow mooring lines in the photo above. They are the original ropes that came with the fenders and I spliced the lengths together to make two lines which we plan to keep should we require any cordage in an emergency. I've been testing the strength of my splices and they appear to be satisfactory.
Jan now has a new view from the side hatch which has pleased her no end!
Next stop is another 100 yards up through the lock . There is now no water flowing over the upstream gates of the lock so obviously the water level has started to drop. But more rain is forecast which means we'll have to keep and eye on the river conditions before deciding to head west to Newbury. Later this afternoon I walked downstream to Ufton Lane with the purpose of examining the river conditions. The canal and River Kennet converge immediately downstream from the twin bridges and therefore is a good location to compare the two. As you would expect, the canal looks quite calm. However the level and speed of the water in the river is greater than I've previously seen. Much as we would like to cruise, risk aversion dictates we stay where we are.


"If thou wilt enter into life, keep the commandments." Matt. xix. 17.
What is meant by faith? it is to feel in good earnest that we are creatures of God; it is a practical perception of the unseen world; it is to understand that this world is not enough for our happiness, to look beyond it on towards God, to realize His presence, to wait upon Him, to endeavour to learn and to do His will, and to seek our good from Him.
It is not a mere temporary strong act or impetuous feeling of the mind, an impression or a view coming upon it, but it is a habit, a state of mind, lasting and consistent. To have faith in God is to surrender one's-self to God, humbly to put one's interests, or to wish to be allowed to put them into His hands who is the Sovereign Giver of all good.
Now, again, let me ask, what is obedience? it is the obvious mode, suggested by nature, of a creature's conducting himself in God's sight, who fears Him as his Maker, and knows that, as a sinner, he has especial cause for fearing him. Under such circumstances he "will do what he can" to please Him, as the woman whom our Lord commended. He will look every way to see how it is possible to approve himself to Him, and will rejoice to find any service which may stand as a sort of proof that He is in earnest.
And he will find nothing better as an offering, or as an evidence, than obedience to that Holy Law, which conscience tells him has been given us by God Himself; that is, he will be diligent in doing all his duty as far as he knows it and can do it.—Thus, as is evident, the two states of mind are altogether one and the same: it is quite indifferent whether we say a man seeks God in faith, or say he seeks Him by obedience; and whereas Almighty God has graciously declared He will receive and bless all that seek Him, it is quite indifferent whether we say, He accepts those who believe, or those who obey. To believe is to look beyond this world to God, and to obey is to look beyond this world to God; to believe is of the heart, and to obey is of the heart; to believe is not a solitary act, but a consistent habit of trust; and to obey is not a solitary act, but a consistent habit of doing our duty in all things. I do not say that faith and obedience do not stand for separate ideas in our minds, but they stand for nothing more; they are not divided one from the other in fact. They are but one thing viewed differently.