avocado is great
The Worst Things For Sale is Drew's blog. It updates every day. Subscribe to the Worst Things For Sale RSS!
Welcome to The Great Hall of Poets, our regular monthly feature showcasing the talent of Middle-earth fans. Each month we will feature a small selection of the poems submitted, but we hope you will read all of the poems that we have received here in our Great Hall of Poets. So come and join us by […]
Unemployment rate rose to 14.7% from just 4.4% in March as the coronavirus pandemic shuttered the global economy
More than 20 million people in the US lost their jobs in April and the unemployment rate more than trebled as the coronavirus pandemic shuttered the world’s largest economy, triggering a financial crisis unseen since the Great Depression.
The Department of Labor announced Friday that the US unemployment rate rose to 14.7% from just 4.4% in March and a near 50-year low of 3.5% in February before the US was hit by the virus.
Continue reading...At React Conf 2019 we announced an experimental release of React that supports Concurrent Mode and Suspense. In this post we’ll introduce best practices for using them that we’ve identified through the process of building the new facebook.com.
This post will be most relevant to people working on data fetching libraries for React.
It shows how to best integrate them with Concurrent Mode and Suspense. The patterns introduced here are based on Relay — our library for building data-driven UIs with GraphQL. However, the ideas in this post apply to other GraphQL clients as well as libraries using REST or other approaches.
This post is aimed at library authors. If you’re primarily an application developer, you might still find some interesting ideas here, but don’t feel like you have to read it in its entirety.
If you prefer to watch videos, some of the ideas from this blog post have been referenced in several React Conf 2019 presentations:
This post presents a deeper dive on implementing a data fetching library with Suspense.
The React team and community has long placed a deserved emphasis on developer experience: ensuring that React has good error messages, focusing on components as a way to reason locally about app behavior, crafting APIs that are predictable and encourage correct usage by design, etc. But we haven’t provided enough guidance on the best ways to achieve a great user experience in large apps.
For example, the React team has focused on framework performance and providing tools for developers to debug and tune application performance (e.g. React.memo
). But we haven’t been as opinionated about the high-level patterns that make the difference between fast, fluid apps and slow, janky ones. We always want to ensure that React remains approachable to new users and supports a variety of use-cases — not every app has to be “blazing” fast. But as a community we can and should aim high. We should make it as easy as possible to build apps that start fast and stay fast, even as they grow in complexity, for users on varying devices and networks around the world.
Concurrent Mode and Suspense are experimental features that can help developers achieve this goal. We first introduced them at JSConf Iceland in 2018, intentionally sharing details very early to give the community time to digest the new concepts and to set the stage for subsequent changes. Since then we’ve completed related work, such as the new Context API and the introduction of Hooks, which are designed in part to help developers naturally write code that is more compatible with Concurrent Mode. But we didn’t want to implement these features and release them without validating that they work. So over the past year, the React, Relay, web infrastructure, and product teams at Facebook have all collaborated closely to build a new version of facebook.com that deeply integrates Concurrent Mode and Suspense to create an experience with a more fluid and app-like feel.
Thanks to this project, we’re more confident than ever that Concurrent Mode and Suspense can make it easier to deliver great, fast user experiences. But doing so requires rethinking how we approach loading code and data for our apps. Effectively all of the data-fetching on the new facebook.com is powered by Relay Hooks — new Hooks-based Relay APIs that integrate with Concurrent Mode and Suspense out of the box.
Relay Hooks — and GraphQL — won’t be for everyone, and that’s ok! Through our work on these APIs we’ve identified a set of more general patterns for using Suspense. Even if Relay isn’t the right fit for you, we think the key patterns we’ve introduced with Relay Hooks can be adapted to other frameworks.
It’s tempting to focus only on the total startup time for an app — but it turns out that users’ perception of performance is determined by more than the absolute loading time. For example, when comparing two apps with the same absolute startup time, our research shows that users will generally perceive the one with fewer intermediate loading states and fewer layout changes as having loaded faster. Suspense is a powerful tool for carefully orchestrating an elegant loading sequence with a few, well-defined states that progressively reveal content. But improving perceived performance only goes so far — our apps still shouldn’t take forever to fetch all of their code, data, images, and other assets.
The traditional approach to loading data in React apps involves what we refer to as “fetch-on-render”. First we render a component with a spinner, then fetch data on mount (componentDidMount
or useEffect
), and finally update to render the resulting data. It’s certainly possible to use this pattern with Suspense: instead of initially rendering a placeholder itself, a component can “suspend” — indicate to React that it isn’t ready yet. This will tell React to find the nearest ancestor <Suspense fallback={<Placeholder/>}>
, and render its fallback instead. If you watched earlier Suspense demos this example may feel familiar — it’s how we originally imagined using Suspense for data-fetching.
It turns out that this approach has some limitations. Consider a page that shows a social media post by a user, along with comments on that post. That might be structured as a <Post>
component that renders both the post body and a <CommentList>
to show the comments. Using the fetch-on-render approach described above to implement this could cause sequential round trips (sometimes referred to as a “waterfall”). First the data for the <Post>
component would be fetched and then the data for <CommentList>
would be fetched, increasing the time it takes to show the full page.
There’s also another often-overlooked downside to this approach. If <Post>
eagerly requires (or imports) the <CommentList>
component, our app will have to wait to show the post body while the code for the comments is downloading. We could lazily load <CommentList>
, but then that would delay fetching comments data and increase the time to show the full page. How do we resolve this problem without compromising on the user experience?
The fetch-on-render approach is widely used by React apps today and can certainly be used to create great apps. But can we do even better? Let’s step back and consider our goal.
In the above <Post>
example, we’d ideally show the more important content — the post body — as early as possible, without negatively impacting the time to show the full page (including comments). Let’s consider the key constraints on any solution and look at how we can achieve them:
<CommentList>
being downloaded, for example.This might sound difficult to achieve — but these constraints are actually incredibly helpful. They rule out a large number of approaches and spell out a solution for us. This brings us to the key patterns we’ve implemented in Relay Hooks, and that can be adapted to other data-fetching libraries. We’ll look at each one in turn and then see how they add up to achieve our goal of fast, delightful loading experiences:
One of the most appealing things about the fetch-on-render pattern is that it colocates what data a component needs with how to render that data. This colocation is great — an example of how it makes sense to group code by concerns and not by technologies. All the issues we saw above were due to when we fetch data in this approach: upon rendering. We need to be able to fetch data before we’ve rendered the component. The only way to achieve that is by extracting the data dependencies into parallel data and view trees.
Here’s how that works in Relay Hooks. Continuing our example of a social media post with body and comments, here’s how we might define it with Relay Hooks:
// Post.js
function Post(props) {
// Given a reference to some post - `props.post` - *what* data
// do we need about that post?
const postData = useFragment(graphql`
fragment PostData on Post @refetchable(queryName: "PostQuery") {
author
title
# ... more fields ...
}
`, props.post);
// Now that we have the data, how do we render it?
return (
<div>
<h1>{postData.title}</h1>
<h2>by {postData.author}</h2>
{/* more fields */}
</div>
);
}
Although the GraphQL is written within the component, Relay has a build step (Relay Compiler) that extracts these data-dependencies into separate files and aggregates the GraphQL for each view into a single query. So we get the benefit of colocating concerns, while at runtime having parallel data and view trees. Other frameworks could achieve a similar effect by allowing developers to define data-fetching logic in a sibling file (maybe Post.data.js
), or perhaps integrate with a bundler to allow defining data dependencies with UI code and automatically extracting it, similar to Relay Compiler.
The key is that regardless of the technology we’re using to load our data — GraphQL, REST, etc — we can separate what data to load from how and when to actually load it. But once we do that, how and when do we fetch our data?
Imagine that we’re about to navigate from a list of a user’s posts to the page for a specific post. We’ll need to download the code for that page — Post.js
— and also fetch its data.
Waiting until we render the component has problems as we saw above. The key is to start fetching code and data for a new view in the same event handler that triggers showing that view. We can either fetch the data within our router — if our router supports preloading data for routes — or in the click event on the link that triggered the navigation. It turns out that the React Router folks are already hard at work on building APIs to support preloading data for routes. But other routing frameworks can implement this idea too.
Conceptually, we want every route definition to include two things: what component to render and what data to preload, as a function of the route/url params. Here’s what such a route definition might look like. This example is loosely inspired by React Router’s route definitions and is primarily intended to demonstrate the concept, not a specific API:
// PostRoute.js (GraphQL version)
// Relay generated query for loading Post data
import PostQuery from './__generated__/PostQuery.graphql';
const PostRoute = {
// a matching expression for which paths to handle
path: '/post/:id',
// what component to render for this route
component: React.lazy(() => import('./Post')),
// data to load for this route, as function of the route
// parameters
prepare: routeParams => {
// Relay extracts queries from components, allowing us to reference
// the data dependencies -- data tree -- from outside.
const postData = preloadQuery(PostQuery, {
postId: routeParams.id,
});
return { postData };
},
};
export default PostRoute;
Given such a definition, a router can:
prepare()
function to start loading that route’s data. Note that prepare()
is synchronous — we don’t wait for the data to be ready, since we want to start rendering more important parts of the view (like the post body) as quickly as possible.React.lazy
dynamic import has completed — the component will render and try to access its data. If not, React.lazy
will suspend until the code is ready.This approach can be generalized to other data-fetching solutions. An app that uses REST might define a route like this:
// PostRoute.js (REST version)
// Manually written logic for loading the data for the component
import PostData from './Post.data';
const PostRoute = {
// a matching expression for which paths to handle
path: '/post/:id',
// what component to render for this route
component: React.lazy(() => import('./Post')),
// data to load for this route, as function of the route
// parameters
prepare: routeParams => {
const postData = preloadRestEndpoint(
PostData.endpointUrl,
{
postId: routeParams.id,
},
);
return { postData };
},
};
export default PostRoute;
This same approach can be employed not just for routing, but in other places where we show content lazily or based on user interaction. For example, a tab component could eagerly load the first tab’s code and data, and then use the same pattern as above to load the code and data for other tabs in the tab-change event handler. A component that displays a modal could preload the code and data for the modal in the click handler that triggers opening the modal, and so on.
Once we’ve implemented the ability to start loading code and data for a view independently, we have the option to go one step further. Consider a <Link to={path} />
component that links to a route. If the user hovers over that link, there’s a reasonable chance they’ll click it. And if they press the mouse down, there’s an even better chance that they’ll complete the click. If we can load code and data for a view after the user clicks, we can also start that work before they click, getting a head start on preparing the view.
Best of all, we can centralize that logic in a few key places — a router or core UI components — and get any performance benefits automatically throughout our app. Of course preloading isn’t always beneficial. It’s something an application would tune based on the user’s device or network speed to avoid eating up user’s data plans. But the pattern here makes it easier to centralize the implementation of preloading and the decision of whether to enable it or not.
The above patterns — parallel data/view trees and fetching in event handlers — let us start loading all the data for a view earlier. But we still want to be able to show more important parts of the view without waiting for all of our data. At Facebook we’ve implemented support for this in GraphQL and Relay in the form of some new GraphQL directives (annotations that affect how/when data is delivered, but not what data). These new directives, called @defer
and @stream
, allow us to retrieve data incrementally. For example, consider our <Post>
component from above. We want to show the body without waiting for the comments to be ready. We can achieve this with @defer
and <Suspense>
:
// Post.js
function Post(props) {
const postData = useFragment(graphql`
fragment PostData on Post {
author
title
# fetch data for the comments, but don't block on it being ready
...CommentList @defer
}
`, props.post);
return (
<div>
<h1>{postData.title}</h1>
<h2>by {postData.author}</h2>
{/* @defer pairs naturally with <Suspense> to make the UI non-blocking too */}
<Suspense fallback={<Spinner/>}>
<CommentList post={postData} />
</Suspense>
</div>
);
}
Here, our GraphQL server will stream back the results, first returning the author
and title
fields and then returning the comment data when it’s ready. We wrap <CommentList>
in a <Suspense>
boundary so that we can render the post body before <CommentList>
and its data are ready. This same pattern can be applied to other frameworks as well. For example, apps that call a REST API might make parallel requests to fetch the body and comments data for a post to avoid blocking on all the data being ready.
But there’s one thing that’s still missing. We’ve shown how to preload data for a route — but what about code? The example above cheated a bit and used React.lazy
. However, React.lazy
is, as the name implies, lazy. It won’t start downloading code until the lazy component is actually rendered — it’s “fetch-on-render” for code!
To solve this, the React team is considering APIs that would allow bundle splitting and eager preloading for code as well. That would allow a user to pass some form of lazy component to a router, and for the router to trigger loading the code alongside its data as early as possible.
To recap, achieving a great loading experience means that we need to start loading code and data as early as possible, but without waiting for all of it to be ready. Parallel data and view trees allow us to load the data for a view in parallel with loading the view (code) itself. Fetching in an event handler means we can start loading data as early as possible, and even optimistically preload a view when we have enough confidence that a user will navigate to it. Loading data incrementally allows us to load important data earlier without delaying the fetching of less important data. And treating code as data — and preloading it with similar APIs — allows us to load it earlier too.
These patterns aren’t just ideas — we’ve implemented them in Relay Hooks and are using them in production throughout the new facebook.com (which is currently in beta testing). If you’re interested in using or learning more about these patterns, here are some resources:
We’ve implemented two similar example apps that demonstrate these concepts:
While the APIs around Concurrent Mode and Suspense are still experimental, we’re confident that the ideas in this post are proven by practice. However, we understand that Relay and GraphQL aren’t the right fit for everyone. That’s ok! We’re actively exploring how to generalize these patterns to approaches such as REST, and are exploring ideas for a more generic (ie non-GraphQL) API for composing a tree of data dependencies. In the meantime, we’re excited to see what new libraries will emerge that implement the patterns described in this post to make it easier to build great, fast user experiences.
Wicket-keeper batsman Sanju Samson recently said that one cannot copy MS Dhoni and that the former India skipper can only be appreciated for whatever he has achieved in international cricket.
The official Instagram handle of Indian Premier League (IPL) franchise Chennai Super Kings shared a video in which Samson can be seen talking about Dhoni.
"MS Dhoni is a hero, he is a hero for everyone, he has spent so many years in international cricket, he has given us many memories, everyone will be inspired with what he has achieved in international cricket, a guy coming from Jharkhand and then going on to become the most successful Indian captain, he has achieved everything, I feel emotional and connected whenever I talk about MS Dhoni," Samson said in the video posted by Chennai Super Kings.
"You cannot copy MS Dhoni, you just have to look at him and clap your hands. I shared the dressing room with him when I was 19 years old, we were on a tour to England, after that I did not play for India for the next five years," he added.
In the video, the 25-year-old Samson also said that he once had a dream featuring MS Dhoni. The young wicket-keeper then revealed how that dream was fulfilled.
"I really had a dream that Mahi bhai was the captain of the team and he was changing the field. I was standing in the slips and he shouted Sanju go there, this is the dream I had, after some days the news came in that he has stepped down as the captain, and I thought how will my dream come true now," Samson said.
"But after a few days we played a pratice match against England at Mumbai, and Dhoni was the captain in the match and he indeed changed my fielding position, my dream came true, I need to tell this to Mahi bhai that my dream was fulfilled," he added.
Thirty-eight-year-old Dhoni has been currently enjoying some time away from the game. He last played competitive cricket during the 2019 World Cup. Dhoni had to face criticism for his slow batting approach during India's matches in the high-profile game.
This year, Dhoni did not find a place for himself in the BCCI's centrally contracted players list.
The board had released the list of central contract list of players for the period from October 2019 to September 2020.
Dhoni is the only captain to win all major ICC trophies (50-over World Cup, T20 World Cup, and Champions Trophy).
Under his leadership, India also managed to attain the number one ranking in Test cricket.
IPL 2020 was slated to begin from March 29, but the tournament has been postponed indefinitely due to the coronavirus pandemic.
Catch up on all the latest sports news and updates here. Also download the new mid-day Android and iOS apps to get latest updates.
Mid-Day is now on Telegram. Click here to join our channel (@middayinfomedialtd) and stay updated with the latest news
This story has been sourced from a third party syndicated feed, agencies. Mid-day accepts no responsibility or liability for its dependability, trustworthiness, reliability and data of the text. Mid-day management/mid-day.com reserves the sole right to alter, delete or remove (without notice) the content in its absolute discretion for any reason whatsoever
Pune city famous for its climate, pensions city which got transform to an IT hub has finally got its reward. Pune has always been counted in the list of the cleanest cities of India. On Monday it was really a proud moment for the Punekars because the Urban Affairs Minister, Hardeep Singh Puri has launched 'The Ease of Living' report on Monday around 3:50 pm.
Out of 4,000 cities and towns in India, where about 300 cities have a population over 1,00,000 and seven cities have a population of more than 3 million, only 3 cities of Maharashtra – Pune, Navi Mumbai and Greater Mumbai – are the most livable places in the country which means from Maharashtra four cities were into top ten. Pune has been ranked first in the Ease of Living Index with Navi Mumbai coming in second, Greater Mumbai ranked at three and Delhi languishing at 65.
The report evaluated 111 cities on a 100-point scale across 78 indicators under four primary parameters which was divided- Institutional, Social, Economic and Physical. Although, cities like Howrah, New Town Kolkata, and Durgapur did not take Part in it. While Delhi is really ranked low that is 65th rank. And, Rampur in UP is ranked the lowest. To the utmost surprise, Chhattisgarh has made it to the top 10 in the list and Indore which gives a tough competition to Pune is ranked 8th.
The 'Ease of Living' index is an initiative of the Ministry of Housing and Urban Affairs to assess the most livable cities all over India and rank them on a 100 point scale. Apart from presenting the overall national ranking of 111 cities, the report will present the ranking of the cities across pillars, category, and geographical zone and population classifications. The city of Pune is expected to maintain this rank. And, helps to set a benchmark. It is expected to give a tough competition to all the other cities out there. Known for its cultural capital of Maharashtra state as well as the Oxford of east.
Chennai has been ranked 14 and New Delhi languishes at 65 while Kolkata refused to participate in the survey. While the citizens have been claiming that the city is reeling under lack of open space, ironically Mumbai has been ranked number one among 111 cities in the category of public open spaces. The state's richest civic body, BMC had to collate the data from several institutions, and submit to the central government. While the transportation and security were sent across by the state government, the majority of the data was compiled by the civic body that defined how livable the city is.
Vijay Singhal, additional municipal commissioner, said, "We have topped the list of megacities, which had over 4 million population. There were seven mega cities in this. And wherever we have lacked we will try and improve on those aspects and accordingly try and score better next time."
The rankings of the cities all over Maharashtra are as follows:
Pune is 1st, Navi Mumbai is 2nd, Greater Mumbai is 3rd, Thane is 16th, Virar is 20th, Nasik 21st, Solapur 22nd, Nagpur 31st, Kalyan 50th, Chinchwad 69th, Aurangabad 97th.
With inputs from PTI
Catch up on all the latest Crime, National, International and Hatke news here. Also download the new mid-day Android and iOS apps to get latest updates
Action hero and fitness enthusiast Vidyut Jammwal feels that the time in lockdown should be taken as an "inner pilgrimage" and one should utilise this period to listen to the ideas from within. "I always time spend with my near and dear ones. I spend enough time with them and I am happy spending time now also. I've never had shortage of time because time can be managed. But it's a great time because the whole world is in lockdown it's an inner pilgrimage we can go into. We have only been talking to people and listening to them, but now is the time to listen to our ideas," Vidyut told IANS.
Vidyut is currently inspiring fans and followers with his live online fitness sessions. He says he wants everyone to understand the basics. "Me blowing the candles with my hands or feet or doing the bottle cap challenge or break a brick with an egg with my hand -- that needs a lot of training. You need to get your basics right... That's the whole idea behind this programme and age is not a criteria... Every part of your body needs to be worked out, said the actor, who has been doing martial art form Kalaripayattu since the age of three.
He added: "In Kalaripayattu there are six systems a person needs to master cardiovascular system, respiratory systems, digestive system, visceral system, skeletal system and the neuromuscular system. If you know all of them then you are a master and to know all of them you need to study them."
The actor has a great fan following on social media. Fans follow his workout very diligently. Vidyut enjoys a following of 3.6 million on Instagram and 184.1K on Twitter.
What prompted him to start his live online fitness sessions? "Every time I was working or something I would get a message from them saying that 'please share your workout or diet tips' I have to genuinely spend time doing that so the way I workout, which is different from other people like go to the gym for two hours... So, I started doing one part of my workout for these guys and it just caught fire and I am happy I did. Whatever I do I share one part of my training with them," he said.
Catch up on all the latest entertainment news and gossip here. Also, download the new mid-day Android and iOS apps.
Mid-Day is now on Telegram. Click here to join our channel (@middayinfomedialtd) and stay updated with the latest news
This story has been sourced from a third party syndicated feed, agencies. Mid-day accepts no responsibility or liability for its dependability, trustworthiness, reliability and data of the text. Mid-day management/mid-day.com reserves the sole right to alter, delete or remove (without notice) the content in its absolute discretion for any reason whatsoever
Bandra got its first outlet of The Wine Table in May last year. What does it offer? MRP Wine bar by glass & bottle and Wine education/training/food pairing with wines, etc. From imported - Ren, Beaujolais villages, Peppoli, Cono Sur, Torres, Salbach, Masi masianco, Robert Mondavi to domestic - Amaris reserve, Fratelli MS red, Fratelli Sangiovese, Moksh sauvignon blanc, M reserve, Raaya rose, the outlets offer all things wine.
Tignanello Italian, priced at Rs 20,000, is the most expensive buy. We walk in at 6 pm to douse our red craving, and a bite but the kitchen opens only at 7 pm. We order a Sileni pinot noir (Rs 630) and a Mokksh ren (Rs 396), a flagship brand of the store. The Sileni from New Zealand is light and perfumed and perfect for the rather early indulgence. The ren merlot is medium bodied, woody and deeper on the palate.
While our server gives us back stories of wines and vineyards, we’ll surely go back to try some whites next.
AT: Darvesh Royale Building, Perry Road, Pali Hill, Bandra West
CALL: +91 9167007667
TIMINGS: 10 am to 12.30 am
NOTE: The Wine Table didn't know we were there. The Guide reviews anonymously and pays for its meals
Catch up on all the latest Crime, National, International and Hatke news here. Also download the new mid-day Android and iOS apps to get latest updates
Kalank
U/A: Action, Drama, History
Director: Abhishek Varman
Cast: Varun Dhawan, Alia Bhatt, Madhuri Dixit, Sanjay Dutt, Sonakshi Sinha and Aditya Roy Kapur
Rating:
Not one to get wooed by the scale and production value of a film, I can't help but be smitten by the sheer beauty of Abhishek Varman's Kalank. In 2019, when Netflix rules our lives, this film is a rare cinematic experience that blends in opulence, glamour with a solid story about a family torn by its own skeletons in the closet. Star crossed pairs, their infidelities and how it destroys the world around them.
Drawn to forbidden pleasures and immoderate love is Roop, played with heft by Alia Bhatt. Varman's vast screenplay primarily plays off the luminous chemistry between Bhatt and co-star Varun Dhawan. There's a tantalising quality about their pairing and Varman uses this element to full effect. But a lot of the emotions drown in its self imposed ornate design of the film, which gives it a synthetic quality.
So when a feisty Rajputana girl (Alia's Roop) is compelled by circumstances to marry a man (Aditya Roy Kapur's Dev) she can't even recognise in broad daylight, you want to discover more about their faulty dynamics. Or even how a well-educated woman like her, who has opinions strong enough to be voiced in front of an all-male team of writers running a flourishing newspaper, would fall for a visibly dubious man (Varun Dhawan's Zafar) with a promiscuous life. All of this and much more about the period's socio-political submerges beneath Binod Pradhan's gorgeous cinematography. It's almost as if there is a barrier between the audience and the characters - a gulf presumably created because of the director's reluctance to delve deeper into the plot.
Kalank movie poster
It's at the casting department, Varman scores big. Raging with simmering pain, Varun's aching performance beautifully transcends from showing him as a bitter man thirsty for revenge to a kind soul softened by love. Aditya's character has little graph but he adds soul to his act, supported adequately by Sonakshi Sinha who keeps her brief role serene all through. The seniors - Madhuri Dixit and Sanjay Dutt bring their effortless experience in a climactic sequence which packs a punch. Kunal Kemmu's grey part is portrayed with flair.
Also Read: Kalank: Here's everything you should know about the multi-starrer film
By no means is Kalank an unbearable film, despite being nearly 2 hours 48 minutes long. But there is a constant tryst to divert our attention from its storyline; Varman distracts us with his suggestive background scores, special numbers and sometimes even the perfectly created Manish Malhotra costumes. It's also equally problematic that a film set in pre-Partition doesn't stir up much political conversations throughout the narrative. There are stray mentions of their noble intentions but it remains largely detached from the divisive politics of the time it is set in. It also pays a tribute to Sanjay Leela Bhansali's school of filmmaking by borrowing a lot of his trademark sequences (especially Alia's entry which reminds one of Aishwarya's first scene in Hum Dil De Chuke Sanam). Varman's prism is fresh - his women aren't caricatures, his characters aren't perfect. Roop is innately flawed, her decisions are damaging but she fights back for love with all her might. His men aren't all heroic and larger than life; they stumble, are unforgiving and equally faulty.
I was reminded of Deepa Mehta's masterpiece - 1947, Earth, rightly melodramatic, potently emotional which walked the tightrope of a love triangle in stormy times in a balanced way. Kalank doesn't aim for that depth. It's content in being pretty even when it has the potential of so much more.
Also Read: Kalank Celeb Review: B-town can't stop praising this period drama
Catch up on all the latest entertainment news and gossip here. Also download the new mid-day Android and iOS apps to get latest updates
Dear Diana,
I have been with this girl for over three years now. Things are going fine, except the fact that her sister influences her a lot. She is older to my girlfriend and ever since their mother passed away when they were young, her elder sister has been a mother figure to her. I detest her sister as she keeps telling her stuff about me. According to my girlfriend, she is cautioning her, but I feel this is interference. Last week, she told her that she had seen me with a girl on the seafront. This was wrong information as I was out with some relatives who had come down from Ranchi and were keen to visit the beach. Whatever her sister tells her, she blindly believes. How do I tell her not to believe every word she tells her? My girlfriend is 24, but can't think for herself.
— Jason
Illustration/Uday Mohite
Dear Jason,
Your girlfriend considers her elder sister as a mother figure. As her mom passed away when she was young, her sister has taken care of her. At the same time, now that she is 24, it is time she had a mind of her own. Her sister is being extra protective of her and that is understandable. If you are serious about her and are planning a future together, you need to sit down and talk to both of them. Tell them exactly how you feel. It is better to be honest and forthright. Perhaps your girl is not even realising how she is allowing herself to be influenced by her elder sister. She feels this is the done thing. At the same time, do not antagonise the sister or things might work against you and ruin your love life.
Life can be very unpredictable and the most traumatic and tearing example that comes to mind is that of Irrfan Khan, an actor who has departed too soon. Suffering from Neuroendocrine tumour for the last two years, the actor was a fighter. He was admitted to the Kokilaben hospital for colon infection and breathed his last today morning. He was 53!
Irrfan Khan's demise has left a void in the Hindi film industry that's unlikely to be filled in the coming years. There was nobody like him, what we call the inimitable artist. Almost everyone from the fraternity has mourned his loss. But the way Shah Rukh Khan has expressed his thoughts, one could easily tear up.
He shared a picture with the actor and wrote - "My friend...inspiration & the greatest actor of our times. Allah bless your soul Irrfan bhai...will miss you as much as cherish the fact that you were part of our lives..."
Have a look right here:
My friend...inspiration & the greatest actor of our times. Allah bless your soul Irrfan bhai...will miss you as much as cherish the fact that you were part of our lives.
— Shah Rukh Khan (@iamsrk) April 29, 2020
"पà¥ÂÂमाना à¤ÂÂहà¥Â हà¥Â à¤ÂÂà¥ÂÂà¤ÂÂ, मà¥ÂÂà¤ÂÂाना à¤ÂÂहà¥Â हà¥Â दà¥ÂÂनिया तà¥ÂÂरà¥Â à¤ÂÂà¤ÂÂà¤ÂÂà¥ÂÂà¤Â à¤ÂÂà¥Â à¤à¥ÂÂ, à¤ÂÂà¥ÂÂया à¤ÂÂà¥ÂÂया ना à¤ÂÂहà¥Â हà¥ÂÂ" Love u pic.twitter.com/yOVoCete4A
Shah Rukh Khan and Irrfan Khan worked together in Priyadarshan's 2009 comedy Billu, which was the former's home production. It's sad we could not see more of the two on the celluloid but they did meet often and bonded really well. With the great actor's demise, life's unpredictable nature has been confirmed yet again!
Bollywood celebrities, who worked with him or even those who were fans of his craft, paid homage and condolences to his legacy and the overall person that he was. One of the first ones to do that was his Piku co-actor Amitabh Bachchan. His presence will always be felt around us and the entire Hindi film industry!
Catch up on all the latest entertainment news and gossip here. Also, download the new mid-day Android and iOS apps.
Mid-Day is now on Telegram. Click here to join our channel (@middayinfomedialtd) and stay updated with the latest news