<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://anasismail.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://anasismail.com/" rel="alternate" type="text/html" /><updated>2025-11-24T15:25:45+00:00</updated><id>https://anasismail.com/feed.xml</id><title type="html">Anas Ismail Khan</title><subtitle>My name is Khan and I am a Developer</subtitle><entry><title type="html">I wrote an EF Core Provider</title><link href="https://anasismail.com/i-wrote-an-ef-core-provider/" rel="alternate" type="text/html" title="I wrote an EF Core Provider" /><published>2025-11-23T00:00:00+00:00</published><updated>2025-11-23T00:00:00+00:00</updated><id>https://anasismail.com/i-wrote-an-ef-core-provider</id><content type="html" xml:base="https://anasismail.com/i-wrote-an-ef-core-provider/"><![CDATA[<blockquote>
  <p>EF Core Database Provider for Azure Data Explorer (Kusto). <a href="https://github.com/anasik/EFCore.Kusto">GitHub</a>   <a href="https://www.nuget.org/packages/EFCore.Kusto/"><img src="https://img.shields.io/nuget/v/EFCore.Kusto.svg" alt="NuGet Version" /></a> </p>
</blockquote>

<p>The project that I work on has a lot of data, in a lot of entities with a lot of fields, all exposed through an OData API. Naturally, that compels us to know exactly what kind of query shapes our users may be interested in and to create optimal indexes for them beforehand. However, there’s literally hundreds of fields and creating an index for every single one of them is simply not an option. Timeouts are great for protecting the database from maliciously demanding queries but they don’t offer much in the realm of user-experience. We <em>need</em> to allow clients to send arbitrary queries and we <em>need</em> them to be fast regardless of whether we’re expecting said query or not.</p>

<p>It was clear to me that we needed a solution and not an optimization and so I considered exploring Big Data solutions and columnar databases. Since our infrastructure is primarily Azure-based, my boss suggested that we explore Azure Data Explorer (ADX) aka Kusto. In a couple of days, ingestion was complete and a little testing showed promising performance so we decided to explore our options for integration.</p>

<p>Sadly, Kusto not only doesn’t have an EF Core provider package, the T-SQL support, although well-marketed, was poorly performing. It was very clear to us that this path would require a little investment. After discovering that <code class="language-plaintext highlighter-rouge">EFCore.Snowflake</code>, another library/database pair we considered using, is developed and maintained by one person alone, I felt motivated to take a crack at writing a database provider. I mean, how hard could it be in today’s AI powered era?<!--more--></p>

<p>My boss decided to make things interesting and offered me a huge bonus in exchange for me accomplishing this in under three weeks. So on 18/11/2025, I started by carefully exploring the code for <code class="language-plaintext highlighter-rouge">EFCore.Snowflake</code>. I knew that my implementation would be far simpler since I didn’t need to support design time services and OLTP flows. But at the same time, I also expected there to be complications surrounding the connection flow since Kusto doesn’t support the ADO.NET architecture as the Kusto.Data library internally uses the REST API.</p>

<p>About 5 hours later, I could tell that it was functioning but I couldn’t prove it because Kusto kept failing to parse the SQL parameters that my provider was failing to map. It was late so I went to bed with the goal of approaching this with a clear head.</p>

<p>The next day, I had to go down a much deeper rabbithole than I’d expected just to find a way to extract the parameter values early enough in the pipeline, cache them somewhere, and then map them once the KQL generation was completed. Even now, I’m not proud of how I handled it but it seemed to have worked. I was too excited to care anyway since I desperately wanted to see my odata api, (which is what I’d been using for testing,) return the correctly serialized output.</p>

<p>Once parameters were fixed, I got my wish but now I had to make <code class="language-plaintext highlighter-rouge">$expand</code> work which is basically a fancy OData term for <code class="language-plaintext highlighter-rouge">JOIN</code>. This is the part where I’m most proud of myself because I ended up needing to do this with little or no AI intervention as LLM hallucination peaked around this time and I wasn’t willing to put up with it.</p>

<p>Just in case you were wondering, yes of course I was vibe-coding this but not by aimlessly prompting cursor while I sip my coffee. No, I had ChatGPT open in a window and I was giving it very detailed instructions and asking very specific questions because this part of the .NET api is barely documented. In fact, the documentation for this literally has a disclaimer at the top stating <em>These posts have not been updated since EF Core 1.1</em>. I also learned soon enough that ChatGPT’s knowledge of this was almost equally lacking and I was kind of on my own.</p>

<p>Took me most of the next day to get <code class="language-plaintext highlighter-rouge">$expand</code> work, after which the KQL generation was near perfect but failing because of the <code class="language-plaintext highlighter-rouge">ROW_NUMBER</code> function that EF Core loves to use in subqueries and I had failed to detect and remove. Now there were a bunch of ways to go about fixing this, some more sophisticated than others, but KISS (Keep it simple, stupid) for the win! I decided to do exactly what I would do if I was the parser: explicitly look for it and remove it.</p>

<p>And, just like that, my odata api was returning data from my Kusto cluster! There were, however, exactly three more challenges before I could call my boss and ask him to pay up.</p>

<ol>
  <li>
    <p>In KQL there’s no <code class="language-plaintext highlighter-rouge">$skip</code> or <code class="language-plaintext highlighter-rouge">.Skip()</code> equivalent. However, there is a <code class="language-plaintext highlighter-rouge">ROW_NUMBER()</code> equivalent which is simply <code class="language-plaintext highlighter-rouge">row_number(int startingIndex)</code>. I handled skips by simply projecting a <code class="language-plaintext highlighter-rouge">skip_index = row_number(1)</code> and then filtering by <code class="language-plaintext highlighter-rouge">| where skip_index &gt; </code>. <del>And yes, I had a very good reason for not using this function to handle the <code class="language-plaintext highlighter-rouge">ROW_NUMBER()</code> issue around subqueries that I mentioned earlier.</del> To make this work, I also had to make sure that <code class="language-plaintext highlighter-rouge">order by</code> comes before <code class="language-plaintext highlighter-rouge">project</code> because <code class="language-plaintext highlighter-rouge">row_number()</code> is a window function and window functions can only be called on a serialized set, and <code class="language-plaintext highlighter-rouge">order by</code> always outputs a serialized set.</p>
  </li>
  <li>
    <p>Next came <code class="language-plaintext highlighter-rouge">$filter</code>. I started basic and to my surprise, equality checks were crashing but inequality checks were working fine. This was because KQL uses <code class="language-plaintext highlighter-rouge">==</code> for equality unlike SQL’s <code class="language-plaintext highlighter-rouge">=</code> so I had to override <code class="language-plaintext highlighter-rouge">GetOperator</code>. Naturally, other operators also had similar issues. <code class="language-plaintext highlighter-rouge">AND</code> and <code class="language-plaintext highlighter-rouge">OR</code> simply needed to be lowercase while <code class="language-plaintext highlighter-rouge">FieldName IS NULL</code> and <code class="language-plaintext highlighter-rouge">FieldName IS NOT NULL</code> simply had to be <code class="language-plaintext highlighter-rouge">isnull(FieldName)</code> and <code class="language-plaintext highlighter-rouge">isnotnull(FieldName)</code>. I had to override <code class="language-plaintext highlighter-rouge">VisitUnary</code> to make these two work btw.</p>
  </li>
  <li>
    <p>Lastly, <code class="language-plaintext highlighter-rouge">$count</code> needed to work. Now the code was already emitting <code class="language-plaintext highlighter-rouge">| project  = COUNT(*)</code> which wasn’t correct KQL, but it was perfectly incorrect for me to detect and replace. As a final-step, just before execution, I added a check that looks for this expression and replaces it with <code class="language-plaintext highlighter-rouge">| count</code>. And once again, the KISS principle prevails!</p>
  </li>
</ol>

<p>The bet was that I have to finish this in under 3 weeks, and I added these last finishing touches on the 3rd day. I told my boss he’d better pay me 7x the promised amount. He’s yet to deliver. Up next was open-sourcing and distributing my beautiful work. To do that, I had to add tests, a nice README, and publish to NuGet. I did that over the weekend and on this fine Monday, I have just finished typing this really long account that nobody asked for!</p>

<p>I really wanted to do more of a tutorial-style post as a spiritual successor to Arthur Vickers’ <a href="https://blog.oneunicorn.com/2016/11/11/so-you-want-to-write-an-ef-core-provider/"><em>So you want to write an EF Core provider…</em></a> which is what the official and outdated documentation recommends. I could be the one to finally update that old documentation, but that would take a little more effort, so it’ll have to wait just a bit.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="dotnet" /><category term="csharp" /><category term="Microsoft" /><category term="aspnetcore" /><category term="open source" /><summary type="html"><![CDATA[EF Core Database Provider for Azure Data Explorer (Kusto). GitHub     The project that I work on has a lot of data, in a lot of entities with a lot of fields, all exposed through an OData API. Naturally, that compels us to know exactly what kind of query shapes our users may be interested in and to create optimal indexes for them beforehand. However, there’s literally hundreds of fields and creating an index for every single one of them is simply not an option. Timeouts are great for protecting the database from maliciously demanding queries but they don’t offer much in the realm of user-experience. We need to allow clients to send arbitrary queries and we need them to be fast regardless of whether we’re expecting said query or not. It was clear to me that we needed a solution and not an optimization and so I considered exploring Big Data solutions and columnar databases. Since our infrastructure is primarily Azure-based, my boss suggested that we explore Azure Data Explorer (ADX) aka Kusto. In a couple of days, ingestion was complete and a little testing showed promising performance so we decided to explore our options for integration. Sadly, Kusto not only doesn’t have an EF Core provider package, the T-SQL support, although well-marketed, was poorly performing. It was very clear to us that this path would require a little investment. After discovering that EFCore.Snowflake, another library/database pair we considered using, is developed and maintained by one person alone, I felt motivated to take a crack at writing a database provider. I mean, how hard could it be in today’s AI powered era?]]></summary></entry><entry><title type="html">Ambition &amp;amp; Ingratitude</title><link href="https://anasismail.com/ambition-and-ingratitude/" rel="alternate" type="text/html" title="Ambition &amp;amp; Ingratitude" /><published>2025-09-30T00:00:00+00:00</published><updated>2025-09-30T00:00:00+00:00</updated><id>https://anasismail.com/ambition-and-ingratitude</id><content type="html" xml:base="https://anasismail.com/ambition-and-ingratitude/"><![CDATA[<blockquote>
  <p>Despite my bad luck,<br />
Being ungrateful remains my greatest sin,<br />
And one that life never ceases to punish me for.</p>

  <p>While I’ve been unhappy for as long as I can remember,  <br />
Looking back, I always view my painful pasts <br />
as happier versions of myself.</p>

  <p>The problem with ingratitude isn’t divine retribution.  <br />
It’s that ambition without gratitude can be destructive.  <br />
You can’t save what you don’t value.</p>

  <p>But then, don’t ambition and ingratitude go hand in hand?  <br />
After all, you can’t escape what you continue to value.</p>
</blockquote>]]></content><author><name>Anas Ismail Khan</name></author><category term="Essays" /><category term="Poetry" /><summary type="html"><![CDATA[Despite my bad luck, Being ungrateful remains my greatest sin, And one that life never ceases to punish me for. While I’ve been unhappy for as long as I can remember, Looking back, I always view my painful pasts as happier versions of myself. The problem with ingratitude isn’t divine retribution. It’s that ambition without gratitude can be destructive. You can’t save what you don’t value. But then, don’t ambition and ingratitude go hand in hand? After all, you can’t escape what you continue to value.]]></summary></entry><entry><title type="html">Third time’s the charm</title><link href="https://anasismail.com/third-times-the-charm/" rel="alternate" type="text/html" title="Third time’s the charm" /><published>2025-07-29T00:00:00+00:00</published><updated>2025-07-29T00:00:00+00:00</updated><id>https://anasismail.com/third-times-the-charm</id><content type="html" xml:base="https://anasismail.com/third-times-the-charm/"><![CDATA[<blockquote>
  <p>Also check out:</p>
  <ol>
    <li><a href="https://anasismail.com/how-to-work-for-microsoft-without-getting-hired/">How to work for Microsoft without getting hired</a></li>
    <li><a href="https://anasismail.com/oops-i-did-it-again/">Oops, I did it again</a></li>
  </ol>
</blockquote>

<p>It’s no secret that now I’m a contributor to open-source and that the fruit of my Pull Requests is being distributed by none other than Microsoft themselves. Earlier this year, I posted twice about bug fixes I’d made to <code class="language-plaintext highlighter-rouge">Microsoft.AspNetCore.Odata</code>, and I’m pleased to inform you that as of today, I have achieved a hat trick.</p>

<p>I must admit though, that this bug was a lot subtler and less detrimental to the primary function of the library. In fact, viewing strictly by the OData standard, it cannot be called a bug at all. However, the library offers a feature or two that deviates from the standard. And it was one of those features that was broken.</p>

<p>The OData specification defines dollar-prefixed query options e.g. <code class="language-plaintext highlighter-rouge">$top</code>, <code class="language-plaintext highlighter-rouge">$skip</code>, whereas the <code class="language-plaintext highlighter-rouge">Microsoft.AspNetCore.Odata</code> library generously offers a configuration flag, enabled by default too, called <code class="language-plaintext highlighter-rouge">EnableNoDollarQueryOptions</code> that allows you to use non-dollar-prefixed query options like <code class="language-plaintext highlighter-rouge">?top=10&amp;skip=10</code> instead of <code class="language-plaintext highlighter-rouge">$top=10&amp;$skip=10</code>.<!--more--></p>

<p>Of course, it’s no coincidence that I used <code class="language-plaintext highlighter-rouge">top</code> and <code class="language-plaintext highlighter-rouge">skip</code> as examples just now. The neat thing about these two options is that they’re designed to work together for what’s aptly termed <em>client-driven pagination</em>. The <code class="language-plaintext highlighter-rouge">top</code> option tells the API how many records to fetch and the <code class="language-plaintext highlighter-rouge">skip</code> option sets the offset. So if you want to fetch the first 10 records, you do <code class="language-plaintext highlighter-rouge">?top=10&amp;skip=0</code> or simply <code class="language-plaintext highlighter-rouge">?top=10</code> but then to get the next page of records, you’d do <code class="language-plaintext highlighter-rouge">?top=10&amp;skip=10</code> and so on. In most cases, your top would stay pretty constant while your skip increment each time.</p>

<p>However, outside of their collective function, they still have some interesting properties. For that, we must understand the concept of <em>server-driven pagination</em>. Simply put, the server can impose a limit on the maximum number of records that can be fetched at once. That’s known as <code class="language-plaintext highlighter-rouge">PageSize</code> and it’s also often the default number of records returned when there’s no <code class="language-plaintext highlighter-rouge">top</code> in the query.</p>

<p>In the event that the <code class="language-plaintext highlighter-rouge">top</code> value is greater than the <code class="language-plaintext highlighter-rouge">PageSize</code>, the API caps the number of records at <code class="language-plaintext highlighter-rouge">PageSize</code> and includes a <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> in the response for the user to get the remaining records. So if <code class="language-plaintext highlighter-rouge">PageSize</code> is set to 100 and the user queries with <code class="language-plaintext highlighter-rouge">?top=1000</code>, they would essentially go through 9 <code class="language-plaintext highlighter-rouge">@odata.nextLink</code>s to get all 1000 records. Let’s look at some examples now. Say, your make a request to:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?$top=1000
</code></pre></div></div>
<p>you’d get back a <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> that looks like:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?$top=900&amp;$skiptoken=Id-'100'
</code></pre></div></div>
<p>Because you’ve already gotten the first 100 records and need only another 900 and not another 1000. As you can guess, once you’ve traversed your way past the first 900 records, the last 100 records do not come with a <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> in the response.</p>

<p>Again, it’s no coincidence that I put that <code class="language-plaintext highlighter-rouge">$skiptoken</code> in the request above. This is an option, no different from a regular <code class="language-plaintext highlighter-rouge">$skip</code> in its purpose, that most servers return instead of the regular <code class="language-plaintext highlighter-rouge">$skip</code>. This is mainly done for performance reasons as it allows you to take advantage of a default sort on the collection you’re paginating. See how it says <code class="language-plaintext highlighter-rouge">Id-'100'</code>? That tells the server to fetch all records with <code class="language-plaintext highlighter-rouge">Id &gt; 100</code>. In contrast, a regular <code class="language-plaintext highlighter-rouge">$skip=100</code> would quite literally skip the first 100 records in the database instead of taking advantage of the indexed <code class="language-plaintext highlighter-rouge">Id</code> field. For larger skip values, this becomes very slow.</p>

<p>Now let’s see how <code class="language-plaintext highlighter-rouge">skip</code> works when not paired with a <code class="language-plaintext highlighter-rouge">top</code>. If you were to make a request to:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?$skip=1000
</code></pre></div></div>
<p>You’d get back a response with the following <code class="language-plaintext highlighter-rouge">@odata.nextLink</code>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?$skiptoken=Id-'1100'
</code></pre></div></div>
<p>See how the server not only removed the <code class="language-plaintext highlighter-rouge">$skip</code> option from subsequent queries but also incremented the <code class="language-plaintext highlighter-rouge">$skiptoken</code> by the <code class="language-plaintext highlighter-rouge">$skip</code> value to correct for the skipped records? Beautiful. And now, we can finally talk about the bug this post is about.</p>

<p>I noticed that if you call the API with a <code class="language-plaintext highlighter-rouge">top</code> (not <code class="language-plaintext highlighter-rouge">$top</code>) value greater than <code class="language-plaintext highlighter-rouge">PageSize</code>, the <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> in the response was reiterating the same <code class="language-plaintext highlighter-rouge">top</code> value instead of decrementing it by <code class="language-plaintext highlighter-rouge">PageSize</code>. So, a request to:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?top=1000
</code></pre></div></div>
<p>gave back a <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> that looked like:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?top=1000&amp;$skiptoken=Id-'100'
</code></pre></div></div>
<p>This would basically lead to infinite <code class="language-plaintext highlighter-rouge">@odata.nextLink</code>s. Similarly, I noticed that when I called the API with just a <code class="language-plaintext highlighter-rouge">skip</code> (not <code class="language-plaintext highlighter-rouge">$skip</code>), the <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> in the response was not removing the <code class="language-plaintext highlighter-rouge">skip</code> from the <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> in the response such that a request to:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?skip=1000
</code></pre></div></div>
<p>would give back a response with the following <code class="language-plaintext highlighter-rouge">@odata.nextLink</code>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>api.anasismail.com/odata/Products?skip=1000&amp;$skiptoken=Id-'1100'
</code></pre></div></div>
<p>This would cause, what can only be described as, a <em>double-skip</em> since the resultant query would both fetch by <code class="language-plaintext highlighter-rouge">Id &gt; 1100</code> and then <em>also skip the first 1000 records in the results</em>.</p>

<p>Fixing this was remarkably easy. I found the file that generated the <code class="language-plaintext highlighter-rouge">@odata.nextLink</code> values. It had a huge <code class="language-plaintext highlighter-rouge">switch</code> with cases for <code class="language-plaintext highlighter-rouge">$top</code> and <code class="language-plaintext highlighter-rouge">$skip</code>. I just added <code class="language-plaintext highlighter-rouge">case "top":</code> and <code class="language-plaintext highlighter-rouge">case "skip":</code> under their respective cases and made a PR. I did wonder if I should check and see if <code class="language-plaintext highlighter-rouge">EnableNoDollarQueryOptions = true</code> before matching these cases but thought the odds of someone using these keywords for any other purpose were slim.</p>

<p>However, the reviewers were of a different opinion and so I had no other choice but to do <code class="language-plaintext highlighter-rouge">case "top" when isNoDollarQueryOptionsEnabled:</code> and <code class="language-plaintext highlighter-rouge">case "skip" when isNoDollarQueryOptionsEnabled:</code> instead. And to make that work, I had to pass <code class="language-plaintext highlighter-rouge">isNoDollarQueryOptionsEnabled</code> all the way down the hierarchy from a lot of places where this function was being called.</p>

<p>Then they said that a test was failing. I could have sworn that I’d been careful enough in my testing and that no test could possibly fail. That being said, I also knew I hadn’t run any of the tests before requesting their review. So I investigated and turns out, as expected, it was the test that was bad and not my code. I fixed the test, pushed, requested review and BAM! Hat trick!</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Uncategorized" /><category term="Open Source" /><category term="Microsoft" /><category term="OData" /><category term="C#" /><category term="CSharp" /><category term="Bug Fixing" /><category term="ASP.NET Core" /><category term="Entity Framework Core" /><category term="Software Development" /><category term="Programming" /><category term="Contribution" /><summary type="html"><![CDATA[Also check out: How to work for Microsoft without getting hired Oops, I did it again It’s no secret that now I’m a contributor to open-source and that the fruit of my Pull Requests is being distributed by none other than Microsoft themselves. Earlier this year, I posted twice about bug fixes I’d made to Microsoft.AspNetCore.Odata, and I’m pleased to inform you that as of today, I have achieved a hat trick. I must admit though, that this bug was a lot subtler and less detrimental to the primary function of the library. In fact, viewing strictly by the OData standard, it cannot be called a bug at all. However, the library offers a feature or two that deviates from the standard. And it was one of those features that was broken. The OData specification defines dollar-prefixed query options e.g. $top, $skip, whereas the Microsoft.AspNetCore.Odata library generously offers a configuration flag, enabled by default too, called EnableNoDollarQueryOptions that allows you to use non-dollar-prefixed query options like ?top=10&amp;skip=10 instead of $top=10&amp;$skip=10.]]></summary></entry><entry><title type="html">Until Dawn - Movie Review</title><link href="https://anasismail.com/until-dawn-movie-review/" rel="alternate" type="text/html" title="Until Dawn - Movie Review" /><published>2025-06-12T00:00:00+00:00</published><updated>2025-06-12T00:00:00+00:00</updated><id>https://anasismail.com/until-dawn-movie-review</id><content type="html" xml:base="https://anasismail.com/until-dawn-movie-review/"><![CDATA[<p>After the overwhelming success of my <a href="/the-painted-2024-movie-review/">penultimate movie review</a>, and <a href="/im-glad-my-wikipedia-article-got-rejected/">the rabbit hole I went down</a> that ultimately led to an <a href="/i-interviewed-sasha-sibley-a-filmmaker/">audience with the director of the movie himself</a>, I couldn’t refuse my wife when she asked me if we could go to the cinema again. However, I had one condition: that we would only go to see a low-budget cheap horror movie that I could come back and write about. She said she wouldn’t have it any other way herself.</p>

<p>Of course, it’s evident that she chose poorly but I didn’t realize that until much later. When she showed me the google card for the movie, I took a quick glance at the name, thumbnail and cast and incorrectly assumed that it was a good match.<!--more--> I had completely forgotten that a game by the same name existed. I think I even noticed that it said PlayStation studios but was too busy to realize what it meant. In my defense, I was just too busy to look the movie up or process the information I had already laid eyes on, despite having already noticed that it was directed by David Sandberg who’d also directed Annabelle: Creation and the Shazam movies. Somehow, I also didn’t notice Michael Cimino in the cast either otherwise that would have definitely rung a bell.</p>

<p>I did briefly mention to my sister that we were planning to go watch this and she immediately told me that it’s based on the game and that I was at risk of spoiling the game for myself. But then she watched the trailer with me and said, “I must be confused about something because this doesn’t look like the game at all.” Again, I was too busy to process this information or make anything of it. I did tell my wife later that the movie was probably based on a game but still didn’t realize that being based on a PlayStation game means it’s not a low-budget movie. And somehow, watching the trailer had reinforced my belief that it was a cheap movie. I think I was convinced that it was gonna be ridiculous and was therefore a good candidate.</p>

<p>Enough backstory, let’s attack the movie itself. Five minutes in, I was already cringing at the corny expository dialogue, a lot of which was badly delivered but I can’t quite remember which actors stood out the most in that regard. I could go out on a limb here and blame the less popular ones but if I’m being honest, their delivery was equally bad and that fact holds even for the rest of the film. The starting sequence felt very rushed but considering how much I already hated the little dialogue it had, I can only appreciate that they minimized filler. The prologue was a little weak and felt forced and didn’t really leave a lot to the imagination. The Happy Death Day element was obvious and, early on, we guessed how the rest of the movie would be paced.</p>

<p>That being said, if “never let them know your next move” was a movie, it would be this one. First it’s a slasher. Then there’s possession. Then there’s literally a giant for a second. There’s a witch, there’s exploding humans, friendly fire. Oh wait, it’s sci-fi and there’s zombie-like creatures and a mad scientist. Wait, the creatures are being rendered by one of the characters’ imagination.</p>

<p>You know how people put literally every topping and sauce on their Subway sandwich just cause it’s free? It was kind of like that. Or to quote my wife:</p>

<p><img src="/assets/joey.gif" alt="Joey Tribbiani saying: &quot;What's not to like? Custard? Good. Jam? Good. Meat? Gooooood!&quot;" /></p>

<p>Of course, in a way, you could also appreciate this. I mean, aren’t such movies supposed to be as unexpected as possible. But idk why it felt very hacked together. I could have sworn the script was AI generated. It just felt like a joke and made me lose interest and respect early on.</p>

<p>Some other complaints I have: the music, screaming and other sound effects were extremely loud to the point that it was more irritating than scary. The whole sister thing was poorly explored and felt unnecessary and forced. The character tropes felt lame and under-utilized. The clairvoyant character was unnecessary, unexplained and poorly done. The whole sci-fi element should have simply been left out if they weren’t planning on explaining it.</p>

<p>I must admit, I was a little skeptical about reviewing this movie because I was afraid of coming off as an imbecile and offending the game fans but then I came across a lot of tweets like, “If you forget that it’s based on the game, it was a great movie.” Personally, I was hoping it was the other way around. I remember telling my wife that maybe some of the things we didn’t like about the movie were actually true to the game, but clearly it was equally infuriating, if not more, for the game fans than it was for me.</p>

<p>I think if this had actually been a low-budget movie from an up and coming writer/director, I would have complained less. But not only was the budget and distribution well accounted for, the writers and directors are actually well-known and established with a lot of success to their name. This makes it even more disappointing for me.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Movie Reviews" /><category term="Horror" /><category term="Cinema" /><category term="PlayStation Studios" /><category term="Film Critique" /><category term="Movie Experience" /><summary type="html"><![CDATA[After the overwhelming success of my penultimate movie review, and the rabbit hole I went down that ultimately led to an audience with the director of the movie himself, I couldn’t refuse my wife when she asked me if we could go to the cinema again. However, I had one condition: that we would only go to see a low-budget cheap horror movie that I could come back and write about. She said she wouldn’t have it any other way herself. Of course, it’s evident that she chose poorly but I didn’t realize that until much later. When she showed me the google card for the movie, I took a quick glance at the name, thumbnail and cast and incorrectly assumed that it was a good match.]]></summary></entry><entry><title type="html">I interviewed Sasha Sibley, a Filmmaker</title><link href="https://anasismail.com/i-interviewed-sasha-sibley-a-filmmaker/" rel="alternate" type="text/html" title="I interviewed Sasha Sibley, a Filmmaker" /><published>2025-04-14T21:28:44+00:00</published><updated>2025-04-14T21:28:44+00:00</updated><id>https://anasismail.com/sasha-sibley-filmmaker-interview</id><content type="html" xml:base="https://anasismail.com/i-interviewed-sasha-sibley-a-filmmaker/"><![CDATA[<blockquote>
  <p>This post is the last (for now) in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in:</p>
  <ol>
    <li><a href="https://anasismail.com/the-painted-2024-movie-review/">The Painted - Movie Review</a></li>
    <li><a href="https://anasismail.com/im-glad-my-wikipedia-article-got-rejected/">I’m glad my Wikipedia article got rejected</a></li>
    <li><a href="https://anasismail.com/the-box-2021-movie-review/">The Box - Movie Review</a></li>
    <li><a href="https://anasismail.com/i-interviewed-sasha-sibley-a-filmmaker/">I interviewed Sasha Sibley, a Filmmaker</a> (You’re here.)</li>
  </ol>
</blockquote>

<p>On 26th February 2025, I interviewed Sasha Sibley, the talented 27 year-old filmmaker from Los Angeles who made his feature-film debut in 2021 with “The Box” and his theatrical debut in 2024 with “The Painted.” The story of how and why this came to happen is scattered across the other 3 blogposts but in short: after watching “The Painted” at a local cinema, blogging about it and then failing to create a Wikipedia article for it, and learning that it was produced, directed, and written by someone who was about my age, I decided to reach out to him and be one of the first to ask him the real questions. I emailed him, we set up a call and the rest will one day be history.</p>

<p><strong>Tell me about yourself. Where did you grow up?</strong><br />
I grew up in the DC area, Maryland, Rockville, but I always just say DC. Just kind of simple, suburban life. My parents were divorced, and I jumped around a bit between their houses, but didn’t move around too much.</p>

<p><strong>How did you get into filmmaking?</strong><br />
I always had the interest or the itch to do movies for whatever reason. I just really loved movies. My dad showed me a lot of rated movies when I was a kid; rated action movies like The Matrix etc.., which my mom was never happy about, but they were just the coolest things I’d ever seen, and I wanted to emulate that somehow. My dad had this tape video camera and I just started, filming stuff. This was early 2000s.</p>

<p>When I was 10-12 I started getting my friends together and we started making movies and putting them on YouTube to maybe get 56 views or something. So, that was my childhood.  And then I wanted to pursue it professionally so I kept building to the extent that I tried to apply to film festivals. I was set on moving to Hollywood, so I only applied to colleges in LA and ended up getting into LMU — which was a great experience, a great film school. I went there for four years and did a dual degree in screenwriting and production. I learned a lot.</p>

<p>I had an award-winning short film (The Painted) and nobody cared because it was the pandemic. I made The Box. I don’t like to talk about it as much. It’s not that great.</p>

<p><strong>I watched it today. It was great.</strong><br />
Thank you. I think there were a lot of (production) limitations on that film. I made it in college and, the script was one thing and what I shot was another and then I had to edit it and it kind of found its final form in the editing room which was not what I had originally written.</p>

<p>If you read the script, you’d be like, “Whoa, this had very different things going on.” But so many things I was just like <em>okay we can’t shoot this. We can’t do that.</em> There was supposed to be more going on in the box that he’s in. It’s funny because now with AI and all this stuff, maybe some of those weird ideas I had could have been realized.</p>

<p><strong>About that: What are your thoughts on the latest advancements in AI within your industry, and how do you plan to leverage them?</strong><br />
You can’t ignore it. It’s definitely taking over. I am already playing with some of these tools. All the VFX that I had to do for The Painted, I learned myself. I had to do Houdini and Maya. I’ve always used After Effects, so that was easy. I’ve been using that since I was a kid. But some of the 3D software, was a trip. I took a couple classes and there’s some real, geniuses that work in visual effects. I don’t claim to be one of them, but I had to learn. I was like, <em>All right, I’m gonna focus on fluid simulations and try to get decent at that so I can do some of the effects in the painted.</em> because it’s like the low budget mentality.</p>

<p><strong>I think you’re pretty good at the editing part. I would assume that you edited the short film yourself but hired professionals for the feature-film?</strong><br />
No, I still edited the feature as well.</p>

<p><strong>From the sound of it, you never wanted to be an actor. Why did you rule out acting so early on?</strong>  <!--more-->
I did my fair share of acting and cameos in the early days when I was a kid. But — I’m not sure why — I just didn’t really see myself on screen as much. I think I get a lot of joy from being behind the camera and putting something together. Performing in front of the camera is a different skill, and it draws people in a different way.</p>

<p><strong>About The Box: Was any of that based on yourself, or your life? Was Tyler based on you?</strong><br />
It wasn’t based on me but I wrote about some of the things that I felt in LA. The frustrations. I was never an actor and I was never auditioning so I sort of extrapolated what the LA experience would be like when you’re stuck in that cycle and not getting anywhere. I wouldn’t say I’ve experienced the level of success that Tyler experiences at the end so I cannot tell you if you end up feeling empty or what.</p>

<p>I’m not gonna lie. It was a very pragmatic film. It was like <em>I don’t have a big budget. How many locations can I use like my school? Can I get a deal?</em> This sound stage where it’s a box: The house that he’s in. I had to figure out how to get that. And then the mirrors were just insane luck. Somebody had already sunk 60-100 grand into making these huge 8x6 mirrors. Mirrors are exponentially more expensive to make once you get to that size. But someone had already sunk the money into it and then we just were renting them from this company, used, for a couple hundred bucks. So, I wouldn’t have even been able to make the movie if someone hadn’t already made those props or those flats. So I was like <em>all right, I got to write this into something that I can actually make</em>. I was like, let me see what am I experiencing in LA?</p>

<p><strong>The girl and the director don’t represent anything?</strong><br />
It’s not based on anybody specific, honestly. But I met a lot of people in L.A. It’s not based on an ex-girlfriend or anything — it might’ve just been something someone told me. I met a lot of people at that point, and I think I was like, this is such a common experience. Everybody moves here, they leave their hometown, they leave everything behind, and then they expect to become stars on day one.</p>

<p><strong>But the reality hits totally differently.</strong><br />
Exactly. So I think it was more like, this is a pattern I keep seeing, if that makes sense.</p>

<p><strong>The whole thing with the dream and the script being identical, the director calling him and saying, “Hey, I feel like I’ve met you in a dream.” Does it just represent that two people with similar ideas came across one another and decided to work together?</strong><br />
I think you could say, on a surface level, yes. It’s about the symbiosis that happens when I find the right actor for the right role. There’s this feeling — like I’ve been dreaming of this script, thinking about it for so long — and then I find just the right person.</p>

<p>Yeah, I think I made it kind of mystical and trippy. I probably sprinkled a little bit of David Lynch in there and just tried to make it weird. I felt like I was experimenting with a lot of different things. <em>The Painted</em> is such a different movie — it’s more of a straight-up Hollywood horror film.</p>

<p><strong>What was the budget for The Box?</strong><br />
Oh, it was low. It was like 20k.</p>

<p><strong>What about The Painted?</strong><br />
That one I can’t disclose but it was under a million dollars.</p>

<p><strong>About The Painted:  How’d you come up with it and what led to its being developed into a feature-film?</strong><br />
So I’d been writing it for, I’d say, several years — probably seven in total. It went through so many iterations. It started as a feature screenplay, and I thought, Okay, this is a cool idea — you’re summoning a painting, and the painting’s coming to life. I hadn’t seen a horror film that really used that as its central concept.</p>

<p>I liked the idea. The only similar one I could think of was Velvet Buzzsaw, but that was more of a satire — a critique of modern art. I wanted this to feel different, more about old Victorian portraiture, the kind you find in old houses. When I was a kid, my dad had two portraits of his ancestors from a couple generations back. He told me, they’re painted so the eyes follow you around the room. And that always creeped me out. So I thought, let me draw on that — you’re in a house, and this painting… is it looking at you? Is it alive? Is it not? That sense of uncanniness felt really cool to me. That was the origin of the idea.</p>

<p>If I go way back to the true beginning, it actually started as a love story — a supernatural love story without any horror. It was kind of a weird version of the script, but that eventually morphed into the Ivor and Cassandra love story — a kind of tragic backstory that’s now just a small part of the movie, but honestly, one of my favorite parts.</p>

<p>The script went through so many permutations. Then I got a budget for it and realized I had to rewrite it, because the version I had was super expensive, with a bunch of things going on. So I simplified it — made it about just one family. That became the final version.</p>

<p>So again, working within budget constraints, you kind of have to adapt. But yeah, that’s the one that got greenlit. I edited it, did the VFX, produced it — it was a trip.</p>

<p><strong>One of your family members was an executive producer here. I thought initially that maybe it’s a family trade, but from what you’ve told me, I think you are the first person to actually go into it.</strong><br />
So, I produced it with my mom, and it was great — we had the same vision. She handled more of the producer-side responsibilities — the business side, the contracts, all that — and I was more focused on the creative producing. So there was definitely a lot of synergy. This was actually her first time producing as well.</p>

<p>For the most part, I just enlisted the help of people I knew, to the extent that I could — actors I knew, friends. My friend Mike was actually in the short film, and we became really good friends after I made that in September 2020. A few years ago, he told me his whole story — he’s like, “Yeah, I do construction in Australia.” He splits his time between Australia and the U.S., and he actually works for a luxury construction company. He’s really talented, and I realized, Wait — so you can build sets. He was like, “Easy. <em>Easy!</em>”</p>

<p>So I was like, <em>we could do The Painted</em>. It was about finding those kinds of people. He ended up building a lot of the sets we used — we had these false walls where we could have someone actually stand behind and reach through, grab someone, things like that. He helped us tremendously. We couldn’t have done the movie without him — he had the skills.</p>

<p>Overall, I’d say that’s kind of how I approached it. We had a modest budget for an ambitious project, so I thought, All right, how can I use the connections I have, or bring in people who have the skills I don’t?</p>

<p>And in some cases, I just had to learn the skills myself. With the VFX, for example — I took some classes and thought, Okay, I’ve got to get good at this, because I’m going to be the one doing it.</p>

<p><strong>Do you still work with your mom or was that the extent of it?</strong><br />
I think I’d say, for the moment, that was our big project together. It was fun to work with my mom and have that experience. I don’t know if she wants to be a film producer long term — but you never know. We might do it again.</p>

<p><strong>So, who did the art for the movie?</strong><br />
So we had Yun Nam — she’s an artist, and she did some of the special effects makeup. Some of the portraits were actually AI-generated, because by the time I was in post-production, all of that was already happening. And I remember thinking, <em>Jesus, this stuff has been around this whole time?</em> I could’ve saved months on visual effects by using some of it earlier.</p>

<p>Yeah, it was kind of a bummer — because if I made the movie now, it would probably be much creepier, at least aesthetically. What AI can do these days… I mean, this isn’t a dig at human artists at all, but human artists who paint portraits are trained to make people look healthy and attractive. And it’s really hard, as an artist, to go against all those instincts — to try to make someone look horrible and horrifying.</p>

<p><strong>So about your career: What exactly do you want your trajectory to be like? Where do you want to be?</strong><br />
I stopped planning my career a long time ago. things just don’t go according to plan is what I found. I think I would love to still be making films and, I’d love to make bigger budget action films and other genres, in addition to horror. it could be…</p>

<p><strong>Comic books?</strong><br />
It could be, yeah; it would have to be hopefully something that hasn’t been done a thousand times.</p>

<p><strong>So, no Spider-Man?</strong><br />
I’d do Spider-Man, why not? Spider-Man’s great!</p>

<p><strong>Who’s your inspiration? Like filmmakers or directors?</strong><br />
There’s a lot. I mean, the big list that always comes to mind is James Cameron, Steven Spielberg, David Fincher… I’d say Ridley Scott — I love those filmmakers. I aspire to make those bigger movies, obviously. I haven’t necessarily had that opportunity, but yeah, there’s a lot. Oh, and Stanley Kubrick!</p>

<p><strong>So, are you editing or writing these days?</strong><br />
I frankly didn’t want to be an editor after editing for so long on <em>The Painted</em>. I don’t want to do any VFX or editing. I mean, I applaud the people who can do all that stuff. Yes, I still write, and I still have some scripts, and I pitch them — I do what I can in the Hollywood sort of sphere.</p>

<p><strong>Waiting for your big break?</strong><br />
Potentially. Yeah.</p>

<p><strong>Do you know that I’m sitting in Pakistan and that’s where I watched your movie in a local theater? Did you even know your movie was being screened down here?</strong><br />
That’s crazy! I didn’t know!</p>

<p><strong>I had a feeling you might not know and that it might please you to know that?</strong><br />
I love that! I saw Qatar and UAE but I didn’t know it was in Pakistan, but that’s amazing. I honestly think more people have seen it in the Middle East than in the US.</p>

<p><strong>Thank you. This was really fun.</strong><br />
Hopefully this interview reaches people. It was fun doing at least one interview for <em>The Painted</em>, so I’m happy.</p>

<p><strong>This is the first? I think I’ve read one before — Nevermind, it was about The Box. It said <em>The Talented Mr. Sibley.</em> I love that title.</strong><br />
Yeah, that was very flattering. Thank you again. I hope it’s not too late in Pakistan right now — I wasn’t sure what time it is there.</p>

<p><strong>Anything for my favorite director. I hope we talk again soon. I don’t know under what circumstances. Maybe I’ll make up an excuse to interview you again?</strong><br />
If I make another movie, then we’ll definitely set up another interview.</p>

<p><strong><em>That</em> I would love more than anything!</strong><br />
Thanks again — and yeah, we’ll keep in touch.</p>

<p><strong>All right, man. See you.</strong><br />
Have a good one. Bye.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Movie Reviews" /><category term="Interviews" /><category term="Interview" /><category term="The Box 2021" /><category term="The Painted 2024" /><category term="Horror" /><category term="Cinema" /><category term="Sasha Sibley" /><category term="Film Critique" /><category term="Movie Experience" /><summary type="html"><![CDATA[This post is the last (for now) in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in: The Painted - Movie Review I’m glad my Wikipedia article got rejected The Box - Movie Review I interviewed Sasha Sibley, a Filmmaker (You’re here.) On 26th February 2025, I interviewed Sasha Sibley, the talented 27 year-old filmmaker from Los Angeles who made his feature-film debut in 2021 with “The Box” and his theatrical debut in 2024 with “The Painted.” The story of how and why this came to happen is scattered across the other 3 blogposts but in short: after watching “The Painted” at a local cinema, blogging about it and then failing to create a Wikipedia article for it, and learning that it was produced, directed, and written by someone who was about my age, I decided to reach out to him and be one of the first to ask him the real questions. I emailed him, we set up a call and the rest will one day be history. Tell me about yourself. Where did you grow up? I grew up in the DC area, Maryland, Rockville, but I always just say DC. Just kind of simple, suburban life. My parents were divorced, and I jumped around a bit between their houses, but didn’t move around too much. How did you get into filmmaking? I always had the interest or the itch to do movies for whatever reason. I just really loved movies. My dad showed me a lot of rated movies when I was a kid; rated action movies like The Matrix etc.., which my mom was never happy about, but they were just the coolest things I’d ever seen, and I wanted to emulate that somehow. My dad had this tape video camera and I just started, filming stuff. This was early 2000s. When I was 10-12 I started getting my friends together and we started making movies and putting them on YouTube to maybe get 56 views or something. So, that was my childhood. And then I wanted to pursue it professionally so I kept building to the extent that I tried to apply to film festivals. I was set on moving to Hollywood, so I only applied to colleges in LA and ended up getting into LMU — which was a great experience, a great film school. I went there for four years and did a dual degree in screenwriting and production. I learned a lot. I had an award-winning short film (The Painted) and nobody cared because it was the pandemic. I made The Box. I don’t like to talk about it as much. It’s not that great. I watched it today. It was great. Thank you. I think there were a lot of (production) limitations on that film. I made it in college and, the script was one thing and what I shot was another and then I had to edit it and it kind of found its final form in the editing room which was not what I had originally written. If you read the script, you’d be like, “Whoa, this had very different things going on.” But so many things I was just like okay we can’t shoot this. We can’t do that. There was supposed to be more going on in the box that he’s in. It’s funny because now with AI and all this stuff, maybe some of those weird ideas I had could have been realized. About that: What are your thoughts on the latest advancements in AI within your industry, and how do you plan to leverage them? You can’t ignore it. It’s definitely taking over. I am already playing with some of these tools. All the VFX that I had to do for The Painted, I learned myself. I had to do Houdini and Maya. I’ve always used After Effects, so that was easy. I’ve been using that since I was a kid. But some of the 3D software, was a trip. I took a couple classes and there’s some real, geniuses that work in visual effects. I don’t claim to be one of them, but I had to learn. I was like, All right, I’m gonna focus on fluid simulations and try to get decent at that so I can do some of the effects in the painted. because it’s like the low budget mentality. I think you’re pretty good at the editing part. I would assume that you edited the short film yourself but hired professionals for the feature-film? No, I still edited the feature as well. From the sound of it, you never wanted to be an actor. Why did you rule out acting so early on?]]></summary></entry><entry><title type="html">Why did Anders Hejlsberg choose Go for Typescript instead of C# or Rust?</title><link href="https://anasismail.com/why-did-anders-hejlsberg-choose-go-for-typescript-instead-of-csharp-or-rust/" rel="alternate" type="text/html" title="Why did Anders Hejlsberg choose Go for Typescript instead of C# or Rust?" /><published>2025-03-16T00:00:00+00:00</published><updated>2025-03-16T00:00:00+00:00</updated><id>https://anasismail.com/typscript-go</id><content type="html" xml:base="https://anasismail.com/why-did-anders-hejlsberg-choose-go-for-typescript-instead-of-csharp-or-rust/"><![CDATA[<p>Ever since Anders Hejlsberg made the announcement for Project Corsa, aka Strada, aka typescript-go, there’s been a lot of unrest surrounding their decision to use Go.</p>

<p>On one hand, we have the Rust fans demanding to know why Rust wasn’t chosen for this, considering the popularity of Rust as the de facto modern low-level language.</p>

<p>The dev lead of Typescript, Ryan Cavanaugh himself, took to Reddit  to address the first question<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>. He said, and I quote:</p>

<p><em>“In the end we had two options - do a complete from-scrach rewrite in Rust, which could take years and yield an incompatible version of TypeScript that no one could actually use, or just do a port in Go and get something usable in a year or so and have something that’s extremely compatible in terms of semantics and extremely competitive in terms of performance.”</em></p>

<p>On the other hand we have the C# community asking the real questions: Why did the lead architect of C# sit by such a decision? This one, was answered by Anders Hejlsberg himself in an interview with Michigan TypeScript<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>:</p>

<p><em>“C# was considered but Go is definitely the lowest-level language we can get to and still have automatic garbage-collection […] C# is byte-code first and while it has some AOT, it’s not available on all platforms and it doesn’t have decades of hardening and wasn’t engineered that way to begin with. Go has a little more expressiveness when it comes to data-structures and inline structs. Our JS codebase is written in a highly functional style with very few classes which is also a characteristic of Go […] we would have had to switch to an OOP paradigm to switch to C# […] ultimately that was the path of least resistance.”</em></p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>Link to Ryan’s reddit comment: https://lnkd.in/dqHx6gj3 <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>Link to Anders’ interview: https://lnkd.in/dUJiwEzv <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Anas Ismail Khan</name></author><category term="Uncategorized" /><category term="Anders Hejlsberg" /><category term="Ryan Cavanaugh" /><category term="Typescript" /><category term="Golang" /><category term="Rust" /><category term="Zig" /><category term="Corsa" /><category term="Strada" /><category term="Microsoft" /><category term="C#" /><category term="low-level language" /><category term="compiler" /><category term="transpiler" /><summary type="html"><![CDATA[Ever since Anders Hejlsberg made the announcement for Project Corsa, aka Strada, aka typescript-go, there’s been a lot of unrest surrounding their decision to use Go. On one hand, we have the Rust fans demanding to know why Rust wasn’t chosen for this, considering the popularity of Rust as the de facto modern low-level language. The dev lead of Typescript, Ryan Cavanaugh himself, took to Reddit to address the first question1. He said, and I quote: “In the end we had two options - do a complete from-scrach rewrite in Rust, which could take years and yield an incompatible version of TypeScript that no one could actually use, or just do a port in Go and get something usable in a year or so and have something that’s extremely compatible in terms of semantics and extremely competitive in terms of performance.” On the other hand we have the C# community asking the real questions: Why did the lead architect of C# sit by such a decision? This one, was answered by Anders Hejlsberg himself in an interview with Michigan TypeScript2: “C# was considered but Go is definitely the lowest-level language we can get to and still have automatic garbage-collection […] C# is byte-code first and while it has some AOT, it’s not available on all platforms and it doesn’t have decades of hardening and wasn’t engineered that way to begin with. Go has a little more expressiveness when it comes to data-structures and inline structs. Our JS codebase is written in a highly functional style with very few classes which is also a characteristic of Go […] we would have had to switch to an OOP paradigm to switch to C# […] ultimately that was the path of least resistance.” Link to Ryan’s reddit comment: https://lnkd.in/dqHx6gj3 &#8617; Link to Anders’ interview: https://lnkd.in/dUJiwEzv &#8617;]]></summary></entry><entry><title type="html">The Box (2021) - Movie Review</title><link href="https://anasismail.com/the-box-2021-movie-review/" rel="alternate" type="text/html" title="The Box (2021) - Movie Review" /><published>2025-03-15T00:00:00+00:00</published><updated>2025-03-15T00:00:00+00:00</updated><id>https://anasismail.com/the-box-movie-review</id><content type="html" xml:base="https://anasismail.com/the-box-2021-movie-review/"><![CDATA[<blockquote>
  <p>This post is the third in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in:</p>
  <ol>
    <li><a href="https://anasismail.com/the-painted-2024-movie-review/">The Painted - Movie Review</a></li>
    <li><a href="https://anasismail.com/im-glad-my-wikipedia-article-got-rejected/">I’m glad my Wikipedia article got rejected</a></li>
    <li><a href="https://anasismail.com/the-box-2021-movie-review/">The Box - Movie Review</a> (You’re here.)</li>
    <li><a href="https://anasismail.com/i-interviewed-sasha-sibley-a-filmmaker/">I interviewed Sasha Sibley, a Filmmaker</a></li>
  </ol>
</blockquote>

<p>This is neither my first nor last post concerning Sasha Sibley, the aspiring filmmaker from Los Angeles, scarcely older than myself, whom I recently had the pleasure of interviewing after being fortunate enough to watch his second feature film, The Painted (2024), at a local cinema. Right after getting home from said cinema, I’d discovered Sasha’s first feature film: The Box.</p>

<p>In his response to my initial email, Sasha had, matter-of-factly, described it as “ULB” (stands, obviously, for ultra-low-budget) and that he’d made it while he was still in college. Naturally, that had made me all the more excited to watch it. I had already seen the trailer and loved it. It was intriguing, sufficiently cryptic, and deceptive, conveying just the right amount of information and leaving the viewer wanting more. It was well-edited and had aroused my curiosity. No complaints there.</p>

<p>The movie lived up to the expectations. It employed some interesting storytelling devices. It started off with a junior actor, Tyler, at an audition that you almost immediately begin to care for. Interestingly, there’s also a narrator whose purpose or identity is never directly revealed. There’s parallel narratives. You follow the actor through some ups and downs, but mainly downs, leading up to his first big break. You sympathize with his loneliness, and you feel his frustration as he struggles to pay rent. You watch him giving it his all and you root for him.</p>

<p>You also watch him constantly have this recurring white torture dream that’s not only clearly symbolic of the high life awaiting him in his ideal future but also quite literally the script of the movie he’s trying to get cast in. This connection was left mostly unexplained. My best guess is that it just represented that like most actors who make it big, Tyler finally found a script that read like it was literally written for him and him alone. Later on, this idea is solidified, when the director of the movie turns out to be a guy he met in one iteration of his recurring dream and they both have a moment, over the phone, where they feel as if they’ve met each other before and the director exclaims that Tyler isn’t just a perfect candidate for the movie but the only guy he wants to make the movie with.</p>

<p>We also see an older, bearded, version of him talking to a therapist about the dream. This narrative seems mostly unnecessary and didn’t appear much except for at the very start of the movie and the very end. I think the only purpose it really served was to show us that Tyler eventually makes it big. I think by the end we see Tyler embracing his “white torture” lifestyle and maybe the purpose of the therapist sequence is just to show us that his struggles didn’t immediately end when he got his big break. They just shifted from being financial in nature to psychological.</p>

<p>The ending was a little underwhelming, but it was also perfect. I don’t think I wanted it any other way. Nothing ridiculous or unexpected happens, no big reveal. In the same mellow tone that the movie maintained throughout, we realize that Tyler finally got what he wanted and we’re happy for him. It’s implied that he’s famous but possibly only moderately. It’s clear that he has fans and following but he may not necessarily be a sensation.</p>

<p>What I loved about the movie was how perfectly paced it was. It wasn’t shot in real-time, yet it brilliantly captured the slow, deliberate hand of time—the way life unfolds gradually, almost imperceptibly, until you suddenly realize how far you’ve come. The things that were left unexplained suddenly didn’t even matter to me anymore, almost as if it was symbolic of how life doesn’t always give you clear answers, yet you move forward anyway.</p>

<p>It’s not often that you traverse backward through a filmmaker’s career and find yourself even more impressed, but Sasha Sibley has managed to achieve that. This is in no way a jab at his recent and equally brilliant production, but rather a testament to the strength of his earlier work. His past films don’t feel like mere stepping stones toward mastery—they already showcase a level of skill, storytelling, and vision that many directors spend years trying to refine. Watching his trajectory, it’s clear that his evolution isn’t about reinvention, but about sharpening what was already exceptional. His consistency as a filmmaker is just as impressive as his growth.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Movie Reviews" /><category term="Movie Review" /><category term="The box" /><category term="Horror" /><category term="Cinema" /><category term="Sasha Sibley" /><category term="Film Critique" /><category term="2024 Movies" /><category term="Movie Experience" /><category term="Film Analysis" /><summary type="html"><![CDATA[This post is the third in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in: The Painted - Movie Review I’m glad my Wikipedia article got rejected The Box - Movie Review (You’re here.) I interviewed Sasha Sibley, a Filmmaker This is neither my first nor last post concerning Sasha Sibley, the aspiring filmmaker from Los Angeles, scarcely older than myself, whom I recently had the pleasure of interviewing after being fortunate enough to watch his second feature film, The Painted (2024), at a local cinema. Right after getting home from said cinema, I’d discovered Sasha’s first feature film: The Box. In his response to my initial email, Sasha had, matter-of-factly, described it as “ULB” (stands, obviously, for ultra-low-budget) and that he’d made it while he was still in college. Naturally, that had made me all the more excited to watch it. I had already seen the trailer and loved it. It was intriguing, sufficiently cryptic, and deceptive, conveying just the right amount of information and leaving the viewer wanting more. It was well-edited and had aroused my curiosity. No complaints there. The movie lived up to the expectations. It employed some interesting storytelling devices. It started off with a junior actor, Tyler, at an audition that you almost immediately begin to care for. Interestingly, there’s also a narrator whose purpose or identity is never directly revealed. There’s parallel narratives. You follow the actor through some ups and downs, but mainly downs, leading up to his first big break. You sympathize with his loneliness, and you feel his frustration as he struggles to pay rent. You watch him giving it his all and you root for him. You also watch him constantly have this recurring white torture dream that’s not only clearly symbolic of the high life awaiting him in his ideal future but also quite literally the script of the movie he’s trying to get cast in. This connection was left mostly unexplained. My best guess is that it just represented that like most actors who make it big, Tyler finally found a script that read like it was literally written for him and him alone. Later on, this idea is solidified, when the director of the movie turns out to be a guy he met in one iteration of his recurring dream and they both have a moment, over the phone, where they feel as if they’ve met each other before and the director exclaims that Tyler isn’t just a perfect candidate for the movie but the only guy he wants to make the movie with. We also see an older, bearded, version of him talking to a therapist about the dream. This narrative seems mostly unnecessary and didn’t appear much except for at the very start of the movie and the very end. I think the only purpose it really served was to show us that Tyler eventually makes it big. I think by the end we see Tyler embracing his “white torture” lifestyle and maybe the purpose of the therapist sequence is just to show us that his struggles didn’t immediately end when he got his big break. They just shifted from being financial in nature to psychological. The ending was a little underwhelming, but it was also perfect. I don’t think I wanted it any other way. Nothing ridiculous or unexpected happens, no big reveal. In the same mellow tone that the movie maintained throughout, we realize that Tyler finally got what he wanted and we’re happy for him. It’s implied that he’s famous but possibly only moderately. It’s clear that he has fans and following but he may not necessarily be a sensation. What I loved about the movie was how perfectly paced it was. It wasn’t shot in real-time, yet it brilliantly captured the slow, deliberate hand of time—the way life unfolds gradually, almost imperceptibly, until you suddenly realize how far you’ve come. The things that were left unexplained suddenly didn’t even matter to me anymore, almost as if it was symbolic of how life doesn’t always give you clear answers, yet you move forward anyway. It’s not often that you traverse backward through a filmmaker’s career and find yourself even more impressed, but Sasha Sibley has managed to achieve that. This is in no way a jab at his recent and equally brilliant production, but rather a testament to the strength of his earlier work. His past films don’t feel like mere stepping stones toward mastery—they already showcase a level of skill, storytelling, and vision that many directors spend years trying to refine. Watching his trajectory, it’s clear that his evolution isn’t about reinvention, but about sharpening what was already exceptional. His consistency as a filmmaker is just as impressive as his growth.]]></summary></entry><entry><title type="html">I’m glad my Wikipedia article got rejected</title><link href="https://anasismail.com/im-glad-my-wikipedia-article-got-rejected/" rel="alternate" type="text/html" title="I’m glad my Wikipedia article got rejected" /><published>2025-03-08T00:00:00+00:00</published><updated>2025-03-08T00:00:00+00:00</updated><id>https://anasismail.com/im-glad-my-Wikipedia-article-got-rejected</id><content type="html" xml:base="https://anasismail.com/im-glad-my-wikipedia-article-got-rejected/"><![CDATA[<blockquote>
  <p>This post is the second in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in:</p>
  <ol>
    <li><a href="https://anasismail.com/the-painted-2024-movie-review/">The Painted - Movie Review</a></li>
    <li><a href="https://anasismail.com/im-glad-my-wikipedia-article-got-rejected/">I’m glad my Wikipedia article got rejected</a> (You’re here.)</li>
    <li><a href="https://anasismail.com/the-box-2021-movie-review/">The Box - Movie Review</a></li>
    <li><a href="https://anasismail.com/i-interviewed-sasha-sibley-a-filmmaker/">I interviewed Sasha Sibley, a Filmmaker</a></li>
  </ol>
</blockquote>

<p>My second last post was a review of The Painted (2024), a low-budget film lacking a Wikipedia article due to limited marketing and visibility. As one of the first people to write about it, I also ended up creating its Wikipedia page—my first-ever contribution—which, despite being doomed to perpetual draft status, led to some interesting experiences that I’ll share in this post.</p>

<p>The draft had gotten rejected for having too few references and having low <em>notability</em>. It was hard to find even basic information about the movie outside of IMDB and Letterboxd, both of which, being community maintained, aren’t considered strong sources for references.</p>
<ul>
  <li>I tried different combinations of keywords and went as far as the last page of google’s search results to make sure I didn’t miss anything.</li>
  <li>I visited Wikipedia articles for other movies to find any non-indexed but standard credible sources that might also have information for this movie. e.g. BBFC</li>
  <li>I updated and resubmitted my draft many times and the moderators even acknowledged that there simply didn’t exist any more sources of information for the movie but that didn’t change anything. My article will retain its draft status until more blogs write about the movie.</li>
</ul>

<p>However, in the process, I ended up learning a lot about the people behind the film. I learned that Sasha Sibley – the producer, director and writer –  was scarcely older than myself, and that the executive producer was also named Sibley and therefore was clearly a family member <del>(his sister, perhaps?)</del>. I learned that Sasha was LA based and that this was his second feature-film and that “The Painted” had originally been a short film that was released around covid. I visited the websites of the other crew members, e.g. <a href="https://petertbui.com/">Peter Bui</a>, their cinematographer with a mechanical degree. I also learned from a not too reliable source that this movie had been in the works for a very long time.</p>

<p>Suddenly had a newfound appreciation and love for the movie I had so brutally posted a review about a few days before. I felt like I <em>knew</em> the crew and was rooting for them. I was curious too. So I did what anyone else would have done in the same position: I emailed Sasha, telling him I had the pleasure of watching and reviewing his movie and that I would love to learn more about it. He replied:</p>

<blockquote>
  <p>[…]I am very flattered – and that was a nice, accurate if not glowing review […] I’m happy to hop on a call if you want any more info or an interview[…]</p>
</blockquote>

<p>That’s right. I reviewed a movie and the director of the movie read my review.</p>

<p>I took him up on that interview offer and excitedly waited for the call which turned out to be an absolute pleasure, of course. Sasha Sibley was a delight and one of the nicest and most humble people I have ever met. We talked a lot, about his background, inspiration, work, and even budgets. That information, however, deserves a post of its own that I will post shortly. For now, all I can say is: I’m glad I spent all that time writing that Wikipedia article.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Interviews" /><category term="Wikipedia article draft rejected" /><category term="Sasha Sibley" /><category term="Svetlana Sibley" /><category term="Peter Bui" /><category term="Horror" /><category term="Low Budget" /><category term="Movie" /><category term="Film" /><category term="Filmmaker" /><category term="Director" /><category term="Interview" /><summary type="html"><![CDATA[This post is the second in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in: The Painted - Movie Review I’m glad my Wikipedia article got rejected (You’re here.) The Box - Movie Review I interviewed Sasha Sibley, a Filmmaker My second last post was a review of The Painted (2024), a low-budget film lacking a Wikipedia article due to limited marketing and visibility. As one of the first people to write about it, I also ended up creating its Wikipedia page—my first-ever contribution—which, despite being doomed to perpetual draft status, led to some interesting experiences that I’ll share in this post. The draft had gotten rejected for having too few references and having low notability. It was hard to find even basic information about the movie outside of IMDB and Letterboxd, both of which, being community maintained, aren’t considered strong sources for references. I tried different combinations of keywords and went as far as the last page of google’s search results to make sure I didn’t miss anything. I visited Wikipedia articles for other movies to find any non-indexed but standard credible sources that might also have information for this movie. e.g. BBFC I updated and resubmitted my draft many times and the moderators even acknowledged that there simply didn’t exist any more sources of information for the movie but that didn’t change anything. My article will retain its draft status until more blogs write about the movie. However, in the process, I ended up learning a lot about the people behind the film. I learned that Sasha Sibley – the producer, director and writer – was scarcely older than myself, and that the executive producer was also named Sibley and therefore was clearly a family member (his sister, perhaps?). I learned that Sasha was LA based and that this was his second feature-film and that “The Painted” had originally been a short film that was released around covid. I visited the websites of the other crew members, e.g. Peter Bui, their cinematographer with a mechanical degree. I also learned from a not too reliable source that this movie had been in the works for a very long time. Suddenly had a newfound appreciation and love for the movie I had so brutally posted a review about a few days before. I felt like I knew the crew and was rooting for them. I was curious too. So I did what anyone else would have done in the same position: I emailed Sasha, telling him I had the pleasure of watching and reviewing his movie and that I would love to learn more about it. He replied: […]I am very flattered – and that was a nice, accurate if not glowing review […] I’m happy to hop on a call if you want any more info or an interview[…] That’s right. I reviewed a movie and the director of the movie read my review. I took him up on that interview offer and excitedly waited for the call which turned out to be an absolute pleasure, of course. Sasha Sibley was a delight and one of the nicest and most humble people I have ever met. We talked a lot, about his background, inspiration, work, and even budgets. That information, however, deserves a post of its own that I will post shortly. For now, all I can say is: I’m glad I spent all that time writing that Wikipedia article.]]></summary></entry><entry><title type="html">Oops, I did it again</title><link href="https://anasismail.com/oops-i-did-it-again/" rel="alternate" type="text/html" title="Oops, I did it again" /><published>2025-02-20T00:00:00+00:00</published><updated>2025-02-20T00:00:00+00:00</updated><id>https://anasismail.com/oops-i-did-it-again</id><content type="html" xml:base="https://anasismail.com/oops-i-did-it-again/"><![CDATA[<blockquote>
  <p>Also check out:</p>
  <ol>
    <li><a href="https://anasismail.com/how-to-work-for-microsoft-without-getting-hired/">How to work for Microsoft without getting hired</a></li>
    <li><a href="https://anasismail.com/third-times-the-charm/">Third time’s the charm</a></li>
  </ol>
</blockquote>

<p>A month ago, I wrote about my first contribution to an open-source, Microsoft-maintained, project, from June 2024, that got merged by November 2024. What I didn’t mention at that time was that <em>that</em> wasn’t my only contribution to that project. Shortly after that pull request got merged, I opened a second one. Once again, I created an issue, to report a bug, and a pull request, to solve the bug, back to back. However, this time I made them in the correct order.</p>

<p>The same project from the last article required me to enable ETags on the OData API that I was working on. An ETag is an HTTP header that’s used for cache-invalidation and concurrency control. It’s basically like a hash representing the state of the resource/data at said endpoint. The client may use it as a cache key and the server can use it for concurrency control when multiple requests attempt to update the resource at the same time. ETag values are based on a special field/column on the resource record that changes every time the record is updated.</p>

<p>Lets talk for a moment about how ETags help with concurrency control. <!--more-->There’s a concept called <em>Optimistic Concurrency Control</em>. It’s a non-locking mechanism that gets its name from the optimism of assuming that conflicts are very unlikely to occur. I like to think that it gets its name from the assumption that the user would be responsible enough to include the <code class="language-plaintext highlighter-rouge">if-match</code> header in the update request. This header, which holds the last known ETag value known by the client, is compared with the current value on the resource to detect conflicts.</p>

<p>Caching works in a similar manner. Client passes the ETag in a header called <code class="language-plaintext highlighter-rouge">if-none-match</code> in a GET request. If the value matches, the server sends back a <code class="language-plaintext highlighter-rouge">304 Not Modified</code> status. Otherwise it sends back the whole record. This reduces bandwidth usage and speeds up the response time.</p>

<p>In C#, a popular convention, but by no means a rule, for these concurrency check fields is to use a <code class="language-plaintext highlighter-rouge">byte[]</code> field called <code class="language-plaintext highlighter-rouge">RowVersion</code> annotated with a <code class="language-plaintext highlighter-rouge">[Timestamp]</code> or <code class="language-plaintext highlighter-rouge">[ConcurrencyCheck]</code> attribute. The <code class="language-plaintext highlighter-rouge">Microsoft.AspNetCore.OData</code> package has a lot of abstraction built in to simplify the generation and validation of ETags. If your model has concurrency fields set up correctly, it automatically picks them up and handles conversions. It even goes one step further and adds a field called <code class="language-plaintext highlighter-rouge">@odata.etag</code> to the JSON response, rather than just putting it in the headers. <em>And even more importantly</em>, it gives you a these two prebuilt methods for computing and comparing ETags:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>queryOptions.IfMatch.ApplyTo(IQueryable query)
</code></pre></div></div>

<p>and</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>queryOptions.IfNoneMatch.ApplyTo(IQueryable query)
</code></pre></div></div>

<p>The <code class="language-plaintext highlighter-rouge">ApplyTo</code> method, which exists on the <code class="language-plaintext highlighter-rouge">ETag</code> class, has a <code class="language-plaintext highlighter-rouge">foreach</code> loop that iterates over all the concurrency properties and compares them one by one with the values on the actual record. As you might have already guessed, for each field, it was performing a simple equality comparison. Well and good, until you introduce array fields like 90% of the users like to. Meaning, the <code class="language-plaintext highlighter-rouge">IfMatch</code> and <code class="language-plaintext highlighter-rouge">IfNoneMatch</code> headers were definitely not having the intended effect for what was undoubtedly the most popular use-case.</p>

<p>Initially, I thought it was just me and that I had configured something incorrectly. To make sure, I decided to take a look at the existing E2E tests for the ETag class. Surprisingly, not a single field in the model for the test was of the type <code class="language-plaintext highlighter-rouge">byte[]</code>. I proceeded to add one and sure enough, the test failed immediately. I went back to the <code class="language-plaintext highlighter-rouge">ETag.ApplyTo</code> method and added a check inside the loop for array types. I added some code to handle the array condition and guess what? The tests passed.</p>

<p>I opened an <a href="https://github.com/OData/AspNetCoreOData/issues/1332">issue</a> and a <a href="https://github.com/OData/AspNetCoreOData/pull/1334">pull request</a> immediately. I added detailed instructions for reproducing the bug using the existing E2E ETag Test code. This happened at the very end of October. Since the team was busy creating releases for the already merged bugs, it took them as late as January to actually respond. They asked for more tests and I explained how I brilliantly modified an existing one. I thought they’d have a problem with me modifying an existing test since I myself didn’t feel all that great about it but all I had really done was add a new field to the test and make sure that all the existing test cases were ignoring that field except for the one test case that actually needed it.</p>

<p>Luckily, a few days from that, they approved my changes and then another few days after that, they merged it. They are yet to make a release that includes this fix; <del>because including this fix, there’s hardly been any changes to that branch</del> however, I’m hoping it’s just around the corner because we are forced to use a fork in our project, instead of the NuGet package, solely because of this bug.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Uncategorized" /><category term="Open Source" /><category term="Microsoft" /><category term="OData" /><category term="C#" /><category term="CSharp" /><category term="Bug Fixing" /><category term="ASP.NET Core" /><category term="Entity Framework Core" /><category term="Software Development" /><category term="Programming" /><category term="Contribution" /><summary type="html"><![CDATA[Also check out: How to work for Microsoft without getting hired Third time’s the charm A month ago, I wrote about my first contribution to an open-source, Microsoft-maintained, project, from June 2024, that got merged by November 2024. What I didn’t mention at that time was that that wasn’t my only contribution to that project. Shortly after that pull request got merged, I opened a second one. Once again, I created an issue, to report a bug, and a pull request, to solve the bug, back to back. However, this time I made them in the correct order. The same project from the last article required me to enable ETags on the OData API that I was working on. An ETag is an HTTP header that’s used for cache-invalidation and concurrency control. It’s basically like a hash representing the state of the resource/data at said endpoint. The client may use it as a cache key and the server can use it for concurrency control when multiple requests attempt to update the resource at the same time. ETag values are based on a special field/column on the resource record that changes every time the record is updated. Lets talk for a moment about how ETags help with concurrency control.]]></summary></entry><entry><title type="html">The Painted (2024) - Movie Review</title><link href="https://anasismail.com/the-painted-2024-movie-review/" rel="alternate" type="text/html" title="The Painted (2024) - Movie Review" /><published>2025-02-09T00:00:00+00:00</published><updated>2025-02-09T00:00:00+00:00</updated><id>https://anasismail.com/the-painted-2024-movie-review</id><content type="html" xml:base="https://anasismail.com/the-painted-2024-movie-review/"><![CDATA[<blockquote>
  <p>This post is the first in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in:</p>
  <ol>
    <li><a href="https://anasismail.com/the-painted-2024-movie-review/">The Painted - Movie Review</a> (You’re here.)</li>
    <li><a href="https://anasismail.com/im-glad-my-wikipedia-article-got-rejected/">I’m glad my Wikipedia article got rejected</a></li>
    <li><a href="https://anasismail.com/the-box-2021-movie-review/">The Box - Movie Review</a></li>
    <li><a href="https://anasismail.com/i-interviewed-sasha-sibley-a-filmmaker/">I interviewed Sasha Sibley, a Filmmaker</a></li>
  </ol>
</blockquote>

<p>I am not a fan of cinemas. In fact, I’m quite the opposite. I particularly detest going to cinemas. I prefer watching movies in the comfort of my own home, with my own popcorn and unlimited condiments from my fridge for my hotdog. The only times I go to a cinema are when I’m forced into it.</p>

<p>Today was one of those occasions. While movies that I would naturally find more interesting like Mufasa, Sonic 3 and Brave New World were playing, I couldn’t buy a ticket to any of them because they belong to a class of movies that me and my sister always watch together. It’s sacred. Since she wasn’t with me today, it came down to this bunch:<!--more--></p>
<ul>
  <li>The Painted</li>
  <li>Wolf Man</li>
  <li>The Count of Monte Cristo</li>
  <li>Jeanne Du Barry</li>
</ul>

<p>Jeanne Du Barry is French and while it seemed like the perfect opportunity for me to test my B1 French skills (yes, I have a diploma,) it just didn’t seem like the best thing to watch in a cinema with other people. A friend told me that The Count of Monte Cristo was easily the best movie in the list but I knew that it wasn’t the right choice either since it wasn’t a horror movie and that’s what my wife wanted to watch. Came down to Wolf Man and The Painted. My  friend told me that he had already seen Wolf Man and that it was good enough, not great, and even though he hadn’t seen The Painted, he was confident that Wolf Man would win easily.</p>

<p>Now here’s the problem. Days before I even began this analysis, we had already decided to watch The Painted. However, I had begun to question that choice when I realized that googling it mostly yielded results for other movies with similar names because The Painted didn’t even have a Wikipedia article despite having being out for a couple of months.</p>

<p>Before we proceed, let me tell you a tiny story: Some years ago, me and my sister decided to finally watch The Boy. It had been out for quite some time by then and we’d both seen the trailer for it and<del>, I kid you not,</del> we had both thought that it might be too scary for us and had chosen not to watch it. Until the monumental day when we finally took the plunge. Today, for me and my sister, it’s one of our best memories. We enjoyed that movie in a way it was never meant to be enjoyed: We found it to be ridiculously hilarious.</p>

<p>As I relived those fond memories, I decided to take a chance with The Painted <strong><em>if</em></strong> its trailer turned out to be as intriguing as that of The Boy. Thankfully, the trailer was easy to find and it did indeed seem to promise as fun an experience as the boy. Paintings coming to life? Sold. If anything, this is as close as it gets to a movie about a doll coming to life without being a complete ripoff. I shared these observations with my wife and she agreed that this was the right thing to do.</p>

<p>The next day, we made it to the cinema early noon to catch the first show of the day for The Painted. We reached the ticket counter 5 minutes before movie was scheduled to start, only for them to inform us that we were the first ones in and that a movie needs to sell at least six tickets to be screened. We stood there waiting for 4 other idiots to join us. Luckily, two groups of two arrived shortly afterwards and the ticket counter guy was pleased to inform us that the movie started on time. <del>Only, we were still downstairs thanks to him keeping us there. Makes no sense right? First they make us wait then they start the movie before even punching our tickets.</del></p>

<p>The starting was pretty textbook: Family, kids, making ends meet, getting lucky and moving to a nice house that under normal circumstances would have been unaffordable. As usual, initially the family members individually experience the supernatural and, like in most movies, don’t make a lot of it as a family. However, one distinction here was that everyone did seem to believe that nobody was lying but, at the same time, didn’t really seem all that inclined to do anything about it.</p>

<p>The supernatural scenes early on are well shot, good camera angles, not too many effects. And the music really plays a <em>major role</em>. I’d say some of the scenes wouldn’t even be scary if it wasn’t for the music, but since the music <em>is</em> present, the scenes get a good score in my opinion. No pun intended. During the latter half, however, some of the occurrences missed it by a few inches. They weren’t necessarily bad. The visual effects, while not state-of-the-art, were still good enough if not great, the events themselves were not even remotely out of context or exaggerated. They just weren’t really scary.</p>

<p>The story wasn’t bad at all. The idea had great potential and while you’d expect there to have already been lots of movies about paintings coming to life, a quick google search would tell you that this domain was actually surprisingly untapped before this. I do however think the execution had a <em>lot of room</em> for improvement. The ending was a bit dragged out for the sake of constant suspense and while there was a slight unpredictability factor, nothing really was much of a surprise. The lore behind the happenings was only acceptable and cliche with some people in the past doing some really bad things for some kind of personal gain. The rituals were underimagined but I don’t blame anyone for not having a deeper knowledge of how a satanic ritual should appear on screen.</p>

<p>Lastly, the acting: Definitely missed a mark or two but was still very far from bad. In fact, I am not even sure if it’s the actors or the directors who should take the blame here. I would even go as far as to say that the younger actors showed great potential.</p>

<p>Overall, I think it was a fun experience. I enjoyed the movie both in the way it was meant to be enjoyed and also in the way it wasn’t. <del>(Hint: The Boy)</del> I think Sasha Sibley has shown great potential here. As of now, I am unable to find much information about this movie so I am not sure how high the budget for this was, but I am gonna assume two things here:</p>
<ol>
  <li>The budget was far from astronomical.</li>
  <li>The movie probably easily exceeds expectations for whatever the budget actually was.</li>
</ol>

<p>I wish Sasha the best of luck with his future projects and might even keep an eye out for them and see how his work progresses. I recently discovered that this movie was preceded by a short film by the same name and I plan to watch and review that. Same goes for his first feature-film, The Box. I also went ahead and created a Wikipedia article for this movie since it doesn’t seem to exist and might be helpful for other people like me who want to read a thing or two before buying the ticket. Sadly, I am being met with a little friction by the moderators that I am trying to overcome.</p>]]></content><author><name>Anas Ismail Khan</name></author><category term="Movie Reviews" /><category term="Movie Review" /><category term="The Painted" /><category term="Horror" /><category term="Cinema" /><category term="Sasha Sibley" /><category term="Film Critique" /><category term="2024 Movies" /><category term="Movie Experience" /><category term="Film Analysis" /><summary type="html"><![CDATA[This post is the first in a series of posts about Sasha Sibley and his works. If you’re curious, here’s the order they appeared in: The Painted - Movie Review (You’re here.) I’m glad my Wikipedia article got rejected The Box - Movie Review I interviewed Sasha Sibley, a Filmmaker I am not a fan of cinemas. In fact, I’m quite the opposite. I particularly detest going to cinemas. I prefer watching movies in the comfort of my own home, with my own popcorn and unlimited condiments from my fridge for my hotdog. The only times I go to a cinema are when I’m forced into it. Today was one of those occasions. While movies that I would naturally find more interesting like Mufasa, Sonic 3 and Brave New World were playing, I couldn’t buy a ticket to any of them because they belong to a class of movies that me and my sister always watch together. It’s sacred. Since she wasn’t with me today, it came down to this bunch:]]></summary></entry></feed>