#is right on the money for me. ml has had such strong themes of working together and depending on your friends - the whole paris special hit
Explore tagged Tumblr posts
Text
No bc I agree with everything about this. I truly want to believe that everything wrong with the season five finale will be somewhat rectified in season six. Especially because we have almost a year until it airs. It won't be able to rectify the fact that Adrien wasn't there or the fact that he will never get the closure his character so desperately needs. However it can have Marinette actually think about what she's doing and have her change her mind and have her tell him (obviously as Ladybug). I'd rather it not narratively cause problems because it does upset me that this was one thing that genuinely had nothing to do with relationship conflict and it never should have been but all I want at this point is for Adrien to stop being left in the dark. It's been an ongoing theme in the show since season two and there are so many episodes showing why that shouldn't happen (especially in season four) and yet it keeps happening. The truth might hurt for him to hear but he deserves to know and I really do hope Maribug tells him because the absolute worst thing that could happen is someone else tells him.
ok since i’ve really only whined but not actually explained my reasoning lol, here is my take on the s5 finale. (this is long, sorry)
I think we’re all on the same page about the idea that gabriel being seen as a hero, by all of paris but especially adrien, is icky. and on top of that it does not feel good that marinette is supporting that lie, even if it’s out of love for adrien. most people are assuming this issue will be resolved somehow in 6, probably by lila exposing the truth. cool. that’s my hope as well. but even if that’s the case, i still dislike the framing of his wish and what the surrounding context seems to imply about it.
it is not my assumption that gabriel’s wish included green initiatives and a reformation of the parisian school system lol. I assume that his wish was to exchange his own life for nathalie’s. but as we know, wishes literally rewrite reality. the fact is that paris improved after his wish, so it is still related. he remade the world, and the new world ended up better. It all supports the idea that his wish was a good thing—a noble sacrifice that redeemed him in some sense. my impression is that even if (hopefully) he is exposed as hawkmoth, the actual wish he made will still be framed as admirable. obviously marinette found it noble enough to agree to lie to everyone about gabriel’s identity as hawkmoth.
which brings me to another pain point: the fact that gabriel essentially won the long battle against ladybug and chat noir. i’ve heard arguments that he didn’t win because he died and how is that winning? he got what he deserved in the end. but imo, he just put himself out of his own misery, because he was on the brink of death anyway because of his cataclysm wound, and he basically escaped having to face any emotional consequences from his literal terrorism and child abuse. and even if you don’t consider that a win, you also can’t consider marinette’s end of the deal a win either. her goal was to prevent hawkmoth from unifying the miraculous and making a reality-altering wish. which is exactly what happened. so she failed her mission. ladybug lost. and to me it’s sort of bizarre that the narrative seems to be framing that as a good thing? ladybug lost, but the new reality that resulted from it is so much better than the old one, and she is actively choosing to lie in order to protect the seeming goodness of that reality.
marinette is lying, of course, to protect adrien, which does not feel out of character. we’ve seen her do this before. but it is frustrating to me for precisely that reason. the final battle was meant to highlight how much marinette has grown over the past five seasons, but her choice here highlights the ways she has not grown. starting with syren in season 2, she has witnessed how much it hurts chat noir to be left in the dark and how it weakens their partnership. in that case, she convinced master fu to let him be in the know, and trust was restored. but then she continued a habit of keeping things from him, putting more and more distance between them, till it culminated with kuro neko in s4—a total breakdown of the ladynoir partnership, where chat noir renounced his miraculous. i would have thought that marinette would learn from that experience and realize that keeping people in the dark is harmful and that even if the truth hurts, adrien has a right to know it. but she once again made the decision for him, and when he finally finds out, it will be all the more painful to know that the person he loves and trusts most in the world lied to him. i actually really appreciate that marinette as a protagonist has such a good heart but is still such an imperfect character, so i want to respect this choice as a manifestation of her flawed but good intentions. i just can’t help but be really disappointed that after 5 seasons of making the same mistakes again and again, she has apparently not learned from them, which makes me feel she has not grown the way the writers say she has.
her facing hawkmoth alone for the final battle is supposed to be a sign of that growth—and yes, I can see how she has grown a lot in confidence and capability since her shaky debut as ladybug. but i also feel that her flying solo defies one of the central themes of miraculous: that in the fight against evil, good people need to stand together. just think of the difference between the s4 and the s5 finale. in strike back, ladybug is broken and sobbing because she has lost the miraculous and feels like a failure who is all alone. but then she is buoyed up by her faithful partner and all of paris, who express unbreakable faith in her and vow to stand by her side. that was so powerful! showing that she doesn’t have to be alone, and she’s not supposed to be alone, and that part of being a hero means accepting help and working with others to achieve good goals. this message was a major part of marinette’s character arc in s4 and it’s something that was introduced from the very beginning and has been supported over and over in the show. but then in “re-creation,” she has no team, and she doesn’t need one. which … good for her, I guess? But then why did we have 5 seasons of “you and me against the world” if in the end it was always going to culminate with “I'm sure we can figure out a solution if we work together. You … and me”—referring to Marinette and Gabriel, while Adrien is literally locked in a blank white prison hundreds of miles away?
it just really kills me that in kuro neko, adrien gave up his ring under the assumption that chat noir was not needed—that he was entirely useless to ladybug. and then the narrative proved him right. ladybug did not need chat noir to defeat monarch. she just needed his ring. the writers confirmed in their recent commentary that they had planned a bug noire fusion from the beginning, and they intentionally sidelined adrien so that could happen—they even had to figure out an excuse for why he wouldn’t be there. so they traumatized him with nightmares of destruction and fear of akumatization to ensure that he would once again give up his ring and conveniently remained locked away while bug noire faced down monarch alone.
you could argue that it’s better for adrien to have missed the final battle anyway, since facing his own father would just be even more traumatizing for him. i understand that. (that’s the reason i liked that in the owl house, it ended up being just luz vs belos, and hunter did not have to face him again.) but at the same time it feels so narratively unjust that chat noir—who has been fighting against hawkmoth by ladybug’s side since day 1—has zero part in seeing his mission through to the end. even though it’s all about him. because while marinette is the protagonist, adrien is the connecting piece of the whole story. it’s always been ladybug vs hawkmoth, and adrien is in the middle of them, because he’s both ladybug’s partner and gabriel’s son.
you’d think, logically, that as the connecting piece, Adrien’s decisions would be vital to the plot. That he’d have the power to tip it either way. but instead he is completely stripped of his autonomy—literally, because he’s a senti, and also symbolically in the narrative, because he’s simply removed from the equation. Like, he’s still central to the equation but he has no say in it. It’s all about him but he’s not even present. Everyone is fighting for him but he can’t fight for himself. Everyone is speaking for him but he doesn’t even have a voice.
the finale kind of sets up marinette and gabriel as narrative foils of each other, showing how they have the same motivation—to make adrien happy. and they make the same decision to protect that goal. which is interesting, sure, but also kind of effed up to me? i’m not sure what to take from the idea of the protagonist mirroring the antagonist in this way. that’s been done loads of times, but in this context, for a child audience, i don’t know what to make of it. what kind of message that is supposed to send to the children who are the primary audience of this show? ladybug is a good guy, and in the end, she’s just like the villain because they both love adrien and want to protect him. so that’s why she agrees to tell everyone the bad guy was a hero. ????
that gabriel/marinette parallel leaves adrien to parallel emilie, which makes sense and is fitting but also just sort of … depressing and again, lowkey effed up. that adrien ends up with the same narrative role as a corpse in a coffin. almost, like, macguffin-esque—a thing that motivates the agents of the story but has no agency itself. despite him being so central to both sides of the main conflict, his decisions don’t affect the outcome. because he doesn’t have the option to make any. because he’s not even present. both gabriel and marinette made a life-altering decision for adrien, thinking it was best for him, without considering that what’s best for him is to know his own story and make his own choices. him getting the rings was somewhat relieving, but it also felt like kind of a slap in the face. because it’s like, “look, adrien’s free! he has his amok and no one can control him anymore!” but, like, how free is a person who is living a lie? will he ever experience true autonomy, or will his life continue to be dictated by the decisions others make for him? will the narrative give him decision-making power or will his role continue to be symbolic?
one thing that makes this all extra dissatisfying is that Adrien literally does not have the option of getting closure with his father, because he’s dead. maybe a dramatic reveal in the middle of the final battle would not be the best way to go about it, but now he can’t have any sort of closure. in the owl house, it didn’t feel necessary for hunter to be present in the belos takedown because he already had his confrontation with belos in graveyard possession scene. belos tried to physically control him, and hunter broke free, and spoke his mind, and as traumatizing at is all was, it was good for him to be able to do that. it would’ve been so nice if adrien also had that opportunity. if he did break free from his father’s control, either by overcoming akumatization or the control of his amok somehow. or if not that, if he were just able to have one honest conversation with his father about emilie. like he did with his alt self in the paris special. it was so significant for the writers that bug noire detransformed and spoke to gabriel as marinette. why couldn’t adrien have done that? Marinette is the one to tell Gabriel that Adrien wouldn’t want him to make the wish and hurt someone else, that Adrien has made peace with his grief, that he has learned to cherish his mother’s memory without living in the past. wouldn’t that be even more powerful coming from adrien himself? if adrien was part of that final confrontation just as himself, we could even still have bug noire play a primary role.
i get that adrien being part of the battle is a risk, since we saw in chat blanc one option of how it could play out. but we also saw in the collector another potential way adrien might respond to learning that his father is hawkmoth—charging into battle by ladybug’s side. especially if he was given time to process the idea beforehand. it’s not impossible. you’d just have to compose the scene and its buildup a different way. so honestly it feels sort of lazy to just remove him for the sake of ease? and also sort of a waste of narrative potential? the villain being the father of one of the main characters is such an interesting plot element. imagine if luke skywalker did not ever face darth vader. if he never even learned that vader was his father. or if he learned that fact after vader’s death, which was the result of a confrontation he was not present for.
of course, i know adrien is not the protagonist. marinette is. and of course i want her to be empowered by the story. but i’m getting a little tired of what i see as kind of cheap feminism in ML. like, girl power for the sake of visibility so the writers can pat themselves on the back about it, if that makes sense? this show does have so much good feminist power with a strong female lead who has realistic flawless and a big heart, who overcomes self-doubt and other struggles, and who has proven time and again to be a smart, capable leader who has earned the trust of everyone on her team. but all of that sometimes feels undercut by the narrative treatment of adrien—like he has to be put down somehow to elevate marinette. ML has subverted gender roles in a lot of ways by having ladybug lead with her brain while chat noir follows with his heart. and adrien has a lot of other strong feminine associations—the focus on his physical appearance, the expectation of perfection and obedience, his soft and gentle nature, his romanticism, etc. And one of the biggest ones is all the ways he is trapped, all the ways he is pushed down and made to be submissive. they even depict him as a princess locked in a tower, with marinette as the knight in shining armor to save him from the evil dragon (his father). with adrien in that traditionally feminine role, it would have been empowering to see him to take a leading part in his own liberation. instead, he was locked away both literally and symbolically in favor of a solo bug noire confrontation, so marinette could look like a girlboss in her cool new outfit, taking on the bad guy all by herself, even when it would (imo) fit better with the themes of the show and her own character arc for her to fight alongside her partner. but as Thomas Astruc said, “She's Barbie, he's Ken. You don't like it. I get it. It won't change. Anything else?” (X) it just makes me feel that the writers cared more about the cinematic value and feminist brownie points of that battle than its narrative significance—which i feel could only be increased by adrien’s participation. “all that is necessary for the triumph of evil is that good people do nothing” … and that is all adrien was allowed to do.
i think a lot of fans at this point are just assuming that whatever feels dissatisfying/off will be fixed in s6. they’re trusting that the writers have a brilliant master plan that we just have to be patient and wait to see come together. idk, maybe i’m just tired. or a little jaded. i think there will be a lot to enjoy in s6, but i’m also prepared for disappointment. i honestly did not love many elements of s4 as well as s5, and i had expectations that weren’t fulfilled there either. i’ve felt let down by the writers many times now, so i expect that many of their future choices will resonate with me. but i still love ML, and I am eager to see how everything will unfold. i’ve also read a lot of other analyses of the s5 finale, and there are great points being made on many sides. this is just my personal interpretation and opinion. i did not like the finale when i first watched it, and after sitting on it for months and trying to evaluate my feelings and look at it logically, i still do not like it lol. if you do, great! this isn’t intended as a personal attack on anyone—just me expressing my two cents, which ended up being more like $20. thanks for bearing with me if you read all this ✌️
#ml#ml s5#ml s5 spoilers#ml recreation#ml negativity#(not that I think this is particularly negative but like. just in case)#for ppl who are tired of the conversation#anyway. this is how I feel#a lot of this is just stuff i've talked with mar about the last few days especially#if u like the finale I love that for you!! it makes me very sad actually that I dislike it so much#but I cannot get around the fact that it was deeply unsatisfying to me#that ending in no way felt like what the hawkmoth arc had been building toward#I struggle to make sense of a lottt of the central themes of the show with the context that they had always planned#to have marinette face hm alone#and i completely disagree that the finale depicts gabriel losing#him getting to obtain ultimate power and create a wish to rewrite reality at all (no matter what the wish was) IS winning.#that is exactly what ladybug and chat noir had been working to prevent all this time#the aim was never to convince hawkmoth to make a good wish. it was always to keep it from happening at all.#because no one should have that much power#mar's point that origins posits that 'all that is necessary for the triumph of evil is that good people do nothing'#and that doing nothing is ALL adrien is allowed to do#is right on the money for me. ml has had such strong themes of working together and depending on your friends - the whole paris special hit#on this - and the culmination of the primary fight of the narrative being marinette on her own is so. odd to me. just really unsatisfying#of course i will watch season 6 and I will hope that these loose ends will be resolved in a satisfying way. i'll hope that marinette comes#clean and she and adrien are able to rebuild their relationship from there. and i'll hope that he is allowed to become at least as active i#the narrative as he used to be (circa seasons 1-3)#but I don't think there's a way for season 6 to make up for the letdown that was the s5 finale.#from the beginning - as soon as you get an inkling that gabe is hm - you think 'oh WHAT is going to happen when adrien finds out'#it's one of the strongest underlying tensions in the narrative - and one of the things that makes the story so interesting#the ladynoir dynamic of 'its us against the world' convinces us that the two of them will work together to take down hm
258 notes
·
View notes
Text
KDrama Review #2
I cried. It was painful but worth it. It is a 2022 release Thriller drama, with the main themes being- School violence, revenge, bullying, a Strong female lead, slow burn romance. It is one of the most subtle but fulfilling slow-burn romances I have seen. It makes you question if such people and relations exist
A brief Synopsis: A high school student with dreams of being an architect and living a happy life, is brutally bullied by her wealthy classmates. At 19, she has no one to protect or console her. The school authorities don't raise their voices against the violence just because of the bullies' " RICH " badge. Instead, the teacher beats her up when she mentions their negligence and severe bullying to be the reason for her being a dropout. To add on, her mother betrays her by taking money from the perpetrator's family and giving them a clean chit.
After getting physically and mentally tortured, she had to leave the school. While she makes up her mind to get revenge on the people who destroyed her childhood. She makes the perpetrator her 'dream'! She works hard with the hope of getting to her 'dream'.
The perpetrator is now married t a rich guy, as she dreamt, and has a child now. The other four bullies are also leading a lavish lifestyle in spite of all the crimes they have committed. The former victim of their bullying now starts her elaborate revenge plan without actually getting her hands dirty.
what do you think? It is a really well-written and well-played drama. This is not the genre I would usually go for, but I would not regret watching it. The best part of these dramas is that the bad guys are always the bad guys. Just by the look, you know that they can never change, which makes the decision of taking revenge on them natural! But the question remains, to what extent would you go to get the revenge? Would it be okay to kill someone for the mistakes they have done? It is usually said and even in this drama, they mention that forgiving and moving on might actually be the right thing to do. In other words, taking revenge may not give you peace, and may not make you happy. But it is true that some mistakes can never be forgiven. It is just not humanly possible to forgive a person who consciously inflicted physical pain on you and destroyed your dreams.
My fav scene: Me being me! I liked the slow-burn relation the FL and ML had. Something which made me smile was the Go board game scene in his house. The first time she comes to his home and shows him the scars, he promises to be her executioner, as she wanted. At the same time, he gives her the door passcode and tells her that she can enter and leave his house at her will. but every time she enters, she can play her turn in the game of GO, so he can know that she had come. The game might go on forever, but at least, he has someone to wait for, and she has someone who is waiting for her. This is the sweetest thing a person can do.
3 notes
·
View notes
Photo
From Passport To Dreams Old And New:
“Alright, let's try something new. Besides Disney, one of my hobbies is food and drink. Disney World has always been a dining paradise, but their drinks have never been all that good. Even in the halcyon days of the 70s, their repertoire was limited to the kind of colorful, sugary drinks you find their today - vacation drinks, if you like. Even the opening of Trader Sam's and Jock Lindsay's, with their carefully considered beverage lineup, have done little to improve the situation outside those establishments. There is a fairly good standard Manhattan, but I can make one of those at home.
Making a good cocktail is a lot like cooking, and as a cook, the process is a lot of fun for me. Given the history and complexity of the lore around Walt Disney World, there exists an untapped opportunity to inspire drinks - good drinks, strong drinks, the sort of drinks Disney doesn't sell. There's always going to be the sort of Disney fan who turns their nose up at drinking - it sullies the air of family frivolity for them. And, to be fair, nothing spoils at day at Epcot like walking past a pile of passed out drunks as you leave Epcot. But after all, Walt sucked down Scotch Mists - 2 shots of Johnny Walker Red in a highball glass over ice diluted with club soda, if you must - and drinking plays a prominent role in classic Disney attractions and humor. There's obviously Pirates of the Caribbean, but the ghosts in the Haunted Mansion are tipplers too. There's Big Al, six sheets to the wind on corn liquor, who falls over drunk at the end of the show, and the Jungle Navigation Company, who have their own depression-era still. Not surprisingly, Marc Davis liked his drinks in all shapes and sizes, and it's hard to pay a visit to Alice Davis without getting a drink shoved into your hand. That's just the way they did it in their generation. So why not take some inspiration from Disney History and try to whip up some drinks? Which is what I've been doing, for some time, to varied success. I'd like to share my best effort here. Not surprisingly to anybody who's read this blog before, it's based on the Haunted Mansion. I call it the Howling Dog Bend, and even if you have no intention of ever making one, I think any theme park fan will enjoy reading the rationale behind it.
The Style The first consideration should be what type of drink are we making here? Disney has built attractions and facilities which can slot into every period of American history - to colonial taverns to ultramodern high-rises. What would a drink from the Haunted Mansion look like? Well, it would certainly have to be a stirred drink. Cocktails don't predate the Civil War by much, and the first book of drink recipes dates from 1862. In attempting to date the Haunted Mansion, 1840-1860 is a pretty good guess as to when a wealthy family would have wanted to build a fashionable neo-Gothic country estate; the house of Joel Rathbone, designed by A.J. Davis and the unambiguous stylistic source of the Haunted Mansion, was put up in 1840.
If you're not hip to cocktail lingo and you've always wondered why James Bond orders his martini shaken, not stirred, it's because those are the two main ways to build a drink. Stirring, as can be expected, is the original: you dump your ingredients in any old cup with some ice and stir them together until smooth. All of the ancestral cocktails are stirred: the Old-Fashioned, the Manhattan, the Martini, and the Collins. So what we're aiming at here isn't the sort of historical cocktail that became popular in the 1880s: the fancy, fruited, shaken drinks that reigned until World War I. What we're aiming at here is something elemental, something nearer to an Old-Fashioned: spirits, ice, and a little bit more. This template will guide us in creating the rest of the drink. The Base The base spirit determines all of your other choices here. Given that we're working off of the Old-Fashioned template, using the oldest, most prestigious American spirit of all - bourbon - makes sense, right? Well, hold on. Bourbon may be one of our national treasures, but there's a reason the cocktail was invented in the first place. In the nineteenth century, and especially amongst the landed gentry, bourbon was considered to be a coarse, crude spirit - and perhaps, in those days, it was. Bourbon was so notoriously unreliable and often watered down by distillers that politicians instituted a 1897 act which allowed distillers who produced whiskey in one location, aged at least four years, and bottled 100 proof to place a special government-approved label on their liquor to signify it as the good stuff. You can still see the label "Bottled in Bond" on whiskeys today, even if no modern industrial whiskey producers are selling colored water anymore. So for various reasons, anybody with enough wealth to construct a fake castle in the country would be unlikely to be stocking bourbon in 1860. The truth is, wealthy families would have had the money and the means to buy the good stuff - and at that time, that meant wine and brandy from Europe. So our base spirit here is Brandy. You can use Cognac - which is just brandy from a specific region of France - and both Hennessy and Courvoisier work well here. But I've also used cheaper European brandies like St. Remy, or American brandies from California. If you have the nice stuff it lends a smooth depth and complexity to this drink, but it works even with entry-level brandy. The Other Stuff Now we add the bits which make our glass of brandy into a cocktail.
We are, after all, building a drink to honor the Haunted Mansion, and since we're not going in the direction of a glowing blue or green drink, there needs to be something to add a bit of Haunted to our house. I chose Green Chartreuse, which is an herbal liquor made by Carthusian monks in France. Taken on its own, it's redolent of a monastery - funky vegetal herbs, cold stone, ancient parchment. Mixed into Brandy, it adds an air of mystery and age - a sense of decay. This is a drink appropriate to enjoy in a crumbling Gothic house. Green Chartreuse is part of a family of sweet herbal drinks of which the most identifiable on these shores is Jaegermeister. The monks have been bottling this drink since the mid-1700s, but their claim it's based on a recipe from 1605, so we are definitely talking about something the Graceys could have purchased were they so inclined. Best of all, Chartreuse is sweet - sweet enough to negate the need to add sugar to the drink, streamlining the process. I prefer the Green Chartreuse, but a milder Yellow version is also available if you're the type who keels over when exposed to bitter flavors. I'll stick with the green - after all, it's the official color of the Haunted Mansion, splashed all over the cast costumes and merchandise. Bottles of Chartreuse are expensive, but a little goes a long way, and smaller size 375 ML bottles can sometimes be found. All cocktails have bitters - it's the thing that made spirits into cocktails back in the 1840s. Prior to that, Angostura Bitters enjoyed a fad as a miracle cure-all before being publicly renounced and added to spirits. You can imagine the horror of some in the public - dumping quack medicine into cheap liquor to improve the taste of both. It still works - Angostura Bitters are the salt and pepper of the bartending arsenal. Angostura works fine in this recipe, but it's formulated for something even better if you can find it - Pimento Dram, or Allspice Dram. A mixture of allspice berries and rum, you can dump this sweet, spiced booze into practically anything and turn it into a drink redolent of Christmas. Originally from Jamaica, locals mixed this up themselves as a sort of local aphrodisiac and cure-all in the humid tropical climate. It's hard to find in this country now, never mind in the Victorian era. And yet, if we read between the lines, from the hurricane glass chandeliers to the widow's walks on the roof, it's pretty clear that the Haunted Mansion was owned by a seafaring family, and Jamaica was one of the primary ports for Caribbean trade in those days. Americans had been getting rums, exotic fruits and spices from the Caribbean since before the Revolutionary War, and it is not outrageous to speculate that the Graceys could have had a supply of Allspice Dram available to them. In modern days, you can make your own, or buy the excellent St. Elizabeth brand. Pulling It Together If you prefer your drinks iced, everything can be mixed together right in the glass you're going to be serving it in with a few ice cubes until nice and smooth. But this drink is so dark, musty and complex that I like to drink it chilled and neat. If you follow my plan, you have to combine everything in a mixing glass, stir it with ice, then strain it into a new glass. Either way, this is a drink you should expect to spend some time with. The sweet herbal notes and spice flavors poke up above the smoothness of the brandy at first, then recede into the background to add a sense of mystery and age. It's the sort of drink to be enjoyed by a fire with a book of ghost stories in one hand. The iced version will dilute and sweeten as the ice melts into the cocktail, and the neat version will warm and gain complexity as time passes. Oh, and a garnish? It's not necessary, but I like to add a bit of orange peel. It may now be occupied by a coffin, but the Graceys kept a greenhouse, which in those days primarily existed as means to grow valuable oranges and lemons in cold northern climates. Besides, the orange peel acknowledges the real-world location of the Haunted Mansion in Orange County, Florida. All you need to do is cut off a thin 2-inch piece with a fruit peeler, rub the cut side on the rim of the glass, then dump the peel into the drink, allowing its oils to spread over the surface. There's nothing better for a dark night in a musty old library. I can hear that organ playing now. HOWLING DOG BEND 2.5 oz Brandy 2 tsp Green Chartreuse 1 tsp Allspice Dram.” (x)
18 notes
·
View notes
Text
Working with Microsoft Azure for 20 hours and why I will not use it again
Last weekend I attended a Hackathon at Microsoft. Overall it was an awesome experience and I had a lot of fun, so this post has nothing to do with the event itself and also is not my overall opinion on Microsoft. They do awesome stuff in a lot of fields, but with Azure, they are definitely under delivering.
During the event, I started to get in touch with the Azure platform. Our project Idea was to create a website where you can search for news and then via sentiment analysis this news would be sorted by "happiness". The news search and sentiment analysis are offered via Azures so-called cognitive services that abstract the ML models away and you can simply use an API for accessing that services....so far so good. With this preconditions most of you coders out there will have the thought: "This sounds too easy to fill 24h of programming". Exactly what I thought...already thinking about also coding an Alexa skill and so on to fill the time. With two experienced developers, we thought the backend would be done in about 4h (conservative calculation) as it would only be stitching together three APIs and delivering that info to a JSON REST API for our frontend team. For keeping the fun up and having more learnings during the project we decided to do the backend as a serverless function. But then Azure came into our way...
In the end, it took us ~9h to develop the backend as a serverless function that is mainly a 40 lines JavaScript file we had to develop in the in-browser "editor" that Azure offers as all the other approaches we tried didn't work out and we ended up abandoning them. Once again: 9 hours for 40 lines of JS code stitching together three APIs...that is insane. (Btw. at 3 am we decided to switch to GCP (google cloud platform) and that did the job in about 45 minutes)
So for sure we did things wrong and it could have been done faster, but this blog post is about the hard onboarding and overall bad structure of Azure. Please also keep in mind that Azure is still in a more-or-less early stage and not everything is wrong in there. In the following, I will walk you through the timeline of this disaster and suggestions I would have in mind to fix some of the most confusing steps. Actually, I will try to avoid these mistakes in my own future projects, so thanks Microsoft by showing me a way how not to do things xD
Just a bit more background: My partner in the backend had some experience with GCP and I do most of my current projects with AWS, so we did know how stuff works there...couldn't be too hard to transfer that knowledge to the Azure platform.
Start of the project
So first of all creating a new Azure account, that is not that hard and after entering credit card info you get 100$ of free credit. I actually like how Microsoft solved that here: You have two plans. You start with the 100$ free tier and if you spend all of that money you manually have to change to the pay-as-you-go plan. So that protects you of opening up an account, doing some testing, forgetting about it and then a month later you get a huge bill (happened to me with AWS). So that is nice for protecting new users that just start to test the system. Good job here Microsoft!
After setting up the account I created a new project and added some of the resources we needed. Creating a serverless function I recognized the tag "(Preview)" on the function I created but didn't think more about it...but actually, that sign should be something like Experimental/Do not use/Will most likely not work properly. We created a Python serverless function (apparently Python functions are still beta here) and tried to get some code in there.
There are three ways to get code into an azure function:
Web "editor"
Azure CLI
VS Code
...for full-featured functions. As we selected the experimental/beta/preview functionality Python we only had the latter two options. Not that bad as it is the same for AWS and I am used to deploying my code via the AWS cmd...shouldn't be way harder with Azure.
My suggesting: Do not do publish functionality that is obviously not ready yet. Do internal testing instead of using your users for that task.
Azure plugins for VS code
Microsoft overs a wide range of VS code plugins for Azure. As that is my main editor anyways I wanted to give them a try. So for the functionality of serverless functions, you need the functions plugin and about 9 other mandatory ones that are some sort of base plugins. 500mb and three VS Code crashed later finally the required plugins were installed properly. The recommended login method did not work and I had to choose the method via the browser. Not that big of a deal, but as they recommend the inline method I would think that should work. (Didn't work for the other folks in my team as well...so had nothing to do with my particular machine)
You would think that 500mb should be enough for finally being able to deploy some code...but you still need 200mb more for the Azure cli that is required for the plugins to work properly.
Finally having installed all of it you can see all your Azure functions and resources in VS code. I started to get a bit excited as it looked that the development from now on would be straight forward and easier as I am used to from AWS.
But that 700mb of code did not work properly....the most important function "deploy" did fail without a more in-depth error message...AAAAAAARRRG. Why do I have to install all that crap and then it can't do the most simple task it has to get my code into their cloud.
Keep your tooling modular and try to do fewer things, but do them right
Code templates
A nice idea is, on creating a new serverless function Azure greets you with a basic boilerplate code example showing you how to handle the basic data interfaces.
Maybe also because we selected the alpha functionality "Python" we didn't get Python code here but JavaScript. So your function is prepopulated with code that is not able to run because it is the wrong programming language. We were lucky and recognized that right away, but you could get really confusing error messages here if you then start developing in JS but actually having a Python runtime.
Better no boilerplate code than one in the wrong programming language
But at least it is colorful
So next try with the Azure CLI. The first thing that you recognize is that the CLI has all sorts of different colors...but that does not help if you are annoyed and want to get things done.
That is a thing you also recognize in the Azure web interface...it has quite some UX issues but they do have more than five color themes you can choose from for styling the UI...not sure Microsoft if you set your priorities right here ;)
Also, the CLI did not get us where we wanted....either of our own incompetence or the CLI, no clue. Either way, I would blame Azure as it is their job to help developers onboarding and at least get basic tasks (we still only want to deploy a simple "hello world") done in an acceptable time.
Focus less on making your UI shine in every color of the rainbow and try to improve documentation and onboarding examples
Full ownership of a resource still does not give you full privileges
After finally being able to deploy at least the "hello world" we wanted to go a step further...work concurrently on that project. Yes 'till now we mainly did pair programming on a single machine.
As I was the owner of that resource I wanted to give my teammate also full access to it, so he could work on the resource and add functions if required. I granted him "owner" access rights (the highest that were available) but still, he was not able to work properly with that function. In the web UI it did work more or less but than again in VS code no chance to do anything (adding a function or deploying it). I ended up doing a thing that goes against everything I learned about security: I logged in with my credentials at his machine.
So imagine yourself now already sitting in front of your laptop for about 4 1/2 hours and you did not manage to do anything of your real work.
Ditching Azure Functions and switching to GCP
That was the moment when we did ditch the idea of doing the backend as Azure function. We switched to GCP and started there all over again. As I also never worked with that platform I expected a similar hard start as I already had in the last few hours with Azure. So about 25 minutes later we achieved more on GCP than with azure 'till then.
A thing both Azure and GCP do better than AWS is they have the Logs of a serverless function in the same window as the function itself. AWS has here a different approach and you have to change to the cloud logs when you want to get info about your function and how it worker. Props to both Google and Microsoft for solving this a lot better!
Actually a hint for AWS: Give your user all control and info at a single place
Cognitive services
The prices you could win at the Hackathon were attached to using Azure and thereby we stick to the cognitive services for doing the news search and the sentiment analysis. Overall the API is straight forward: Send your data and get the results back.
One thing we got told in a presentation and that you should keep in mind when using the cognitive services: You do not control the model and it could change at any moment in time. So if you use the cognitive services for productive use, you should continuously check that the API didn't change its behavior in a way that influences your product in a bad way. But most of the time it is still a lot cheaper and better than building the model yourself
The problem that we did have with the services where again authentication issues. Quite confusing some of the cognitive services (e.g. the sentiment analysis) are have different API base URLs depending where you register that cognitive service and others are not. As I assume they need that manual setting of data centers for a particular (unknown to me) reason. Indeed I would propose to have all the cognitive services bound to a location.
The news search, for example, is not bound to a location and so we had two different behaviors of the API base URLs in our so short and easy application:
One URL for all location.
Only a certain location is valid for your resource. If you point to a wrong API location you get an "unauthorized" as the response
Pointing to the wrong location is pure incompetence on the developer side but it would help a lot if there would be a distinct error code/message for that scenario.
Have the same base URL behavior for all cognitive services
Return some sort of 'wrong location'-error if you have a valid API token but you are pointing to the wrong location
Insufficient documented SDKs
Azure offers SDKs for using their services. We gave the JS SDK for the cognitive services a try. Here we stumbled upon two sides of a medal: First props to the developers coding that SDKs they are straight forward and do what they should. Even the code itself looks good...but why the hell do I have to look into the code of the SDKs to get all the options the functions offer? When you stick to the documentation provided via the GitHub readme or NPM you only get a fraction of the functionality. We were confused that the own SKDs of Microsoft seemed not to be API complete. Looking into the code we saw they are actually API complete and do offer a lot more options then documented.
Please Microsoft: Properly document your functionalities!
IMO there must be deep problems with the internal release processes at Azure. It is not acceptable that an IT company already being so long in the industry allows itself such a standard mistake. You should not release your products (and I see the SDKs as such) without proper documentation.
"Code Examples"
During our try and error period for trying to get the JS SDK running, we stumbled upon the quickstart guide for the cognitive services Quickstart: Analyze a remote image using the REST API with Node.js in Computer Vision
Instead of using their own SDK and explaining how to use it they show you how to manually build an HTTP request in JS. Sure that can be helpful for new JS coders, but if you have an SDK for that particular reason...why are you not using it? Looks like the left hand is not knowing what the right-hand does.
Stick to one way of doing things. If you have an SKD, also use it in your quickstart guides for being consistent
Conclusion
In the end, we did port the code back from GCP to an Azure function (again ~1h of work). We selected JS instead of Python and coded completely in the web UI...that did work. I now know how real Microsoft business developers do their daily business...never leave the web UI and just accept that life is hard.
Microsoft failed to deliver a good enough experience here and lost me as a potential customer. How can it be that I was able to do the same stuff in a fraction of the time in GCP? (And keep in mind: it was already 3am in the morning, I was super tired and I also never worked with GCP before)
None of the three major players is perfect and sure I understand it is hard to deliver fast and keeping good quality in this highly competitive market. But maybe actually going the step further will help to win in the end.
Once again: This is me only rating the onboarding experience of Azure in particular! No general opinion on Microsoft.
Last one: The Azure web UI didn't work in Chrome. So if you have issues with that, Firefox did the trick for us ;)
0 notes
Link
Everyone says they want to invest in startups targeting a large, growing market, led by an amazing founding team. That description is not exactly helpful to you, the startup founder.So let me be more specific, regarding what I, organizer of the Startup Conference and investor in 13 startups so far, am currently interested in.E-mail. It’s a boring old technology (BOT), but it’s still the #1 tool people use to interact with each other online. The messaging apps (including WhatsApp and Facebook) are giving it a run for its money, but e-mail is here to stay. But e-mail hasn’t really evolved much. Maybe machine learning can help distinguish the important e-mail I care about. Is your startup taking a fresh look at e-mail? Great!You can’t talk about e-mail without talking about Facebook. Is Facebook a good platform for startups? It’s always dangerous to build your startup on top of someone else’s walled garden. If you become too big, they can pull the plug anytime. Zynga learned that expensive lesson.I have been holding a somewhat contrarian opinion for a long time: Facebook Ads can be very powerful, sometimes better than Google AdWords. That’s why I invested a few years ago in AdEspresso, which a few weeks ago, was acquired by HootSuite. So it worked out well, but I’m not sure I’d do it again. The question to ask is: if you are so succesful that you are generating $1B, what can Facebook do? And saying “they’ll acquire us” is not the right answer.Another favorite topic of mine, which is getting a lot of media attention these days, is fake news. Specifically, I think online discussion forums could be so much better - mandatory xkcd reference.There is tremendous knowledge online. Unfortunately, it’s hidden behind senseless arguments, trolls and other nonsense. Anonymity is not helping. I don’t want to waste my time arguing with 14-year olds who think they know it all (they don’t). How can nuggets (great comments) surface? Threaded forums were a great improvement about two decades ago. It’s time for another revolution. Why can’t we aggregate great comments from different sites, based on what I’m interested in? Where is Big Data when you need it? Twitter has failed miserably at solving that problem.If you look at what e-mail and discussions have in common, I guess online collaboration would be the underlying theme. That probably explains my investment in Padlet. Too early to tell if it will solve a real problem.What about Virtual Reality and Augmented Reality? It’s definitely hot. But just like the first IBM PC, it will be almost impossible for a startup to reach the scale required to manufacture a winning product. So forget about doing hardware. Instead, focus on writing the killer app for the right hardware platform. That’s how your startup can win big. The challenge of course, is that no one has any clue what hardware platform will win and what the killer app should be. But that’s ok, our confusion is your opportunity.I’m also opportunist: I like to invest in strong teams showing cool technology. That’s why I had high hopes for Clef: online security is a real problem that is only getting worse, and complicated solutions will never get adopted by the average consumer. Too bad that particular startup didn’t work out.Talking about cool technologies, I find Machine Learning fascinating. It’s entirely possible that only a few years from now, programming will become irrelevant, replaced with feeding huge amount of data to all kinds of neural networks. Remember the personal computing revolution of the 80s (probably not)? Geeks were writing code in their garage. No one took them seriously. ML has the potential to be just as disruptive. Tinkering. Exploring. Frankly no one really knows why it works, but everyone can tell something is going on.
0 notes