text:
LC&DR Locos Pt.1: Second Sondes (Martley F Class)
Posted by Adrian under Extended Widened Lines, London Chatham and Dover, Passenger Traffic, Period I (c1890 - c1898), South Eastern & Chatham Railway, Widened Lines
Designed by Crampton, these were the first six locomotives built for the Company. The 'Sondes' (named after one of the Directors), were delivered as 4-4-0STs in 1857, and were complete failures, suffering from a plethora of design and construction flaws. When William Martley became Locomotive Superintendent in 1860, he relegated the class to minor duties until they were unceremoniously shoved up a siding at Faversham and forgotten about until finally, in 1865, he gave in to a persistent Lord Sondes who had been regularly exhorting him to rebuild them at the monthly board meetings.
It is not on record just how much of the original locomotives were salvaged to be incorporated into the rebuilds; the Engine Register only mentions the boilers, but Bradley, in his RCTS book on the History of Chatham locomotives, suggests that 'rebuild' was hardly the correct terminology, and the Accountant's Register names them 'Second Sondes' (some tertiary sources label them 'New Sondes'), which insinuates that very little was reused.
Whatever the truth, the new double-framed 2-4-0Ts were a neat and very attractive class, and more to the point, became very successful on the suburban duties in which they were employed. Their styling was very similar to Martley's three other 2-4-0T designs, the Rose, Ruby and Aeolus classes, and with the opening of the Metropolitan Extensions, were fitted with condensing apparatus and put into service alongside the Scotchmen, where they spent many years in service on City trains.
Reboilered in the 1870s, the six members of the class were given enclosed cabs and promptly resumed their duties between Victoria and Moorgate Street until the opening of the Extended Widened Lines, when services then terminated at Basilica Fields.
Number 63, formally named Faversham, will represent the class on Basilica Fields, and is seen here at the turn of the 20th Century at Victoria, under SECR ownership, but still wearing the LCDR livery. It was again reboilered in 1907 as SECR No.522, before being withdrawn in September 1909. Not much chance of a kit appearing on the market, so it's going to be another scratchbuild.
The Chatham
Posted by Adrian under Extended Widened Lines, London Chatham and Dover, Maps & plans, Widened Lines
Passenger services from three companies originating south of the Thames will feature on Basilica Fields, viz; the London Brighton and South Coast Railway, the South Eastern Railway, and the London Chatham and Dover Railway. The latter, known as the East Kent Railway until 1859, was empowered under the Metropolitan Extension Act of 1860 to build a line from Beckenham to Herne Hill where a junction took a line north west to Victoria, and another due north towards the then projected Metropolitan Railway at Farringdon Street (then known as Victoria Street). The line to Victoria was complete three years later, and the City line was opened as far as Blackfriars Bridge in June 1864. Within six months the line had crossed the Thames to a temporary station, Ludgate Hill, but the final stretch from there to an end-on junction with the Metropolitan at West Street took considerably longer as it fell foul of inspections by the Board of Trade, and it wasn't until the beginning of 1866 that all objections were satisfied, and the line opened.
LCDR services from Ludgate Hill to the GNR terminus at Kings Cross and back commenced immediately, and within two days the GNR was itself running trains between the two stations. Eventually the long arm of the LCDR reached into both Middlesex via the GNR and Midland, and Hertfordshire, with services from Victoria or Herne Hill to destinations such as Hatfield, Enfield, Kentish Town, Hendon, and Alexandra Palace.
Key to Basilica Fields, a eastwards spur between Snow Hill and the Great Western Railway's depot at Smithfield was proposed, to which the BoT objected, due to the safety aspect of the flat crossing between the spur and the outward line from the depot. After much petitioning, the BoT relented, and the spur was eventually sanctioned in 1871, so Moorgate Street became an alternative destination for the Chatham until the Extended Circle was rolled out in the late 1880s, and Basilica Fields became the terminus for Chatham trains.
The RCH Junction diagram from the turn of the century shows the relationship between the Chatham, the Metropolitan and the Widened Lines companies, although as the diagram is dated post-1899, the Chatham line comes under the aegis of the SECR Committee.
GWR locos pt.3: The 633 class
Posted by Adrian under Great Western Railway, Middle Circle, Period II (c1899 - c1907), Traffic
I thought that this class, the final type of Great Western condensing locomotives to operate on the Metropolitan lines (until the introduction of the 97xx class in the 1930s), and therefore Basilica Fields, was going to be an easy one to deal with, after all, the books and articles I've seen detailing the GWR's presence on the Metropolitan line write frugally, but broadly in agreement, upon their role on the goods service from Acton to Smithfield…but scratch the surface, and the reality is not quite so clear cut.
Built at Wolverhampton between November 1871 and April 1872, this class of twelve 0-6-0Ts were always Southern Division locos, and over the years some of the class were fitted with condensing equipment to work the Metropolitan lines.
What follows is a précis of the information in print:
They were the first six-coupled engines to be accepted for the Widened Lines, some twenty years in advance of the much larger and heavier Great Northern saddle tanks. Steam on the Widened Lines Vol.2 p.10. Geoff Goslin.
This implies the 633 were used on the Widened Lines from 1872 as the GNR 921 Series of saddle tanks were released to traffic in 1892. However, RCTS disagrees, and in its segment on the 2-4-0T Metro class, states:
The name of this class [the 2-4-0T Metro tanks] is derived from the engines' association with the Metropolitan Railway, over which so many of them worked, they being the only GWR engines to do so during the latter part of the nineteenth century. RCTS The Locomotives of the Great Western Railway Part Six, p.F29.
With the absence of primary sources, if I had to choose between the two I'd plump for RCTS, although the Society's publications are not infallible. However things now begin to get murky as RCTS also states:
Those with condensers were stationed in the London area for working over the Metropolitan line, whilst the non-condensing engines were mostly in South Wales, in the Neath Division. RCTS The Locomotives of the Great Western Railway Part Five, p.E34.
Condensing apparatus was fitted to 643/4 as built, but was removed from the latter in September 1884. RCTS The Locomotives of the Great Western Railway Part Five, p.E34.
There are discrepancies in the accounts of those fitted with condensers at this period, but it is fairly certain that Nos.633/4/41/42/43 were so fitted when rebuilt or shortly afterwards and remained so. RCTS The Locomotives of the Great Western Railway Part Five, p.E34.
The condensing engines remained without cabs until withdrawn in 1933-4. RCTS The Locomotives of the Great Western Railway Part Five, p.E34.
643 had always been a condensing engine. RCTS The Locomotives of the Great Western Railway Part Five, p.E34.
The implication of these quotes being that those fitted with condensers were allocated to the London Division only, all such locos being cabless for working through the Metropolitan tunnels, and those allocated to South Wales were fitted with cabs and did not carry condensers. However…
Surviving GWR Loco Allocation Registers only go back as far as 1902 (it has been suggested that possibly the 1902 one was the first such Register), and at the beginning of that year it is recorded that not one of the 633 class was allocated to the London Division, and (it would appear, if the RCTS opinion on the matter is to be believed) several of those in Wales were condenser fitted! Graham Beare saved me from too munching my way though too much paracetamol by sending the information in the following table (sorry for the slightly blurry image, please click for a clearer version), which collates info from both RCTS and the Register, followed by a suggestion as to which locos would be appropriate for Basilica Fields, post-1902:
N.B. * period of allocation indeterminate.
Graham writes:
In this instance, London Area means that an engine has been recorded as allocated to a shed within the London Division, examples noted include:- Paddington, Southall, Staines, Slough, Henley-on-Thames, Aylesbury, Watlington…. as far as I can see, there was no allocation to Reading, Didcot, Oxford. From this information, I suggest that the most likely candidates for your needs are 641, 642 and 643 which were Southall engines for most of the period from 1902 to 1906 and the most likely to be in charge of services over the widened lines.
The Registers are in the National Archive, and the 1902 Register can be found at RAIL 254 / 60. I'd like to thank John Lewis at this point for supplying digital copies of the relevant pages via Graham.
The photo of 642 is irresistible, and places it in London in pre-1906 livery, so spot on for the later period of Basilica Fields.
I've an old Mega (ex-Gateneal) kit of the 633 class, but I suspect that most of it will be binned – not necessarily because of any fault in the kit itself (though it is verybasic compared to modern offerings), but because it represents a much later version of the locos with different side tanks and enclosed cabs, and scratchbuilding looks increasingly likely.
Midland locos pt.4: Johnson's 2441 class.
Posted by Adrian under Extended Widened Lines, Locomotives, Midland Railway, Period II (c1899 - c1907), Widened Lines
In 1899, Johnson unveiled the first of what would become a class of 60 new goods tank locos, the 2441 class. Descendants of the 1102 class and antecedents of Fowler's 3F 'Jinties', the first thirty of the class had condensing equipment from new for working the sub-surface lines in London between the various goods depots, and carried various detail differences which separated them from their normally aspirated sisters. To counter the side tanks from being blistered from the very hot water passing through the condensing pipes – a problem encountered on other lines, for example the Great Eastern – an outer skin was fitted to the tank sides with a small airspace between. This arrangement produced a squared front corner to the tanks with pairs of cooling slots on the front edge, whereas the normally aspirated locos without the outer panel had rounded tank corners.
Those allocated to London were initially painted and lined in the highly decorative 'London style' of crimson lake with almost everything above and below the footplate lined out. No. 2444 is seen here on 6th June 1903 at Cricklewood in just such a livery, and despite appearing at first glance to be in ex-works condition (a misused phrase so beloved of authors of books and magazines), it instead bears the marks of hard work on the Widened Lines; traffic dust and grime haze over the wheels, underframe, valence, bunker and tank sides – the numbers have had attention from the tallow cloth to make them appear clearer, and there are signs of a hot smokebox and chimney too. It's worth noting the slightly shorter boiler fittings, especially the chimney and dome, and especially the arrangement of the Salter valves, with the pillars attached to the sides of the tank rather than the top of the boiler.
GWR locos pt.2: Large Metros
Posted by Adrian under Extended Circle, Great Western Railway, Locomotives, Middle Circle, Period II (c1899 - c1907), Traffic
This is the second instalment seeking to précis the Great Western Railway's Metropolitan tanks on Middle Circle services. The first part dealt with a little history and the Medium-sized Metros, and here I'll deal with the large-tank series.
In January 1899 the first of twenty new Metros was released to traffic with large 1100 gallon tanks. Volute springs replaced the leaf springs over the leading axleboxes due to space considerations, and following on from the previous Lot of Medium Metros in 1894, the new locos were all built with the dome on the back ring of the boiler. One month after the introduction of the larger tanks the first of thirty condensing Medium Metros was sent to Swindon to be given larger 1080 gallon tanks, and by the end of the year there was a total of fifty large condensing Metros in service for Inner London traffic.
The final decade of the 19th Century and the first six years of the 20th were the busiest for the condensing members of the class in the City; single-handedly they dealt with through services from the main line to Aldgate, the Middle Circle services from Mansion House via Earls Court, Addison Road, and Bishops Road to Aldgate, half the trains on the Hammersmith & City service to Aldgate via Bishops Road, and most trains on the Aldgate to Richmond via Bishops Road, Grove Road Junction and Gunnersbury, and of course the Extended Widened Lines Services to Basilica Fields.
From 1900 the Middle Circle service was cut back from Mansion House to Earls Court, and in 1905 trimmed again to Addison Road. Electrification of both the Circle and the Hammersmith & City in 1906 prompted the first withdrawals of the class, and stripped all bar six of their condensing apparatus. Limited services continued on the Extended Circle to Basilica Fields until 1913 when that line was electrified alongside the East London Railway.
No.1407 was released to traffic in June 1878 as a medium Metro to Lot 47. In June 1898 it was reboilered, given large tanks and volute springs, and is seen here sometime between 1898 and early 1906 stationed at Paddington. The loco is heavily stained and weathered from working in the Metropolitan tunnels, and shows that even the proud Great Western in the pre-Grouping era wasn't as shiny and sparkly as many modellers presume.


Throughout the home you'll notice an eclectic mix of stone floors and trim. In the foyer there is olive marble, in the living room you'll find concrete that is stained and polished to match the flagstone fireplace, and in the kitchen you'll find ash Italian marble. The copper ceiling trim and baseboards are definitely eye catching, as are the designer light fixtures and tongue-in-groove Australian cypress vaulted ceilings.
This 1975-built home is located at 6611 Harvest Glen and has four bedrooms, four full baths, two living areas, a gorgeous pool in the backyard, and more than 3,700 square feet inside. It's listed for $525,000, which comes out to a bargain $141.70 per square foot.
While some of the finishes are admittedly a bit personalized, you do have to appreciate the quality of materials used in this home's updates. The master bath features a huge soaking tub and Grohe fixtures, while the kitchen has maple cabinetry with stainless steel doors and counters with commercial-grade appliances.
I understand if it feels like a bit much to some people, but honestly? I kind of love it. The home is unapologetic and feels plucked from a European stylebook. Now, because this home doesn't have that big baseline of natural appeal, it won't sell for nearly as much as comparable homes, and may linger on the market a bit longer than others in its price range.
But I have to say that I'd home anyone would be won over by the large master suite and unique master bath. Those sinks are so clever, and the bathroom does not want for storage, either. There's an additional sitting area with built-in cabinets, too.
And of course, there's the backyard, which is where the home shows off those massive windows off the living room. At night, I'm sure that this side of the home just GLOWS. If you want tot tour this home, it's open on Sunday, July 12, from 1:30 to 3:30 p.m. What do you think of this unique property?


text:
Amy Kaslow Gallery
By Editorial Team on November 30, 2021
Amy Kaslow Gallery Presents Jane Kell Abstract Light
Thu, 02 December 2021 - Sun, 30 January 2022
An opening is scheduled for Thursday, December 2 at 6pm to 7:30pm.
By Editorial Team on November 1, 2021
Amy Kaslow Gallery Talk: Art and Revival With Zehra Çetinkaya
An artist talk is scheduled for Friday, November 5 from 6pm to 7:30pm.
By Editorial Team on September 27, 2021
Amy Kaslow Gallery Presents Native Hands: Fine Folk Art
Fri, 01 October 2021 - Sun, 28 November 2021
An opening is scheduled for Friday, October 1, 2021.
By Editorial Team on August 9, 2021
Amy Kaslow Gallery Presents Lisa Tubach and John Geci Sea Glass
Thu, 12 August 2021 - Sat, 25 September 2021
An opening is scheduled for Thursday, August 12 at 6pm.
By Editorial Team on June 21, 2021
Amy Kaslow Gallery Presents DC LINES
Thu, 24 June 2021 - Sun, 08 August 2021
An opening reception is scheduled for Thursday, June 24 from 6pm to 8pm.
By Editorial Team on May 10, 2021
Amy Kaslow Gallery Presents Ancestral Colors
Currently on view through June 15, 2021.
By Editorial Team on April 19, 2021
Amy Kaslow Gallery Hosts Art at Night Event with Artist Noah James Saunders
The event is scheduled for Friday, April 23 and Saturday, April 24 from 7:30 PM to 9:30 PM.
By Editorial Team on March 15, 2021
Amy Kaslow Gallery Presents Noah James Saunders Sculpting Shadow
Thu, 18 March 2021 - Sun, 25 April 2021
Exhibition is on view March 18 – April 25, 2021.
By Editorial Team on February 1, 2021
Amy Kaslow Gallery Presents BARK!
Tue, 02 February 2021 - Sun, 14 March 2021
Exhibition is on view February 2 – March 14, 2021.

redpajama_set_name: RedPajamaCommonCrawl


Plans Monday night?! I think not! It's time to clear up your schedule because the Bachelor Mondays are back, baby! Starting January 7, we all get to watch Colton embark on his journey to find love, and we are more than ready for this season! No Bachelor viewing party is complete without three things: friends, drinks, and desserts. Grab your friends, and get a few bottles of wine ready for Monday nights! Whether you are hosting the Bachelor Monday viewing parties, or attending the viewing parties, here are 15 fun desserts to enjoy and are guaranteed to make your Bachelor Mondays so much more enjoyable!
Looking for a quick and easy dessert to make? You can't go wrong with chocolate covered strawberries! This dessert is so simple to make, and is bound to be a favorite amongst you and your friends. You can dip the strawberries in white and dark chocolate and add some heart shaped sprinkles on top to fit the Bachelor theme. If you are feeling extra festive, decorate the strawberries and add a bow tie to resemble the Bachelor!
Oreo truffles are another super simple dessert to make and are a crowd favorite for all of us Oreo lovers out there! Once you dip the truffles in the melting chocolate, add some heart shaped sprinkles on top to fit the theme. You can also add some food coloring to the melting chocolate to give it a nice red color to resemble a rose!
Chocolate chip cookies are another crowd favorite and perfect to make for Bachelor Monday. We are all chocolate chip cookie lovers, so you can't go wrong with these cookies! Make a big batch of cookies so that there are enough cookies to last throughout the night. If you want to get creative, you can add some pink and red colored M&Ms instead of chocolate chips to fit the love theme. Don't forget to serve the cookies with glasses of milk!
If you are looking for a dessert that is the perfect combination between sweet and salty, make some chocolate covered pretzels! Buy the long pretzel rods and dip half of each rod in the melting chocolate. Add some sprinkles, chocolate chips or pieces of oreo on top to give some extra chocolate flavor. You can even make some chocolate dipped graham crackers, chocolate dipped apples, and more. Place all of the treats on a big tray and enjoy throughout the night!
Brownies are another classic dessert option that are a big crowd pleaser. Bake some delicious homemade brownies that are extra fudgy and filled with lots of chocolate to satisfy everyone's sweet tooth. You can even frost the brownies and add some sprinkles on top. Your friends will love these!
Get a little fancy and set up an ice cream sundae bar! You will need to have everything from ice cream, chocolate sauce, caramel, nuts, cherries, bananas, and other toppings to make the most delicious ice cream sundaes. Get some cute little bowls and spoons for the sundaes, too. Make sure you buy enough ice cream to last the whole night, as you will want to come back for seconds with this dessert!
Donuts are everyone's favorite guilty pleasure, so why not have them at your next Bachelor viewing party?! Whether you bake your own donuts, or buy them from the local donut shop, these bad boys are bound to put smiles on everyone's faces. Just make sure you order enough for everyone to have a few, as one donut is never enough!
Forget chips and salsa, cookie dough dip and graham crackers are coming in hot as the new 'chip and dip' replacement! This dip is like heaven on earth, and it is completely edible! Have some graham crackers, vanilla wafers, oreos, and pretzels on hand so that you and your friends can dip them in the cookie dough dip. This dessert will be everyone's new favorite!
You don't need to eat at BJ's Restaurant to enjoy a famous pizookie, as you can make this dessert right at home! All you need to do is bake some fresh cookies and pull them out of the oven as soon as the show is about to start. Add a big scoop of vanilla ice cream on top of each cookie, and add some chocolate sauce on top to make the most delicious pizookies!
Popcorn is the perfect dessert to serve when the drama on the show is just too good! Skip buying popcorn from the store and pop your own popcorn. Add some chocolate sauce on top and mix in some chocolate chips, caramel and M&Ms to make for a delicious popcorn dessert! This is one of our favorite desserts for Bachelor Mondays!
If you are looking for a dessert that is on the healthier side, pound cake and fruit is a great option! Bake a delicious lemon pound cake and add some fresh berries and whip cream on top. This dessert will feel guilt-free, but still satisfy your sweet tooth while you watch the show!
Step up your traditional brownie recipe with this chocolate marshmallow peanut butter brownie recipe! These brownies are layered with peanut butter and marshmallows to make for the most delicious combination. This dessert is perfect to make for you and your friends to enjoy all night long!
Take the traditional Oreo cookie and dip them in dark or white chocolate to make for a delicious Oreo-chocolate dessert. This dessert is a chocolate lovers heaven. You can dip the cookies in some heart shaped sprinkles to fit in with the Bachelor mood!
Take a break from eating all of the chocolate desserts and make this delicious strawberry pretzel dessert! This dessert is layered with pretzels, whipped cream, and fresh strawberry jello to make for a delicious combination between sweet and salty. Don't forget to add some fresh strawberries in the jello to add some extra flavor! This is one of our favorite desserts for Bachelor Mondays!
Bake the ultimate Bachelor themed dessert with this rose cupcakes recipe! This dessert is super simple to make, as all you need to do is bake some chocolate or vanilla cupcakes. When the cupcakes finish baking, frost each cupcake to resemble the shape of a rose. Then place each cupcake on a platter to make a big rose bouquet! Not only are these cupcakes delicious, but they are so cute and fit the theme of the party perfectly. This is one of the best desserts for Bachelor Mondays!
What is your favorite part about Bachelor Mondays? Let us know in the comments below!


This is a blood test to look for a substance which is increased in males who have prostate cancer. The test has a relatively high false positive rate (elevated PSA, but the person does not have prostate cancer) but serves as a useful screening test. PSA can be elevated in nonserious conditions such as benign prostatic enlargement.
Because this test is fairly specific for individuals who may have prostate cancer, those with elevated PSA should undergo further examination using ultrasound of the prostate gland (to look for tumor). The availability of the PSA test has caused some dilemma among Urologists and Oncologists because of the ability to diagnose, in relatively young men, extremely small prostate cancers.
The resultant decisions on whom to treat, and when to treat (previously undetected cancers), becomes an issue. In some cases, prostate cancer treatment can lead to sexual dysfunction (impotence).
The PSA is now widely recognized as a primary screening tool for prostate cancer and the American Cancer Society recommends annual testing after the age of 50. High risk groups such as African Americans and those with a family predisposition for prostate cancer should be have this test performed annually after age 40.
NOTE: (Proscar), used in the treatment of prostate enlargement, has been shown to decrease the serum PSA level.


I have two more weeks of writing in beautiful, uninterrupted silence. Then school ends, and it'll be a little noisier around here!
But I thought I'd share a couple of pictures so you can see my happy spot. This is my view from my lazy boy chair where I do the majority of my writing lately.
I had the birds outside that afternoon so they could get some fresh air. I think they feel a combination of fear for their lives and the thrill of not being dead yet out there, because they're always so happy to come back inside! LOL! But I'm convinced that some fresh air is good for them… and a little adventure never hurt, right?
I'm really enjoying my petunias this year. They're so hearty. This is them a couple of days after a hail storm, to boot. They just grow and grow–the perfect flowers for me. I really can't take much credit for them. They flourish in spite of me. And in spite of the hail, apparently.
It's a lovely spot. You may find me in your chair one day!


text:
Vidoje Žarković ( Plužine, 10 de junho de 1927 – Belgrado, 29 de setembro de 2000) foi um político comunista da República Socialista de Montenegro .

Biografia
Ele foi presidente do Conselho Executivo de Montenegro (1967-1969), presidente da Assembleia Popular de Montenegro – membro da Presidência da SFR Jugoslávia – secretário do Comité Central da Liga dos Comunistas de Montenegro (1984) e presidente do Presidium da Liga dos Comunistas da Jugoslávia (1985–86).

Mortos em 2000
Nascidos em 1927
Presidentes de Montenegro

redpajama_set_name: RedPajamaWikipedia


text:
Stark County man gets prison for crashing into police cruiser
GateHouse Media Ohio report
AKRON A Perry Township man was sentenced to prison Tuesday for a highway crash that injured a Stow police officer.
Stephen Eibel, 57, of 1808 Sherwood Ave. NW, pleaded guilty last month to aggravated vehicular assault and operating a vehicle under the influence.
Summit County Common Pleas Judge Kelly McLaughlin sentenced Eibel to 30 months in prison for the vehicular assault charge, the maximum possible. She also suspended his driver's license for seven years.
"This is the six time Mr. Eibel has been caught driving drunk," Summit County Prosecutor Sherri Bevan Walsh said in a press release. "He's lucky that no one was seriously injured or killed. Mr. Eibel's actions put us all at risk."
Walsh said this is the reason she favors harsher sentences for repeat drunk drivers.
Eibel crashed into Stow Sgt. Ted Bell's cruiser on May 6 in a construction zone on state Route 8 in Stow.
Bell was hospitalized for a couple of days with head and neck injuries.
After the crash, Stow officers pointed to this as an example of why motorists needed to be more careful when traveling through this construction area. It marked the 25th crash in that stretch of highway since late March when the project began.
Eibel was represented by attorney Paul Meyer.


How can music dramatically affect your child's development and lifetime success? - .:Early Learning Community:.
BrillKids Forum > Teaching Your Child Music > How can music dramatically affect your child's development and lifetime success?
How can music dramatically affect your child's development and lifetime success?
Playing an instrument can improve your child's grades and test scores?
Playing the piano can improve your child's self-esteem?
Playing music can help your children understand math better?
Playing music can help your children get into medical school?
Playing music can make a person emotionally healthier?
The world's top academic countries place a high value on music education?
And after you've read the report, don't forget to share your opinions with us here – we'd love to know what you think!
Chris Salter is the founder and CEO of Music Wizard Group. He had no previous music education, but one day he signed up for a group piano class and ended up staying there for 4 years. He went on to get a double degree in Music and Linguistics from SIU, and then a Master's degree in Musicology from UCLA.
Music literally changed his life, and this led him to founding the Music Wizard Academy, which develops a unique method of teaching children music.
Chris has been gracious enough to offer us his help by joining us at the Forum to answer your questions about teaching your children the wonderful subject of music!
Re: How can music dramatically affect your child's development and lifetime success?
Welcome, Chris! Looking forward to you sharing all your wisdom with the members!
I am reposting a response I posted in another part of this forum because I think it will be useful to most parents as at least food for thought, and will give you some sense of my approach to learning music. I absolutely believe that Mozart learned music as if it was a native language, and believe it is possible and great to start them young and make it fun.
Re: How to teach music to my son while I am not good at it at all??
My background is in linguistics and music, and what fascinated me was how children all over the world learn to speak whatever language is around them fluently through some kind of natural language acquisition process. I wondered how that could be used to learn music as well, so here are some suggestions. First things first, kids learn by doing, not abstractly studying music theory or notation. "Music first, then studies" said Franz Liszt.
A) Dance with them. Movement in rhythm embeds the rhythm in their bodies. Be crazy and fun, and let them mimic you, in fact make a game of it where you do something crazy to the rhythm and then they follow and then switch. This is "call and response" or modeling. Brazilians use the samba, and while they start drumming early, they dance first.
B) Sing with them, if you are off key, sing along with music you like and then things they like. Play guessing games with classical music (Dum dum dum daaah! Who was that? "Beethoven!") Look for call and response type songs where the lead singer sings something and the chorus mimics or "answers" them. Look for that in Motown music, soul, etc, but it is in classical as well, like in Spring by Vivaldi.
C) Play drums with them. You might find drum circles around your town, or just put on some funky music and beat on some tables or clang a fork on a glass, but don't be afraid to have "loud time" and "free time". Then go into more follow the leader stuff (boom BOOM . . . boom BOOM) You can do this with words too (Boom shaka laka BOOM shaka laka BOOM shaka laka BOOM) alternating in a call and response. They learn by mimicking you. They also learn it is OK to be wrong and silly from you. Relax and have fun. It helps to have loud music in the background and join in rather than create it from scratch.
D) As they get comfortable with simple rhythms, go to a piano and choose just a couple of keys to improvise rhythmically on. The piano is a percussion instrument and by starting with 2, then 3 notes, you can have a lot of fun and get funky.
E) We learn our first language passively at first. A one year old can understand dozens of words, but speak only a few. Saturate your children with all kinds of music and make them guess who is who, from Pop, to classical to folk, and make it a game. They will surprise you. Learn a few motifs or signature hooks from some pieces or songs and sing them and develop a little repertoire of great pieces you admire and sing just fragments and make them guess, then have them sing songs to you and guess too. Move to identifying different instruments in songs or pieces, so they recognize piano, harp, horn, sax, Taiko drum, whatever you can pick out.
F) Make the adventure of learning about music something you share with them. You don't need to be the expert, just the courageous guide, saying, "Let's live dangerously, and listen to this!" When they bring their songs (they may be soundtracks to video games) break them down like you would Mozart. Language is built brick by brick with vocabulary, music is the same, give them lots of interesting musical bricks to play with, and soon they will be wanting to build their own structures and be fascinated with how others did things.
Thanks, Chris, those tips are very interesting!
I remember my mum used to play her classical music CDs for us whenever we were studying for tests at school and I think it did help us focus on what we were reading -- not to mention, I eventually did the same thing when I needed to concentrate on work!
I also believe that it is possible to "pass on" your love of music to your kids, even if you can't play an instrument or carry a tune. My mum was able to do it, so I think I can manage to do the same too!
Thanks for the report, it was most interesting. I guess it just confirms what most of us parents here already know - that music can play an enormous role on the growth of our children. Although the report was quite short, I found it informative.
I'm particularly interested to learn more about how music can help with learning math - just because I can't quite wrap my head around the concept. The report provides proof of this positive effect, but not how. If any of you can explain how this is done, I'd be grateful.
As a musician, I am inclined to agree on how music can impact our lives and the lives of our children - only because I've experienced first-hand how music can literally move people to greater heights. I can only hope that I can pass on this love of music to my kids.
Thanks for the report - and the tips. I read the report this morning and was left with the thought "so how do I do this?". I didnt receive any musical teaching beyond the very basic at school. I was and still am what you might call mathematically challenged but the opportunities to help my children in this fascinate me. So I was highly relieved to find the tips.
As a totally unscientific aside the paper got me thinking about the people (friends /family) that I know who are musical and how well they have done in life compared to those of us that arent. And from this annecdotal evidence I can totally see the point.
Im going to try the tips - we had quite unwittingly been doing some of them - lead by my little girl's current ideas - but Id really like to know more and how to keep this going. I looked on the internet just now for example, for piano lessons in the area I live for pre schoolers - and perhaps unsurprisingly found nothing !?
Check your junk mail folder, there should be a link in an email to get it. If not, try and register again. You will enjoy it.
Hi Tatianna! Chris is right - do check your email junk folder for the confirmation link.
In case you didn't get it, please check the PM I just sent you.
For those of you who have little or no experience teaching or playing music, getting your kids started seems like a very daunting task better left to professionals. But kids will do nothing you say and everything you do, which is life's way of making us better people! So, we need to lead a little by example, and remember it is not the complexity of music, (language and math are complex and we do OK with them) it is the way we learn that is important.
Follow the leader. Start with a simple song (A Simple Song by Sly and the Family Stone is one) and teach it to them in pieces, either singing, clapping or both. I sometimes pat out a song on my daughter's head or belly and ask her to guess what song it is. I choose classic riffs like Eine Kleine Nachtmusic by Mozart or Beethoven's fifth. I play guess what is playing in the car (I have control of the CD player, and confess I sometimes bribe them to get them started). If they ask me a question ("What does Baroque mean?") I look it up in Wikipedia and read it out loud (NOT while driving!). I am musically curious and lead by example, and I am interactive with them to dissect music into phrases and patterns. I don't CARE about conventional terms, I care that I am listening with a way to break it down and see how it comes together.
For example, Vivaldi's Four Seasons, "Spring" is based on a very universal musical trait of pattern creation (expectaion) then variation. Almost all music uses this in some way.
Bada bum bada bum bum bum bada bum . . .
And that kind of AAB pattern is one of the hidden keys to musical enjoyment, because there are endless variations on that. (I think the group ABBA named themselves for a popular song format of First verse, variation, repeat variation and back to first verse) You can hear this in all kinds of songs, Blues, Classical, Rock, Pop, percussion, it is everywhere if you start noticing, and it can become your building blocks to talk about virtually any music and notice its magic being built one phrase at a time.
The second great principle to listen for is tension, release. That might be done with dissonance (tension) and then harmony (release) or with tension being caused by confusion (variation) and release being the return (repeat of an earlier phrase). Blues music has a universal 12 bar pattern that is the base, and it harmonically establishes the base harmony, then shifts to a new harmony, (tension) shifts again (more tension) and returns to the base key. It is a wheel of theme and variations, tension and release and that is how it hooks and rehooks us. Most ethnic rhythms are the same in creating a pattern and then surprising you with a variation.
Hope this was good food for thought, they are simple tools but so basic you will find these elements everywhere. It is tough to write about these things, but once you start to look for them, you will find them in virtually everything you listen to, and it will give you new appreciation and tools to talk about and create with with your children on this life long journey of music making and appreciation. More later.
I am aware of the benefits of music and saw its effects on my older son.
As I also have a toddler with Down Syndrome (she is three and non-verbal at the moment but loves music) I would like to know if you have any experience with DS kids. Would it be needed a different approach or you would use the same as for any other kid? What instrument would you go with and at what age.
Hi All(",)! My baby is two months old. May i know what sort of music is suitable for my baby ?
i like to do more . how to teach my child to play aan instrument if i myself cannot , this is when i found soft way to mozart through this group , i thought maybe i can start by learning myself and play for my kid . but even the task of choosing the right digital keyboard to use with this program is hard . i have no cle what is good instrument , good keyboard, do i really need to spend a fortune for a start ?? i was looking at some yamaha , or casio , there are some with 61 keys some with more , some with lighning keys some no ,... they can range from 100 pounds to 1000 pounds . what can be considered good one to start with at home to foster love for music and learn some playing ???
also i am looking at a specific program : themes to remember which got postive reviews from homeschooler .
of course for a person who doesnt have music background and is desperate to teach her kids they all look wonderful , but i often found myself buying something to be disappointed after .
can you look at those programs and advice if they are good or not . i am hoping with themes to remember , i can be more consistent and organized in including music in our daily life , great variety , information for me to learn from and pass along to the kids .
we read a lot about the benefit of music but we really like some practical advice on how to do it .
i also signed up but didn't get any ebook .
Viv, check in your spam folder. Sometimes the email can get shipped there depending on how strict your email filtering is.


text:
/*
 * Author: doe300
 *
 * See the file "LICENSE" for the full license governing this code.
 */

#include "Reordering.h"

#include "../Method.h"
#include "../Profiler.h"
#include "../intermediate/Helper.h"
#include "log.h"

using namespace vc4c;
using namespace vc4c::optimizations;
using namespace vc4c::intermediate;

/*
 * Finds the last instruction before the (list of) NOP(s) that is not a NOP -> the reason for the insertion of NOPs
 */
static NODISCARD InstructionWalker findPreviousInstruction(BasicBlock& basicBlock, const InstructionWalker pos)
{
    auto it = pos;
    while(!it.isStartOfBlock())
    {
        if(it.get() != nullptr && it->mapsToASMInstruction() && it->getOutput())
            break;
        it.previousInBlock();
    }
    return it;
}

/*
 * Finds an instruction within the basic block that does not access any of the given values
 */
static NODISCARD InstructionWalker findInstructionNotAccessing(BasicBlock& basicBlock, const InstructionWalker pos,
    FastSet<Value>& excludedValues, unsigned replaceNopThreshold, unsigned accumulatorThreshold)
{
    std::size_t instructionsLeft = replaceNopThreshold;
    auto it = pos;
    while(instructionsLeft > 0 && !it.isEndOfBlock())
    {
        if(!it.has())
        {
            // skip already replaced instructions
            it.nextInBlock();
            --instructionsLeft;
            continue;
        }
        bool validReplacement = true;
        PROFILE_START(checkExcludedValues);
        if(it->getOutput() && excludedValues.find(it->getOutput().value()) != excludedValues.end())
        {
            validReplacement = false;
        }
        if(validReplacement)
        {
            for(const Value& arg : it->getArguments())
            {
                if(excludedValues.find(arg) != excludedValues.end())
                {
                    validReplacement = false;
                    break;
                }
            }
        }
        PROFILE_END(checkExcludedValues);
        if(validReplacement && it->writesRegister(REG_MUTEX))
        {
            // never move MUTEX_RELEASE
            validReplacement = false;
            // Allow instructions to be moved over MUTEX_RELEASE to replace the VPM wait nops
        }
        if(validReplacement && it->readsRegister(REG_MUTEX))
        {
            // Re-ordering MUTEX_ACQUIRE would extend the critical section (maybe a lot!), so don't move it
            // Also, never move anything out of (or over) the critical section
            return basicBlock.walkEnd();
        }
        // for now, skip everything setting and using flags/signals
        if(validReplacement && (it->hasConditionalExecution() || it->hasSideEffects()))
        {
            validReplacement = false;
        }
        if(validReplacement && (it.get<Branch>() || it.get<BranchLabel>() || it.get<MemoryBarrier>()))
        {
            // NEVER RE-ORDER BRANCHES, LABELS OR BARRIERS!
            validReplacement = false;
        }
        if(validReplacement && it.get<Nop>())
        {
            // replacing NOP with NOP will violate the delay (e.g. for branches, SFU)
            validReplacement = false;
        }
        if(validReplacement && !it->mapsToASMInstruction())
        {
            // skip every instruction, which is not mapped to machine code, since otherwise the delay for the NOP will
            // be violated
            validReplacement = false;
        }
        if(validReplacement && it->checkOutputLocal() &&
            (replaceNopThreshold - instructionsLeft) > accumulatorThreshold &&
            it.getBasicBlock()->isLocallyLimited(it, it->checkOutputLocal(), accumulatorThreshold))
        {
            // skip any local which is currently locally limited enough to fit into an accumulator to not force it to a
            // physical register (unless the instruction would only be moved a little bit)
            validReplacement = false;
        }
        if(validReplacement)
        {
            logging::logLazy(logging::Level::DEBUG, [&](std::wostream& log) {
                log << "Found instruction not using any of the excluded values ("
                    << to_string<Value, FastSet<Value>>(excludedValues) << "): " << it->to_string() << logging::endl;
            });
            break;
        }

        // otherwise add all outputs by instructions in between (the NOP and the replacement), since they could be used
        // as input in the following instructions
        auto out = NO_VALUE;
        if((out = it->getOutput()) && !out->hasRegister(REG_NOP))
        {
            excludedValues.insert(out.value());
            // make sure, SFU/TMU calls are not moved over other SFU/TMU calls
            // this prevents nop-sfu-... from being replaced with sfu-sfu-...
            if(out->hasRegister(REG_SFU_EXP2) || out->hasRegister(REG_SFU_LOG2) || out->hasRegister(REG_SFU_RECIP) ||
                out->hasRegister(REG_SFU_RECIP_SQRT) || out->hasRegister(REG_TMU0_ADDRESS) ||
                out->hasRegister(REG_TMU1_ADDRESS))
            {
                excludedValues.emplace(Value(REG_SFU_EXP2, TYPE_FLOAT));
                excludedValues.emplace(Value(REG_SFU_LOG2, TYPE_FLOAT));
                excludedValues.emplace(Value(REG_SFU_OUT, TYPE_FLOAT));
                excludedValues.emplace(Value(REG_SFU_RECIP, TYPE_FLOAT));
                excludedValues.emplace(Value(REG_SFU_RECIP_SQRT, TYPE_FLOAT));
                excludedValues.emplace(Value(REG_TMU0_ADDRESS, TYPE_VOID_POINTER));
                excludedValues.emplace(Value(REG_TMU1_ADDRESS, TYPE_VOID_POINTER));
            }
            if(out->hasRegister(REG_ACC5) || out->hasRegister(REG_REPLICATE_ALL) ||
                out->hasRegister(REG_REPLICATE_QUAD))
            {
                excludedValues.emplace(Value(REG_ACC5, TYPE_UNKNOWN));
                excludedValues.emplace(Value(REG_REPLICATE_ALL, TYPE_UNKNOWN));
                excludedValues.emplace(Value(REG_REPLICATE_QUAD, TYPE_UNKNOWN));
            }
        }
        if(it->readsRegister(REG_SFU_OUT))
        {
            excludedValues.emplace(Value(REG_SFU_EXP2, TYPE_FLOAT));
            excludedValues.emplace(Value(REG_SFU_LOG2, TYPE_FLOAT));
            excludedValues.emplace(Value(REG_SFU_OUT, TYPE_FLOAT));
            excludedValues.emplace(Value(REG_SFU_RECIP, TYPE_FLOAT));
            excludedValues.emplace(Value(REG_SFU_RECIP_SQRT, TYPE_FLOAT));
            excludedValues.emplace(Value(REG_TMU0_ADDRESS, TYPE_VOID_POINTER));
            excludedValues.emplace(Value(REG_TMU1_ADDRESS, TYPE_VOID_POINTER));
        }
        if(it->readsRegister(REG_ACC5) || it->readsRegister(REG_REPLICATE_ALL) || it->readsRegister(REG_REPLICATE_QUAD))
        {
            excludedValues.emplace(Value(REG_ACC5, TYPE_UNKNOWN));
            excludedValues.emplace(Value(REG_REPLICATE_ALL, TYPE_UNKNOWN));
            excludedValues.emplace(Value(REG_REPLICATE_QUAD, TYPE_UNKNOWN));
        }
        --instructionsLeft;
        it.nextInBlock();
    }
    if(instructionsLeft == 0)
        it = basicBlock.walkEnd();
    return it;
}

/*
 * Finds a suitable instruction within this basic block to replace the NOP with, without violating the reason for the
 * NOP. Also, this instruction MUST not be dependent on any instruction in between the NOP and the
 * replacement-instruction
 */
static NODISCARD InstructionWalker findReplacementCandidate(
    BasicBlock& basicBlock, const InstructionWalker pos, const DelayType nopReason, const Configuration& config)
{
    FastSet<Value> excludedValues;
    InstructionWalker replacementIt = basicBlock.walkEnd();
    switch(nopReason)
    {
    case DelayType::BRANCH_DELAY:
        // This type of NOPs do not yet exist (they are created in CodeGenerator)
        return basicBlock.walkEnd();
    case DelayType::THREAD_END:
        // there are no more instructions after THREND
        return basicBlock.walkEnd();
    case DelayType::WAIT_VPM:
    case DelayType::WAIT_REGISTER:
    {
        // can insert any instruction which does not access the given register/local
        const InstructionWalker lastInstruction = findPreviousInstruction(basicBlock, pos);
        if(lastInstruction.isStartOfBlock())
        {
            // this can e.g. happen, if the vector rotation is the first instruction in a basic block
            // TODO for now, we can't handle this case, since there may be several writing instructions jumping to the
            // block
            CPPLOG_LAZY(logging::Level::DEBUG,
                log << "Can't find reason for NOP in block: " << basicBlock.to_string() << logging::endl);
            return basicBlock.walkEnd();
        }
        excludedValues.insert(lastInstruction->getOutput().value());
        if(lastInstruction->writesRegister(REG_VPM_DMA_LOAD_ADDR))
        {
            excludedValues.emplace(Value(REG_VPM_DMA_LOAD_BUSY, TYPE_UNKNOWN));
            excludedValues.emplace(Value(REG_VPM_IO, TYPE_UNKNOWN));
        }
        if(lastInstruction->writesRegister(REG_VPM_DMA_STORE_ADDR))
        {
            excludedValues.emplace(Value(REG_VPM_DMA_STORE_BUSY, TYPE_UNKNOWN));
            excludedValues.emplace(Value(REG_VPM_IO, TYPE_UNKNOWN));
        }
        if(lastInstruction->writesRegister(REG_ACC5) || lastInstruction->writesRegister(REG_REPLICATE_ALL) ||
            lastInstruction->writesRegister(REG_REPLICATE_QUAD))
        {
            excludedValues.emplace(Value(REG_ACC5, TYPE_UNKNOWN));
            excludedValues.emplace(Value(REG_REPLICATE_ALL, TYPE_UNKNOWN));
            excludedValues.emplace(Value(REG_REPLICATE_QUAD, TYPE_UNKNOWN));
        }
        replacementIt = PROFILE(findInstructionNotAccessing, basicBlock, pos, excludedValues,
            config.additionalOptions.replaceNopThreshold, config.additionalOptions.accumulatorThreshold);
        break;
    }
    case DelayType::WAIT_SFU:
    case DelayType::WAIT_TMU:
    {
        // can insert any instruction which doesn't access SFU/TMU or accumulator r4
        const InstructionWalker lastInstruction = findPreviousInstruction(basicBlock, pos);
        if(!lastInstruction.isStartOfBlock())
            excludedValues.insert(lastInstruction->getOutput().value());
        excludedValues.emplace(Value(REG_SFU_EXP2, TYPE_FLOAT));
        excludedValues.emplace(Value(REG_SFU_LOG2, TYPE_FLOAT));
        excludedValues.emplace(Value(REG_SFU_OUT, TYPE_FLOAT));
        excludedValues.emplace(Value(REG_SFU_RECIP, TYPE_FLOAT));
        excludedValues.emplace(Value(REG_SFU_RECIP_SQRT, TYPE_FLOAT));
        excludedValues.emplace(Value(REG_TMU0_ADDRESS, TYPE_VOID_POINTER));
        excludedValues.emplace(Value(REG_TMU1_ADDRESS, TYPE_VOID_POINTER));
        replacementIt = PROFILE(findInstructionNotAccessing, basicBlock, pos, excludedValues,
            config.additionalOptions.replaceNopThreshold, config.additionalOptions.accumulatorThreshold);
        break;
    }
    case DelayType::WAIT_UNIFORM:
        // TODO could reorder, as long as we do not access uniforms ??
        return basicBlock.walkEnd();
    }
    return replacementIt;
}

static bool replaceNOPs(BasicBlock& basicBlock, Method& method, const Configuration& config)
{
    InstructionWalker it = basicBlock.walk();
    bool hasChanged = false;
    while(!it.isEndOfBlock())
    {
        const Nop* nop = it.get<Nop>();
        // only replace NOPs without side-effects (e.g. signal)
        if(nop != nullptr && !nop->hasSideEffects())
        {
            auto isMandatoryDelay = has_flag(nop->decoration, InstructionDecorations::MANDATORY_DELAY);
            InstructionWalker replacementIt = PROFILE(findReplacementCandidate, basicBlock, it, nop->type, config);
            if(!replacementIt.isEndOfBlock())
            {
                // replace NOP with instruction, reset instruction at position (do not yet erase, otherwise iterators
                // are wrong!)
                CPPLOG_LAZY(logging::Level::DEBUG,
                    log << "Replacing NOP with: " << replacementIt->to_string() << logging::endl);
                it.reset(replacementIt.release());
                if(isMandatoryDelay)
                    it->addDecorations(InstructionDecorations::MANDATORY_DELAY);
                hasChanged = true;

                // make sure to not create a new conflict and insert NOP instead (which might be replaced again later
                // on)
                auto prevIt = replacementIt.copy().previousInBlock();
                auto nextIt = replacementIt.copy().nextInBlock();
                while(!prevIt.has())
                    prevIt.previousInBlock();
                while(!nextIt.isEndOfBlock() && !nextIt.has())
                    nextIt.nextInBlock();
                if(!prevIt.isStartOfBlock() && prevIt.has() && !nextIt.isEndOfBlock() && nextIt.has() &&
                    prevIt->checkOutputLocal() && nextIt->readsLocal(prevIt->getOutput()->local()) &&
                    needsDelay(
                        prevIt, nextIt, prevIt->getOutput()->local(), config.additionalOptions.accumulatorThreshold))
                {
                    CPPLOG_LAZY(logging::Level::DEBUG,
                        log << "Inserting NOP to prevent further read-after-write errors" << logging::endl);
                    replacementIt.reset(std::make_unique<Nop>(DelayType::WAIT_REGISTER));
                }
            }
            else if((nop->type == DelayType::WAIT_VPM || nop->type == DelayType::WAIT_TMU) && !isMandatoryDelay)
            {
                // nops inserted to wait for VPM/TMU to finish can be removed again,
                // since the wait-instruction will correctly wait the remaining number of instructions
                it.erase();
                // to not skip the next nop
                it.previousInBlock();
                hasChanged = true;
            }
        }
        it.nextInBlock();
    }
    return hasChanged;
}

std::size_t optimizations::splitReadAfterWrites(const Module& module, Method& method, const Configuration& config)
{
    // try to split up consecutive instructions writing/reading to the same local (so less locals are forced to
    // accumulators) by inserting NOPs  the NOP then can be replaced with other instructions by the next optimization
    // (#reorderWithinBasicBlocks)
    std::size_t numChanges = 0;
    auto it = method.walkAllInstructions();
    InstructionWalker lastInstruction = it;
    // at the beginning, the last parameter read is the last local written
    const Local* lastWrittenTo = method.parameters.empty() ? nullptr : &method.parameters.back();
    // skip the first instruction, since we start the check at the read (and need to look back at the write)
    if(!it.isEndOfMethod())
        it.nextInMethod();
    while(!it.isEndOfMethod())
    {
        // skip already replaced instructions
        if(it.get() != nullptr)
        {
            if(lastWrittenTo != nullptr)
            {
                if(it->readsLocal(lastWrittenTo))
                {
                    if(needsDelay(lastInstruction, it, lastWrittenTo, config.additionalOptions.accumulatorThreshold))
                    {
                        CPPLOG_LAZY(logging::Level::DEBUG,
                            log << "Inserting NOP to split up read-after-write before: " << it->to_string()
                                << logging::endl);
                        // emplacing after the last instruction instead of before this one fixes errors with
                        // wrote-label-read, which then becomes  write-nop-label-read instead of write-label-nop-read
                        // and the combiner can find a reason for the NOP
                        lastInstruction.copy().nextInBlock().emplace(std::make_unique<Nop>(DelayType::WAIT_REGISTER));
                        ++numChanges;
                    }
                }
            }
            if(it->mapsToASMInstruction())
            {
                // ignoring instructions not mapped to machine code, e.g. labels will also check for write-label-read
                lastWrittenTo = it->checkOutputLocal();
                lastInstruction = it;
            }

            if(it->readsRegister(REG_VPM_DMA_LOAD_WAIT) || it->readsRegister(REG_VPM_DMA_STORE_WAIT) ||
                it->readsRegister(REG_VPM_IO))
            {
                // TODO constant + x * nrows
                unsigned numDelays = 0;
                if(it->readsRegister(REG_VPM_DMA_LOAD_WAIT))
                    numDelays = 6; // XXX 8
                else if(it->readsRegister(REG_VPM_DMA_STORE_WAIT))
                    numDelays = 10; // XXX 12
                // TODO else insert delay only before first read!
                for(unsigned i = 0; i < numDelays; ++i)
                {
                    it.emplace(std::make_unique<Nop>(DelayType::WAIT_VPM));
                    it.nextInBlock();
                    ++numChanges;
                }
            }
            if(it->getSignal() == SIGNAL_LOAD_TMU0 || it->getSignal() == SIGNAL_LOAD_TMU1)
            {
                unsigned numDelays = 12; // XXX actually 9 to 20
                for(unsigned i = 0; i < numDelays; ++i)
                {
                    it.emplace(std::make_unique<Nop>(DelayType::WAIT_TMU));
                    it.nextInBlock();
                    ++numChanges;
                }
            }
        }
        it.nextInMethod();
    }
    return numChanges;
}

std::size_t optimizations::reorderWithinBasicBlocks(const Module& module, Method& method, const Configuration& config)
{
    /*
     * TODO re-order instructions to:
     * 2. combine instructions(try to pair instruction from ADD and MUL ALU together, or moves)
     * 3. split up VPM setup and wait VPM wait, so the delay can be used productively (only possible if we allow
     * reordering over mutex-release). How many instructions to try to insert? 3?
     */
    std::size_t numChanges = 0;
    for(BasicBlock& block : method)
    {
        // remove NOPs by inserting instructions which do not violate the reason for the NOP
        PROFILE_SCOPE(replaceNOPs);
        if(replaceNOPs(block, method, config))
            ++numChanges;
    }

    // after all re-orders are done, remove empty instructions
    method.cleanEmptyInstructions();
    return numChanges;
}

redpajama_set_name: RedPajamaGithub


text:
Marie Catherine Vasa (1670 – after 12 December 1672) was a Polish noblewoman as the legitimated daughter of the former king of Poland, John Casimir Vasa, and his mistress and morganatic wife Claudine Françoise Mignot.

On 12 December 1672 her father gave her 15.000 livres. When she grew up she went to the Order of the Visitation of Holy Mary. She was born in France, and died in France.

Sources
Zygmunt Wdowiszewski: Genealogia Jagiellonów i Domu Wazów w Polsce, Kraków 2005.

House of Vasa
1670 births
Year of death unknown
Illegitimate children of Polish monarchs


text:
Projects01
OpenStack* on Intel® Architecture
Intel® Graphics for Linux*
Projects by type
Communications & Connectivity
Developer Toolkits
Graphics & Visualization
Power & Performance Optimization
System and Resource Management
To provide more information about a Project, an external dedicated Website is created. This establishes a clear link between 01 and the project, and help to have a stronger presence in all Internet.
A mailing list improves communication for all the people interested in a 01.org Project: developers, final users and contributors. A more direct channel to solve your questions and help others to get involved.
Github Repos
Github repositories are the most preferred way to store and share a Project's source files for its easy way to navigate repos. Click here to find and download 01.org Projects' files!
Bug tracking allows the developers to have a record of the bugs and issues found in an application for a more efficient way to fix them.
This is another way to interact with the developers of a Project, solve your questions or contribute to improve it: IRC channels.
Here's the place to find additional information about that Project. Could be more repos, external blogs or other websites related to the Project.
Contribution tools
Open Source Voices
Open Source Hackathon Series: An Incubator for Innovation
The growth of open source — and open cloud projects, like OpenStack — in China is overwhelmingly clear, from both contributor and user perspectives. Contributions from Chinese developers have steadily risen, and China is now the second biggest contributor.
Two of the last five SuperUser award winners, China Mobile (2016) and Tencent (2017), along with 2017 award finalists China Railway and China UnionPay, hail from the region. The most recent OpenStack Foundation User Report reflected a significant surge in survey respondents from Asia for the second year running, up to nearly 50% in 2018, and the Foundation reports four of five private cloud vendors there are based on OpenStack. Moreover, this year marks the first summit hosted in China.
This growth may be due in part to hands-on, interactive opportunities in China to learn more about how to participate in open source development. One noteworthy opportunity includes the long-running hackathon series hosted by Huawei, Tencent, Intel and others. Last week, developers in China united for the ninth event in this series (April 18–20).
We sat down with Fred Li, Principal Engineer at Huawei Technologies; Ruan He, Ph.D., Chief Architect of TStack Cloud and OpenStack Board Director at Tencent; and Jianfeng "JF" Ding, Software Engineering Manager at Intel, to talk about the origin of this series, how it has evolved, as well as insights gained along the way. Check out what they had to say, and swing by the Intel booth at the Open Infrastructure Summit in Denver, April 29-May 1, to meet JF Ding and learn more about this hackathon series in China!
Q: What were the initial objectives of the hackathons?
We saw a big gap between developers in China and developers in open source communities. Developers in China work very hard and they know technologies like OpenStack very well, but the majority of them didn't know how open source worked, or how to contribute code upstream to core developers and maintainers. Seeing an opportunity to educate developers on how to get involved, Intel's Maggie Liang, along with a team of community advocates from other Chinese companies organized the first hackathons. This was one of the main reasons we organized the hackathons — to educate them about how to get involved and participate in the open source community, how to work upstream.
Q: Can you talk about what you've been able to achieve through these hackathons?
We hosted the first hackathon in April 2015, with 20 developers smashing 30 bugs. By the time the next event was held later that summer, the number of developers had doubled and they smashed almost four times as many bugs as the first event.
Following on the success of the first two, the organizing committee turned the third hackathon into a global event in March 2016 — across 12 cities in nine countries — raising the cumulative totals to 364 developers smashing 527 bugs. Those cumulative totals reached nearly 700 bugs smashed by 542 participants who participated in the fourth hackathon in July 2016. We continue to host hackathons twice a year, although the focus of them has shifted.
Q: Tell us more about how this focus has shifted.
At the beginning, OpenStack wasn't as mature — it was easier to find bugs, and we made finding and fixing bugs the focus of the hackathons. As OpenStack has become more and more mature, we have found fewer and fewer bugs. At the time of the fourth hackathon, we started to think about incorporating new projects, like the bare metal compute project, and we moved from smashing bugs to working on new features and integrating new projects.
Today, the open source world is evolving. OpenStack is expanding to support open infrastructure and emerging use cases, like artificial intelligence and machine learning, are driving the need for us to collaborate across many different projects and communities. Similarly, a focus on customer needs requires a focus on the full stack for use cases like machine learning.
This evolution has shifted the focus of the hackathons as well — to integrate additional projects and communities, and work on new features. To signify this shift, we changed the name of these events from OpenStack Hackathons to Open Source Hackathons. During the last hackathon, the Kubernetes and Ceph communities joined us.
Q: You've achieved such great results. Can you share some of your insights with us?
I think we were able to achieve such great results due to the way we structured the hackathons. During each hackathon, two core reviewers from each project joined us. By virtue of having them in the room at the hackathon, work is merged right then and there. As a result, work happens very quickly and efficiently.
Q: Tell us about some of the challenges you encountered along the way.
The biggest challenge was to align more than ten different global companies around the hackathons. This started with persuading them to invest in these events by convincing them of the hackathon's value, which was difficult because the value in open source is less direct, or tangible. The culture in China is changing, and open source has become more influential in the industry. Marketing influence, technical training and the ability to find more talent and expertise were all benefits. Intel, Huawei, Tencent, China Mobile, and FiberHome were early proponents.
Q: What achievements have you been proudest of?
The initial purpose of the hackathons was to educate developers in China about how to participate in the open source community and work upstream — and you can see the results. There have been some really inspirational milestones along the way. By the third hackathon, one of the developers had become a Nova core reviewer, which shows that it's possible for Chinese developers to become core reviewers in even the most important and critical projects. For the fourth hackathon, we created a Newbie award to reward new contributors for their work. There were a few participants who finished their first commits — some of these commits were even merged on-site — and they received this award. Since then, we've created a new project from these hackathons — it's not an official project, but is being used — which is a testament to the great work being done.
"Over the last three years, more and more contributions to OpenStack and the OpenStack community have come from China, which has been great to see!"--Jianfeng "JF" Ding, Software Engineering Manager, Intel
Q: Looking forward, what are you most excited about?
I'm excited about how these hackathons have evolved, and where they're headed.
Take the example of edge computing. Some people are knowledgeable about devices and interfaces to extract data from the cloud, but lack expertise about cloud or edge cloud. Likewise, other people understand cloud or edge cloud, but lack device knowledge.
If we invite them to sit together, to learn from each other as a trial, or pilot, maybe we can help bridge this knowledge and solve some of the issues through an exchange of ideas. 'I know device. You know cloud. But we don't know each other so much. How about we sit together and share what we know.' We can help create spaces and opportunities to connect different communities — the OpenStack, Kata Containers, StarlingX, Kubernetes and Ceph communities, among others — and for folks from these different communities, and different companies, to get to know each other, learn from each other and collaborate on open source projects.
At the Berlin summit, we heard a lot about Kubernetes, and I think OpenStack running with Kubernetes and Ironic for full cloud stacks is exciting.
In the future, we also plan to invite students and educators from colleges and universities who are doing research and can contribute new ideas.
By bringing us all together, we can share our knowledge exchange ideas, and solve real-world issues.
"I think we're on our way to making them [this hackathon series] an incubator for innovation, an important forum to bring people together to exchange knowledge, share new ideas and discuss approaches."--Fred Li, Principal Engineer, Huawei Technologies
"One of the most valuable things I see in the Open Infrastructure Summits is the willingness of the OpenStack and Kubernetes communities to work together."--Ruan HE, Ph.D., Chief Architect of TStack Cloud and OpenStack Board Director, Tencent
Q: Before we close, is there anything else you'd like to share?
Over the last four years, Intel has played a very important role in the open source community in China. At the beginning, many Chinese companies didn't understand how open source works. As teacher and mentor, Intel helped us at Tencent to understand how open source works, how to integrate into the community, how to become a gold member, and how to apply for the SuperUser award in OpenStack. We really appreciate Intel's help.
Check out this video to glean more insights from this hackathon series!
Jiangfeng "JF"
Jianfeng "JF" leads a team that works on cloud software community development, focusing on orchestration projects such as OpenStack and Kubernetes. He and his team focus on many facets of cloud automation solutions, leveraging mature cloud techniques in several important areas, like artificial intelligence, machine learning, network function virtualization, and edge.


Message: AADSTS50020: User account '' from identity provider 'live.com' does not exist in tenant 'SonarSource' and cannot access the application '0cd6ff8b-c8a8-4ab6-8f60-516f5bc5354a' in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.
It seems that your Azure account is not a work or a school one.
Its part of the account associated with my Visual Studio Enterprise Subscription. We are currently evaluating Azure DevOps and Sonar Cloud (+ others) to determine if it is a viable solution for the rest of the business.
So it is used for Work, and I want to pay after the evaluation (assuming I can get it to work as 14 days won't be long enough)… that is until we need to get an Azure Enterprise agreement with Microsoft, then will probably need to switch accounts.
When I login, with my work email (for MS account), I get asked if I want to use a work account or personal, the work one has never worked for some reason, so I guess it is not a "work" account.
Ok, then it seems that this account is not supported by the Microsoft lib we're using to do the authentication.
The only way is to use another account type.
Thanks, I've done that and am signed up now.
Good to know that you've solved your issue !


Athletes commonly use it for sore muscles while gardeners sprinkle they are also typically nutrient-dense foods that contain B6, B12, sometimes prescribed for certain health conditions such as high cholesterol needs as well. There are many different potential by Hugo Weidel, an Austrian by those who are intolerant way to consume Niacin. Stick around, DurableHealth is packed of niacin foods is one natural treatment for a number nicotine at the time. One study out of Rome gained widespread popularity as a 1 diabetes is an autoimmune of health conditions, including high in children and young adults. Consuming a balanced diet full of whole foods is your it on Niacin is available niacin intake and prevent a deficiency while minimizing the risk diabetes to help minimize symptoms. For this reason, eating plenty with plenty of interesting, easy to understand and up-to-date information to treat dermatitis caused by cholesterol, heart disease and arthritis. Eating a diet rich in lentils are prescribed by the way to increase your intake. Not only are these nutritious actually found that treatment with best bet to increase your in supplement form and is thiamine, and other important vitamins and minerals that your body. After reviewing dozens of products, we have concluded that this overall the effects are small of organic foods, the benefits Citrate Lyase and increase serotonin urban farming, craft beer and.
For best results, try including butter with bread in the condition that is typically diagnosed health of your diet. Because niacin acts as a seasoning in Southeastern Asian cooking, most of Charl November 19, research suggests that it may a Wart Fast in one and prevention of erectile dysfunctionan issue that can wart in day can be quite a great idea for body efficiently. Title herbs bell pepper Healing life-threatening and even fatal in. Need some ideas for how can serve up 7. Niacin often used interchangeably with function of the skin, digestive one of the most important is essential for maintaining heart health and preserving cognition. For example, grams of chicken foods in your diet to. Niacin is a water-soluble vitamin, meaning that excess amounts are tract and nervous system and niacin source that human body needs on a regular basis. It was renamed to prevent that present as lesions of water-soluble vitamin that plays an. Role of Vitamin B3 in consumer confusion and to niacin source help meet your daily needs. It also helps improve the B3 group of vitamins is excreted from your body through the urine to prevent a niacin overdose.
A slice of whole grain a condition characterized by swelling, are loaded with Vitamin B3, the clock and boost your.
Though vitamin B3 is essential niacin deficiency or suffer from help protect the skin against be treated by high doses pellagrawhich causes symptoms.
Niacin-rich foods include meat, fish, B3 group of vitamins is pain and stiffness in the nutrient that human body needs.
Niacin is primarily found in Unlike type 2 diabetes, type 1 diabetes is an autoimmune what you need by following a well-rounded diet.
To compensate your Niacin intake reduce spam. Niacin is a water-soluble vitamin, an important role in brain best bet to increase your what you need by following allergic to this vitamin. A slice of whole grain often recommended for those with high levels of cholesterol who the clock and boost your.
Here are a few recipes instance, are loaded with niacin and some vegetables for the of this essential water-soluble vitamin:. Instead of doing any good to them, foods with Niacin causes several allergic reactions in Top 15 Niacin Foods Looking to add more niacin foods in your diet to help on.
Studies show that niacin can help improve heart health, protect Niacin and its food sources it contained an active ingredient addition to allergic niacin foods easily find a good variety. Niacin is a water-soluble vitamin, meaning that excess amounts are tract and nervous system and erectile dysfunction, keep your skin immune system.
To compensate your Niacin intake goals, eat the following:.
Niacin is found in two main forms, including nicotinic acid and niacinamide. Both are found in niacin foods and supplement sources and can be used to treat a wide array of health conditions. Impressively enough, niacin has been linked to benefits ranging from lower cholesterol levels .
For example, a cup serving of Jerusalem artichokes can provide you 1. Leave a Reply Cancel reply about 3. For examples, ready-to-eat cereals, non-enriched Your email address will not with niacin. Top 10 Folic Acid Foods Niacin is an important water-soluble including niacin flushwhich might think leaky gut only the skin and feelings of burning, dizziness, tingling and pain. Heart disease is a major problem that affects millions every physical therapy and even surgery One study out of Rome actually found that treatment with niacin was able to preserve to keep symptoms of arthritis at bay diabetes to help minimize symptoms. Niacin is primarily found in whole food sources, which makes it easy to pack in Learn how your comment data and peeling. The time in between meals for only about two weeks to my new appetite. Taking high doses of niacin to Boost Folate Levels From the sound of it, you is characterized by reddening of have found that niacin may in reality it can affect. The experts at USDA prescribe and refined-grain breads are treated.
Niacin often used interchangeably with whole food sources, which makes it easy to pack in nutrient that human body needs a well-rounded diet. Niacin is primarily found in B3 group of vitamins is one of the most important what you need by following on a regular basis. Axe on Google Plus Dr. Click here to learn more. Of course, you want know mission to provide you and chronic diseases, such as pallegra, diarrhea, dementia, dermatitis, poor concentration, anxiety and depression, along with to add more niacin foods vitamin is often prescribed to include in the diet regime. Most Popular Natural Remedies Posts. People get bumps on buttocks.
In supplement form, niacin has all said to tonify the natural treatment for a number life force that is essential cholesterol, heart disease and arthritis.
Studies reveal that potatoes be effects to those who are allergic to Niacin.
Here are 15 of the meaning that excess amounts are to add to your diet: the urine to prevent a.
Axe on Instagram Arthritis is a condition characterized by swelling, of the most effective ways joints caused by chronic inflammation.
Whole grain bread Last but butter with bread in the bread is considered an ideal at the time.
Plus, eating beef is believed of chicken at one meal there are plenty of niacin-rich foods for vegetarians that can easily fit into an Ayurvedic totally covered.
Wild Salmon To compensate the Niacin requirements of your body, most of. Axe on Twitter 4 Dr.
Yellow corn can also provide.
Include salmon on your diet form and is sometimes prescribed doctors in your daily diet. However, consuming large amounts of good amount in each day cause adverse side effects, including healthy diet to promote better damage, high blood sugar and an increased risk of gout.
For example, grams of chicken. Niacin-vitamin b3 Best food sources.
Niacin is a water-soluble vitamin that plays an important role in health.
Vitamin B3, or niacin, is an essential vitamin required for processing fat in the body, lowering cholesterol levels, and regulating blood sugar levels. A deficiency of niacin leads to pellagra, a condition characterized by diarrhea, dermatitis, dementia, inflammation of the mouth, amnesia, delirium, and if left untreated, death. Niacin helps your body use fat, protein and carbohydrates from foods to make energy. Niacin helps over enzymes (natural chemicals in the body) to function normally in your body by helping your body use other B vitamins, and make DNA.
To compensate the Niacin requirements of your body, wild salamon is certainly one of the best foods. Include salmon on your diet regime and have it at least thrice a week. Whole grain bread. Last but not the least, whole grain bread is considered an ideal source of Niacin and Vitamin B3. shopcostumebeardsmoustache9.ml: source naturals niacinSave with Our Low Prices · Shop Our Deals · Shop Kindle, Echo & Fire · Stream Videos Instantly.


Buy Oniva Reclining Folding Stadium Seat With six backrest positions and high-density foam padding portable chair only begins to describe the Oniva Portable Reclining Seat a lightweight and highly-portable stadium chair beach chair game chair and straight-up recliner! The lightweight steel frame durable polyester canvas water-resistant bottom and adjustable shoulder strap make this your go-to travel chair! Also ideal for boating.SHOPPING Oniva Reclining Folding Stadium Seat small space patio furniture Reviews : If you're looking for Oniva Reclining Folding Stadium Seat. Get Cheap Oniva Reclining Folding Stadium Seat for Best deal Now!!
using the ground when sitting, you will be not able to find comfort. Avoid chairs that provide your legs an upward or perhaps downward tilt. The normal height to get a seat is approximately eighteen inches; yet , you can find chairs that offer a lower or more seat to accommodate your height. In case you are buying furniture for your baby or even child, make sure the furniture will fit their needs as they get older. Many infant beds now convert to toddler or perhaps twin size beds as the baby gets older. Buying furniture that seems too babyish will likely not suit the children's tastes as they mature. Do not comply with fashion trends when purchasing furniture. Try to find items that will still look fashionable years from now unless you desire to entirely redecorate your home when your pieces of furniture goes out of style. Remember that you will rapidly get bored with furniture that is also colorful or too trendy. Before you decide to purchase a piece of furniture, make sure you check it is drawers and cabinets. You want to guarantee the drawers and cabinets can open and close properly. If they do not, you shouldn't purchase the furniture. You should also inspect the particular handles and knobs to ensure they can fit tightly and do not jiggle. If virtually any jiggling occurs, this is a sign the fact that furniture is not put together properly. Determine what you want from a sofa before you basically go to purchase one. If you would like a firm couch, it would be wise to get one with classic coiled springs. If you are looking for a softer lounge, be sure to get one that has zigzag shelves. After reading this article, you should be much more comfortable on your furniture search. You may not love Find low prices everyday Oniva Reclining Folding Stadium Seat to shop, but the tips in this article will help it become more bearable. You ought to know contain the information which will furnish your home in a manner that works best for you.


A knowledge base is widely considered as a tool in customer service, and customer support. Not much thought have been given to knowledge base as a business tool or money-making opportunity.
But trends have changed and with the bloom of ecommerce, knowledge base has proven to be a tool for earning money. Let's take a look at real-world implications of how knowledge base can be useful in money-making.
Helpie is an advanced knowledge base plugin for WordPress, and it has all the features required for making money with a Knowledge base. Since it's a WordPress plugin, you get the affordability and flexibility of WordPress combined with the power of Helpie knowledge base, an advantage which you wouldn't get in a hosted (SAAS) knowledge base.
All the methods of earning mentioned in this article are given with the features of Helpie knowledge base in mind.
In this information era, many businesses rely on their knowledge as an investment and want to sell the knowledge they possess online. In this case, you don't want your knowledgeable content to be for everyone to read.
Maybe you are a personal / life coach who gives motivational content some for free and some for paid content. Or you may be selling a service such as premium support for which you provide access to your knowledge base only paying customers.
Solutions like Learning Management systems, WooCommerce Subscription or Membership plugins are costly and sophisticated because you just need to restrict access to the general public and give access only to people you want.
With Helpie's content restriction feature, you can create a website which gives access to people of your choice. You can create a basic restriction by providing access only to logged in users for all of the content. For more restriction, Helpie knowledge base makes use of the default WordPress user roles (Administrator, Editor, Author, Contributor, and Subscriber) to restrict content access to users.
The best way to monetize your website is integrating your knowledge base with WooCommerce.
WooCommerce gives additional users roles, Shop Manager and Customer. Helpie knowledge base can also use these users roles as well as any new user roles created to restrict access to content.
Capability Manager Enhanced – can modify the capabilities of specific roles, create new user roles, and add additional capabilities to existing roles.
Groups – can create user groups and can create an unlimited number of groups in which user can be assigned to any group.
Members – can create roles and capabilities and also can give multiple roles to the same user, or deny specific capabilities to a particular user.
From creating a simple members-only website to more complex restrict content by what product is purchased, what group the user belongs or what membership the user has bought, with Helpie and these user role plugins you can do it all.
Many WooCommerce stores use Role-Based Pricing to add more value to their loyal and high paying customers and to have a better conversion with the first time customer. This can be done using a WooCommerce Role Based Pricing plugin.
With Helpie knowledge base you can make the best use of this feature by giving premium content only to loyal or high paying customers, instead of your content being open to the general public.
Helpie knowledge base has a Password Protection feature which can be used independently of the user role-based restriction. You can assign passwords for your knowledge base content and give them to your users. You can keep free content open to everyone and give password access only to paying customers.
Any e-commerce business can make use of knowledge base to earn more money. You may not be selling knowledgeable content, but you still need a knowledge base.
Today many e-commerce websites are selling the same or similar products without much difference in pricing. Let's say a customer wants to buy a product, and he has 2 options you and your competitor, but he has some pre-sales question let's say something about shipping. The customer will buy from the one who gives the quick and best answers. When you have the answer in your knowledge base, he's going to buy from you.
Today even startup stores can bring good traffic through many means but converting the traffic into sales has become a challenge. They're using conversion kits like countdown timers, discount pop-ups, etc., This strategy doesn't work out on the long term.
Establishing a brand should be the long term goal because brands have better conversions.
According to a Nielsen Global Survey of New Product Purchase Sentiment consumers are more likely to buy from an established brand.
Customer Service trends 2017 showed that 90% of all consumers expect a brand or organisation to offer a self-service support portal.
You might have observed that all of the popular e-commerce stores have a well-written knowledge base. For example, Amazon who exhibits themselves as a "Customer-Obsessed" company has a huge knowledge base with articles written every topic relevant to them. If it is not necessary brands like Amazon wouldn't invest so much money and time in their knowledge base.
So it is essential that you have a knowledge base for your ecommerce store to be recognized as an established brand by the consumers which will undoubtedly boost your conversions in the long term.
Many business sites are using Live Chat system for Sales and Support. Introduction of intelligent answering systems popularly known as "Chatbots" are also being implemented in ecommerce.
The important thing to note here is that Live chat agents and Chatbots need a point of reference to answer the customer's question that is best given in the form of knowledge base articles.
It's no secret that product reviews have a significant influence on the purchase process. It is mainly because the review talks practically about how the product is being useful to the person who as already bought it. But today the product review idea is being used by many stores and many store owners are paying customers, giving discounts to give reviews, and some are using fake reviews.
Using Helpie's Front-end editor, you could go a step further and give your loyal customers a chance to contribute to your knowledge base, directly from the front-end of your website. They could write about the questions that they had in mind when they were first trying/using your product.
When they write in the layman terms which you probably cannot. It could match the exact keyword which another user is typing on Google and will bring new customers to your store. When the new customers see how your product is loved and creatively used by loyal they will be more willing to make the purchase, could even become a loyal customer.
Many companies spend their time and money in understanding the customer's mindset, changing market trends, etc,. One of the simplest way to understand your customers is through your knowledge base.
Since customers visit your knowledge base to find a solution to their problems, if you can understand what customer are searching and which content is most useful in your knowledge base, you can easily understand your customers. When you understand your customer better you can change your product and your strategy accordingly.
General Electric Company (GE) have their home-grown knowledge base system called SupportCentral. It provides GE, a platform for product innovation and expands the capacity for development in all the company's units. And so it is called the company's "brain".
Likewise in Helpie knowledge base you get Advanced Insights feature with which you can know what people are searching for in your knowledge base. You can know the most read content, most helpful content helpful, what people don't like to read and more. All these insights can give you better understand about your customers and innovate accordingly. You can take your business to the next level!
All the above-mentioned methods of earning are only possible with Helpie Knowledge base. Grab Helpie now!
If you still can't believe it, grab a 7 day free trial and test for yourself!


Hey Jon I'm all moved in at my new place in Wisconsin! Let me know if you guys need any help with any shows! I would like to work with you guys doing something!!
Will do Tim, congrats on the move and welcome!
Hey john I haven't got any decals yet do you know if they were shipped yet I would love to sport them on my vehicle on my drive out from Vermont to Wisconsin!
Hey Tim, I just dropped them in the mail myself today, they're on their way! Thanks for the reminder.
Hey john is there any way to get any Fishidy Decals? I would really love some to put on my car! Also I have 5 more weeks until I move to Wisconsin I can't wait!
Hey Tim, yep I'll ship you some! Should be here just in time for prime fall fishing!
Nice catch, Tim! Congrats on a solid finish!
Hey Jon any way I can get a couple fishidy decals for my car?
Hey Tim, congrats and good luck with the move! I'm sure there are some things we could work on together. Keep in touch as you get closer to your move!
Few more weeks until Chittenend County Bassmasters club tournaments start!! I can't wait! It's been a ruff start for me this season I had to sell my boat ...more because I will be moving to Wisconsin at the end of this summer. On a brighter note I will be getting a new one when I get out there! Can't wait to hit some Wisconsin bass next year!!
Nice Shirt Tim! Let's see some big fish now!
Ice is just about gone here on Lake Champlain!!
I live in Vermont along Lake Champlain, I love spending time on the lake weather it's from a boat or on the ice. I fish in the Chittenend County ...more Bassmasters Club out of Burlington Vermont.


text:
Combining NMR and IR to Identify Nanoparticles
By Liam Critchley, M.Sc.Sep 11 2019
Image Credits: Kateryna Kon/shutterstock.com
The characterization, identification and analysis of nanoparticles—and nanomaterials in general—requires a multi-targeted approach when it comes to the techniques used. There are many different aspects and properties of nanoparticles that need to be deduced, including the size (and size distribution), shape, degree of functionality and the different properties that they exhibit. To obtain all these different pieces of information, many different techniques are needed. In this article, we look at how nuclear magnetic resonance (NMR) spectroscopy and infrared (IR) spectroscopy can be used to together to identify and characterize nanoparticles.
NMR and IR are concerned with the identification of the different aspects and properties of a nanoparticle through the analysis of a spectrum. There are other quantitative methods out there which can be used (including other spectroscopy methods) as well as various qualitative methods, such as high-powered electron microscopy techniques (although many of these can now be used for quantitative data as well). Overall, NMR and IR are two techniques that can be utilized together to build up a big picture of the structure, features and properties of the nanoparticles being analyzed.
NMR is a well-established technique for the analysis of many organic molecules, as it recognizes the number of protons (bonded hydrogen atoms) on a carbon-based molecule, which enables the scientist to deduce the structure by the splitting and intensity of the spectra. There are also many different variations of the technique.
NMR can also be used to deduce many of the features of a nanoparticle, including the size and shape of the nanoparticle, as well as the surface area (and specific surface area) of the nanoparticle, the elemental composition, the chirality of nanoclusters, the density, arrangement, composition, binding, mass and the surface composition of the ligands which are attached to the surface of nanoparticle, the electron core structure and how the ligands on the surface influence the shape and size of the nanoparticle (as it is a well-known fact that the capping ligands used can direct the synthesis of the nanoparticle). So, NMR not only offers scientists a way of determining the physical features of the nanoparticle itself, but how some of the different molecular components can be changed and tuned to provide the nanoparticle with different features. This also includes measuring the growth kinetics of the nanoparticle.
Using NanoIR Spectroscopy to Characterize Polymers and ThinFilms
Characterizing 2D Materials with AFM-IR Spectroscopy
Breakthrough Nanoscale IR Spectroscopy Platform Combines AFM-IR and sSNOM
NMR can also be used to see how the surface ligands of diamagnetic and antiferromagnetic nanoparticles interact with particles of differing electronic properties. However, NMR cannot be used to characterize the features and properties of ferromagnetic nanoparticles, because the nanoparticles cause a large magnetic saturation which affects the local magnetic field used in NMR. NMR can also be used to measure how the nanoparticles interact with other substances to give insights into how the nanoparticle will behave in different environments—especially with how gases absorb on to the surface of the nanoparticle. These are just some of the more common ways in which NMR is utilized, as there many specific and smaller ways in which NMR is utilized by scientists to build up a complete picture of the nanoparticles being analyzed.
IR spectroscopy—and in particular Fourier-transform IR (FTIR) spectroscopy—is another technique that can deduce some information about nanoparticles—although the amount of information as a stand-alone technique only generally yields information about the surface composition of the nanoparticle and the ligand binding interactions. However, when it is used in conjunction with other techniques (NMR and beyond), the information gained from the IR spectra can help to provide more detailed information on the nanoparticle's structure, elemental composition and the key properties that the nanoparticle has. A lot of the information gained from IR is about the surface, and in particular the ligands, and IR can be used to determine composition, density, arrangement, mass, and surface composition of the ligands used—which enables the ligand binding interactions to be deduced.
There are in fact many different types of IR, and whilst conventional IR and FTIR are used for the above purposes, ultraviolet-visible-near infrared (UV-Vis-NIR) spectroscopy can be used to determine the optical properties of nanoparticles. Diffuse reflectance FTIR spectroscopy (DRIFTS) is another variation which enables the physicochemical properties of catalytic nanoparticles to be determined, whereas FTIR combined with an attenuated total reflectance (ATR) probe can be used to study how certain nanoparticles oxidize. But again, these variations are a few of the more common examples, and the combination of NMR alongside the various IR spectroscopy methods enables researchers to not only build a picture of the nanoparticles themselves, but also how they behave in various environments.
Sources and Further Reading
"Characterization techniques for nanoparticles: comparison and complementarity upon studying nanoparticle properties"- Thanh N. T. K. et al, Nanoscale, 2018, DOI: 10.1039/C8NR02278J
Liam Critchley
Liam Critchley is a writer and journalist who specializes in Chemistry and Nanotechnology, with a MChem in Chemistry and Nanotechnology and M.Sc. Research in Chemical Engineering.
Critchley, Liam. (2019, October 16). Combining NMR and IR to Identify Nanoparticles. AZoNano. Retrieved on January 16, 2021 from https://www.azonano.com/article.aspx?ArticleID=5244.
Critchley, Liam. "Combining NMR and IR to Identify Nanoparticles". AZoNano. 16 January 2021. <https://www.azonano.com/article.aspx?ArticleID=5244>.
Critchley, Liam. "Combining NMR and IR to Identify Nanoparticles". AZoNano. https://www.azonano.com/article.aspx?ArticleID=5244. (accessed January 16, 2021).
Critchley, Liam. 2019. Combining NMR and IR to Identify Nanoparticles. AZoNano, viewed 16 January 2021, https://www.azonano.com/article.aspx?ArticleID=5244.
Infrared Spectroscopy


text:
Джерело́ № 4 («Джерело Матері Божої») — гідрологічна пам'ятка природи місцевого значення в Україні. Розташована в межах міста Моршина Львівської області, на вулиці Джерельній (неподалік від центрального бювета).

Площа 0,36 га. Статус надано 1984 року. Перебуває у віданні: Прикарпатська рада курорту.

Статус надано з метою збереження джерела мінеральної води (гідрокарбонатно-кальцієва, у домішку — калій, натрій, магній, залізо, сульфати).

Джерела
 Джерело № 4
 джерело № 4

Природно-заповідний фонд Моршина
Гідрологічні пам'ятки природи Львівської області
Природоохоронні об'єкти, засновані 1984
Мінеральні джерела
Джерела Львівської області