Unless your closed source code will be usable by llms more effectively then what's available today in oss, it's likely going to die off within the next decade or two.
There will continue to be a need for software developers for the foreseeable future, but the market will continue to trend toward more and more LLM generated code - no matter how this is seen by us developers.
Sound write-up. It is missing the #1 reason I like it though - it's fundamentally text.
No format/vendor lock-in and very amenable to living in a git repo. For my note taking that's already game over right there against everything else. I don't want to worry about whatever cursed format OneNote uses is still something I can extract in 2035.
I also like that it's become a defacto standard that LLMs speak. I can tell it to look at the code in this server repo and make me a API_documentation.md and it'll grasp that I want a text based summary of how to use this endpoint
Not only that but Markdown use the conventions people already used in text files (point 3 in the article). People wrote Markdown before Markdown existed, they just formalized it.
In fact, I like to write notes and documentation in text form, and then I notice I have been using Markdown all along, so I rename my text file into .md, fix a couple of markers, and now it looks nice on a viewer that supports markdown, and I have syntax highlighting in my text editor.
That's the main reason I still like writing Markdown (and Typst nowadays as well); I can "render" it in my head very quickly.
When I'm reading Markdown, I almost don't even see the symbols. Beginning a statement with a # immediately just looks like a heading, surrounding a word with asterisks looks italic to me, wrapping a string with backticks looks like code formatting to me, and my assumptions are generally right so I don't need to render very often (which is why the Pandoc -> LaTeX -> PDF pipeline didn't bother me that much).
If I'm writing LaTeX or something, I generally have a very rough idea of what something will look like, but it's not terribly reliable for me. I need to render frequently because my assumptions about how something is going to look is likely to be wrong.
I mostly use Typst now because it is similar enough to Markdown, and the compilation time is so categorically faster that I see little reason not to use it, but I still respect the hell out of Markdown for popularizing this kind of syntax.
That made me think - are there any depictions of Markdown in movies and tv shows? I've seen a fair share of C, Java, HTML, and (in newer works) JavaScript and Python. And Perl in The Social Network.
> Not only that but Markdown use the conventions people already used in text files
So why not Markup? At the time, everyone was using markup because Wikipedia was in wikimarkUP, with # for numbered lists, {} for macros and === to denominate titles. The latter still works in Markdown, but the former doesn’t. Funny heritage: Confluence shortcuts are also expressed in markup because it was the trend at the time, but they changed the shortcuts when they went to the Cloud.
MediaWiki syntax was its own odd duck. It used '''bold''' and ''italics'', and [https://example.com/ external links like this] - almost nothing else followed their lead.
> It is missing the #1 reason I like it though - it's fundamentally text.
Sure, but that's table stakes.
There are much better formats: AsciiDoc, reStructuredText, etc. Yet I also primarily use Markdown. I could use a format that's perhaps 20% better, and well-specified. But I'd have to use Markdown somewhere anyway. So I just stick with Markdown. It's good enough for me.
The original Markdown has fewer features than listed for the more advanced formats in the table. Hence if someone uses reStructuredText it is more precise than just saying “Markdown” because Markown could refer to anything from the original minimalist featureset to the vastly extended format supported by pandoc if given the appropriate CLI arguments.
Some text-based formats have more options for tables e.g. alignment of columns (it may help with numbers to right-align them) or multirow/multicolumn options.
Some formats support definition lists (corresponds to <dl> in HTML) - a feature which I often find valuable but was not included in the original Markdown IIRC.
One advantage of using a text-based format is that it can be exported to either LaTeX or HTML and Markdown seems to prefer the HTML output by explicitly supporting inline HTML as an escape hatch for more complex constructs (e.g. tables with rowspan/colspan). In addition to often not being supported for a non-HTML export-type it also hurts the WYSIWYG experience when reading the file like plain text.
Markdown is fundamentally WYSIWYG - you edit something and you get it rendered 1 to 1. Either in plain text (a.k.a. "source") or when it converted to HTML/CSS and then presented.
WYSIWYG requires 1:1 mapping between "source" and "presentation". Markdown is exactly that. While HTML/CSS is 1:N mapping - same presentation can be achieved with many combinations of HTML/CSS rules. That's why "true WYSIWYG" is barely achievable with HTML/CSS.
I think that is the biggest reason why Markdown doesn't support table. There are alternatives that do (e.g. wikitext) but they didn't get as popular as Markdown. Why? Perhaps it's because that tables will never really look fine in pure text no matter how clever your syntax is.
I don't think that is sufficient for the general case because I would like to be able to use the markdown like _emphasis_ or [hyperlinks](https://www.example.com) even inside the table rows and this doesn't render properly when using fixed pitch “tables as source code blocks”
Then you need to re-pad everything (clean looking git diff be damned). It's just the reality of dealing with bounding boxes. Maybe we don't notice it in HTML and such since the browser redraws them for us for free.
A reasonable format would not insist you lay out tables visually any more than it would insist you center your headers if you'd like them horizontally centered when rendered. For instance, Asciidoctor has syntax for table cells that requires no whitespace and lets you put any content at all in a cell.
Same. I’m reading The UNIX Programming Environment (1984), and it’s made me want to use text for a lot more things. Proprietary formats come and go, but text is forever.
Eh, the things Markdown was made to compete with were also text. Including, you know, plain text. Sure, there were people out there doing README.RTF or README.DOC that annoyed us all -- nevermind those README.PDF monsters -- but just as frequently it was README.TXT or READ.ME (or README.DOC was in plain text). And GameFAQs and newsgroups got pretty far with plain text and ASCII graphics.
The problem is that people want to use a web browser to display their documents, they want rich documents, and web browsers are awful at displaying text they don't understand the structure for. And <code> tags look consistently awful when read back, which is why we so strongly prefer syntax highlighting when we read XML or HTML.
Really, the big competition was BBCode, whose main problem is that it's too much like HTML, and Wikitext, whose main problem was that it's too bare-bones and domain-specific. The big advantages of Markdown are:
1. It's simply more readable. It pulls from how people were naturally formatting plain-text documents meant to be read as plain text rather than pulling from markup languages, so it more closely matches how people want to write documents in plain text. That makes the document easy to read while you're writing it. Asterisks for highlighting is an old convention, so were dashes and asterisks for bullets. Really, it made the asterisk an English punctuation mark for emphasis, which I think it genuinely is now.
2. It was easy to parse and short, which made it popular with Web 2.0 social media. It got picked up by Slashdot, Reddit, and Stack Overflow as "good enough" and "better than BBCode" for user generated content. Nobody liked using WYSIWYG editor boxes then, either. They were slow, buggy, and were often Flash-based before HTML5. They needed plain text formatting options, and BBCode was both annoyingly unnatural to type (just like HTML tags) and a little inflexible.
And nobody wanted to repeat MySpace and just let users use HTML. That was a horrible idea (Samy, XSS, etc.).
Except there's a massive lack of Markdown VIEWERS. You find MD files in every open-source project and lots of other places, but almost no viewers that render them as intended. So you wind up looking at them as plain text, with a bunch of formatting characters in them. What's the point, then?
Only just now has Windows Notepad been revised to render Markdown (I think it does now, anyway). And after searching for a Mac one I finally bought Marked. But that's all I could find. Otherwise you have to load MD files in some kind of editor and "preview" them. NO! I just want to double-click on the file and READ it, with the formatting applied. Why is that so hard?
That is the point, markdown has nice looking plain text, It is a terrible formatting language, it has no semantic ability. The whole point of markdown is that it is nice looking plaintext that can be typeset. I would even go so far to say that the intended primary render of markdown is the plaintext
This is why I don't like proposals to make markdown a better markup language, I understand the intent, markdown sucks as a decent language, but these "improvements" make the plain text ugly, and that is most of the value of markdown lost right there.
Markdown viewing is one of the core use-cases I had in mind when building the Tachi Code browser extension (https://tachicode.com/).
Open a raw .md file in your browser and it'll automatically open in a side-by-side editor/preview. If viewing is all you want, you can set the default preview mode for markdown files to be fullscreen.
A lot of the responses to your comment imo are kinda missing your point. I don't use Apple products, but I do understand what you're saying. You want an editor that also has an option for previewing the markup text in its formatted view.
It's officially only available for Linux (the Windows version is currently under development), and like I said, I don't use Apple products, and idk how familiar you are with manually compiling source code or how good Wine is on Macs, but maybe [Remarkable](https://remarkableapp.github.io/) could be an option?
> You find MD files in every open-source project and lots of other places, but almost no viewers
Huh? Any open-source project on GitHub, at least, has the viewer right there. It's the default view of markdown files. I assume other repos are similar.
I mean markdown existed, but before that there's like... whatever format phpbb and friends let you use for forum posts right? There was stuff that was text-y.
But perhaps it was the first big format that was followed a Unix-y "here's a CLI tool to go to HTML from this" thing, instead of some php script
SA had a stint of issues with illegitimate but real passport being issued via fraud so think it'll take a while till they make any 1st world waiver lists again
> Consistent with President Trump’s Executive Order on Addressing Egregious Actions of the Republic of South Africa, the Department of State is coordinating with the Department of Homeland Security to consider eligibility for U.S. refugee resettlement for people who are of Afrikaner ethnicity or a member of a racial minority in South Africa who are victims of government-sponsored race-based discrimination.
A lot of the folks in trump's cabinet are pro-apartheid white supremacists. they think white people in SA are the victims. Stephen Miller is a great example.
I'm not disagreeing with ya, just adding more context.
I get the general skepticism and how this gives anti freedom vibes, but wouldn't this also prevent some actual rootkit like sideloaded apps stealing credentials?
Not deep into rooting scene but seems plausible to me that this has some merit if you squint at it from the right angle
Trusted agents are useful. And I'm using legal meanings, not technical meanings here - so a "trusted agent" is someone or something that is legally acting on your behalf, to perform actions as though you were performing them.
The whole fucking promise of "general purpose computing" is that citizens should be able to delegate repetitive and tedious tasks to a computer. And they should have the full freedom to pick both which tasks are delegated, as well as which agent (program) is performing them.
Instead - what we're seeing is that companies are closing off as many avenues of automation for the average citizen as possible, under the guise of security.
The problem is that selecting a neutral (trusted!) agent is really, REALLY important, and companies are absolutely not neutral. They don't want the best results for "average Joe customer", they want the best results for themselves: the company.
They will make decisions that are contrary to your best interests all the time. They have exactly zero fiduciary duty to you, and boy do they know it.
In a decent world - in a decent CAPITALIST SOCIETY (which we can already debate the decency of in the first place) you allow space in the market for modification. Ex - don't like your desk? Change it. Don't like your car radio? Change it. Don't like that tool handle? Change it. Pick a different one, even one from a totally different company. Replace it.
This allows new ideas, new growth, and prevents stagnation.
In the digital world... there are a few companies that are trying as hard as possible to prevent you from being able to change anything.
---
Want a new browser? Fuck you.
Want a different UI for your banking needs? Fuck you.
Want to watch something without the ads? Fuck you.
Want to watch something with the ads, but in a less miserable ui? Fuck you too.
Want to automate something? Fuck you.
Want to export your data? Fuck you.
Want to sell software without us taking our rent money? Fuck you.
Want to shop in a different store? Fuck you.
Can't be letting our users make decisions that might cost us money.
---
So we're seeing an absolutely insane number of "digital locks" being employed not to protect users. No - instead they're getting deployed to protect revenue at the expense of users.
The only possible outcome is that service quality degrades to the point where you literally are better off without. Because that's what happens to incentives when you let companies operate in this manner.
If the consumer has no choice - the market has no power, and what little value there is in capitalism goes right into the trash bin.
So sure - if you squint, this maybe prevents someone from making a bad decision on which agent they trust.
But the problem is that now they HAVE to trust an agent they know is going to make bad decisions for them. Hope you like the biggest ad company in the world owning you digitally... Serfdom here we come.
I get what you're saying about general purpose computing. I do a bunch of selfhosting flavoured stuff so we're on the same wavelength in a way.
...but I don't think that's the lens legislators look through here. I think it's more like "Last week and upset constituent lost all their savings". This politician cares more about protecting gullible constituent than a hypothetical stallman-esque freedom argument.
Not saying I agree, but rather that I can see why a politician might land on that conclusion
In the given scenario though it's less likely such a user would be using a rooted or replacement OS. It's an involved process to do this in the first place.
Ie: the much larger percent of users affected by this news would already be more technically savvy and one would assume be less susceptible to known scams.
To your parent point though, sideloading apps per se OTOH is something most Android installs can do without rooting or a replacement OS. Google is already rolling out developer verification requirements for sideloaded apps on GMS Android installs (most devices) to mitigate impact of malicious apps, so there is already action being taken for regular users.
One could imagine other reasons Vietnam may want to dissuade more tech savvy users from running AOSP-based installs (such as GrapheneOS, which is known to be robust against Cellebrite) and using banking is a decent place to start.
Probably one of the most weak ass responses to a crisis ever. How was this not done within hours? Or if they can’t manage that at least within hours of it hitting mainstream news
Crisis? It was an intentional product launch. They assumed they'd be able to "get away with it" and that media outrage would not translate into effective legal action.
It's hard to believe that they didn't know that they had this problem before launching; given the volume of material, it's not like it can be difficult to drag out of the offending magic robot.
I'd assume they were just blindsided by the response; they're likely in real danger of getting either DNS-delisted or outright banned in several jurisdictions.
They first tried to manage it by putting the blame 100% on their pedophile users and obviously absolving themselves of any reponsibility (cue tired analogies with knife makers not responsible for stabbings).
Fortunately this narration did not catch traction.
> cue tired analogies with knife makers not responsible for stabbings
The knife maker will be in hot water if you ask them for a knife and you're very specific about how you'll break the law with it, and they just give it to you and do nothing else about it (equivalent to the prompt telling the LLM exactly the illegal thing you want).
Even more if the knife they made is illegal, an automatic knife or a dagger (equivalent to the model containing the necessary information to create CSAM).
Why Rust, which is just barely an improvement over a dynamically-typed language, when you can just as easily vibe to a language with a proper dependent type system?
Once you go down the spectrum then you have to start relying on tests, which end up indirectly validating the same things as the type system anyway, at which point you are no further ahead than having used a dynamically-typed language.
Partial statically-typed languages like Rust are pretty cool for things like highlighting basic mistakes in your editor as you type, automatic refactoring, etc. That is all very useful for humans writing code, even if a bit redundant on some technical level. But if an LLM is doing the work, none of that matters.
I asked several LLMs on your behalf and they all said "yes". But they might be a little biased.
Why not put them to the test? It is only a prompt away. Rust is an available extraction target for Rocq, so you can even integrate it into your existing codebase.
haha I shall. I like the idea of tighter constraints on LLM hence my enthusiasm for rust over python for vibecoding.
I did just try it and the first thing it did was try to download half a gig. Which is fine, except my fiber install is next week and I'm hotspotting off a phone. So that'll need to wait
...it did seem to fundamentally understand the ask though of "make me a plan to make a http hello world server".
Though at same time flagged that this isn't ideal
>Rocq/Coq is primarily for theorem proving; HTTP server implementation will be minimal
> Though at same time flagged that this isn't ideal
I suppose that depends how deep down the rabbit hole you want to go. HTTP is pretty minimal in and of itself. The complexity is due to it being layered on top of many other things, like TCP/IP, sockets, network devices, etc. Is it worth proving that your NIC functions according to spec? Probably not. But, if an HTTP server is what you are trying to build, like, parsing an HTTP request is quite suitable.
But a good case. I would suggest that Rocq is already proving itself. I expect by "make a http hello world server" you don't mean: First, invent the universe. Although maybe you do! Who knows? Your prompt is not clear. And since the type system is comprehensive enough to force you to actually think about what you really want, it is compelling you to be much more specific.
>I suppose that depends how deep down the rabbit hole you want to go.
I'm intellectually curious about whether a formal verification style vibecoding would work. It seems like the logical outcome of current trajectory - if compute increases exponentially then something where the LLM can just hammer away until it checks out seems ideal way of vibecoding while getting a bullet proof outcome.
Knowing absolutely nothing about formal verification I'm quite skeptical it's viable right now though. (For hobby projects, I'm sure the formal verification academics are having fun)
So still leaning towards rust as current optimal. I am ofc biased (python/rust is my preference depending on task).
>I expect by "make a http hello world server" you don't mean
There is no deeper thinking behind it. Selected it purely because if I ask a LLM to oneshot something without guidance I think keeping it simple and within training data is fair.
> Knowing absolutely nothing about formal verification
Are you sure about that? That is what we've been talking about all along. After all, the thing that separates Rust from Python, with respect to our discussion here — the thing that allows code to be less fragile, is its type system. Which is formal verification! Rust is very limited in that regard, not allowing verification of much, but still very much lives on the formal verification spectrum.
The trouble when you can't verify much is that you end up in a situation where something like:
fn add(a: i32, b: i32) -> i32 {
a + b + 1
}
Is able to compile just fine despite being completely wrong. To deal with that you need to write tests (which is essentially runtime formal verification). But once you've written the tests, you've also largely covered the properties that are statically verified, leaving no real benefit to LLMs.
But I infer that you aren't writing tests either, and that Rust's type system is feeling advantageous as it at least provides some limited verification. You seem to be enjoying that workflow, which is why I mentioned that there are languages with way better types systems that you might enjoy even more. There are probably hundreds of languages between Rust and full verification on the spectrum, so if Rocq isn't the exact one for you, try some others! They're only a prompt away.
Problem with this is demand like that can vanish once you paygate it.
reply