Skip to content
DevMeme
4868 of 7435
GitHub Copilot's pedantic refusal to acknowledge templating as programming
AI ML Post #5329, on Aug 4, 2023 in TG

GitHub Copilot's pedantic refusal to acknowledge templating as programming

Why is this AI ML meme funny?

Level 1: LEGO Builder Blues

Imagine you spent all day building a LEGO castle from a kit. You carefully follow all the steps, snap together hundreds of bricks, and the castle looks great. You're proud because, hey, you built it! Now picture an older kid walks by, looks at your LEGO creation and says, "Hmph, that’s not real building. You just used LEGO bricks, not real wood and cement." You’d probably frown and think, "But I did build something..."

In this meme, the front-end developer is like that LEGO builder. They assembled a web page using HTML and CSS (their “castle”), and asked for help to decorate it (style it nicely). The AI (Copilot) is like that older kid saying, “What you did isn’t real building (programming) in the traditional sense.” The developer is left confused, just like you would be if someone told you your awesome LEGO castle doesn’t count as a real building. It’s funny because the claim is so silly: we all know a LEGO castle is a real creation, and in the same way, writing HTML and CSS is a real part of making software. The humor comes from that absurd moment where a usually helpful robot basically tells a programmer that their work isn’t “real” — which is as ridiculous as saying a LEGO castle isn’t a real accomplishment.

Level 2: Template vs Code 101

Let’s break down what’s happening in simpler terms. Django is a popular Python web framework, and one of its features is a templating language for generating HTML pages. A Django template file contains mostly HTML (the structure of web pages with <div>, <button>, etc.), but it also supports special markers like {% for ... %} and {{ variable }}. These let developers insert loops and dynamic content. For example, in the meme code, {% for letter in alphabet %} with {{ letter }} means “for each letter in the list called alphabet, output a button showing that letter.” This is indeed code, but it’s a limited kind of code designed just for producing web page content. It’s not full Python; you can’t do everything in a template (you wouldn’t write complex game logic or database queries purely in HTML files). Think of it as a mini-language inside your HTML that Django uses to fill in values and repeat elements when generating the final page.

Now, the user’s request: “Create a basic BEM-like SCSS styling for this template. Ignore utility classes.” They want the AI to write some CSS styles (in SCSS format) for the HTML classes used in that template, following the BEM naming convention. BEM (Block-Element-Modifier) is a way to name CSS classes so they’re organized and readable. In the snippet, class names like glossar__filter (which looks like a “Block” named "glossar" with an Element "filter") and glossar__filter_text (an Element – the text span – within that filter block) follow BEM style. The user has a bunch of these HTML elements (buttons, spans, headings), and they want matching SCSS code that would style them consistently. SCSS is a developer-friendly extension of CSS that allows nesting and variables to make writing styles easier (it compiles into normal CSS that browsers understand).

For example, a basic SCSS snippet using BEM might look like:

/* Example BEM-style SCSS for the "glossar" component */
.glossar__filter {
  background: #ddd;
  border: none;  // base style for the filter button
  &__text {
    color: #333;  // style for the text inside the filter button
    font-weight: bold;
  }
}

This shows how SCSS nesting corresponds to the BEM naming: the &__text selector targets the <span class="glossar__filter_text"> inside the button.

So essentially, the developer is asking Copilot to generate CSS styling code for the given HTML structure. That is a programming task—front-end developers write CSS/SCSS all the time as part of their job. When Copilot responds, “Sorry, but I can only assist with programming related questions,” it’s acting as if the request wasn’t about programming at all. This is confusing, because writing SCSS for a template is definitely part of building software!

Why might Copilot say that? Possibly it looked at the snippet and saw mostly HTML and template tags, and then misinterpreted the ask as something outside coding. AI assistants have certain rules and sometimes get things wrong. Copilot's chat mode might avoid requests that look like pure webpage content or it might have a filter thinking “this isn’t code I can compile or run.” It even explained, somewhat awkwardly, that Django HTML "is not considered a programming language in the traditional sense." In simpler terms, it saw the Django template as just HTML with some placeholders, not like a Python or JavaScript snippet where you’d write actual logic. That made it balk and say, “Uh, that’s not programming, I can’t help.”

For a newer developer, here’s the key context:

  • HTML (HyperText Markup Language) defines the structure of a webpage (headings, paragraphs, buttons, etc.). It’s declarative: you outline what should be on the page.
  • CSS (Cascading Style Sheets) defines how that HTML content looks (layout, colors, fonts). SCSS is just a more convenient way to write CSS with features like nesting.
  • Django’s Template Language lets you put simple logic in your HTML files (loops, if-statements) so pages can show dynamic data from your Python code. It’s like adding mini programming inside your HTML, but only for display purposes.
  • “Programming language” vs “markup language”: A programming language (like Python or JavaScript) lets you write full logic and algorithms (it can do calculations, decisions, and much more). A markup or templating language (like HTML or the Django template syntax) is more about structure and placeholders – it’s a set of instructions for layout and simple dynamic content, but not a complete set of programming tools.

The meme plays on this distinction. The front-end dev understandably sees their HTML+SCSS work as coding (because it is part of making a program!), but the AI’s very narrow definition caused a funny, if frustrating, misunderstanding. In practice, modern web development blurs these lines: to build a real app you need HTML, CSS, and some proper programming language like JavaScript or Python working together. They’re all crucial, and writing any of them is part of programming a website. The AI, however, got stuck on a technicality and ended up telling the developer that their HTML/SCSS task wasn’t “real code.” That mix-up is the heart of the joke.

Level 3: AI Code Snobbery

At a human level, this scenario highlights an AI assistant acting like a know-it-all senior dev who scoffs, "That's not REAL code, kid." The humor lands because front-end developers have long endured a stereotype that HTML/CSS “isn’t real programming.” Here, the twist is a machine is doing the gatekeeping. GitHub Copilot – in its new chat mode inside the VS Code editor – essentially tells a developer, “Sorry, I don’t do HTML and SCSS; that doesn’t count as programming.” It’s as if the AI absorbed our industry's old elitist jokes and played them back with a straight face, giving the poor frontend dev a mini identity crisis.

Why is this so relatable (and cringey)? In real teams, especially historically, backend engineers or system programmers sometimes belittled UI work. “You just tweak CSS and move pixels around, that’s not ‘real’ code,” they’d say – while ironically relying on those very UI elements to make their apps usable. This meme captures that exact cultural friction in a modern context. We’ve all been in Loeffeldude’s shoes thinking: How is building dynamic pages with a templating language not programming? It feels like programming when you wrestle with loops, syntax errors, and logic in templates. And indeed, if you’ve ever broken a Django template by missing an {% endfor %} tag, you know there’s real logic at play!

From the AI’s perspective, this is likely a result of its training or safety rules. Copilot’s chat mode tries to classify queries: maybe it saw a chunk of HTML with {% ... %} and thought the user was asking for pure styling or content generation outside its “code-only” assistance scope. There’s a hint of an internal checklist: Is the user's prompt a coding problem? The assistant decided “no,” and gave a polite refusal. This reveals an AI limitation: it lacks the nuanced understanding that the user is actually asking for a coding task (writing SCSS styles) related to that template. Instead, the AI latched onto a technicality: “Django HTML...not considered a programming language.” The result is unintentionally comical – the AI came off as a snobby engineer who refuses to help with the UI because it’s outside their definition of programming.

The industry humor here also touches on tool reliability. Developers are hyped about AI helpers like Copilot speeding up all coding tasks, yet here it fails in a surprisingly basic way: refusing to write some BEM-style CSS for a clearly code-related request. It’s a reminder that AI isn’t magic; it carries the biases and blind spots of its training data. Perhaps Copilot’s training corpus included forum Q&As where people pedantically stated “HTML is not a programming language,” and the model learned that trope a bit too well. The meme resonates because every developer has encountered absurd moments where a tool or colleague gets overly pedantic. It's a “too real” moment – we laugh, but nervously, because we've been there: arguing about what counts as code instead of just solving the problem.

And of course, spare a thought for the front-end dev’s feelings. Getting implicitly told by a high-tech assistant that your work isn't "real programming" can sting. It’s the classic impostor syndrome trigger, now delivered by an AI. The developer’s incredulous reply, “How is that not programming?”, is something many of us have wanted to shout when our contributions were dismissed. In a healthy team, we know HTML, CSS, templates, and scripts all matter; they're different tools in the developer toolbox. This meme pokes fun at the absurdity that even an AI trained on billions of lines of code might still not recognize that truth, echoing an outdated sentiment. It’s a senior-level joke about how far our tools have come – and how they still mirror our own age-old biases and hiccups.

Level 4: Turing-Complete Tantrum

This meme scratches at the theoretical definition of programming languages. In formal computer science, a programming language is often expected to be Turing-complete – meaning it can implement any computation given enough resources. A Django template is a domain-specific templating language embedded in HTML. It’s intentionally not a full Python runtime. You can use loops ({% for ... %}) and conditionals in templates, but you can't, for example, define arbitrary functions or perform complex algorithmic computations purely within these templates. In other words, the Django templating language is not a general-purpose language – it's not meant to calculate Fibonacci numbers or handle file I/O on its own. This limitation by design enforces separation of concerns: heavy logic stays in Python code (views/models), while the template handles presentation.

GitHub Copilot’s reply channels a pedantic stance rooted in these definitions. It effectively says, “Django HTML isn't a real programming language in the traditional sense.” From a formal lens, the AI is alluding to the idea that HTML and templating syntax lack the full range of computational features (like memory management, complex data structures, recursion, etc.) that “traditional” languages (think Python, C, or JavaScript) possess. It's drawing a hard academic line between a markup/templating language and a programming language. This is like applying compiler-theory criteria: Django’s template language is a DSL (Domain-Specific Language), specialized for generating web pages, not a general algorithmic language you’d write an operating system in.

Ironically, even within theoretical CS, the line can blur. Some languages we consider “not programming” are surprisingly powerful:

  • SQL, a query language, can simulate Turing-complete logic under certain conditions.
  • CSS, a styling language, isn’t meant for logic, yet clever hackers have shown crazy proofs-of-concept using CSS selectors and counters to perform computations (an esoteric demonstration of near Turing-completeness).
  • Even pure HTML can be combined with forms or abuse checkboxes to create a limited state machine.

The AI’s stance, however, sticks to classical definitions. It’s having a “Turing-completeness tantrum” – implying, “If it’s not a full programming language, I'm not treating it as code.” This level of analysis shows the humor emerges from a fundamentally academic distinction being enforced in a practical scenario. A human developer might pragmatically say, “HTML/CSS and templates are part of coding a web project.” But the AI's reply reflects a nearly compiler-like worldview: it doesn’t “see” styling or templating as real programming tasks, perhaps because it’s been trained or instructed to focus on algorithmic code. This highlights an AI misclassification rooted in theory: by strict definition, Django templates aren’t a complete programming language, so the assistant refuses the request as out-of-scope. In essence, the meme exposes how a nuanced, pedantic CS concept can inadvertently surface in an AI’s behavior, leading to a hilariously over-technical gatekeeping moment.

Description

A screenshot of a conversation with GitHub Copilot. A user provides a snippet of Django HTML template code, which includes for-loops, and asks Copilot to create SCSS styling for it. Copilot responds, 'Sorry, but I can only assist with programming related questions.' The user replies, 'How is that not programming?'. Copilot then delivers a pedantic explanation, stating that Django HTML is a 'templating language' and 'not considered a programming language in the traditional sense' because it lacks the 'full range of features.' The humor stems from the AI's overly literal and unhelpful distinction, a frustratingly common experience for developers using early AI assistants. Most developers would consider working with logic-infused templates a core part of programming

Comments

18
Anonymous ★ Top Pick Copilot is technically correct in the most useless way imaginable. It's the AI equivalent of a junior dev who just read a book on compilers and now insists HTML isn't code. We get it, it's not Turing complete, now please just write the CSS
  1. Anonymous ★ Top Pick

    Copilot is technically correct in the most useless way imaginable. It's the AI equivalent of a junior dev who just read a book on compilers and now insists HTML isn't code. We get it, it's not Turing complete, now please just write the CSS

  2. Anonymous

    Copilot: “Django templates aren’t real code.” Me: “Great - when an unescaped {{ user_input }} turns prod into an XSS festival at 3 a.m., I’ll just log the outage as performance art.”

  3. Anonymous

    After 20 years of arguing whether HTML is a programming language, we've finally achieved consensus: even our AI assistants are now gatekeeping what counts as 'real programming.' Next up, Copilot will refuse to help with YAML because 'it's just configuration, not code.'

  4. Anonymous

    Ah yes, the classic AI assistant gatekeeping what counts as 'real programming' - because clearly, Django templates with control flow, variable interpolation, and logic aren't programming enough. Next, Copilot will tell us SQL isn't programming either since it's 'just' a query language. Meanwhile, senior engineers know that dismissing templating languages is peak junior behavior - we've all debugged enough Jinja2 nightmares at 2 AM to know that if it can create production incidents, it's programming

  5. Anonymous

    Copilot's context window: big enough for Cicero, too small for Django docs

  6. Anonymous

    Copilot: “Django templates aren’t programming.” Cool - neither is YAML and it runs prod; now write the BEM SCSS before the cascade weaponizes those 10 buttons into a postmortem

  7. Anonymous

    Copilot declaring Django templates "not programming" is peak AI PM - right up until a "just CSS" BEM refactor invalidates selectors, nukes the cache, and pages you at 2 a.m

  8. @ZgGPuo8dZef58K6hxxGVj3Z2 2y

    HAHAHAHHAHAHAHA

  9. @seyfer 2y

    ChatGPT would do an attempt anyway

    1. @SomeWhereIBelong 2y

      True. Chatgpt just makes shit up if it doesnt know how to do sth

  10. @s3rv3rslvt 2y

    Just use tailwind

    1. @RiedleroD 2y

      I've had to use it in my internship, and no. don't do that. write preprocessed CSS.

      1. @s3rv3rslvt 2y

        But why? Single major inconvenience of tailwind is large ugly markup, but it is easily solved by building reusable components

  11. @AlexAparnev 2y

    Jokes gone too far in train data)

  12. @Araalith 2y

    While Django isn't a programming language it's still related to programming.

    1. @RiedleroD 2y

      while I'm not a tankie, I'm related to one. doesn't mean that a tankie AI can parse me …ok, to be fair, that's a terrible analogy

  13. @maggelia 2y

    Well that's just bs Liquid is Turing complete

  14. @RiedleroD 2y

    because it's just a glorified preprocessed style attribute

Use J and K for navigation