One of the most important tools you'll ever use when diving in the deep blue sea is the dive watch. Yes, your dive mask, oxygen tank, and fins will help you move around underwater. But your watch will let you know when you need to resurface, time your ascent, and measure the time you've spent resting between dives. Not to mention, it's the perfect backup to their dive computer, as rudimentary as it is.
Does it have a unidirectional bezel?
Does it have luminescent hands and markers?
The Cressi Leonardo is actually a dive computer, technically not a dive watch. But it does perform much like a dive watch with extra useful features. The Leonardo features a single button for easy programming of Air, Nitrox, and Gauge modes and a high-definition screen for easy reading. It has extended battery life due to the battery saver mode and power-saving processor. This dive computer also features a backlit screen enabling you to enjoy night dives. It features an adjustable FO2 and PO2 settings as well as a user-selectable deep stop function.
If Navy Seals use it for diving, why shouldn't you? The Luminox Men's 3001 has a self-powered illumination system making the markers and watch's hands glow 100 times brighter than other watches of this caliber. It is water resistant up to 200 meters (20 ATM) and comes with a stainless steel watch case and a unidirectional rotating bezel. You also get a scratch-resistant sapphire crystal, anti-reflective coating, and 4-year battery life.
Seiko's SKX173 is a dive watch to watch out for. This automatic watch comes with a stainless steel case, a gear-edge unidirectional bezel, an off-center crown, a black dial, a scratch-resistant Hardlex crystal, and Lumibrite hands and markers. It is water resistant up to 200 meters and features an English/Spanish day/date window.
The Citizen Eco-Drive Promaster Diver Watch doesn't require a battery since it's fueled by light using Eco-Drive technology (hence the name). Like other dive watches, it is water resistant up to 660 feet (200 meters) and features a unidirectional bezel as well as luminous hands and markers. We love the small decompression dive table printed on the band.
Casio's G-Shock DW-9052-1CCG is the perfect choice for individuals looking for a dive watch that has the basic features, a rugged design, and the capability of enduring any kind of rough and tumble activity the wearer puts it through on land or in the water. This G-Shock watch is water resistant up to 200 meters and features a countdown timer, a daily alarm, an hourly time signal, an auto calendar, and a stopwatch. It's also shock resistant. And the price is definitely nothing to scoff at either.
Victorinox is well-known for producing top quality products and this dive watch is no different. It comes with a black PVD stainless steel case, a unidirectional rotating bezel, luminescent hands and markers, a date window, a screw-down crown, and an anti-reflective scratch-resistant sapphire crystal. Unlike most of our other picks, this dive watch is water resistant up to 500 meters or 1650 feet. Because it is a mid-size watch, it can fit most wrists – men and women.
The 009 Seiko diver was the watch to own back in the day. It is also considered an icon in the watch collecting community. And for good reason. This dive watch is one of the best you'll ever get under $200. It is a self-winding watch that is water resistant up to 20 ATM. It features lumibrite treated hands and markers, a day and date display, a uni-directional bezel, and a scratch resistant hardlex crystal. The solid stainless steel case and rubber dive style strap look great whether you're going casual, classy, or cool.
If you want a classy dive watch, then the Orient Ray II should be right up your alley. It is powered by a 22-jewel, Caliber F69 automatic movement and allows you to stop the second hand for more accurate syncing of time. It also features a hand-winding capability and a 120-click unidirectional diving bezel. The watch also has a day and date window, a stainless steel bracelet, and luminescent hands and markers for easy visibility in low light surroundings. This dive watch is water resistant up to 200 meters and comes with a 1-year warranty.
The Invicta 0076 is a badass dive watch for individuals on a budget. The black ion-plated stainless steel case and bracelet feels solid and seems built to last. The stopwatch has several functions – 60 seconds, 30 minutes, and 12-hour subdials. The watch also has a date function and silver-tone, luminous hands and hour markers. There's a unidirectional bezel with five-second indexes and a scratch-resistant flame-fusion window. The watch is water resistant up to 200 meters.
The Aquadiver is made of surgical grade stainless steel with a unidirectional ratcheting coin edge bezel, a quick set date, luminescent sword-style hands, and a protective Krysterna crystal window. It has a screw-down crown and is water resistant up to 200 meters.
If you can't find anything that catches your fancy on our list, you might be interested in checking out some of the highly rated watches that we hadn't had a chance to test: Freestyle Hammerhead XL, Momentum Men's Quartz Stainless Steel and Rubber Diving Watch, Seiko Men's SKX007K Diver's Automatic Watch, and the Casio Men's Black Analog Anti Reverse Bezel Watch.
If you're looking for a dive watch, there are several things one must consider before finalizing your choice. Even if money is no object, you still want to get the best right? After all, it is key to your survival underwater. So, what features should you look at in a dive watch?
Any dive watch worth its salt must be water resistant to a certain degree. At the very least, it should have a depth rating of 100 meters or 330 feet which is more than enough for recreational diving. The higher the watch's rating for water resistance means that it has undergone more rigorous testing. Most of our picks are only rated for 200 meters such as the Luminox Men's 3001 Quartz Navy Seal Dive Watch. If you want something with a higher depth rating, then you might want to check out Victorinox Mid-Size 241555 Dive Master 500 Meters Watch which has a depth rating of 500 meters (1650 feet).
A dive watch isn't a dive watch if it doesn't have a unidirectional bezel. What is that, you ask? This is when the bezel only moves in one direction – counterclockwise. This allows you to measure your diving time and easily see it at a glance. Because it only moves in one direction, the diver's safety is never compromised if the bezel is accidentally moved since it will indicate more time has passed.
It's important that you're able to view the time easily while diving. And since light doesn't penetrate far into the ocean, you'll need a watch that actually glows in the dark. Dive watches that use luminescence paint will require exposure to the light to charge up before it can glow. Watches that use tritium do not need to be in the light and typically glows brighter. However, the brightness tends to fade over time.
Since you'll be exposing the watch to water, specifically salt water, it should be made of a material that is corrosion resistant such as rubber, stainless steel, titanium, and silicone. Take note that a longer band is ideal because you'll want it to fit around your wrist while you're wearing bulky diving equipment.
Keep in mind that the best dive watch should be able to perform just as well underwater as it does on land. While style and price will depend on your preference, the factors we discussed – material, luminescence, depth rating, and unidirectional bezel – are not negotiable.


Silk Ribbons are on my mind. It's time to add the Silk Ribbon technique for the Sunflower and Berries canvas (ND 309). Just a reminder: next month, I will be teaching this class at Nashville Needleworks and In Stitches Atlanta. Give them a call to join in the fun. I have so many things to share with the students. I will also be teaching at The Bristly Thistle in October 2012, too... if that fits better for your schedule and location. Hope to see you there.
I used the River Silks Ribbons for this project. It was my first time to use the 13MM size. So lovely. It unfurled off the card and was ready to use. So pretty.
Over the years, my stash of River Silks Ribbons has grown. One might even say... has grown out of control. This week, I decided it was time to find a better way to store and organize my ribbons. After all, they needed... deserved... better respect than to be jumbled up into the same bag.
Here is what I found: a nice group of stackable containers. The transparent plastic allows for a quick glance.
Now, the 4MM ribbons are separated from the 7MM ribbons. The 13MM ribbons are safe, too.
River Silks Ribbons are sold individually; available from your LNS. They have over 240 colors; both solids and patterned. They come in 4MM, 7MM and 13MM widths.
Have you seen their wonderful collections of ribbons grouped by theme or color?
Recently, The Needle Bug (Montgomery, Alabama) posted on their blog photos of the River Silks Ribbons collections which they had in stock.
Here's the link: http://theneedlebug.com/2012/01/colorful/ Give Leigh a call.
How do you store your ribbons? Separate or together with your other threads?
Just a quick note to wish everyone a Happy St. Patrick's Day.
Today is Pat's birthday, too. You remember him... my guy, owner of Business Visuals Photography.
I made these needlepoint belts: one for me and one for him, too. He can still wear his.
One year, I made him an ice cream birthday cake. It looked a little wonky, but tasted very good.
Enjoy the day. Be sure to wear some green today. Or, for those needlepointers in the audience, let's stitch with some green.
Sometimes, I look to Nature for stitching inspirations. Same was true for the Sunflower on the NeedleDeeva canvas (ND 309).
When I am puzzled, I often do an Internet search. This time, Google lead me to some awesome Sunflower photos; each showing a different phase of the Sunflower's life. My eyes were opened and the light bulb went off when I saw this wonderful detail.
This photo in particular really spoke to me. Look at the outer ring... it seems to be taller than the center area. Hmmmm.... how could I make my canvas do the same thing?
Stacked Beads, of course! They would tower above the center Seed area... and would still have a nice perspective for the upcoming Flower Petals worked in 13MM River Silks Ribbon.
The combination of Mill Hill Glass Seed Beads and Sundance Beads size 14 were the best for telling this story. Thanks, Mother Nature.
And, if you notice, I first did a 4-Way Continental stitch in the Brown area. It gave a defined grid which was very user-friendly for placing the Stacked Beads.
All in all, I am very pleased with the look. Hope you will be, too.
March Madness is right upon us. No, I am not taking about the NCAA Basketball Tournament... I am talking about my needlepoint projects and their looming deadlines.
With tonight's immanent time change ... before we spring forward, I thought we could step back in time (together) to see how I came to this wonderful conclusion.
The canvas is from NeedleDeeva and it is called Sunflower & Berries (ND 309). I will be teaching it at Nashville Needleworks on April 21, 2012 as well as at In Stitches Atlanta on April 27 & 28, 2012. I am so excited/honored to visit both shops; I have never been to either. Give Lisa Rusche or Bam Coleman a call and join me in the fun. Can't make it in person? I am sure they can pack the kit up in a wonderful to-go box... plus, the canvas comes with my stitch guide.
My next plan of discovery was to work on the background. Judee/NeedleDeeva told me the white background doesn't have to be white... she was just keeping it white so others could add their own color. (I went with a pale lilac thread.) Any of you who saw me work on this canvas at TNNA Phoenix in January knew I was all over the place looking for inspiration. I had an idea in my mind, and that's where it stayed. I did a lot of stitch/take it out/stitch again/take it out/stitch/take it out/ponder/stitch/take it out/pondered again... until I could get back in front of my computer.
I liked it but wasn't in love with it. Guess it felt too rigid.
I tried Crazy Rain, too. After all, both Strawberries and Sunflowers need a good rain to grow, right?
I was getting close... but I wasn't playing Horse Shoes. I still had a ways to go.
It was the curling vines which continued to call my name.
Remember the Mirrored Confetti Ribbons stitch I did for the wallpaper behind the Cake (Associated Talents/DMC)? Inspired by Julia Snyder's book, Darn Fillings, I began with her original Confetti Ribbons.
But, placing them side by side was too regimented.
I am very comfortable with the concept of "open" canvas for the background stitch. I used Kreinik Braid size 8 057F... it was a nice pale lilac color... easy to use, too. It gave a texture, and didn't get in the way. Bonus: it glows in the dark... who knew? Certainly made this "Halloween" kid happy.
I need a fun name for my background stitch. Add your suggestions in the comment box.
Next time, I will share with you more details of the Sunflower & Berries. Its design size is 8x8 on 18 mesh canvas. You will really have a fun time with this one!


text:
Gabrielle Philiponet
Gabrielle PhiliponetSoprano
Bizet: Les Pêcheurs de perles (Leïla) – Nice Opera, Lille Opera
Verdi: La Traviata (Violetta) – Paris, New Orleans
Puccini: La Rondine (Magda) – Nancy Opera
Gounod: Faust (Marguerite) – Saint-Etienne Opera
Donizetti: L'Elisir d'amore (Adina) – Toulouse Capitole Theatre, Nice Opera
Bizet: Carmen (Micaëla, Frasquita) – Paris, Munich, Aix-en-Provence, Lille, Metz
Mozart: Don Giovanni (Donna Anna) – Angers Nantes Opera
Puccini: La Bohème (Mimì, Musetta) – Marseille Opera, Metz Opera, Chorégies d'Orange, Spain tour
J. Strauss: Die Fledermaus (Rosalinde) – Avignon Opera
Rameau: Le Temple de la Gloire (Plautine) – with the Philharmonia Baroque Orchestra of San Francisco
Ravel: L'Enfant et les Sortilèges (La Princesse) – with the Symphonic Orchestra of Montréal
Vocalement, c'est Gabrielle Philiponet qui domine, Leïla à l'aplomb sidérant, autant dans les passages lyriques que dans les pyrotechnies du rôle, avec un timbre au grain vibratile des plus délectables. (Diapason)
Born in Albi, France, Gabrielle Philiponet was a flutist and cellist before studying the voice with Daniel Ottevaere. As a member of the Opera Studio of the Chapelle Musicale Reine Elisabeth in Brussels, she was a prize winner at the prestigious Reine Elisabeth Competition.
Often acclaimed as one of the finest French lyric sopranos of the moment, her wide-ranging repertoire spans from Mozart to contemporary music.
Closely associated with the French repertoire, Gabrielle debuted at the Opéra de Paris with Frasquita (Bizet, Carmen), a role she also interpreted for the Bayerische Staatsoper and Aix-en-Provence Festival. She appeared as Micaëla in Metz and Lille, and was Leïla (Bizet, Les Pêcheurs de perles) at the Opéra de Lille and Opéra de Nice. She made her debut as Marguerite (Gounod, Faust) at Opéra de Saint-Etienne and sang Plautine (Rameau, Le Temple de la Gloire) with the Philharmonia Baroque Orchestra of San Francisco. She performed Massenet's Cendrillon for both La Monnaie in Bruxelles and Gand Théâtre de Luxembourg, and L'Enfant et les sortilèges by Ravel with the Symphonic Orchestra of Montréal.
Gabriella has worked with conductors such as Kent Nagano, Roberto Rizzi-Brignoli, Alain Altinoglu, Karel Mark Chichon, Andreas Spering, Hervé Niquet, Roland Böer, Laurent Campellone, Pascal Verrot, Roberto Forés-Veses and Paul Goodwin.
She regularly appears in leading roles from the romantic operatic repertoire, singing Magda in Puccini's Rondine for the Nancy Opéra and Lauretta in Gianni Schicchi with the Belgian National Orchestra at the Bruxelles Palais des Beaux-Art. She performed Mimi in La Bohème in Spain and was Musetta in the same opera in Marseille, Metz, Massy and for "Musiques en fête" at Chorégies d'Orange which was broadcast live on France 3 (TV) and on France Musique (radio). She embodied her signature role of Violetta in Verdi's Traviata in Paris, New Orleans, Massy, among other cities.
Other career highlights include the Mozart roles of Donna Anna (Don Giovanni) at Angers-Nantes Opéra, Fiordiligi (Così fan tutte) at the Opéra de Rouen and Susanna (Le Nozze di Figaro) at the Opéra de Nancy. She mastered Adina (Donizetti, L'Elisir d'amore) at the Toulouse and Nice Operas, Corinna (Rossini, Il viaggio a Reims) in Bordeaux, Toulouse, Nice, Marseille, Montpellier, Nancy and Vichy.
Also on stage as an interpreter of operetta, Gabrielle starred as Antonia and Stella in Offenbach's Contes d'Hoffmann at Opéra de Toulon, as Rosalinde in J. Strauss' Fledermaus at Opéra Grand Avignon, and as Lisa in Lehár's Pays du sourire at Opéra de Tours. Earlier in her career, she brought to life light Offenbach roles including La Princesse Hermia in Barbe-Bleue (Angers-Nantes Opéra, Opéra de Rennes), Gabrielle in La Vie parisienne (Opéra de Toulon), Eurydice in Orphée aux Enfers (Opéra de Montpellier) and Rosita in Un Mari à la porte with the Royal Liverpool Philharmonic Orchestra.
In the field of sacred music, she sang, among other works, Rossini's Stabat Mater and Poulenc's Sept répons des ténèbres, both with the Orchestre National de Lille, and was Gabriel and Eva in The Creation by Haydn for the Clermont-Ferrand Opera.
Recent and future engagements include Donna Anna (Mozart, Don Giovanni) at Opéra Grand Avignon, Desdemona (Verdi, Otello) at Opéra de Saint-Etienne and Beethoven's Symphony No. 9 with both the Orchestre National de Lille and Orchestre National de Lyon.
Live in Paris - Verdi: La Traviata, "È strano… Sempre libera" (Violetta) · under Benjamin Pionnier
Live at Chorégies d'Orange - Puccini: La Bohème, Musetta's Waltz (Musetta) · under Luciano Acocella
Live in Turkey - Verdi: Otello, "Già nella notte densa" (Desdemona) · under Vladimir Lungu
Live at Opéra de Saint-Etienne - Gounod: Faust, Ballade du Roi de Thulé & Air des bijoux (Marguerite) · under David Reiland
Management Territory
General Management - World
Biography - Photos
Alessandro De Marchi
Diego Fasolis
Dmitry Sinkovsky
Cécile Roussat & Julien Lubek
Eleonora Bellocci
Karina Gauvin
Marie Lys
Roberta Mameli
Raffaella Milanesi
Francesca Sassu
Arianna Vendittelli
Miriam Albano
Lucia Cirillo
Josè Maria Lo Monaco
Sonia Prina
Margherita Maria Sala
Filippo Mineccia
Raffaele Pe
Carlo Allemano
Valentino Buzza
Diego Godoy
Giulio Pelligra
Juan Sancho
Giorgio Caoduro
Riccardo Novaro
Christian Senn
Luigi De Donato
Ugo Guagliardo
We also focus on running a series of bespoke programmes – with one or more singers accompanied by piano and/or instrumental ensembles of variable size – which we actively promote for our artists. For more information please contact us
I have read and understood the privacy policy and consent to the data processing.
VAT NUMBER: FR 8979 4447 615

redpajama_set_name: RedPajamaCommonCrawl


En un beso, sabrás todo lo que he callado. (Pablo Neruda (1904-1973) Poeta chileno.) With one kiss, you'll learn everything I've kept to myself.
Amor con amor se paga. You repay love with love.
El amor entra por la boca. The way to someone's heart is through their stomach.
El amor es ciego, pero los vecinos no. Love is blind, but your neighbors are not.
El verdadero amor es como los espíritus: todos hablan de ellos, pero pocos los han visto. (François de La Rochefoucauld (1613-1680) Escritor francés.) True love is like a ghost: everyone talks about it, but few have actually seen one.
Amor de lejos, amor de pendejos. Long-distance love is a fool's love.
El amor lo perdona todo. Love forgives everything.
El amor no tiene edad. Love has no age.
Amar no es mirarse el uno al otro; es mirar juntos en la misma dirección. (Antoine de Saint-Exupery (1900-1944) Escritor francés.) To love is not to look at each other, but to look together in the same direction.
La gente se arregla todos los días el cabello. ¿Por qué no el corazón? People fix their hair everyday, why can't they fix their heart too?
I read this article and found it very interesting, thought it might be something for you. The article is called Frases de amor and is located at https://www.easyespanol.org/blog/frases-de-amor/.


Installing strike plate for mortice lock. If you are moving house or moving into a new property or premises shortly and want to book a locksmith to call to change the locks or look at any security requirements. Welcome to r.j parker we provide domestic and business locksmith services coupled with an auto locksmith service for coventry and the surrounding areas we pride ourselves on our unique heritage, quality service and affordable pricing. Fast key service are the leading specialists in.
If you need to get a new key cut, or are looking for advice on locks, safes and other physical security, we have locksmith branches located in both chandlers ford and bitterne, we are easily accessible and open daily please pop in to discuss your requirements. James was prompt and very knowledgeable about upgrading the security on our office ..excellent.
Our experts will be the closest locksmith near you that is available 24/7 for emergencies all of our technicians are well qualified and adept at tackling any job that comes their way including services for auto, commercial and residential locksmith situations. We offer a dependable emergency locksmith london response service.
Emergency locksmith brighton often, people don't invest in the security of their home or business until they've been broken into we offer a range of services here at emergency locksmith brighton from 24 hour emergency lockout and repair, to replacement car keys and home security checks for anything related to locks and security, there's only one locksmith you need and you've already found them. So next time you need a fantastic. Looking for.
Helping you find your dream career. If you are looking for a reliable, local car locksmith then look no furthur that panther auto locksmiths st ives we provide mobile locksmith in your area 24/7! our friendly attitude is what keeps our customers coming back to us time after time if you need an honest professional car locksmith, contact us! Whether you have accidentally.
A typical scenario in wigan: your door is jammed and you're locked out of your house you have a job interview in less than an hour and your papers are all inside you panic for a minute but quickly relax you have wigan locksmiths' telephone number, help is near within 20 minutes a professional local locksmith in wigan picks your lock, opens your door and lets you in. Doors locks are becoming more and more complex, there is also an increasing demand for locksmith that can deal with these door's requirements.
Hour emergency local locksmiths ready to dispatch in your time of need. We're not simply an emergency locksmith birmingham we're proud to deliver the perfect security solutions for emerging businesses when they move into brand new premises of paramount importance is ensuring your security is in top condition this means you need a locksmith birmingham to potentially help you change the locks, install alarm systems and maybe even cctv! if you employ a large number of.
Our local locksmiths have years of expertise in carrying out lock replacement quickly and efficiently for all types of locks from rim cylinder locks, to mortice and upvc mechanism locks, you can rely on our registered locksmiths to provide you with a solution today. In addition to dealing with all types of emergencies the.
We are available 24 hours a day to board all windows that may have been smashed or broken by accident, call for a quick quote so we can dispatch someone to your location. When you call us, you will speak directly to an experienced locksmith and not a call centre operator!! Get the locksmith service you expect and deserve call a professional, mobile locksmith.
There are eight categories of van security according to system strictly speaking, these do not grade the effectiveness of the security measures, but rather categorise them by type however, there is a lot of overlap between these two considerations. At enfield locksmith we believe that a good service must offer.


text:
extern vector <Fragment> fragments;
extern vector <Point> startPoints;
extern vector <Point> endPoints;
extern Name allNames;

bool PointCompare(const Point &f1, const Point &f2) {
	if (f1.seq1 < f2.seq1) {
		return (f1.seq1 < f2.seq1);
	} else if (f1.seq1 == f2.seq1) {
		return (f1.seq2 < f2.seq2);
	} else {
		return (f1.seq1 < f2.seq1);
	}
}

//internal function that i dont need to care about.
char* rolltonum(char* str) {
	char *got1 = 0, *got2 = 0;
	long long int in = 0, i = 0;
	while (1) {
		if (str[i] == 0) { break; }

		if (str[i] == ';' && got1 && got2) { return got1; }

		if (isdigit(str[i])) {
			if (!in && (!i || isspace(str[i-1]))) {
				if (got1) {
					got2 = &str[i];
				} else {
					got1 = &str[i];
				}
				in = 1;
			}
		} else if (in && isspace(str[i])) {
			if (got2) {
				got1 = got2; got2 = 0; in = 0;
			}
			in = 0;
		} else {
			got1 = got2 = NULL;
		}
		i++;
	}
	return &str[i];
}

//reads one line of input at a time.
long long int getline(FILE *infile, hll *tt) {
	char temp[1024];
	char* help;
	long long int z;
	int h;
	fgets(temp, 1024, infile);
	sscanf(temp, "%s", tt->seq1Name);

	help = rolltonum(temp);
	z = sscanf(help, "%lld %lld;%n", &tt->seq1start, &tt->seq1end, &h);
	if (z < 2) { return 0; }

	sscanf(help+h, "%s", tt->seq2Name);
	help = rolltonum(help + h);

	if (sscanf(help, "%lld %lld; score = %f (%c)\n", &tt->seq2start, &tt->seq2end, &tt->score, &tt->strand)<3) {
		return 0;
	} else {
		return 1;
	}
}

void printFragment ( Fragment * curfrag ) {
	if (curfrag == NULL) {
		printf("done");
		return;
	}
    else if (curfrag->score == -1) {
        return;
    }

	// TODO: remove space after s2 and check supermap sorts and regexes
	printf("(%lld %lld)=(%lld %lld) %f %c [%f] s1:%s s2: %s\n",
		curfrag->seq1Start,
		curfrag->seq1End,
		curfrag->seq2Start-curfrag->base,
		curfrag->seq2End-curfrag->base,
		curfrag->score,
		(curfrag->strand==POSITIVE)?'+':'-',
		curfrag->totalScore,
		curfrag->seq1Name,
		curfrag->seq2Name
	);
}

void printAllFragments(long long int numFragments) {
	long long int i;
	for (i=0; i<numFragments; i++) {
		printFragment(&fragments[i]);
	}
	return;
}

// prints a chain upwards starting at the fragment called last.
long long int printChain(Fragment *current) {
	while (current) {
		printFragment(current);
		current = current->back;
	}
	return 0;
}

void swap(long long int *a, long long int *b) {
	long long int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

// initialises the parameters for a fragment.
// note the swap at the end of this function.
Fragment createFragment(hll *temp) {
	Fragment frag;
	frag.seq1Start = temp->seq1start;
	frag.seq1End = temp->seq1end;

	frag.seq2Start = temp->seq2start;

	frag.seq2End = temp->seq2end;

	strcpy(frag.seq1Name, temp->seq1Name);
	strcpy(frag.seq2Name, temp->seq2Name);

	if (temp->strand == '+') {
		frag.strand = POSITIVE;
	} else {
		frag.strand = NEGATIVE;
	}

	frag.score = temp->score;

	frag.back = NULL;

	frag.totalScore = -1;
	frag.deleted = FALSE;

	if (frag.seq1Start > frag.seq1End) {
		swap(&(frag.seq1Start), &(frag.seq1End));
	}
	return frag;
}

// reads the input file and returns the number of fragments read.
long long int readInput(char * fileName) {
	hll tempInput;
	FILE * fp;
	long long int i=0;
	char line[1024];

	unsigned long long int line_count = 0;

	fp = fopen(fileName, "r");

	if (!fp) {
		printf("SLAGAN: Error: Could not open file '%s'\n", fileName);
		exit(0);
	} else if (feof(fp)) {
		printf("SLAGAN: Error: Empty file %s\n", fileName);
		exit(0);
	}

	// Count the number of lines in the file
	while (fgets(line, 1023, fp)) {
		line_count++;
	}
	rewind(fp);

	fragments.reserve(line_count);

	while (!feof(fp)) {
		while (!feof(fp) && !getline(fp, &tempInput));
		if (feof(fp)) { break; }

		// ignoring the low scoring fragments ?
		if (tempInput.score < CUTOFF ) { continue; }

		//createfragment

		fragments.push_back(createFragment(&tempInput));
		i++;
	}

	return i;
}

void createPointLists(long long int numFragments) {
	long long int i;
	Point startPoint, endPoint;

	//SLAGANCHANGE:: Push -seq2,seq1 on the start list as well.

	for (i=0; i<numFragments; i++) {
		startPoint.seq1 = fragments[i].seq1Start;
		startPoint.seq2 = fragments[i].seq2Start;
		endPoint.seq1 = fragments[i].seq1End;
		endPoint.seq2 = fragments[i].seq2End;
		startPoint.frag = &fragments[i];
		endPoint.frag = &fragments[i];
		startPoints.push_back(startPoint);

		startPoint.seq2 = -fragments[i].seq2Start;
		startPoints.push_back(startPoint);
		endPoints.push_back(endPoint);
	}
	sort(startPoints.begin(), startPoints.end(), PointCompare);
	sort(endPoints.begin(), endPoints.end(), PointCompare);
}

void printPointLists(long long int numFragments) {
	long long int i;
	printf("StartPoint lists:\n");

	for (i=0; i<numFragments; i++) {
		printf(" seq1 :%lld seq2:%lld \n", startPoints[i].seq1, startPoints[i].seq2);
	}

	printf("EndPoint lists:\n");
	for (i=0; i<numFragments; i++) {
		printf(" seq1 :%lld seq2:%lld \n", endPoints[i].seq1, endPoints[i].seq2);
	}
	printf("End lists");
}

void findAllNames(long long int numFragments) {
	long long int i;
	long long int size;
	long long int numContigs=0;
	Name::iterator currName;

	for (i=0; i<numFragments; i++) {
		size = fragments[i].seq2Start>fragments[i].seq2End ? fragments[i].seq2Start : fragments[i].seq2End;

		currName = allNames.find(fragments[i].seq2Name);

		if (currName != allNames.end()) {
			if (currName->second < size) {
				currName->second = size;
			}
		} else {
			allNames[fragments[i].seq2Name] = size;
			numContigs ++;
		}
	}
	if (DEBUG) { fprintf(stderr, "The number of contigs is %lld",numContigs); }
}

void decideContigBase() {
	Name::iterator currName;
	long long int offset =0;
	long long int temp;

	for (currName=allNames.begin(); currName!=allNames.end(); currName++) {
		temp = currName->second;
		currName->second = offset;
		offset += (10 + temp);
	}
}

void storeIterators(long long int numFragments) {
	long long int i;

	for (i=0; i<numFragments; i++) {
		fragments[i].nameIter = allNames.find(fragments[i].seq2Name);
		fragments[i].seq2Start += (fragments[i].nameIter)->second;
		fragments[i].seq2End += (fragments[i].nameIter)->second;
		fragments[i].base = (fragments[i].nameIter)->second;
	}
}

redpajama_set_name: RedPajamaGithub


text:
Sass Blog


Request for Comments: Forward Slash as Separator
Posted by Natalie Weizenbaum 2 months ago
Early on in Sass's history, the decision was made to use / as a division
operator, since that was (and is) by far the most common representation across programming languages. The / character was used in very few plain CSS properties, and for those it was an optional shorthand. So Sass defined a set of heuristics that defined when / would be rendered as a literal slash versus treated as an operator.
For a long time, these heuristics worked pretty well. In recent years, however, new additions to CSS such as CSS Grid and CSS Color Level 4 have been using / as a separator increasingly often. Using the same character for both division and slash-separation is becoming more and more annoying to users, and will likely eventually become untenable.
As such, we're planning to redefine / to be only a separator. Rather than creating an unquoted string (as it currently does when at least one operand isn't a number), it will create a list with a new slash separator. For example, 1 / 2 / 3 will be a three-element slash-separated list. Division will instead be written as a function, divide() (or math.div() in the new module system).
This is a major breaking change to existing Sass semantics, so we'll roll it out in a three-stage process:
The first stage won't introduce any breaking changes. It will:
Add a divide() function which will work exactly like the / operator does today, except that it will produce deprecation warnings for any non-number arguments.
Add slash-separated lists to Sass's object models, without a literal syntax for creating them. That will come later, since it would otherwise be a breaking change.
Add a slash-list() function that will create slash-separated lists.
Produce deprecation warnings for all / operations that are interpreted as division.
The second stage will be a breaking change. It will:
Make / exclusively a list separator.
Make divide() throw errors for non-number arguments.
Deprecate the slash-list() function, since it will now be redundant.
The third stage will just remove the slash-list() function. This is not a priority, and will be delayed until the next major version release.
If you want more details on exactly how the proposed behavior will work, head over to the Sass language repo and read the full proposal. You can skip the Background and Summary sections, since they're included above. Be aware, though, that it's written to be a specification; it's a great for figuring out how exactly an edge case should work, but it's not as conversational as the sections quoted above.
If you have any issues with the proposal as written, or if it doesn't cover a use-case that's important to you, please bring that up in the Sass language issue tracker. We'll be leaving it open for discussion for at least two weeks before we mark the proposal as "accepted" and move on to the implementation phase.
Please be aware, though, that while we welcome community feedback, the design of Sass is ultimately in the hands of the language team. We'll absolutely consider the perspectives and use-cases of users who speak up, but it's also our job to consider all the users who are new to Sass or even to CSS and who don't yet know to read blogs or comment on issue trackers. Remember that our careful decision-making made Sass what it is today, and have patience with us if we don't make the decisions you would have!
Brand New Sass Docs
I'm excited to announce the launch of a full rewrite and redesign of the Sass documentation, going live today after eight months of work by Jina Anne and myself! Jina, the lead of Team Sass Design, is responsible for the layout and visual design of the new documentation. She made everything gorgeous and readable. I wrote all the text, so if you see a typo I'm the one to blame.
In addition to reorganizing and rewriting all the documentation, we've added a special example widget that makes it easy to see how Sass stylesheets translate into CSS. It has tabs for both SCSS and the indented syntax, so you can use whichever you prefer, or switch between them to see the difference.
The Sass function documentation is included in the rewrite. Functions are now organized into easy-to-understand sections, and Jina designed a super readable layout for them.
Best of all, the new documentation has full-text search courtesy of our friends at Algolia. You can search for features, function names, or anything else you want to learn more about and find it in an instant.
Please take a look and enjoy! And if you find any issues, don't hesitate to file them so we can keep making the website better and better.
Ruby Sass Has Reached End-Of-Life
One year has passed since we announced the deprecation of Ruby Sass, and it has now officially reached its end-of-life. We will release one final version of the Ruby Sass gem that will print a warning indicating that it's no longer receiving updates, and then archive the GitHub repository.
We will then merge the sass/language repo into the sass/sass repo. This means that anyone still depending on Ruby Sass from github.com/sass/sass will break. Going forward, the sass/sass repo will be the location for working on the language specs, and will not contain any code. The sass/language repo will just include links pointing to sass/sass.
Migrating Away
If you haven't migrated away from Ruby Sass yet, now is the time. The best way to do that depends on how you use Ruby Sass today.
If you use Ruby Sass as a command-line tool, the easiest way to migrate is to install Dart Sass as a command-line tool. It supports a similar interface to Ruby Sass, and you can run sass --help for a full explanation of its capabilities.
If you use Ruby Sass as a plugin for a Ruby web app, particularly if you define your own Sass functions in Ruby, the sassc gem provides access to LibSass from Ruby with a very similar API to Ruby Sass. In most cases, you can just replace the Sass module with the SassC module and your code will continue to work.
If you're using Rails, we particularly recommend using the sassc-rails gem, which wraps up the sassc gem and integrates it smoothly into the asset pipeline. Most of the time you won't even need to change any of your code.
Farewell, Ruby Sass!
On a personal note, I started writing Ruby Sass in 2006 when I was just a college kid coding in between homework assignments. I've worked on it (with varying degrees of focus) continuously for the last 13 years, and I expect it'll take me a long time to match that record with any other codebase. I'm glad to see the language moving forward, but at the same time I'll miss Ruby Sass terribly.
I also want to take this opportunity to thank our users, especially those in the Ruby community in which Sass was born, for appreciating the language we created and evangelizing it so widely. Sass has an incredible userbase, and I've been so proud to see how large and diverse it's grown over the years. Let's keep it up as we move into a new era of Sass!
Request For Comments: Module System
Many of the most frequently-requested features for Sass have to do with its imports. The import system that we've had since the very early releases of Sass is, to put it simply, not great. It does little more than textually include one Sass file in another, which makes it hard to keep track of where mixins, functions, and variables were defined and hard to be sure that any new additions won't happen to conflict with something elsewhere in the project. To make matters worse, it overlaps with CSS's built-in @import rule, which forces us to have a bunch of heuristics to decide which is which.
Because of these problems and others, we've wanted to do a full overhaul of the way Sass files relate to one another for a long time. Over the last few years, I've been working with the Sass core team and Sass framework maintainers to create a proposal for a module system that's fit to replace @import. That proposal is now in a place that the core team is pretty happy with, at least as a starting point, so we want to open it up for community feedback.
If you want to read the full proposal, it's available on GitHub. Feel free to file issues for any feedback you have. The main body of the proposal is written as a spec, so it's very detailed, but the Goals, Summary, and FAQ sections (reproduced below) should be accessible to anyone familiar with Sass.
High-Level
These are the philosophical design goals for the module system as a whole. While they don't uniquely specify a system, they do represent the underlying motivations behind many of the lower-level design decisions.
Locality. The module system should make it possible to understand a Sass file by looking only at that file. An important aspect of this is that names in the file should be resolved based on the contents of the file rather than the global state of the compilation. This also applies to authoring: an author should be able to be confident that a name is safe to use as long as it doesn't conflict with any name visible in the file.
Encapsulation. The module system should allow authors, particularly library authors, to choose what API they expose. They should be able to define entities for internal use without making those entities available for external users to access or modify. The organization of a library's implementation into files should be flexible enough to change without changing the user-visible API.
Configuration. Sass is unusual among languages in that its design leads to the use of files whose entire purpose is to produce side effects—specifically, to emit CSS. There's also a broader class of libraries that may not emit CSS directly, but do define configuration variables that are used in computations, including computation of other top-level variables' values. The module system should allow the user to flexibly use and configure modules with side-effects.
Low-Level
These are goals that are based less on philosophy than on practicality. For the most part, they're derived from user feedback that we've collected about @import over the years.
Import once. Because @import is a literal textual inclusion, multiple @imports of the same Sass file within the scope of a compilation will compile and run that file multiple times. At best this hurts compilation time for little benefit, and it can also contribute to bloated CSS output when the styles themselves are duplicated. The new module system should only compile a file once.
Backwards compatibility. We want to make it as easy as possible for people to migrate to the new module system, and that means making it work in conjunction with existing stylesheets that use @import. Existing stylesheets that only use @import should have identical importing behavior to earlier versions of Sass, and stylesheets should be able to change parts to @use without changing the whole thing at once.
Non-Goals
These are potential goals that we have explicitly decided to avoid pursuing as part of this proposal for various reasons. Some of them may be on the table for future work, but we don't consider them to be blocking the module system.
Dynamic imports. Allowing the path to a module to be defined dynamically, whether by including variables or including it in a conditional block, moves away from being declarative. In addition to making stylesheets harder to read, this makes any sort of static analysis more difficult (and actually impossible in the general case). It also limits the possibility of future implementation optimizations.
Importing multiple files at once. In addition to the long-standing reason that this hasn't been supported—that it opens authors up to sneaky and difficult-to-debug ordering bugs—this violates the principle of locality by obfuscating which files are imported and thus where names come from.
Extend-only imports. The idea of importing a file so that the CSS it generates isn't emitted unless it's @extended is cool, but it's also a lot of extra work. This is the most likely feature to end up in a future release, but it's not central enough to include in the initial module system.
Context-independent modules. It's tempting to try to make the loaded form of a module, including the CSS it generates and the resolved values of all its variables, totally independent of the entrypoint that cause it to be loaded. This would make it possible to share loaded modules across multiple compilations and potentially even serialize them to the filesystem for incremental compilation.
However, it's not feasible in practice. Modules that generate CSS almost always do so based on some configuration, which may be changed by different entrypoints rendering caching useless. What's more, multiple modules may depend on the same shared module, and one may modify its configuration before the other uses it. Forbidding this case in general would effectively amount to forbidding modules from generating CSS based on variables.
Fortunately, implementations have a lot of leeway to cache information that the can statically determine to be context-independent, including source trees and potentially even constant-folded variable values and CSS trees. Full context independence isn't likely to provide much value in addition to that.
Increased strictness. Large teams with many people often want stricter rules around how Sass stylesheets are written, to enforce best practices and quickly catch mistakes. It's tempting to use a new module system as a lever to push strictness further; for example, we could make it harder to have partials directly generate CSS, or we could decline to move functions we'd prefer people avoid to the new built-in modules.
As tempting as it is, though, we want to make all existing use-cases as easy as possible in the new system, even if we think they should be avoided. This module system is already a major departure from the existing behavior, and will require a substantial amount of work from Sass users to support. We want to make this transition as easy as possible, and part of that is avoiding adding any unnecessary hoops users have to jump through to get their existing stylesheets working in the new module system.
Once @use is thoroughly adopted in the ecosystem, we can start thinking about increased strictness in the form of lints or TypeScript-style --strict-* flags.
Code splitting. The ability to split monolithic CSS into separate chunks that can be served lazily is important for maintaining quick load times for very large applications. However, it's orthogonal to the problems that this module system is trying to solve. This system is primarily concerned with scoping Sass APIs (mixins, functions, and placeholders) rather than declaring dependencies between chunks of generated CSS.
We believe that this module system can work in concert with external code-splitting systems. For example, the module system can be used to load libraries that are used to style individual components, each of which is compiled to its own CSS file. These CSS files could then declare dependencies on one another using special comments or custom at-rules and be stitched together by a code-splitting post-processor.
This proposal adds two at-rules, @use and @forward, which may only appear at the top level of stylesheets before any rules (other than @charset). Together, they're intended to completely replace @import, which will eventually be deprecated and even more eventually removed from the language.
@use
@use makes CSS, variables, mixins, and functions from another stylesheet accessible in the current stylesheet. By default, variables, mixins, and functions are available in a namespace based on the basename of the URL.
@use "bootstrap";
.element {
@include bootstrap.float-left;
In addition to namespacing, there are a few important differences between @use and @import:
@use only executes a stylesheet and includes its CSS once, no matter how many times that stylesheet is used.
@use only makes names available in the current stylesheet, as opposed to globally.
Members whose names begin with - or _ are private to the current stylesheet with @use.
If a stylesheet includes @extend, that extension is only applied to stylesheets it imports, not stylesheets that import it.
Note that placeholder selectors are not namespaced, but they do respect privacy.
Controlling Namespaces
Although a @use rule's default namespace is determined by the basename of its URL, it can also be set explicitly using as.
@use "bootstrap" as b;
@include b.float-left;
The special construct as * can also be used to include everything in the top-level namespace. Note that if multiple modules expose members with the same name and are used with as *, Sass will produce an error.
@use "bootstrap" as *;
@include float-left;
Configuring Libraries
With @import, libraries are often configured by setting global variables that override !default variables defined by those libraries. Because variables are no longer global with @use, it supports a more explicit way of configuring libraries: the with clause.
// bootstrap.scss
$paragraph-margin-bottom: 1rem !default;
margin-bottom: $paragraph-margin-bottom;
@use "bootstrap" with (
$paragraph-margin-bottom: 1.2rem
This sets bootstrap's $paragraph-margin-bottom variable to 1.2rem before evaluating it. The with clause only allows variables defined in (or forwarded by) the module being imported, and only if they're defined with !default, so users are protected against typos.
@forward
The @forward rule includes another module's variables, mixins, and functions as part of the API exposed by the current module, without making them visible to code within the current module. It allows library authors to be able to split up their library among many different source files without sacrificing locality within those files. Unlike @use, forward doesn't add any namespaces to names.
@forward "functions";
@forward "variables";
@forward "mixins";
Visibility Controls
A @forward rule can choose to show only specific names:
@forward "functions" show color-yiq;
It can also hide names that are intended to be library-private:
@forward "functions" hide assert-ascending;
Extra Prefixing
If you forward a child module through an all-in-one module, you may want to add some manual namespacing to that module. You can do what with the as clause, which adds a prefix to every member name that's forwarded:
// material/_index.scss
@forward "theme" as theme-*;
This way users can use the all-in-one module with well-scoped names for theme variables:
@use "material" with ($theme-primary: blue);
or they can use the child module with simpler names:
@use "material/theme" with ($primary: blue);
@import Compatibility
The Sass ecosystem won't switch to @use overnight, so in the meantime it needs to interoperate well with @import. This is supported in both directions:
When a file that contains @imports is @used, everything in its global namespace is treated as a single module. This module's members are then referred to using its namespace as normal.
When a file that contains @uses is @imported, everything in its public API is added to the importing stylesheet's global scope. This allows a library to control what specific names it exports, even for users who @import it rather than @use it.
In order to allow libraries to maintain their existing @import-oriented API, with explicit namespacing where necessary, this proposal also adds support for files that are only visible to @import, not to @use. They're written "file.import.scss", and imported when the user writes @import "file".
Built-In Modules
The new module system will also add seven built-in modules: math, color, string, list, map, selector, and meta. These will hold all the existing built-in Sass functions. Because these modules will (typically) be imported with a namespace, it will be much easier to use Sass functions without running into conflicts with plain CSS functions.
This in turn will make it much safer for Sass to add new functions. We expect to add a number of convenience functions to these modules in the future.
meta.load-css()
This proposal also adds a new built-in mixin, meta.load-css($url, $with: ()). This mixin dynamically loads the module with the given URL and includes its CSS (although its functions, variables, and mixins are not made available). This is a replacement for nested imports, and it helps address some use-cases of dynamic imports without many of the problems that would arise if new members could be loaded dynamically.
Why this privacy model? We considered a number of models for declaring members to be private, including a JS-like model where only members that were explicitly exported from a module were visible and a C#-like model with an explicit @private keyword. These models involve a lot more boilerplate, though, and they work particularly poorly for placeholder selectors where privacy may be mixed within a single style rule. Name-based privacy also provides a degree of compatibility with conventions libraries are already using.
Can I make a member library-private? There's no language-level notion of a "library", so library-privacy isn't built in either. However, members used by one module aren't automatically visible to downstream modules. If a module isn't @forwarded through a library's main stylesheet, it won't be visible to downstream consumers and thus is effectively library-private.
As a convention, we recommend that libraries write library-private stylesheets that aren't intended to be used directly by their users in a directory named src.
How do I make my library configurable? If you have a large library made up of many source files that all share some core !default-based configuration, we recommend that you define that configuration in a file that gets forwarded from your library's entrypoint and used by your library's files. For example:
@use "reboot";
// _variables.scss
// _reboot.scss
@use "variables" as *;
// User's stylesheet
Sending Feedback
This is still just a proposal. We're pretty happy with the overall shape of the module system, but it's not at all set in stone, and anything can change with enough feedback provided by users like you. If you have opinions, please file an issue on GitHub or just tweet at @SassCSS. We'll take anything from "it looks awesome" to "it looks awful", although the more specific you can be the more information we have to work with!
Feature Watch: Content Arguments and Color Functions
Dart Sass 1.15, released today and available on npm and all other distribution channels, brings with it a number of highly-anticipated new Sass features. This is also the first release of Dart Sass with major new language features that aren't just for CSS compatibility. That's a big accomplishment, and we intend to continue that pattern moving forward!
@content Arguments
Mixins that take @content blocks can now pass arguments to those blocks. This is written @content(<arguments...>). If a mixin passes arguments to its content block, users of that mixin must accept those arguments by writing @include <name> using (<arguments...>). The argument list for a content block works just like a mixin's argument list, and the arguments passed to it by @content work just like passing arguments to a mixin.
// style.scss
@mixin media($types...) {
@each $type in $types {
@media #{$type} {
@content($type);
@include media(screen, print) using ($type) {
@if $type == print {
font-family: Calluna;
/* style.css */
@media screen {
For more details, see the feature proposal. This feature is implemented in LibSass, and will be released in version 3.6.0. Since Ruby Sass is deprecated and this isn't a CSS compatibility feature, it won't be implemented in Ruby Sass.
Color Level 4 Syntax for rgb() and hsl()
The CSS Color Module Level 4 has introduced new syntax for the rgb() and hsl() functions, which has begun to be supported in browsers. This syntax makes these functions more compact, allows the alpha value to be specified without needing additional rgba() and hsla() functions, and it looks like rgb(0 255 0 / 0.5) and hsla(0 100% 50%).
To support this function, Sass's rgb() and hsl() functions now accept a space-separated list of components as a single argument. If this last argument is a slash-separated pair of numbers, the first number will be treated as the blue channel or lightness (respectively) and the second as the alpha channel.
Be aware though that the normal rules for disambiguating between division and / as a separator still apply! So if you want to pass a variable for the alpha value, you'll need to use the old rgba() syntax. We're considering possible long-term solutions for this problem as / is used more prominently as a separator in CSS.
In addition, the new color spec defines the rgba() and hsla() functions as pure aliases for rgb() and hsl(), and adds support for the four-argument rgba() and hsla() syntax to rgb() and hsl() as well. To match this behavior, Sass is also defining rgba() and hsla() as aliases and adding support for all their definitions to rgb() and hsl().
All in all, this means that the function calls like all of the following are newly supported in Sass:
rgb(0 255 0), rgb(0% 100% 0%), rgb(0 255 0 / 0.5), and rgb(0, 255, 0, 0.5);
hsl(0 100% 50%), hsl(0 100% 50% / 0.5), and hsl(0, 100%, 50%, 0.5);
rgba(0, 255, 0) and hsla(0, 100%, 50%);
and rgb($color, 0.5).
This change is fully backwards-compatible, so all the arguments to rgb(), hsl(), rgba(), and hsla() that previously worked will continue to do so.
For more details, see the feature proposal. This feature isn't yet implemented in LibSass or Ruby Sass.
Interpolated At-Rule Names
This feature is a little smaller than the last two, but it's been on the to-do list for even longer: adding support for interpolation in the names of at-rules! This works just how you'd expect:
@mixin viewport($prefixes) {
@each $prefix in $prefixes {
@-#{$prefix}-viewport {
@content;
@viewport {
For more details, see the feature proposal. This feature isn't yet implemented in LibSass. Since Ruby Sass is deprecated and this isn't a CSS compatibility feature, it won't be implemented in Ruby Sass.
Feature Watch: CSS Imports and CSS Compatibility
Posted by Natalie Weizenbaum 11 months ago
Dart Sass 1.11 has just been released, and with it a handful of new features. This is an exciting moment, because it marks the first major new feature that's been added to the language since Dart Sass was launched. It's also the first release with features that have gone through the new process, from proposal to tests to implementation.
CSS Imports
The biggest feature in Dart Sass 1.11 is support for importing plain CSS files. This is a long-awaited feature, and while we'd initially planned on waiting on it until we launched the upcoming module system, we ended up deciding to implement it earlier.
You can now import a CSS file, say styles.css, just by writing @import "styles". That file will be parsed as plain CSS, which means that any Sass features like variables or mixins or interpolation will be disallowed. The CSS it defines will become part of your stylesheet, and can be @extended just like any other styles.
There are a couple caveats: because SCSS is a superset of plain CSS, it will still compile @import "styles.css" (with an explicit extension) to a CSS @import rule. If you want to import a CSS file into your Sass compilation, you must omit the extension.https://github.com/sass/libsass/issues/2699
Also, this feature isn't fully implemented in LibSass yet. It still has its old behavior, where it imports CSS files but parses them as SCSS, with all the extra Sass features allowed. This behavior will be deprecated soon, and eventually it will produce errors for anything other than plain CSS, just like Dart Sass does today.
CSS min() and max()
Dart Sass 1.11 also adds support for CSS's min() and max() mathematical functions. For those unfamiliar, these functions work a lot like calc(), except they return the minimum or maximum of a series of values. For example, you can write width: max(50%, 100px) to make your element either 50% of the parent's width or 100px wide, whichever is greater.
Because Sass has its own functions named min() and max(), it was difficult to use these CSS functions... until now. Dart Sass 1.11 will intelligently decide whether to use the plain CSS functions or the built-in Sass functions based on whether or not you're passing in dynamic Sass values. For example:
The Sass function will be called if you pass a variable, like max($width, 100px).
The Sass function will be called if you call another Sass function, like max(compute-width(), 100px).
It will compile to a plain CSS function if you just use plain CSS numbers, like max(50% + 10px, 100px).
It will still compile to a plain CSS function even if you use interpolation, like max(50% + #{$width / 2}, #{$width}).
This preserves backwards-compatibility with existing uses of the Sass functions, while also users to use the CSS functions the same way they would in plain CSS.
This feature isn't yet implemented in LibSass or Ruby Sass.
Range-Format Media Queries
CSS Media Queries Level 4 defines a range syntax for defining certain media queries:
@media (width > 500px) {
Dart Sass 1.11 adds support for this syntax. It works just like existing media query support: you can either use interpolation or plain Sass expressions to inject Sass logic into the query, and they can still be nested.
@media (width > $width) {
@media (height < #{$height}) {
Normalized Identifier Escapes
The last compatibility improvement is a bit of an edge case, but it's still worth mentioning: the way Sass parses escapes in identifiers has been improved to better match the CSS spec.
Escapes are now normalized to a standard format, which means that (for example) éclair and \E9clair are parsed to the same value (in this case, éclair). Prior to this change, if an escape was written, it would always be preserved as-is, so str-length(\E9clair) would return 8 even though that identifier means exactly the same thing to CSS as éclair.
We don't anticipate this affecting many users, but we always strive to bring Sass as close to the semantics of CSS as possible. This is a small but important step on that path.
Request For Comments: Importing CSS Files
Posted by Natalie Weizenbaum about 1 year ago
As Dart Sass catches up with Ruby Sass in terms of usability, we're starting work on adding new features to the language. The first feature we're looking at is one that's long been requested by users: adding support for importing plain CSS files without having to rename them to .scss. Not only do we expect this to be very useful, it's already partially implemented in LibSass, so this will help bring the implementations more in line with one another.
We're also trying out a new process with this feature. In order to help keep the behavior of different implementations in sync, we're starting with a prose specification of the feature before moving on to writing code. We're also taking this as an opportunity to solicit feedback from you, the Sass community! We want to hear your thoughts on the new feature while we have a chance to revise it based on that feedback.
Historically, the reference implementations of Sass—first Ruby Sass, then Dart Sass—only supported importing other Sass files. However, LibSass supported importing CSS files as well, interpreting them as though they were SCSS. Although this technically violated the implementation guide's prohibition on unilaterally extending the language, these CSS imports were useful and were widely adopted in the Node.js community.
This became particularly clear when, at the language team's urging, LibSass added deprecation warnings for CSS imports and users were left without a suitable replacement. The language team came together to discuss the problem, and decided to move towards allowing CSS imports but forbidding the use of non-CSS features in the imported files. The proposal describes the specifics of that idea.
LibSass's behavior at time of writing is to import files with the extension .css at the same precedence level as those with the .scss and .sass extensions, and to throw an error if an import is ambiguous between a .css file and a .scss or .sass file.
The proposal seeks to strike a balance between preserving compatibility with LibSass's existing behavior and moving towards a more principled scheme for loading CSS. This is particularly important as we intend to allow @use to load CSS files without Sass features, so we want the existing CSS loading support to be as similar as possible.
Locating CSS files for import works similarly under the proposal as it does in LibSass currently: a relative .css file takes precedence over files with any extension on the load path, a .css file earlier on the load path takes precedence over a file with any extension later on the load path, and foo.css takes precedence over index/foo.scss.
The only difference in loading scheme occurs when an import is ambiguous between a .css file and a .scss or .sass file at the same path. LibSass currently produces an error here, but in order to maximize compatibility with existing Dart Sass (and Ruby Sass) behavior, the proposal has the .scss or .sass file taking precedence. This is not a breaking change to LibSass's behavior, since it only applies in situations that would previously have produced an error.
The proposal diverges significantly from LibSass in parsing the imported CSS files, though: it forbids all use of SCSS features in the parsed files. Most SCSS features produce errors (rather than compiling to plain, likely-invalid CSS) in order to help users who accidentally wrote SCSS in their CSS realize what's going wrong. However, features like @import that overlap with plain CSS continue to be rendered as CSS.
In order to avoid a sudden backwards-incompatible change in LibSass, this also includes a proposal for a set of deprecation warnings that can be added to LibSass's existing behavior to steer users away from using Sass features in their imported CSS without entirely breaking their build process.
If you want more details on exactly how the proposed behavior will work, head over to the sass/language repo and read the full proposal. You can skip the Background and Summary sections, since they're included above. Be aware, though, that it's written to be a specification; it's a great for figuring out how exactly an edge case should work, but it's not as conversational as the sections quoted above.
If you have any issues with the proposal as written, or if it doesn't cover a use-case that's important to you, please bring that up in the sass/language issue tracker. We'll be leaving it open for discussion for at least two weeks before we mark the proposal as "accepted" and move on to the implementation phase.
Ruby Sass is Deprecated
Posted by Natalie Weizenbaum over 1 year ago
With the release of Dart Sass 1.0.0 stable last week, Ruby Sass was officially deprecated. I'll continue to maintain it over the next year, but when 26 March 2019 rolls around it will reach its official end-of-life. I encourage all users to start migrating away sooner rather than later.
The Deprecation Period
Over the next year, I'll continue to work on Ruby Sass in a limited capacity. I'll triage and fix any bugs that are reported, unless they're minor or obscure enough to be unlikely to pose a practical problem over the next year. I'll also add support for any new CSS features that require changes to the Sass parser or other parts of the language.
I won't be working on language features that aren't necessary for CSS support, though. The latest and greatest features will be appearing exclusively in Dart Sass and LibSass from here on out.
I also won't be accepting pull requests for new Ruby Sass features. While pull requests are a great way to contribute to projects, they still take work on my part to merge in, and it just doesn't make sense to spend time on that work when the project is being turned down. If you're interested in contributing to Sass, I highly recommend contributing to Dart Sass—Dart is an extremely easy language to learn!
We're also be migrating the Ruby Sass repository to https://github.com/sass/ruby-sass, so be sure to update your Git URLs. The old repository URL will continue to work during the deprecation period, but it will be frozen; all ongoing maintenance will happen at the new URL. Once the deprecation period is over, the Git history for the old URL will be wiped and replaced with feature specifications. See this issue for the full plan.
We want to make it as easy as possible to migrate from Ruby Sass onto an actively-maintained implementation. The best way to do that depends on how you use Ruby Sass today.
If you use Ruby Sass as a command-line tool, the easiest way to migrate is to install Dart Sass as a command-line tool. It supports a similar interface to Ruby Sass, although it currently doesn't support the --watch or --update flags—adding them is high priority, though!
If you're using Rails, I particularly recommend using the sassc-rails gem, which wraps up the sassc gem and integrates it smoothly into the asset pipeline. Most of the time you won't even need to change any of your code.
We're also planning to add support to Dart Sass for embedding it in Ruby (and other programming languages). This will allow Ruby users to get the latest and greatest features as soon as they're implemented.
On 26 March 2019, the deprecation period for Ruby Sass will end and it will no longer be maintained. The new sass/ruby-sass repository will be archived, which means no changes will be made and no new issues or pull requests will be accepted. The old sass/sass repository will have its Git history replaced with feature specifications that have historically just been scattered around issue comments.
Leading up to the end of life, we'll be migrating the user-focused reference documentation from the Ruby Sass repository to the Sass website. We could use some help doing the migration and touching up the documentation, so if you're interested please chime in on the tracking issue!
Unless...
We're turning down support for Ruby Sass because the Sass team just doesn't have the bandwidth to maintain it along with the other major implementations. But there could be another solution. If someone from the community is willing to step up and take on the mantle of maintainer, we'd be more than happy to show them the ropes and help them keep Ruby Sass going.
Maintaining a language implementation isn't necessarily easy. It requires keeping up with features as they're added to Dart Sass, as well as fixing bugs and fielding pull requests. But it's also a great opportunity to work on a big project with a lot of impact, and I'm happy to help get a new maintainer up to speed. If you're interested, please email me and Chris and we'll talk about how to get started.
Dart Sass 1.0.0 is Released
I've just uploaded Dart Sass 1.0.0, the very first stable release, to GitHub, npm, Chocolatey, Homebrew, and pub. After working on it for almost two years, I'm thrilled to have a stable release out there and officially ready to use in real-world applications. All the reasons we chose Dart as the implementation language are bearing fruit: Dart Sass is much faster than Ruby Sass, much easier to make available across operating systems and language environments, and much more maintainable.
The 1.0.0 stable release indicates that Dart Sass is fully compatible with the Sass language as defined by the sass-spec test suite, and that its npm package is compatible with the Node Sass API, with the exception of source map support which is coming soon.
I've also updated sass-lang.com to cover Dart Sass. The release bar now shows the latest version of all three major implementations, as well as links to their release notes and documentation about each one. The install page covers Dart Sass instead of Ruby Sass, and the Dart Sass page talks all about what Dart Sass is and the various ways it can be used.
At first, the focus of Dart Sass was on compatibility with the Sass language. Once we reached that and graduated to a beta release, we shifted our focus to compatibility with the Node Sass API. Now that we've reached that, our primary aim for the next several months will be bringing the usability of Dart Sass up to (at least) the standard of Ruby Sass and Node Sass.
This means focusing on a number of features outside the language that make working with Sass pleasant. This includes generating source maps from both the command-line interface and the JavaScript API, adding a live watch mode, and integrating Dart Sass into the Node ecosystem. We've also got our eye on the possibility of creating a Ruby gem that embeds Dart Sass with a Ruby Sass-like API.
Of course, I'll also continue to keep on top of bug fixes and new CSS features. I probably won't personally have a lot of bandwidth for adding new language features, but if anyone else is interested there are a number that wouldn't be too hard to add. Dart is a very easy language to learn, and I've written up a helpful guide on contributing.
What About Ruby Sass?
I'll be posting a more detailed post about the future of Ruby Sass soon, but the abbreviated version is that it's now officially deprecated. I'll continue maintaining it for one more year from the date this blog post goes live, including fixing bugs and updating it to support new CSS features, but it won't be getting any new language features. Once the one-year deprecation period is up, the repository will be archived and no new versions will be released.
Of course, all that could change if someone is willing to step up as a new maintainer! It's not an easy task, but it's a chance to work on something that's used by tons of people every day. If you're interested, please email me and Chris and we'll talk to you about next steps.
Give It a Whirl
One of the big benefits of switching to Dart is increased portability, which means it's easier than ever to install Sass. Give it a try on whichever is easiest for you:
Standalone tarballs are available on GitHub, which you can just download and run from the command line.
You can get the pure-JavaScript version from npm by running npm install -g sass.
Chocolatey users on Windows can run choco install sass (or choco upgrade sass if you already have it).
Homebrew users on Mac OS X can run brew install sass/sass/sass (or brew upgrade sass if you already have it).
Or if you're a Dart user, you can run pub global activate sass.
Now, get styling!
Sass 3.5 is Released
Posted by Natalie Weizenbaum about 2 years ago
I'm excited to announce that I've just released the stable version of Sass 3.5. This release focuses on compatibility with new CSS syntax, and helps lay the groundwork for the upcoming module system and compatibility with Dart Sass.
Most of the major features in 3.5 were already in the release candidate, which you can read about here. But there are a handful of other changes that have been added since then:
Sass now supports the the ::slotted() pseudo-element, including extending its selector arguments.
The var() function may be safely passed to the CSS color functions rgb(), rgba(), hsl(), and hsla().
Transparent colors created by Sass's color functions will now be written as rgba(0, 0, 0, 0) rather than transparent to work around a bug in Internet Explorer. Colors written as transparent in the document will still be emitted as written.
Dart Sass Compatibility
I wrote last month about our plans for keeping Ruby Sass compatible with Dart Sass in the short term. Sass 3.5 begins to implement those plans by adding support for a number of small behavioral extensions added by Dart Sass:
It's no longer an error to @extend a selector that appears in the stylesheet, but for which unification fails. The purpose of extension errors was to prevent typos, which weren't occurring in this case.
Pseudo selectors that take arguments can now take any argument that matches CSS's <declataion-value> syntax. This will provide better forwards-compatibility with new selectors.
Pseudo selectors that contain placeholder selectors as well as non-placeholders—for example, :matches(.foo, %bar)—will no longer be eliminated. This matches the definition of a placeholder as a selector that matches nothing.
You can now vary the indentation within an indented-syntax file, as long as it still defines a consistent tree structure.
There are also some deprecations for functionality that's not supported in Ruby Sass:
Extending compound selectors, such as @extend .foo.bar, is deprecated. This never followed the stated semantics of extend: elements that match the extending selector are styled as though they matches the extended selector.
When you write h1 {@extend .a.b}, this should mean that all h1 elements are styled as though they match .a.b—that is, as though they have class="a b", which means they'd match both .a and .b separately. But instead we extend only selectors that contain both .a and .b, which is incorrect.
Color arithmetic is deprecated. Channel-by-channel arithmetic doesn't correspond closely to intuitive understandings of color. Sass's suite of color functions are a much cleaner and more comprehensible way of manipulating colors dynamically.
The reference combinator, /foo/, is deprecated since it hasn't been in the CSS specification for some time and is being removed from Chrome soon.
The old-style :name value property syntax is deprecated. This syntax is not widely used, and is unnecessarily different from CSS.
LibSass Compatibility
LibSass, the C++ implementation of Sass, is well on its way to compatibility with all these features. It's not quite there yet, but we decided we didn't want to block the 3.5 release on 100% compatibility. LibSass will release these features as it implements them.
In the most immediate future, I'm going on leave for a few months, so there's not likely to be a huge amount of work. Once that's over, I'll be focusing on getting Dart Sass to a full 1.0.0 release, which means spending a bunch of time making its JavaScript API compatible with node-sass.
As far as Ruby Sass goes, I'll continue to fix bugs and add support for the CSS features as browsers start to support them. Once Dart Sass 1.0.0 is out, I'll add new features concurrently across both Ruby and Dart until the one-year support period is up.
But for now, run gem update sass and enjoy 3.5!
Copyright © 2014 nex3 . Theme iaawd by poying


Practice time is vital, as the focused concepts studied during lessons need time to develop & mature. During the weekly lesson, specific examples will be assigned for the student to bring home. This is the equivalent of homework, and some students do need encouragement from parents/families to study. Please encourage them to practice! My role as the teacher is of limited contact with the student, but I do constantly stress the importance of practice and I always ask for weekly feedback from the student based on their practice time. Many students benefit from a daily scheduled time, and by keeping track of time and questions in a practice journal. The online practice journal allows quick responses from teacher to student with questions, and can be easily accessed via mobile or tablet for students to enter practice time and notes.
Each student will be assigned musical books to purchase throughout the year. I attempt to keep costs down as much as possible by using music books with multiple selections and working through these books. An estimate of music costs for the first year of lessons would range from $25-$50 depending upon the progress, age, and ambition of the student. Staff paper is also required, but can be downloaded for free online.
For piano, I highly recommend the Alfred's Basic library. With its combination of theory, aural skills, and technical exercises it has broad applications to all student ages and abilities. For young students, Alfred's Basic offers fun examples and alliterations which appeal to and capture the attention of children. Adults will find Alfred's All-In-One moves at a pace appropriate for higher-level thinkers while getting those fingers coordinated at the same time.
The primary focus for voice students is learning how to utilize the breath and train the ear to produce beautiful, balanced tone. A variety of books (many in the Schirmer or Hal Leonard series) are used to provide musical selections which challenge the student in rhythm, phrase, breath, and pronunciation. I require all voice students to sing in English and one other langauge, while experienced students will study and perform in many languages. Voice students are highly recommended to take piano lessons as well or to have a previous piano background in order to accompany themselves in practice and develop further theory skills.
We will respect one another and not bring illness into the studio. If I must miss a lesson due to illness, credit will be given for the lesson and I will notify you with as much advance notice as possible to reschedule. If you must miss a lesson due to illness, please also give as much advance notice as possible for the missed lesson.
Some suggestions for avoiding illness: wash hands often, drink lots of water, sleep plenty and on-schedule, eat fruits and vegetables, exercise regularly, attempt regular stress relief. You'd be amazed at how many people don't do these common-sense actions!
Voice students: As singing is a physical exercise, even a slight cold can disrupt your vocal apparatus or breathing. If you feel under the weather, you will sing under the weather. Don't 'tough it out' - your voice can be damaged by too much stress.
If you are unable to make your scheduled lesson, notice must be given by phone or email no less than 24 hours prior to the lesson time in order to reschedule the lesson with no fee. All lessons, once scheduled, are confirmed and no refunds will be issued.


MainBlogsThe Tamar Yonah ShowEurovision 2007 - Double Standard for Israel?
Eurovision 2007 - Double Standard for Israel?
The group's lead singer, Kobi Oz, is himself from Sderot, a town in Israel that has seen kassam rockets slamming into it's residential areas for a number of years, killing and injuring its residents, with the world looking on in apathy.
I couldn't believe that THIS was the song Israel was going to send to the Eurovision Song Contest this year. When I first heard it, I said, "Oh my Gawwwd!" I was pretty taken aback! The song was half rap, half 'just weird'. It certainly wasn't a 'pretty' song, or one that Israel usually sends in for a contest entry. And then I started reading about the song and the Europeans reaction to it. It changed my mind. Israel's song choice is controversial, I won't deny it. But objections coming from the Europeans, really ticked me off.
Our song entry this year: "Push the Button" is by the band called Teapacks. The song is a wry piece on the terrorists, and the nuclear threats Israel faces from these (Arab/Islamic?) leaders. The group's lead singer, Kobi Oz, is himself from Sderot, a town in Israel that has seen kassam rockets slamming into it's residential areas for a number of years, killing and injuring its residents, with the world looking on in apathy.
Kjell Ekholm of the EBU's Eurovision Song Contest's reference group stated that "It's absolutely clear that this kind of message is not appropriate for the competition".
This group was none other than Finland's own heavy metal band called LORDI.
Finland's 'song' won the Eurovison contest last year!
So, though I really don't care for our rap and rock song that Israel will be performing, maybe this is a good, "stick it to yuh Europeans, with love, from Israel's citizens" who are constantly being threatened and attacked by our neighbors, while Europe feeds the terror beasts and tells us that we are the ones at fault.
Our message to the millions of Europeans? It may be we Jews who are gonna get attacked, but not only us. It's not JUST the Jews, it's FIRST the Jews, and then YOU! First the Saturday People, and then the Sunday People.
And Europe better watch out, as their continent has earned the new name of EurAbia . Perhaps that is why there are objections to Israel's entry this year? Perhaps the Europeans are intimidated by this bold and blunt song? Perhaps they are afraid of getting the Mullahs angry? So if the powers that be in the Eurovision decide to nix Israel's song choice, it could be safe to say that (with last year's winner) it would prove them to be hypocritical, or holding double standards. Letting a violent death themed song with axes on stage win the contest, and then disqualifying Israel's song that says we want to live in the sun and not get bombed, is so typically 'European' when it comes to the Jews.
So go figure, what is good taste and acceptable these days? Perhaps it is better to forfeit vying for the contest's number one spot and just get the message through that their contest that feigns to promote peace and love, ignores any real truth to the matter. If we just bring that message to the millions of viewers who will be watching, perhaps we will come out the real winners?


text:
26-April-2020 20:53 IST
PM pays homage to Lord Basaveshwara on Basava Jayanthi today, in a video message
Prime Minister Shri Narendra Modi paid homage to Lord Basaveshwara and greeted the people on the occasion of Basava Jayanthi, the Birth anniversary of Lord Basaveshwara, in a video message today .
Basava Jayanthi is an annual event celebrated in the honour of the birth of Vishwaguru Basaveshwara, the 12th century philosopher and social reformer.
Global Basava Jayanthi – 2020 is being held digitally today, connecting followers in India and abroad.
In his message, Prime Minister sought blessings of Lord Basaveshwara to give country the strength for defeating the pandemic coronavirus.
Prime Minister recalled that on many occasions earlier, he had the privilege of learning from the teachings of Lord Basaveshwara, be it the event of the translations of holy Vachanas into 23 languages, or the unveiling of Basaveshwara Statue in London.
Describing Lord Basaveshwara as a great reformer and a great administrator, Prime Minister said Lord Basaveshwara did not just preach about the reforms he wanted in the individuals or in the society but also adopted and inculcated them in his own life.
Prime Minister said the teachings of Lord Basaveshwara are the source of spiritual knowledge, as well as serve as the practical guide of our lives. His teachings teach us to be a better human being, and to make our society liberal, kind and humane. He had guided our society on issues of social and gender equality, several centuries ago.
Prime Minister said Lord Basaveshwara laid the foundations of a democracy, which prioritises, and promotes the rights of person, standing on the last rungs of the society. Basavanna had touched each and every aspect of human life, and had suggested solutions to improve it, he added.
Prime Minister was also pleased to note the extensive work done on the digitization of holy Vachanas of Basavanna, the suggestion Prime Minister had made in 2017.
Appreciating the Basava Samithi for conducting today's event digitally across the world, Prime Minister said this sets a perfect example for conducting an event while also following the guidelines of lockdown.
The Prime Minister said, "Today, Indians feel that change starts with them. This belief is helping the country to overcome challenges." He urged to carry forward and strengthen this message of hope and faith. This will inspire us to work hard and will take our nation to new heights, he added. He urged to keep spreading Lord Basavanna's works and his ideals around the world to make the world a better place.
While wishing the people on Basava Jayanti, Prime Minister also stressed on following the rule of "Do Gaj Doori" in order to maintain social distance.
VRRK/KP