ng Making Distributed Working Work By 24ways.org Published On :: Thu, 12 Dec 2019 12:00:00 +0000 Anna Debenham harnesses up the huskies and puts them to work to figure out how teams distributed across multiple locations can work effectively to all pull in the same direction. With modern workforces distributed from north pole to south, can they all be kept running in step? Four years ago, I started working at a small startup called Snyk that’s based in two locations – London and Tel Aviv. The founders made it clear they wanted to grow headcount in both locations at the same rate, and for the design and engineering skillsets between the two offices to be evenly spread. We’re now at over 200 people and we’re still staying true to that vision, but only by completely changing how we were used to working. The trend for fully distributed teams is on the rise – companies like InVision and GitLab have entirely remote employees. Snyk is somewhere in between, with small hubs of global team members in homes and shared offices globally alongside our main London, Tel Aviv, Boston, Ottawa and Bay Area offices. Our R&D teams are based entirely in London or Tel Aviv, with a few employees working around Europe. Rather than have Team A working in one office and Team B working in another, we’ve deliberately designed it so that no R&D team at Snyk has all its members in one location. We could design our teams to be all co-located so that everyone’s in the same room, but we don’t. When I explain this setup to people, I’ll often get a response of bewilderment – why do it this way? It sounds like a pain! Increasingly though, the reaction is positive – usually from people who’ve worked in a distributed team before where departments are split neatly between locations. They’ve experienced an “us vs them” culture, with work being thrown over the fence to designers or engineers in different timezones. They’ve been at the mercy of the decision makers who are all in the head office. This is exactly what we wanted to avoid. We wanted the company to feel like one team, across many locations. It’s not perfect – I do miss the things that working in the same location brings such as collaborating on a whiteboard, or having planning documents stuck on the wall for the team to refer to. Pre-distributed working, I used to sit next to a designer and we’d bounce ideas off each other. Now I have to make the extra effort to schedule something in. Managing people remotely is also tough – I can’t easily see that a team member is having a bad day and make them a cup of tea. But on the whole, it works pretty well for us. The time difference between London and Tel Aviv is a comfy 2 hours, and in Tel Aviv, the week runs from Sunday to Thursday, meaning there’s just a single day in the week when all our teams aren’t working. This makes the week feel like the ebb and flow of a tide – my Mondays are very busy, but on Fridays, half the team is off so there are barely any meetings – ideal for deep focus time. So how do we make this distributed-but-also-co-located hybrid thing work? Level the playing field Firstly, that “us vs them” mentality I mentioned is the key thing to avoid to maintain a positive distributed work culture. Avoid the term “remote team”, as that has a sense of otherness. Instead, refer to your team as “distributed”. It’s such a small change that has the effect of bringing everyone onto the same level. Also, consider your video conferencing etiquette – if you’ve got a large part of your team in one location, with just one or two members who are dialling in, you could end up with a very one-sided conversation. The room with the most people in it has a habit of forgetting the person they can’t easily see. Even if you’re in the same room, dial in individually so that everyones faces are the same size, and you’re addressing all the participants rather than just those in the same room as you. Invest in tools that help communication Early on, we invested in tools that would help make communication between locations as seamless as possible. I’m not talking about those screens with wheels that follow co-workers around a room to recreate a manager breathing down their neck (although now I think of it…). I’m talking about the familiar ones like Slack, Zoom and Notion. Use a single tool where possible to reduce friction between teams so there’s no confusion as to whether you’re having a call over Google Hangouts, Zoom, Skype or whatever else is fashionable to use this year. Same with meeting notes – keep them in one place rather than scattered across Dropbox, Email and Google Docs. Remote pair programming has also got a lot easier. We used ScreenHero before it got acquired and lost its remote control functionality – but there are some great alternatives out there like USE Together. You might also have collaboration tools built into your code editor, like Visual Studio’s Live Share, and Atom’s Teletype. If teams are complaining about bad audio, don’t skimp – invest in better microphones, speakers and sound-proofing. You won’t get the benefits of working as a distributed team if there’s a barrier between communication. Ensure the internet is stable in all locations. Also, it sounds basic but make sure teams have somewhere to take a call in the first place, particularly 1:1s which shouldn’t be done in the open. Previous places I’ve contracted at had people dialling into meetings in stairwells, shower rooms and even toilet cubicles. Take care not to make the experience of working in a distributed team end up harming the experience of working in an office. Open a window For as long as we’ve had offices, we’ve had a fixed camera and TV screen setup between them that acts as a “window” between locations. The camera is on all the time, and we turn the microphone on once a day for standup (or whenever someone wants to say hi). When I turn on the TV in the morning, I can see the Tel Aviv office already working. At midday, our Boston office comes online, followed shortly after by our Ottawa office. It’s incredible what a difference this has made to make us feel more like one office. We’ve positioned one of the cameras next to our dining area so we can eat together. Another camera is honed in on a dog bed in the corner of the office (sometimes there’s a dog in it!). Distributed meetings With the time differences and weekday shift, there’s a condensed timeframe in which we can collaborate. It’s not as bad as it could be (I pity my fellow Londoners who work for companies based in California), but the hours between 9am and 4pm Monday to Thursday for us are at a premium. This means the meetings we have need to be a good use of everyone’s time. When we can’t find a time that works for everyone, we record the meeting. But even if everyone can make it, we still take notes. The notebook brand Field Notes have a slogan “I’m not writing it down to remember it later, I’m writing it down to remember it now.”. This is a reminder that it’s not always the notes themselves that are useful, but the act of taking them. Where they’re really powerful is when you share them in real time. In Kevin Hoffman’s book ‘Meeting Design’, he recommends the notetaker shares their screen while taking notes so that everyone can participate in making sure those notes are accurate. Having the notes on the screen also helps focus the conversation – particularly if you have an agenda template to start with. It means you’ve got a source of truth for someone who mis-remembers a conversation, and you’ve got something to look back on in the next meeting so you don’t repeat yourselves. Another tip we’ve taken from Kevin’s book is to have a kanban board for standing meetings, where everyone can add a topic. That way, you always have a backlog of topics to discuss in the meeting. If there aren’t any, you can cancel the meeting! We use Notion’s kanban template for our sync meeting notes. Anyone can add a topic before (or during) the meeting and we go through each of them in order. We add notes and action points to the topic card. Don’t get into bad habits when you’re lucky enough to be sharing a single space – keep documenting conversations and decisions in the same way you would with a distributed team, so that future you can remember, and future team members can gather that context. Team bonding I always think the best way to bonding with people is over a meal – isn’t that what Christmas dinner is great for? As a distributed team, we can’t do that. We could try and recreate it (even just for the comedy value), but it’s really not the same. We have to try something different. Enter Eurovision. For those of you outside Europe, imagine a cheesy pop song contest where each country performs their own song and everyone votes for the winner. This year, it was held in Tel Aviv, so dozens of us sat down to watch the live stream. We set up a Eurovision Slack channel and shared our horror in real time. But Eurovision only happens ones a year, so we’ve extended shared experiences into multiple “hobby” Slack channels: we have one for food fans (#fun-foodies), football fans (#fun-footies), and even sourdough fans (#fun-sourdough). There’s also a weekly “drink and sync” where office-less team members join a video call and chat over a beer, coffee, or juice depending on the time of day for those that dial in. One team runs a movie club where they choose a video that’s relevant to their team’s work (such as a conference talk) and watch it together at the same time. Onboarding new team members can feel quite impersonal if their manager isn’t in the same office. Starting your first day in an office full of strangers, where the only interaction with your manager is over a video call can feel daunting. And as a manager, I get anxious about my new hire’s first day – was there someone there to greet them and show them where they sit? Was everything set up for them? Did they have someone to eat lunch with? So we’ve been rolling out an “onboarding buddy” scheme. This is someone local who can help the new hire settle in to their new surroundings. It’s someone to chat to, share a coffee with, and generally look out for them. We also use a Slack app called Donut which pairs employees up for informal chats to get to know each other. You get paired with someone random in the company and it helps you schedule a call with them. This is to encourage cross-pollination across teams and locations. What distributed teamwork has taught us There’s a lot that we’ve learnt about working well as a distributed team. We try and recreate the good things about sharing a physical space, and make them feel just as natural in the digital space, while also compensating for the lack of intimacy from being thousands of miles apart. Mel Choyce’s 24 ways article Surviving—and Thriving—as a Remote Worker stresses the value of remote working, and the long term benefits it has had. Working remotely has made me a better communicator largely because I’ve gotten into the habit of making written updates. I think in a lot of ways, the distance has brought us closer. We make more of an effort to check in on how each other is doing. We document as much as we can, which really helps new hires get up to speed quickly. By identifying what we find valuable about working in the same room, and translating that to work across locations, we find collaboration easier because we’re no longer strangers to each other. We might not be able to have those water-cooler moments in the physical realm, but we’ve done a good job of replicating that online. About the author Anna Debenham lives in London and is a Product Manager at Snyk. She’s the author of Front-end Style Guides, and when she’s not playing on them, she’s testing as many game console browsers as she can get her hands on. More articles by Anna Full Article Process productivity
ng Building a Dictaphone Using Media Recorder and getUserMedia By 24ways.org Published On :: Tue, 17 Dec 2019 12:00:00 +0000 Chris Mills brushes up his shorthand and shows how the MediaStream Recording API in modern browsers can be used to capture audio directly from the user’s device. Inching ever closer to the capabilities of native software, it truly is an exciting time to be a web developer. The MediaStream Recording API makes it easy to record audio and/or video streams. When used with MediaDevices.getUserMedia(), it provides an easy way to record media from the user’s input devices and instantly use the result in web apps. This article shows how to use these technologies to create a fun dictaphone app. A sample application: Web Dictaphone To demonstrate basic usage of the MediaRecorder API, we have built a web-based dictaphone. It allows you to record snippets of audio and then play them back. It even gives you a visualisation of your device’s sound input, using the Web Audio API. We’ll just concentrate on the recording and playback functionality in this article, for brevity’s sake. You can see this demo running live, or grab the source code on GitHub. This has pretty good support on modern desktop browsers, but pretty patchy support on mobile browsers currently. Basic app setup To grab the media stream we want to capture, we use getUserMedia(). We then use the MediaRecorder API to record the stream, and output each recorded snippet into the source of a generated <audio> element so it can be played back. We’ll first declare some variables for the record and stop buttons, and the <article> that will contain the generated audio players: const record = document.querySelector('.record'); const stop = document.querySelector('.stop'); const soundClips = document.querySelector('.sound-clips'); Next, we set up the basic getUserMedia structure: if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { console.log('getUserMedia supported.'); navigator.mediaDevices.getUserMedia ( // constraints - only audio needed for this app { audio: true }) // Success callback .then(function(stream) { }) // Error callback .catch(function(err) { console.log('The following `getUserMedia` error occured: ' + err); } ); } else { console.log('getUserMedia not supported on your browser!'); } The whole thing is wrapped in a test that checks whether getUserMedia is supported before running anything else. Next, we call getUserMedia() and inside it define: The constraints: Only audio is to be captured for our dictaphone. The success callback: This code is run once the getUserMedia call has been completed successfully. The error/failure callback: The code is run if the getUserMedia call fails for whatever reason. Note: All of the code below is found inside the getUserMedia success callback in the finished version. Capturing the media stream Once getUserMedia has created a media stream successfully, you create a new Media Recorder instance with the MediaRecorder() constructor and pass it the stream directly. This is your entry point into using the MediaRecorder API — the stream is now ready to be captured into a <Blob>, in the default encoding format of your browser. const mediaRecorder = new MediaRecorder(stream); There are a series of methods available in the MediaRecorder interface that allow you to control recording of the media stream; in Web Dictaphone we just make use of two, and listen to some events. First of all, MediaRecorder.start() is used to start recording the stream once the record button is pressed: record.onclick = function() { mediaRecorder.start(); console.log(mediaRecorder.state); console.log("recorder started"); record.style.background = "red"; record.style.color = "black"; } When the MediaRecorder is recording, the MediaRecorder.state property will return a value of “recording”. As recording progresses, we need to collect the audio data. We register an event handler to do this using mediaRecorder.ondataavailable: let chunks = []; mediaRecorder.ondataavailable = function(e) { chunks.push(e.data); } Last, we use the MediaRecorder.stop() method to stop the recording when the stop button is pressed, and finalize the Blob ready for use somewhere else in our application. stop.onclick = function() { mediaRecorder.stop(); console.log(mediaRecorder.state); console.log("recorder stopped"); record.style.background = ""; record.style.color = ""; } Note that the recording may also stop naturally if the media stream ends (e.g. if you were grabbing a song track and the track ended, or the user stopped sharing their microphone). Grabbing and using the blob When recording has stopped, the state property returns a value of “inactive”, and a stop event is fired. We register an event handler for this using mediaRecorder.onstop, and construct our blob there from all the chunks we have received: mediaRecorder.onstop = function(e) { console.log("recorder stopped"); const clipName = prompt('Enter a name for your sound clip'); const clipContainer = document.createElement('article'); const clipLabel = document.createElement('p'); const audio = document.createElement('audio'); const deleteButton = document.createElement('button'); clipContainer.classList.add('clip'); audio.setAttribute('controls', ''); deleteButton.innerHTML = "Delete"; clipLabel.innerHTML = clipName; clipContainer.appendChild(audio); clipContainer.appendChild(clipLabel); clipContainer.appendChild(deleteButton); soundClips.appendChild(clipContainer); const blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' }); chunks = []; const audioURL = window.URL.createObjectURL(blob); audio.src = audioURL; deleteButton.onclick = function(e) { let evtTgt = e.target; evtTgt.parentNode.parentNode.removeChild(evtTgt.parentNode); } } Let’s go through the above code and look at what’s happening. First, we display a prompt asking the user to name their clip. Next, we create an HTML structure like the following, inserting it into our clip container, which is an <article> element. <article class="clip"> <audio controls></audio> <p>_your clip name_</p> <button>Delete</button> </article> After that, we create a combined Blob out of the recorded audio chunks, and create an object URL pointing to it, using window.URL.createObjectURL(blob). We then set the value of the <audio> element’s src attribute to the object URL, so that when the play button is pressed on the audio player, it will play the Blob. Finally, we set an onclick handler on the delete button to be a function that deletes the whole clip HTML structure. So that’s basically it — we have a rough and ready dictaphone. Have fun recording those Christmas jingles! As a reminder, you can find the source code, and see it running live, on the MDN GitHub. This article is based on Using the MediaStream Recording API by Mozilla Contributors, and is licensed under CC-BY-SA 2.5. About the author Chris Mills manages the MDN web docs writers’ team at Mozilla, which involves spreadsheets, meetings, writing docs and demos about open web technologies, and occasional tech talks at conferences and universities. He used to work for Opera and W3C, and enjoys playing heavy metal drums and drinking good beer. More articles by Chris Full Article Code apis
ng Five Interesting Ways to Use Array.reduce() (And One Boring Way) By 24ways.org Published On :: Wed, 18 Dec 2019 12:00:00 +0000 Chris Ferdinandi turns the heat down low and lets the sauce reduce while we take a look at how to add spice to our source with a sprinkling of Array.reduce(). Just a little ingenuity with the humblest of functions. Of all the modern array methods, the one I had the hardest time wrapping my head around was Array.reduce(). On the surface, it seems like a simple, boring method that doesn’t do much. But below its humble exterior, Array.reduce() is actually a powerful, flexible addition to your developer toolkit. Today, we’re going to look at some cool things you can do with Array.reduce(). How Array.reduce() works Most of the modern array methods return a new array. The Array.reduce() method is a bit more flexible. It can return anything. Its purpose is to take an array and condense its content into a single value. That value can be a number, a string, or even an object or new array. That’s the part that’s always tripped me up – I didn’t realize just how flexible it is! The syntax The Array.reduce() accepts two arguments: a callback method to run against each item in the array, and a starting value. The callback also accepts two arguments: the accumulator, which is the current combined value, and the current item in the loop. Whatever you return is used as the accumulator for the next item in the loop. On the very first loop, that starting value is used instead. var myNewArray = [].reduce(function (accumulator, current) { return accumulator; }, starting); Let’s look at some examples to make this all tangible. 1. Adding numbers together Let’s say you had an array of numbers that you wanted to add together. Using Array.forEach(), you might do something like this: var total = 0; [1, 2, 3].forEach(function (num) { total += num; }); This is the cliche example for using Array.reduce(). I find the word accumulator confusing, so in this example, I’m calling it sum, because that’s what it is. var total = [1, 2, 3].reduce(function (sum, current) { return sum + current; }, 0); Here, we pass in 0 as our starting value. In the callback, we add the current value to the sum, which has our starting value of 0 on the first loop, then 1 (the starting value of 0 plus the item value of 1), then 3 (the sum value of 1 plus the item value of 2), and so on. Here’s a demo. 2. Combining multiple array methods into Array.map() and Array.filter() into a single step Imagine you had an array of wizards at Hogwarts. var wizards = [ { name: 'Harry Potter', house: 'Gryfindor' }, { name: 'Cedric Diggory', house: 'Hufflepuff' }, { name: 'Tonks', house: 'Hufflepuff' }, { name: 'Ronald Weasley', house: 'Gryfindor' }, { name: 'Hermione Granger', house: 'Gryfindor' } ]; You want to create a new array that contains just the names of wizards who are in Hufflepuff. One way you could do that is by using the Array.filter() method to get back just wizards whose house property is Hufflepuff. Then, you’d use the Array.map() method to create a new array containing just the name property for the remaining wizards. // Get the names of the wizards in Hufflepuff var hufflepuff = wizards.filter(function (wizard) { return wizard.house === 'Hufflepuff'; }).map(function (wizard) { return wizard.name; }); With the Array.reduce() method, we can get the same array in a single pass, improving our performance. You pass in an empty array ([]) as the starting value. On each pass, you check to see if the wizard.house is Hufflepuff. If it is, you push it to the newArr (our accumulator in this example). If not, you do nothing. Either way, you return the newArr to become the accumulator on the next pass. // Get the names of the wizards in Hufflepuff var hufflepuff = wizards.reduce(function (newArr, wizard) { if (wizard.house === 'Hufflepuff') { newArr.push(wizard.name); } return newArr; }, []); Here’s another demo. 3. Creating markup from an array What if, instead of creating an array of names, we wanted to create an unordered list of wizards in Hufflepuff? Instead of passing an empty array into Array.reduce() as our starting value, we’ll pass in an empty string ('') and call it html. If the wizard.house equals Hufflepuff, we’ll concatenate our html string with the wizard.name wrapped in an opening and closing list item (li). Then, we’ll return the html to become the accumulator on the next loop. // Create a list of wizards in Hufflepuff var hufflepuffList = wizards.reduce(function (html, wizard) { if (wizard.house === 'Hufflepuff') { html += '<li>' + wizard.name + '</li>'; } return html; }, ''); Add an opening and closing unordered list element before and after Array.reduce(), and you’re ready to inject your markup string into the DOM. // Create a list of wizards in Hufflepuff var hufflepuffList = '<ul>' + wizards.reduce(function (html, wizard) { if (wizard.house === 'Hufflepuff') { html += '<li>' + wizard.name + '</li>'; } return html; }, '') + '</ul>'; See it in action here. 4. Grouping similar items in an array together The lodash library has a groupBy() method takes a collection of items as an array and groups them together into an object based on some criteria. Let’s say you want an array of numbers. If you wanted to group all of the items in numbers together based on their integer value, you would do this with lodash. var numbers = [6.1, 4.2, 6.3]; // returns {'4': [4.2], '6': [6.1, 6.3]} _.groupBy(numbers, Math.floor); If you had an array of words, and you wanted to group the items in words by their length, you would do this. var words = ['one', 'two', 'three']; // returns {'3': ['one', 'two'], '5': ['three']} _.groupBy(words, 'length'); Creating a groupBy() function with Array.reduce() You can recreate that same functionality using the Array.reduce() method. We’ll create a helper function, groupBy(), that accepts the array and criteria to sort by as arguments. Inside groupBy(), we’ll run Array.reduce() on our array, passing in an empty object ({}) as our starting point, and return the result. var groupBy = function (arr, criteria) { return arr.reduce(function (obj, item) { // Some code will go here... }, {}); }; Inside the Array.reduce() callback function, we’ll check to see if the criteria is a function, or a property of the item. Then we’ll get its value from the current item. If there’s no property in the obj with that value yet, we’ll create it and assign an empty array as its value. Finally, we’ll push the item to that key, and return the object as the accumulator for the next loop. var groupBy = function (arr, criteria) { return arr.reduce(function (obj, item) { // Check if the criteria is a function to run on the item or a property of it var key = typeof criteria === 'function' ? criteria(item) : item[criteria]; // If the key doesn't exist yet, create it if (!obj.hasOwnProperty(key)) { obj[key] = []; } // Push the value to the object obj[key].push(item); // Return the object to the next item in the loop return obj; }, {}); }; Here’s a demo of the completed helper function. Special thanks to Tom Bremer for helping me make some improvements to this one. You can find this helper function and more like it on the Vanilla JS Toolkit. 5. Combining data from two sources into an array Remember our array of wizards? var wizards = [ { name: 'Harry Potter', house: 'Gryfindor' }, { name: 'Cedric Diggory', house: 'Hufflepuff' }, { name: 'Tonks', house: 'Hufflepuff' }, { name: 'Ronald Weasley', house: 'Gryfindor' }, { name: 'Hermione Granger', house: 'Gryfindor' } ]; What if you had another data set, an object of house points each wizard has earned. var points = { HarryPotter: 500, CedricDiggory: 750, RonaldWeasley: 100, HermioneGranger: 1270 }; Imagine you wanted to combine both sets of data into a single array, with the number of points added to each wizard’s data in the wizards array. How would you do it? The Array.reduce() method is perfect for this! var wizardsWithPoints = wizards.reduce(function (arr, wizard) { // Get the key for the points object by removing spaces from the wizard's name var key = wizard.name.replace(' ', ''); // If the wizard has points, add them // Otherwise, set them to 0 if (points[key]) { wizard.points = points[key]; } else { wizard.points = 0; } // Push the wizard object to the new array arr.push(wizard); // Return the array return arr; }, []); Here’s a demo combining data from two sources into an array. 6. Combining data from two sources into an object What if you instead wanted to combine the two data sources into an object, where each wizard’s name was the key, and their house and points were properties? Again, the Array.reduce() method is perfect for this. var wizardsAsAnObject = wizards.reduce(function (obj, wizard) { // Get the key for the points object by removing spaces from the wizard's name var key = wizard.name.replace(' ', ''); // If the wizard has points, add them // Otherwise, set them to 0 if (points[key]) { wizard.points = points[key]; } else { wizard.points = 0; } // Remove the name property delete wizard.name; // Add wizard data to the new object obj[key] = wizard; // Return the array return obj; }, {}); Here’s a demo combining two data sets into an object. Should you use Array.reduce() more? The Array.reduce() method has gone from being something I thought was pointless to my favorite JavaScript method. So, should you use it? And when? The Array.reduce() method has fantastic browser support. It works in all modern browsers, and IE9 and above. It’s been supported in mobile browsers for a long time, too. If you need to go back even further than that, you can add a polyfill to push support back to IE6. The biggest complaint you can make about Array.reduce() is that it’s confusing for people who have never encountered it before. Combining Array.filter() with Array.map() is slower to run and involves extra steps, but it’s easier to read. It’s obvious from the names of the methods what they’re supposed to be doing. That said, there are times where Array.reduce() makes things that would be complicated more simple rather than more complicated. The groupBy() helper function is a good example. Ultimately, this is another tool to add to your toolkit. A tool that, if used right, can give you super powers. About the author Chris Ferdinandi helps people learn vanilla JavaScript. He believes there’s a simpler, more resilient way to make things for the web. Chris is the author of the Vanilla JS Pocket Guide series, creator of the Vanilla JS Academy training program, and host of the Vanilla JS Podcast. His developer tips newsletter is read by thousands of developers each weekday. He’s taught developers at organizations like Chobani and the Boston Globe, and his JavaScript plugins have been used used by Apple and Harvard Business School. Chris Coyier, the founder of CSS-Tricks and CodePen, has described his writing as “infinitely quote-worthy.” Chris loves pirates, puppies, and Pixar movies, and lives near horse farms in rural Massachusetts. He runs Go Make Things with Bailey Puppy, a lab-mix from Tennessee. More articles by Chris Full Article Code javascript
ng Romancing history through fashion By www.thehindu.com Published On :: Wed, 10 Aug 2016 17:31:15 +0530 Poonam Bhagat’s penchant for intricate detailing is visible in her latest collection, writes PRIYADARSHINI PAITANDY Full Article Fashion
ng It’s blooming fashion By www.thehindu.com Published On :: Fri, 12 Aug 2016 16:39:13 +0530 Floral prints are back. Designers and stylists tell RANJANI RAJENDRA how to choose well, without ending up looking like a bit of a garden Full Article Fashion
ng Making Mithila fashionable By www.thehindu.com Published On :: Thu, 18 Aug 2016 00:56:30 +0530 Relationship between Ram and Sita, which has been depicted in traditional Mithila paintings, now finds reflection in designer outfits created by Monica and Karishma Full Article Metroplus
ng Sprinting away in style By www.thehindu.com Published On :: Fri, 19 Aug 2016 16:29:31 +0530 The ongoing Olympics at Rio is creating a buzz not just for its sports but also for the fashion flaunted by the sportsmen, says NEETI SARKAR Full Article Metroplus
ng Sprinting away in style By www.thehindu.com Published On :: Sun, 21 Aug 2016 02:56:44 +0530 The ongoing Olympics at Rio is creating a buzz not just for its sports but also for the fashion flaunted by the sports stars, says NEETI SARKAR Full Article Metroplus
ng Something old, something luxe By www.thehindu.com Published On :: Thu, 25 Aug 2016 15:49:19 +0530 Want to own a pair of Jimmy Choos but the price tag deters you? Sites selling pre-loved, pre-owned luxury items might be your answer, writes PRIYADARSHINI PAITANDY Full Article Metroplus
ng Stitching bonds By www.thehindu.com Published On :: Fri, 26 Aug 2016 21:30:20 +0530 Huma Nassr explains how she is using fashion to promote goodwill and peace between India and Pakistan Full Article Metroplus
ng Celebspotting: Lakme Fashion Week Winter/Festive 2016 By www.thehindu.com Published On :: Mon, 29 Aug 2016 16:02:46 +0530 Who modelled for whom during this year's edition of Lakme Fashion Week's Winter collection? Full Article Fashion
ng Bring home the medals By www.thehindu.com Published On :: Wed, 31 Aug 2016 16:28:12 +0530 Fashion designer Ritu Beri wonders if privatisation is the key to India performing better at global sporting events Full Article Metroplus
ng Taking linen to the city of love By www.thehindu.com Published On :: Wed, 31 Aug 2016 16:29:23 +0530 Designer Kaveri Lalchand tests international waters with her maiden show in Paris. She speaks about how it all began with the need to find clothes for herself. Full Article Fashion
ng The long and short of it By www.thehindu.com Published On :: Thu, 01 Sep 2016 00:49:32 +0530 Skirts are back in news in more ways than one Full Article Metroplus
ng Bending fashion the cheapensive way By www.thehindu.com Published On :: Tue, 06 Sep 2016 15:45:41 +0530 Creating a balance between budget and fashion, branded and streetwear, reuse and recycle, Bengaluru's college goers show the way Full Article Metroplus
ng Is anyone listening? By www.thehindu.com Published On :: Thu, 08 Sep 2016 17:15:57 +0530 Archana Shah says it is time people heard the stories of our craftspeople and gave them a place in the sun Full Article Metroplus
ng Raising the bar By www.thehindu.com Published On :: Fri, 09 Sep 2016 19:46:37 +0530 Testing time it was for models from India and abroad during auditions of the Amazon India Fashion Week Spring-Summer 2017. Full Article Metroplus
ng Threads from Bengal By www.thehindu.com Published On :: Fri, 14 Oct 2016 14:49:38 +0530 Rang Mahal brings to the city the creations of 250 weavers from Nadia Full Article Metroplus
ng Making headway, fashionably By www.thehindu.com Published On :: Mon, 17 Oct 2016 19:00:49 +0530 Full Article Fashion
ng String theory By www.thehindu.com Published On :: Wed, 26 Oct 2016 14:20:51 +0530 Vidhya Maghanath Sunder designed jewellery as a hobby, but the response she got for her creations convinced her to look at it as a serious business venture Full Article Metroplus
ng Where subtlety is the new bling By www.thehindu.com Published On :: Thu, 03 Nov 2016 16:39:10 +0530 Shantanu and Nikhil speak of their 16-year-journey and why they like to keep their style subtle Full Article Metroplus
ng Cut, carat and setting By www.thehindu.com Published On :: Thu, 17 Nov 2016 22:25:27 +0530 Kajal Nair’s bespoke jewellery blends high design with rare gems for a worldwide clientèle Full Article Metroplus
ng Tabu turns showstopper for Gaurang Shah By www.thehindu.com Published On :: Mon, 08 Aug 2022 14:39:38 +0530 Actor Tabu in a Nizam-era inspired ensemble by Gaurang Shah added sheen to National Handloom Day 2022 in Hyderabad Full Article Fashion
ng Geneva Watch Days 2022: screening for ‘flippers’ By www.thehindu.com Published On :: Sat, 17 Sep 2022 11:10:57 +0530 At the third edition of the trade fair, top CEOs talk about discouraging speculators and getting their ‘in demand’ beauties on the wrists of real watch lovers Full Article Life & Style
ng For the festive season, designers are working with artisans to create clothes with a conscience By www.thehindu.com Published On :: Thu, 20 Oct 2022 17:57:52 +0530 As gifting and dressing up for the festive season begins, consumers are increasingly looking at sustainable, environment friendly choices Full Article Life & Style
ng Menswear at the Lakme Fashion Week makes a strong statement By www.thehindu.com Published On :: Fri, 21 Oct 2022 19:07:35 +0530 Menswear embraced maximalism with an impressive display of structure, shapes and embellishment at the Lakmé Fashion Week x FDCI Full Article Life & Style
ng This bus in Chennai brings fashion to your doorstep with its boutique on wheels By www.thehindu.com Published On :: Thu, 15 Dec 2022 11:25:25 +0530 Started by Karthick Gunabalan, Pikbig.com showcases a collection of ethnic and Indo-western clothes for women Full Article Life & Style
ng Mahila Praharis of the BSF Camel Contingent will make their Republic Day parade debut in uniform designed by Raghavendra Rathore By www.thehindu.com Published On :: Fri, 20 Jan 2023 20:28:00 +0530 The designer also incorporated various skills from across the country and it took him three months to complete the uniform Full Article Life & Style
ng After a 20 year-long wait, Anita Dongre launches her vegan accessory line comprising handbags and belts By www.thehindu.com Published On :: Mon, 30 Jan 2023 21:04:20 +0530 The new line of belts and bags are made from a plant-based, plastic-free material called Mirum Full Article Life & Style
ng Designer Ranna Gill brings the essence of Lake Como to the runway at the Lakme Fashion Week X FDCI By www.thehindu.com Published On :: Fri, 10 Mar 2023 17:01:57 +0530 Twenty-five years of Ranna Gill, and she still lets the flowers do the talking in her garments. Ahead of her show at Lakme Fashion Week X FDCI, the designer gives us a sneak peek into her collection Full Article Life & Style
ng The style file from the Lakme Fashion Week that got us talking By www.thehindu.com Published On :: Fri, 17 Mar 2023 16:22:37 +0530 Lakmé Fashion Week x FDCI 2023 showcased gender-agnostic styles, recycled accessories and modern Indian draping techniques – we explore what will influence your wardrobe this year Full Article Life & Style
ng Neeta Lulla on ‘Shaakuntalam’: Samantha Ruth Prabhu’s outfits are simple yet alluring By www.thehindu.com Published On :: Thu, 23 Mar 2023 15:24:25 +0530 Designer Neeta Lulla on the fairytale-like silhouettes for Samantha Ruth Prabhu’s mythological romance drama ‘Shaakuntalam’ Full Article Movies
ng The Galleries at 32nd in Gurgaon is the newest shopping address in town By www.thehindu.com Published On :: Fri, 24 Mar 2023 17:25:29 +0530 Sip a coffee as you browse designer brands at the recently-opened The Galleries at 32nd in Gurgaon Full Article Fashion
ng Objectifying gender is not ‘jest’ By www.thehindubusinessline.com Published On :: Sat, 30 Mar 2013 14:58:37 +0530 Full Article Richa Mishra
ng Has the Congress already given up? By www.thehindubusinessline.com Published On :: Mon, 03 Feb 2014 16:42:22 +0530 Full Article Stanly Johny
ng Currying flavour By www.thehindu.com Published On :: Sat, 12 Mar 2016 16:17:41 +0530 Full Article Fitness
ng ‘Your life is more than just a number on a weighing scale’ By www.thehindu.com Published On :: Thu, 24 Mar 2016 17:01:23 +0530 At an event to launch her book Gain to Lose, Dr. Sheela Nambiar said weight training helped women lose weight and cope better with their myriad tasks Full Article Coimbatore
ng Spinning a tale of fitness By www.thehindu.com Published On :: Fri, 25 Mar 2016 16:18:18 +0530 PedalBeat, a new indoor cycling studio, was recently opened in the city Full Article Fitness
ng Jumpstart: Sweating it out with Yoga By www.thehindu.com Published On :: Sat, 09 Apr 2016 17:19:10 +0530 Yoga is often dissed by the younger generation as light, easy, slow exercise. BHUMIKA K. begs to differ after going through a ‘happy yoga’ class Full Article Metroplus
ng How to start running By www.thehindu.com Published On :: Sat, 16 Apr 2016 16:36:19 +0530 Full Article Fitness
ng Jumpstart: Drumming up a fitness boost By www.thehindu.com Published On :: Sat, 16 Apr 2016 17:46:40 +0530 Who would have thought that drumming would be a fun fitness workout? ALLAN MOSES RODRICKS drops the beat on the rhythmic regimen Full Article Metroplus
ng Knowing what you want By www.thehindu.com Published On :: Sat, 23 Apr 2016 17:57:09 +0530 What you’re looking for out of your fitness regimen will dictate what you need to do to get there, writes RAJ GANPATH Full Article Fitness
ng Taming Siachen’s raging waters By www.thehindu.com Published On :: Wed, 27 Apr 2016 16:31:40 +0530 Making a world record for first ever rafting expedition in the Siachen Glacier, Madurai man Captain K.R.C. Pratap shares his experience of rafting through the Nubra and Shyok rivers. Full Article Metroplus
ng Sprinting over every hurdle By www.thehindu.com Published On :: Sat, 30 Apr 2016 16:36:43 +0530 Being a woman doesn’t mean you need to be bogged down with household and office chores. With some planning, you too can start off by being a runner. Full Article Fitness
ng The first steps to healthy living By www.thehindu.com Published On :: Sat, 07 May 2016 17:18:34 +0530 Being healthy is not easy. It includes a little hard work on the choices you make about how you eat and live Full Article Fitness
ng The summer shape-up challenge By www.thehindu.com Published On :: Thu, 12 May 2016 20:31:39 +0530 Experts share cool tips for a hot weather workout. Full Article Fitness
ng Aiming for Salman standard By www.thehindu.com Published On :: Wed, 18 May 2016 22:39:24 +0530 Ruslaan Mumtaz tells us what all he does to have lean and fit body Full Article Metroplus
ng The long walk to fitness By www.thehindu.com Published On :: Wed, 01 Jun 2016 22:25:36 +0530 A recent panel discussion on wellness emphasised on the need for women to take care of themselves Full Article Metroplus
ng Racing against time By www.thehindu.com Published On :: Fri, 03 Jun 2016 15:35:43 +0530 Well past their prime, three athletes from Madurai, P. Senthan, V. Thirunavukkarasu and P. Thiruselvam, qualify for the World Masters Athletics Championship in Perth, Australia. Full Article Metroplus
ng Running is just symbolic: Milind Soman By www.thehindu.com Published On :: Fri, 10 Jun 2016 21:12:43 +0530 Exhorting women to take charge of their health, Milind Soman says they should not feel guilty of stealing time away from their family responsibilities Full Article Metroplus