<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: programming-languages</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/programming-languages.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-02-18T18:56:56+00:00</updated><author><name>Simon Willison</name></author><entry><title>Typing without having to type</title><link href="https://simonwillison.net/2026/Feb/18/typing/#atom-tag" rel="alternate"/><published>2026-02-18T18:56:56+00:00</published><updated>2026-02-18T18:56:56+00:00</updated><id>https://simonwillison.net/2026/Feb/18/typing/#atom-tag</id><summary type="html">
    &lt;p&gt;25+ years into my career as a programmer I think I may &lt;em&gt;finally&lt;/em&gt; be coming around to preferring type hints or even strong typing. I resisted those in the past because they slowed down the rate at which I could iterate on code, especially in the REPL environments that were key to my productivity. But if a coding agent is doing all that &lt;em&gt;typing&lt;/em&gt; for me, the benefits of explicitly defining all of those types are suddenly much more attractive.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/static-typing"&gt;static-typing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming"/><category term="programming-languages"/><category term="static-typing"/><category term="ai-assisted-programming"/></entry><entry><title>jordanhubbard/nanolang</title><link href="https://simonwillison.net/2026/Jan/19/nanolang/#atom-tag" rel="alternate"/><published>2026-01-19T23:58:56+00:00</published><updated>2026-01-19T23:58:56+00:00</updated><id>https://simonwillison.net/2026/Jan/19/nanolang/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/jordanhubbard/nanolang"&gt;jordanhubbard/nanolang&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Plenty of people have mused about what a new programming language specifically designed to be used by LLMs might look like. Jordan Hubbard (&lt;a href="https://en.wikipedia.org/wiki/Jordan_Hubbard"&gt;co-founder of FreeBSD&lt;/a&gt;, with serious stints at Apple and NVIDIA) just released exactly that.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A minimal, LLM-friendly programming language with mandatory testing and unambiguous syntax.&lt;/p&gt;
&lt;p&gt;NanoLang transpiles to C for native performance while providing a clean, modern syntax optimized for both human readability and AI code generation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The syntax strikes me as an interesting mix between C, Lisp and Rust.&lt;/p&gt;
&lt;p&gt;I decided to see if an LLM could produce working code in it directly, given the necessary context. I started with this &lt;a href="https://github.com/jordanhubbard/nanolang/blob/main/MEMORY.md"&gt;MEMORY.md&lt;/a&gt; file, which begins:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; This file is designed specifically for Large Language Model consumption. It contains the essential knowledge needed to generate, debug, and understand NanoLang code. Pair this with &lt;code&gt;spec.json&lt;/code&gt; for complete language coverage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I ran that using &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt; and &lt;a href="https://github.com/simonw/llm-anthropic"&gt;llm-anthropic&lt;/a&gt; like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;llm -m claude-opus-4.5 \
  -s https://raw.githubusercontent.com/jordanhubbard/nanolang/refs/heads/main/MEMORY.md \
  'Build me a mandelbrot fractal CLI tool in this language' 
  &amp;gt; /tmp/fractal.nano
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;a href="https://gist.github.com/simonw/7847f022566d11629ec2139f1d109fb8#mandelbrot-fractal-cli-tool-in-nano"&gt;resulting code&lt;/a&gt;... &lt;a href="https://gist.github.com/simonw/7847f022566d11629ec2139f1d109fb8?permalink_comment_id=5947465#gistcomment-5947465"&gt;did not compile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I may have been too optimistic expecting a one-shot working program for a new language like this. So I ran a clone of the actual project, copied in my program and had Claude Code take a look at the failing compiler output.&lt;/p&gt;
&lt;p&gt;... and it worked! Claude happily grepped its way through the various &lt;code&gt;examples/&lt;/code&gt; and built me a working program.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://gisthost.github.io/?9696da6882cb6596be6a9d5196e8a7a5/index.html"&gt;the Claude Code transcript&lt;/a&gt; - you can see it &lt;a href="https://gisthost.github.io/?9696da6882cb6596be6a9d5196e8a7a5/page-001.html#msg-2026-01-19T23-43-09-675Z"&gt;reading relevant examples here&lt;/a&gt; - and here's &lt;a href="https://gist.github.com/simonw/e7f3577adcfd392ab7fa23b1295d00f2"&gt;the finished code plus its output&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've suspected &lt;a href="https://simonwillison.net/2025/Nov/7/llms-for-new-programming-languages/"&gt;for a while&lt;/a&gt; that LLMs and coding agents might significantly reduce the friction involved in launching a new language. This result reinforces my opinion.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=46684958"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming-languages"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="llm"/><category term="coding-agents"/><category term="claude-code"/></entry><entry><title>Prediction: AI will make formal verification go mainstream</title><link href="https://simonwillison.net/2025/Dec/9/formal-verification/#atom-tag" rel="alternate"/><published>2025-12-09T03:11:19+00:00</published><updated>2025-12-09T03:11:19+00:00</updated><id>https://simonwillison.net/2025/Dec/9/formal-verification/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://martin.kleppmann.com/2025/12/08/ai-formal-verification.html"&gt;Prediction: AI will make formal verification go mainstream&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Martin Kleppmann makes the case for formal verification languages (things like &lt;a href="https://dafny.org/"&gt;Dafny&lt;/a&gt;, &lt;a href="https://github.com/marcoeilers/nagini"&gt;Nagini&lt;/a&gt;, and &lt;a href="https://github.com/verus-lang/verus"&gt;Verus&lt;/a&gt;) to finally start achieving more mainstream usage. Code generated by LLMs can benefit enormously from more robust verification, and LLMs themselves make these notoriously difficult systems easier to work with.&lt;/p&gt;
&lt;p&gt;The paper &lt;a href="https://arxiv.org/abs/2503.14183"&gt;Can LLMs Enable Verification in Mainstream Programming?&lt;/a&gt; by JetBrains Research in March 2025 found that Claude 3.5 Sonnet saw promising results for the three languages I listed above.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/zsgdbg/prediction_ai_will_make_formal"&gt;lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/predictions"&gt;predictions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/martin-kleppmann"&gt;martin-kleppmann&lt;/a&gt;&lt;/p&gt;



</summary><category term="predictions"/><category term="programming-languages"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="martin-kleppmann"/></entry><entry><title>Thoughts on Go vs. Rust vs. Zig</title><link href="https://simonwillison.net/2025/Dec/5/go-vs-rust-vs-zig/#atom-tag" rel="alternate"/><published>2025-12-05T04:28:05+00:00</published><updated>2025-12-05T04:28:05+00:00</updated><id>https://simonwillison.net/2025/Dec/5/go-vs-rust-vs-zig/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://sinclairtarget.com/blog/2025/08/thoughts-on-go-vs.-rust-vs.-zig/"&gt;Thoughts on Go vs. Rust vs. Zig&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Thoughtful commentary on Go, Rust, and Zig by Sinclair Target. I haven't seen a single comparison that covers all three before and I learned a lot from reading this.&lt;/p&gt;
&lt;p&gt;One thing that I hadn't noticed before is that none of these three languages implement class-based OOP.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=46153466"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/go"&gt;go&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/object-oriented-programming"&gt;object-oriented-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zig"&gt;zig&lt;/a&gt;&lt;/p&gt;



</summary><category term="go"/><category term="object-oriented-programming"/><category term="programming-languages"/><category term="rust"/><category term="zig"/></entry><entry><title>Could LLMs encourage new programming languages?</title><link href="https://simonwillison.net/2025/Nov/7/llms-for-new-programming-languages/#atom-tag" rel="alternate"/><published>2025-11-07T16:00:42+00:00</published><updated>2025-11-07T16:00:42+00:00</updated><id>https://simonwillison.net/2025/Nov/7/llms-for-new-programming-languages/#atom-tag</id><summary type="html">
    &lt;p&gt;My hunch is that existing LLMs make it &lt;em&gt;easier&lt;/em&gt; to build a new programming language in a way that captures new developers.&lt;/p&gt;
&lt;p&gt;Most programming languages are similar enough to existing languages that you only need to know a small number of details to use them: what's the core syntax for variables, loops, conditionals and functions? How does memory management work? What's the concurrency model?&lt;/p&gt;
&lt;p&gt;For many languages you can fit all of that, including illustrative examples, in a few thousand tokens of text.&lt;/p&gt;
&lt;p&gt;So ship your new programming language with a &lt;a href="https://simonwillison.net/2025/Oct/16/claude-skills/"&gt;Claude Skills style document&lt;/a&gt; and give your early adopters the ability to write it with LLMs. The LLMs should handle that very well, especially if they get to run an agentic loop against a compiler or even a linter that you provide.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;This post started &lt;a href="https://news.ycombinator.com/context?id=45847505"&gt;as a comment&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/hacker-news"&gt;hacker-news&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/skills"&gt;skills&lt;/a&gt;&lt;/p&gt;



</summary><category term="hacker-news"/><category term="programming-languages"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="coding-agents"/><category term="skills"/></entry><entry><title>Quoting Steve Francia</title><link href="https://simonwillison.net/2025/Nov/4/steve-francia/#atom-tag" rel="alternate"/><published>2025-11-04T02:54:07+00:00</published><updated>2025-11-04T02:54:07+00:00</updated><id>https://simonwillison.net/2025/Nov/4/steve-francia/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://spf13.com/p/the-hidden-conversation/"&gt;&lt;p&gt;Every time an engineer evaluates a language that isn’t “theirs,” their brain is literally working against them. They’re not just analyzing technical trade offs, they’re contemplating a version of themselves that doesn’t exist yet, that feels threatening to the version that does. The Python developer reads case studies about Go’s performance and their amygdala quietly marks each one as a threat to be neutralized. The Rust advocate looks at identical problems and their Default Mode Network constructs narratives about why “only” Rust can solve them.&lt;/p&gt;
&lt;p&gt;We’re not lying. We genuinely believe our reasoning is sound. That’s what makes identity based thinking so expensive, and so invisible.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://spf13.com/p/the-hidden-conversation/"&gt;Steve Francia&lt;/a&gt;, Why Engineers Can't Be Rational About Programming Languages&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/psychology"&gt;psychology&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/technical-debt"&gt;technical-debt&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming-languages"/><category term="psychology"/><category term="technical-debt"/></entry><entry><title>Geoffrey Huntley is cursed</title><link href="https://simonwillison.net/2025/Sep/9/cursed/#atom-tag" rel="alternate"/><published>2025-09-09T09:31:21+00:00</published><updated>2025-09-09T09:31:21+00:00</updated><id>https://simonwillison.net/2025/Sep/9/cursed/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://ghuntley.com/cursed/"&gt;I ran Claude in a loop for three months, and it created a genz programming language called cursed&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Geoffrey Huntley vibe-coded an entirely new programming language using Claude:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The programming language is called "cursed". It's cursed in its lexical structure, it's cursed in how it was built, it's cursed that this is possible, it's cursed in how cheap this was, and it's cursed through how many times I've sworn at Claude.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Geoffrey's initial prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Hey, can you make me a programming language like Golang but all the lexical keywords are swapped so they're Gen Z slang?&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then he pushed it to keep on iterating over a three month period.&lt;/p&gt;
&lt;p&gt;Here's Hello World:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vibe main
yeet "vibez"

slay main() {
    vibez.spill("Hello, World!")
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here's &lt;a href="https://github.com/ghuntley/cursed/blob/ecda33d496e1562e0e02efb25b6936ad94e79b72/test_suite/leetcode_comprehensive_suite/binary_search/704_binary_search_backup.%F0%9F%92%80"&gt;binary search&lt;/a&gt;, part of &lt;a href="https://github.com/ghuntley/cursed/tree/zig/test_suite/leetcode_comprehensive_suite"&gt;17+ LeetCode problems&lt;/a&gt; that run as part of the test suite:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;slay binary_search(nums normie[], target normie) normie {
    sus left normie = 0
    sus right normie = len(nums) - 1    
    bestie (left &amp;lt;= right) {
        sus mid normie = left + (right - left) / 2
        ready (nums[mid] == target) {
            damn mid
        }
        ready (nums[mid] &amp;lt; target) {
            left = mid + 1
        } otherwise {
            right = mid - 1
        }
    }
    damn -1
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is a &lt;em&gt;substantial&lt;/em&gt; project. The repository currently has &lt;a href="https://github.com/ghuntley/cursed/commits/zig/"&gt;1,198 commits&lt;/a&gt;. It has both an interpreter mode and a compiler mode, and can compile programs to native binaries (via LLVM) for macOS, Linux and Windows.&lt;/p&gt;
&lt;p&gt;It looks like it was mostly built using Claude running via &lt;a href="https://ampcode.com/"&gt;Sourcegraph's Amp&lt;/a&gt;, which produces &lt;a href="https://github.com/ghuntley/cursed/commit/ec5be8a4c4f6e82f6b93774a9b3b3f88308680dd"&gt;detailed commit messages&lt;/a&gt;. The commits include links to archived Amp sessions but sadly those don't appear to be publicly visible.&lt;/p&gt;
&lt;p&gt;The first version was written in C, then Geoffrey had Claude port it to Rust and then Zig. &lt;a href="https://twitter.com/GeoffreyHuntley/status/1965295152962097550"&gt;His cost estimate&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Technically it costs about 5k usd to build your own compiler now because cursed was implemented first in c, then rust, now zig. So yeah, it’s not one compiler it’s three editions of it. For a total of $14k USD.&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://x.com/GeoffreyHuntley/status/1965258228314636524"&gt;@GeoffreyHuntley&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/c"&gt;c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zig"&gt;zig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geoffrey-huntley"&gt;geoffrey-huntley&lt;/a&gt;&lt;/p&gt;



</summary><category term="c"/><category term="programming-languages"/><category term="ai"/><category term="rust"/><category term="zig"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="anthropic"/><category term="claude"/><category term="vibe-coding"/><category term="geoffrey-huntley"/></entry><entry><title>Quoting Paul Biggar</title><link href="https://simonwillison.net/2025/Jun/16/paul-biggar/#atom-tag" rel="alternate"/><published>2025-06-16T17:56:57+00:00</published><updated>2025-06-16T17:56:57+00:00</updated><id>https://simonwillison.net/2025/Jun/16/paul-biggar/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://blog.darklang.com/goodbye-dark-inc-welcome-darklang-inc/"&gt;&lt;p&gt;In conversation with our investors and the board, we believed that the best way forward was to shut down the company [Dark, Inc], as it was clear that an 8 year old product with no traction was not going to attract new investment. In our discussions, we agreed that continuity of the product [Darklang] was in the best interest of the users and the community (and of both founders and investors, who do not enjoy being blamed for shutting down tools they can no longer afford to run), and we agreed that this could best be achieved by selling it to the employees.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://blog.darklang.com/goodbye-dark-inc-welcome-darklang-inc/"&gt;Paul Biggar&lt;/a&gt;, Goodbye Dark Inc. - Hello Darklang Inc.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/entrepreneurship"&gt;entrepreneurship&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/startups"&gt;startups&lt;/a&gt;&lt;/p&gt;



</summary><category term="entrepreneurship"/><category term="programming-languages"/><category term="startups"/></entry><entry><title>Directive prologues and JavaScript dark matter</title><link href="https://simonwillison.net/2025/Jun/2/directive-prologues-and-javascript-dark-matter/#atom-tag" rel="alternate"/><published>2025-06-02T18:30:31+00:00</published><updated>2025-06-02T18:30:31+00:00</updated><id>https://simonwillison.net/2025/Jun/2/directive-prologues-and-javascript-dark-matter/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://macwright.com/2025/04/29/directive-prologues-and-javascript-dark-matter"&gt;Directive prologues and JavaScript dark matter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tom MacWright does some archaeology and describes the three different magic comment formats that can affect how JavaScript/TypeScript files are processed:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;"a directive";&lt;/code&gt; is a &lt;a href="https://262.ecma-international.org/5.1/#sec-14.1"&gt;directive prologue&lt;/a&gt;, most commonly seen with &lt;code&gt;"use strict";&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/** @aPragma */&lt;/code&gt; is a pragma for a transpiler, often used for &lt;code&gt;/** @jsx h */&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;//# aMagicComment&lt;/code&gt; is usually used for source maps - &lt;code&gt;//# sourceMappingURL=&amp;lt;url&amp;gt;&lt;/code&gt; - but also just got used by v8 for their new &lt;a href="https://v8.dev/blog/explicit-compile-hints"&gt;explicit compile hints&lt;/a&gt; feature.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://blog.jim-nielsen.com/2025/is-it-javascript/"&gt;Jim Nielsen&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/v8"&gt;v8&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/typescript"&gt;typescript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tom-macwright"&gt;tom-macwright&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="programming-languages"/><category term="v8"/><category term="typescript"/><category term="tom-macwright"/></entry><entry><title>Quoting Steve Dower</title><link href="https://simonwillison.net/2025/Apr/12/steve-dower/#atom-tag" rel="alternate"/><published>2025-04-12T03:32:14+00:00</published><updated>2025-04-12T03:32:14+00:00</updated><id>https://simonwillison.net/2025/Apr/12/steve-dower/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://discuss.python.org/t/pep-750-tag-strings-for-writing-domain-specific-languages/60408/57"&gt;&lt;p&gt;&lt;strong&gt;Backticks&lt;/strong&gt; are traditionally banned from use in future language features, due to the small symbol. No reader should need to distinguish &lt;code&gt;`&lt;/code&gt; from &lt;code&gt;'&lt;/code&gt; at a glance.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://discuss.python.org/t/pep-750-tag-strings-for-writing-domain-specific-languages/60408/57"&gt;Steve Dower&lt;/a&gt;, CPython core developer, August 2024&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming-languages"/><category term="python"/></entry><entry><title>Mojo may be the biggest programming advance in decades</title><link href="https://simonwillison.net/2023/May/4/mojo/#atom-tag" rel="alternate"/><published>2023-05-04T04:41:03+00:00</published><updated>2023-05-04T04:41:03+00:00</updated><id>https://simonwillison.net/2023/May/4/mojo/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.fast.ai/posts/2023-05-03-mojo-launch.html"&gt;Mojo may be the biggest programming advance in decades&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy Howard makes a very convincing argument for why the new programming language Mojo is a big deal.&lt;/p&gt;

&lt;p&gt;Mojo is a superset of Python designed by a team lead by Chris Lattner, who previously created LLVM, Clang and and Swift.&lt;/p&gt;

&lt;p&gt;Existing Python code should work unmodified, but it also adds features that enable performant low-level programming—like “fn” for creating typed, compiled functions and “struct” for memory-optimized alternatives to classes.&lt;/p&gt;

&lt;p&gt;It’s worth watching Jeremy’s video where he uses these features to get more than a 2000x speed up implementing matrix multiplication, while still keeping the code readable and easy to follow.&lt;/p&gt;

&lt;p&gt;Mojo isn’t available yet outside of a playground preview environment, but it does look like an intriguing new project.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/hamelhusain/status/1653963183013634048"&gt;@hamelhusain&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mojo"&gt;mojo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-howard"&gt;jeremy-howard&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming-languages"/><category term="python"/><category term="ai"/><category term="mojo"/><category term="jeremy-howard"/></entry><entry><title>Cyber</title><link href="https://simonwillison.net/2023/Jan/28/cyber/#atom-tag" rel="alternate"/><published>2023-01-28T04:25:17+00:00</published><updated>2023-01-28T04:25:17+00:00</updated><id>https://simonwillison.net/2023/Jan/28/cyber/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://cyberscript.dev/"&gt;Cyber&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Cyber is a new language for fast, efficient, and concurrent scripting.” Lots of interesting ideas in here, but the one that really caught my eye is that its designed to be easily embedded into other languages and “will allow the host to insert gas mileage checks in user scripts. This allows the host to control how long a script can run”—my dream feature for implementing a safe, sandboxed extension mechanism! Cyber is  implemented using Zig and LLVM.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/v8edeu/cyber_is_new_language_for_fast_efficient"&gt;lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/llvm"&gt;llvm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sandboxing"&gt;sandboxing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zig"&gt;zig&lt;/a&gt;&lt;/p&gt;



</summary><category term="llvm"/><category term="programming-languages"/><category term="sandboxing"/><category term="zig"/></entry><entry><title>jq language description</title><link href="https://simonwillison.net/2022/Apr/26/jq-language-description/#atom-tag" rel="alternate"/><published>2022-04-26T19:04:09+00:00</published><updated>2022-04-26T19:04:09+00:00</updated><id>https://simonwillison.net/2022/Apr/26/jq-language-description/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/stedolan/jq/wiki/jq-Language-Description"&gt;jq language description&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I love jq but I’ve always found it difficult to remember how to use it, and the manual hasn’t helped me as much as I would hope. It turns out the jq wiki on GitHub offers an alternative, more detailed description of the language which fits the way my brain works a lot better.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=31166956"&gt;psacawa on Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/documentation"&gt;documentation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jq"&gt;jq&lt;/a&gt;&lt;/p&gt;



</summary><category term="documentation"/><category term="programming-languages"/><category term="jq"/></entry><entry><title>Programmer migration patterns</title><link href="https://simonwillison.net/2019/Mar/28/programmer-migration-patterns/#atom-tag" rel="alternate"/><published>2019-03-28T04:59:16+00:00</published><updated>2019-03-28T04:59:16+00:00</updated><id>https://simonwillison.net/2019/Mar/28/programmer-migration-patterns/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://apenwarr.ca/log/20190318"&gt;Programmer migration patterns&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Avery Pennarun explores the history of modern programming languages and how developers have migrated from one to another over time. Lots of fun insights in this.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming-languages"/></entry><entry><title>String length - Rosetta Code</title><link href="https://simonwillison.net/2019/Feb/22/string-length-rosetta-code/#atom-tag" rel="alternate"/><published>2019-02-22T15:27:31+00:00</published><updated>2019-02-22T15:27:31+00:00</updated><id>https://simonwillison.net/2019/Feb/22/string-length-rosetta-code/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.rosettacode.org/wiki/String_length"&gt;String length - Rosetta Code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Calculating the length of a string is surprisingly difficult once Unicode is involved. Here's a fascinating illustration of how that problem can be attached dozens of different programming languages.  From that page: the string &lt;code&gt;"J̲o̲s̲é̲"&lt;/code&gt; (&lt;code&gt;"J\x{332}o\x{332}s\x{332}e\x{301}\x{332}"&lt;/code&gt;) has 4 user-visible graphemes, 9 characters (code points), and 14 bytes when encoded in UTF-8.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/jeffsonstein/status/1098927304124841984"&gt;@jeffsonstein&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/strings"&gt;strings&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="programming-languages"/><category term="strings"/><category term="unicode"/></entry><entry><title>An Early History of Pony</title><link href="https://simonwillison.net/2017/Dec/18/pony/#atom-tag" rel="alternate"/><published>2017-12-18T20:33:54+00:00</published><updated>2017-12-18T20:33:54+00:00</updated><id>https://simonwillison.net/2017/Dec/18/pony/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.ponylang.org/blog/2017/05/an-early-history-of-pony/"&gt;An Early History of Pony&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Pony is an interesting looking new programming language, built around actor-based concurrency on top of a mathematically proved type system. The history of the language makes for interesting reading: it’s  based on experience with actor libraries in C at an investment bank, combined with research into type systems at Imperial College London.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/computer-science"&gt;computer-science&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pony"&gt;pony&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;&lt;/p&gt;



</summary><category term="computer-science"/><category term="pony"/><category term="programming-languages"/></entry><entry><title>Are traditional web frameworks and languages like RubyOnRail, Spring Boot and PHP dying now when new fast reactive pure JavaScript frameworks and services like Meteor, Node, Angular 2.0 and Firebase are breaking ground?</title><link href="https://simonwillison.net/2015/May/24/are-traditional-web-frameworks/#atom-tag" rel="alternate"/><published>2015-05-24T09:33:00+00:00</published><updated>2015-05-24T09:33:00+00:00</updated><id>https://simonwillison.net/2015/May/24/are-traditional-web-frameworks/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Are-traditional-web-frameworks-and-languages-like-RubyOnRail-Spring-Boot-and-PHP-dying-now-when-new-fast-reactive-pure-JavaScript-frameworks-and-services-like-Meteor-Node-Angular-2-0-and-Firebase-are-breaking-ground/answer/Simon-Willison"&gt;Are traditional web frameworks and languages like RubyOnRail, Spring Boot and PHP dying now when new fast reactive pure JavaScript frameworks and services like Meteor, Node, Angular 2.0 and Firebase are breaking ground?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="frameworks"/><category term="java"/><category term="javascript"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>Have you ever experienced a boost in productivity by switching to a different programming language?</title><link href="https://simonwillison.net/2014/Mar/19/have-you-ever-experienced/#atom-tag" rel="alternate"/><published>2014-03-19T18:38:00+00:00</published><updated>2014-03-19T18:38:00+00:00</updated><id>https://simonwillison.net/2014/Mar/19/have-you-ever-experienced/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Have-you-ever-experienced-a-boost-in-productivity-by-switching-to-a-different-programming-language/answer/Simon-Willison"&gt;Have you ever experienced a boost in productivity by switching to a different programming language?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Switching from PHP to Python (over a decade ago now) dramatically improved my productivity as a programmer.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/productivity"&gt;productivity&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="productivity"/><category term="programming"/><category term="programming-languages"/><category term="quora"/></entry><entry><title>In simple terms, what is node.js?</title><link href="https://simonwillison.net/2014/Jan/22/in-simple-terms-what/#atom-tag" rel="alternate"/><published>2014-01-22T12:48:00+00:00</published><updated>2014-01-22T12:48:00+00:00</updated><id>https://simonwillison.net/2014/Jan/22/in-simple-terms-what/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/In-simple-terms-what-is-node-js?no_redirect=1"&gt;In simple terms, what is node.js?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's server-side programming, like PHP. The language you write the server-side code in is JavaScript (specifically the JavaScript version supported by Google's V8 JavaScript engine, which was originally written for the Chrome web browser).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="javascript"/><category term="nodejs"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>What are some good resources to learn how to cleanse data using Python?</title><link href="https://simonwillison.net/2013/Dec/18/what-are-some-good/#atom-tag" rel="alternate"/><published>2013-12-18T11:25:00+00:00</published><updated>2013-12-18T11:25:00+00:00</updated><id>https://simonwillison.net/2013/Dec/18/what-are-some-good/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-some-good-resources-to-learn-how-to-cleanse-data-using-Python/answer/Simon-Willison"&gt;What are some good resources to learn how to cleanse data using Python?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;span&gt;&lt;a href="http://gnosis.cx/TPiP/"&gt;http://gnosis.cx/TPiP/&lt;/a&gt;&lt;/span&gt; "Text Processing in Python" is a free online book that covers a bunch of useful topics related to data cleanup. It's over 10 years old now but is still mostly relevant - the chapter on regular expressions is particularly good.
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="programming-languages"/><category term="python"/><category term="quora"/></entry><entry><title>Why doesn't Google use their resources to improve coding languages?</title><link href="https://simonwillison.net/2013/Nov/24/why-doesnt-google-use/#atom-tag" rel="alternate"/><published>2013-11-24T17:31:00+00:00</published><updated>2013-11-24T17:31:00+00:00</updated><id>https://simonwillison.net/2013/Nov/24/why-doesnt-google-use/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-doesnt-Google-use-their-resources-to-improve-coding-languages/answer/Simon-Willison"&gt;Why doesn&amp;#39;t Google use their resources to improve coding languages?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Google invest vast resources in to language improvements, and have been doing so for over a decade now. Just off the top of my head...&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;They have employed many of the Python core team (including creator Guido van Rossum) and supported their work on Python&lt;/li&gt;&lt;li&gt;Their Android team wrote and support an entirely new open source JVM, called Dalvik&lt;/li&gt;&lt;li&gt;They sponsored one of the creators of C to create a brand new systems programming language, Go.&lt;/li&gt;&lt;li&gt;They sponsored major improvements to HTML, including the WHAT-WG which was crucial to the creation of HTML5.&lt;/li&gt;&lt;li&gt;Many of their employees work full time contributing to international standards groups.&lt;/li&gt;&lt;li&gt;As part of Chrome they supported the creation of V8, an astonishingly powerful JIT JavaScript implementation which sparked enormous improvements across rival engines. V8 is also the core of Node.js&lt;/li&gt;&lt;li&gt;Through Google Summer of Code they financially support projects that benefit dozens of open source languages, libraries and frameworks&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;That's just the stuff I can think if without doing any additional research - it's the tip of the iceberg.
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="google"/><category term="java"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>Why do programmers tend to fall in love with non-mainstream languages?</title><link href="https://simonwillison.net/2013/Oct/19/why-do-programmers-tend/#atom-tag" rel="alternate"/><published>2013-10-19T09:48:00+00:00</published><updated>2013-10-19T09:48:00+00:00</updated><id>https://simonwillison.net/2013/Oct/19/why-do-programmers-tend/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-do-programmers-tend-to-fall-in-love-with-non-mainstream-languages/answer/Simon-Willison"&gt;Why do programmers tend to fall in love with non-mainstream languages?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Just because something is popular doesn't mean it's right for every person, every problem or every situation. If no one ever explored non-mainstream options, better solutions would never be discovered.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programmers"&gt;programmers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programmers"/><category term="programming"/><category term="programming-languages"/><category term="quora"/></entry><entry><title>Web app: what programming knowledge do I need to create a goings on app?</title><link href="https://simonwillison.net/2013/Aug/7/web-app-what-programming/#atom-tag" rel="alternate"/><published>2013-08-07T18:42:00+00:00</published><updated>2013-08-07T18:42:00+00:00</updated><id>https://simonwillison.net/2013/Aug/7/web-app-what-programming/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Web-app-what-programming-knowledge-do-I-need-to-create-a-goings-on-app/answer/Simon-Willison"&gt;Web app: what programming knowledge do I need to create a goings on app?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For this kind of application a much more important question than "how can I build it? is "where will I get the data from?" - If you don't have a good answer for that building the app is a waste of your time. The world is littered with local events listings apps that no one uses because they don't have good data.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google-maps"&gt;google-maps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mobileweb"&gt;mobileweb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="google-maps"/><category term="mobileweb"/><category term="programming-languages"/><category term="python"/><category term="quora"/></entry><entry><title>Beginner JavaScript: more code or quality code?</title><link href="https://simonwillison.net/2013/Aug/6/beginner-javascript-more-code/#atom-tag" rel="alternate"/><published>2013-08-06T16:48:00+00:00</published><updated>2013-08-06T16:48:00+00:00</updated><id>https://simonwillison.net/2013/Aug/6/beginner-javascript-more-code/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Beginner-JavaScript-more-code-or-quality-code/answer/Simon-Willison"&gt;Beginner JavaScript: more code or quality code?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Write more code. The more code you have written, the better you'll be able to understand why certain techniques for creating higher quality code are worthwhile later on.&lt;/p&gt;

&lt;p&gt;If you've never dealt with a horrible tangle of spaghetti code of your own making you'll never be able to truly appreciate good code when you finally write it!&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="javascript"/><category term="programming-languages"/><category term="quora"/></entry><entry><title>In which programming language do programmers get paid the most?</title><link href="https://simonwillison.net/2013/Jul/6/in-which-programming-language/#atom-tag" rel="alternate"/><published>2013-07-06T17:27:00+00:00</published><updated>2013-07-06T17:27:00+00:00</updated><id>https://simonwillison.net/2013/Jul/6/in-which-programming-language/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/In-which-programming-language-do-programmers-get-paid-the-most/answer/Simon-Willison"&gt;In which programming language do programmers get paid the most?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The best (and best paid) software engineers work in multiple languages, and pick new ones up as and when they need to. If you pigeon-hole yourself as an "X programmer" you'll limit yourself to relatively uninteresting, interchangeable roles.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programmers"&gt;programmers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programmers"/><category term="programming"/><category term="programming-languages"/><category term="quora"/></entry><entry><title>Which should I learn: Python or PHP?</title><link href="https://simonwillison.net/2013/Apr/16/which-should-i-learn/#atom-tag" rel="alternate"/><published>2013-04-16T16:01:00+00:00</published><updated>2013-04-16T16:01:00+00:00</updated><id>https://simonwillison.net/2013/Apr/16/which-should-i-learn/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Which-should-I-learn-Python-or-PHP/answer/Simon-Willison"&gt;Which should I learn: Python or PHP?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Python will teach you more about programming than PHP - and you'll be able to learn PHP easily if you learn Python first.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="php"/><category term="programming"/><category term="programming-languages"/><category term="python"/><category term="quora"/></entry><entry><title>What are some hidden features of Python?</title><link href="https://simonwillison.net/2013/Mar/25/what-are-some-hidden/#atom-tag" rel="alternate"/><published>2013-03-25T13:51:00+00:00</published><updated>2013-03-25T13:51:00+00:00</updated><id>https://simonwillison.net/2013/Mar/25/what-are-some-hidden/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-some-hidden-features-of-Python/answer/Simon-Willison"&gt;What are some hidden features of Python?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Generators and Iterators are pretty amazing. These two tutorials will really open your eyes as to how powerful they can be:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;a href="http://www.dabeaz.com/generators/index.html"&gt;Generator Tricks for Systems Programmers&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="http://www.dabeaz.com/coroutines/"&gt;A Curious Course on Coroutines and Concurrency&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Both by David Beazley. To my mind they are the most fascinating Python tutorials out there.
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programming"/><category term="programming-languages"/><category term="python"/><category term="quora"/></entry><entry><title>How do I learn Python fast?</title><link href="https://simonwillison.net/2013/Jan/26/how-do-i-learn/#atom-tag" rel="alternate"/><published>2013-01-26T12:55:00+00:00</published><updated>2013-01-26T12:55:00+00:00</updated><id>https://simonwillison.net/2013/Jan/26/how-do-i-learn/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-do-I-learn-Python-fast?no_redirect=1"&gt;How do I learn Python fast?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Learn how to use the Python interactive prompt and start solving problems with it. The official Python tutorial is an excellent place to start: &lt;span&gt;&lt;a href="http://docs.python.org/2/tutorial/"&gt;http://docs.python.org/2/tutorial/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/software-engineering"&gt;software-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programming-languages"/><category term="python"/><category term="software-engineering"/><category term="quora"/></entry><entry><title>Which language and framework would you use today?</title><link href="https://simonwillison.net/2012/Dec/25/which-language-and-framework/#atom-tag" rel="alternate"/><published>2012-12-25T16:34:00+00:00</published><updated>2012-12-25T16:34:00+00:00</updated><id>https://simonwillison.net/2012/Dec/25/which-language-and-framework/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Which-language-and-framework-would-you-use-today/answer/Simon-Willison"&gt;Which language and framework would you use today?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Unless I had a very good reason to use something else (a pure websocket/real-time collaboration app perhaps) I'd go with stock Django on PostgreSQL and maybe a bit of Redis. Simple, powerful, stable and works reliably.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>How can some really large services (like Dropbox) afford to use Python as a primary language, if it's one to two orders of magnitude slower than other, compiled languages?</title><link href="https://simonwillison.net/2012/Dec/9/how-can-some-really/#atom-tag" rel="alternate"/><published>2012-12-09T16:52:00+00:00</published><updated>2012-12-09T16:52:00+00:00</updated><id>https://simonwillison.net/2012/Dec/9/how-can-some-really/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-can-some-really-large-services-like-Dropbox-afford-to-use-Python-as-a-primary-language-if-its-one-to-two-orders-of-magnitude-slower-than-other-compiled-languages/answer/Simon-Willison"&gt;How can some really large services (like Dropbox) afford to use Python as a primary language, if it&amp;#39;s one to two orders of magnitude slower than other, compiled languages?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Because raw language speed often doesn't matter that much. In the case if Dropbox the client software spends most of its time waiting for bits to load from the network or from disk. Most large websites spend their time waiting for the database. You can't speed up network or disk performance by using a faster language.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dropbox"&gt;dropbox&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programming"/><category term="programming-languages"/><category term="python"/><category term="web-development"/><category term="quora"/><category term="dropbox"/></entry></feed>