This editor claims to be lightweight, citing that it uses 30MB of RAM. But I assume that's without any extensions loaded.
Back in the day, though, one joke about Emacs was that it's an acronym for Eight Megabytes All Continuously Swapping. This was meant to highlight Emacs's reputation for bloat. Right now when I run Emacs it's using a lot more than 30, let alone eight. I'm pretty sure most of that is all the modes I have installed for every language I might ever use, regardless of whether I'm actually using it right now.
About 15 years back Visual Studio had a reputation for bloat, but my experience was that it was actually quite lightweight and snappy, especially compared to Eclipse and IntelliJ. Until you install ReSharper, which transformed it into 50 tons of molasses.
At work, Visual Studio Code currently consumes about 1GB of RAM and takes 5+ minutes to start up. On my personal computer, a 2013 MacBook, it uses more like 50MB and starts darn near instantaneously. But they're very different beasts; on my MacBook I've got it configured to only load the plugins I need for each project. At work we've got a whole dang Devcontainer that includes configuration to load I-don't-know-how-many extensions, basically anything anyone on the team has ever wanted. The devcontainer extension makes you put the list of extensions to load into a file that needs to be checked into source control. So the only way for someone to get this tool they want is to make everyone else get it, too. All to sling a relatively modest volume of Python code.
And of course if I try to opt out of all of that I make my life even harder. Trying to get by without that pile of crap is just spitting in the wind. Run-time requirements aren't documented; they're shoved into an undocumented and ever-growing list of Bash commands in the Dockerfile. Coding standards aren't documented or managed with something straightforward like Git hooks; they're enforced through a plugin and its configuration.
I do remember when vscode was lightweight. It happened to be a time when not many plugins were available. That put a hard limit on just how much bloat you could accomplish. But, of course, as soon as it got popular people started creating plugins for darn near everything.
Perhaps the problem isn't the editors. Perhaps it's us.
lucianbr 27 days ago [-]
It's a cycle, and we've been around the bend multiple times already.
Installing multiple programs on my computer or a server is complicated, and slows things down, and it's insecure and hard to replicate. So we created VMs. And for a while VMs were great. But then we started putting everything we needed in the VMs, and they also became complicated, and slow, and insecure and whatnot. So we have containers. And containers are now slowly getting bloated too. Kubernetes simplified some things, but now we need Helm to deal with K8s, and Helm itself is now quite complicated.
Editors start lightweight and fast, then get bloated with features. So does productivity software. Programming languages start simple and easy to use and understand, and progressively get more features, each of which seems nice in isolation, but soon the codebases use everything, and it interacts, and you need decades of experience to use it all proficiently.
Same for libraries. For network protocols. For standards of all kinds.
It's most definitely us.
27 days ago [-]
sweeter 27 days ago [-]
This is exactly why I switched from containers to nix flakes and from Vs code to neovim or Helix. The difference is night and day. It's so nice to have my editor open instantly and to be able to have multiple instances open at once. The LSP is by far the most memory hungry. It's definitely worth the effort.
BD103 27 days ago [-]
> On my personal computer, a 2013 MacBook, it uses more like 50 and starts darn near instantaneously.
Just for clarification, do you mean 50 GiB or 50 MiB? I'm assuming MiB in this scenario, since allocating 50 GiB doesn't mix with an instantaneous startup.
bunderbunder 27 days ago [-]
Yeah, mib
fredsmith219 27 days ago [-]
Yup, it is your works crazy policy of making sure everyone gets a one size fit all VS code Configuration. I’ve loaded VS code on a 10 year-old Lenovo and it runs just fine with only basic Python plug-ins. Five minute startup time is crazy.
from-nibly 27 days ago [-]
Direnv + nix packages is way better than Dev container development in my experience.
kerkeslager 27 days ago [-]
> Perhaps the problem isn't the editors. Perhaps it's us.
For coming up on a decade I've used Vim with a minimal .vimrc and no plugins. The only time I deviate from this is when I am writing in an s-expression based language. I would probably deviate from this to write Java or C#, but I haven't written either in a while.
There are upsides and downsides. The biggest upside is simply that I haven't spent ANY time learning new editors or new editor features; I'll occasionally learn about a feature of Vim that I didn't know existed, but that's very oriented toward solving immediate problems, because it tends to happen when I run into something that feels like there's probably an easier way to do it, and I'll do a quick internet search. I think a lot of devs spend a lot of time learning tools with the sense that the time spent will be paid back by time savings from using the tools, but the reality is way more hit-and-miss, and I think a lot of people could benefit from being more selective in what they spend their learning time on.
The thing that Vim completely misses is being able to jump to the appropriate file where a class/function is defined. This is more of a tradeoff than IDE folks recognize: when I was using PyCharm/IntelliJ/ReSharper, I found that being able to jump around easily would hide the fact that my projects were growing in size and complexity. The tooling makes this less painful up front, but eventually, you still feel the pain, because eventually there's some bug that cascades through a bunch of files, and you still have to reason about all of them. Finding definitions isn't the core issue with having a lot of definitions, reasoning about how they interact is the core issue, and the IDE tooling doesn't solve that. Being in Vim and having to deal with my project's file structure directly and explicitly means I feel the pain of complexity earlier, when it's easier to fix.
If I'm being honest, I'm not sure that the tradeoffs comes out in Vim's favor here. I don't think we get to have a conclusive answer because there's simply nobody who uses both vanilla Vim and the best IDEs at a high enough level to have an informed opinion about which is better. I'd say I am close because I have used both extensively, but my IDE knowledge is outdated by about a decade.
But, I've said before and I'll say again that entering text into files isn't usually the limiting factor of software development speed. If I'm mentoring a new programmer I'd rather see them learn TDD and/or how to leverage type systems and write code in Notepad, than see them write untested, unchecked code in The Best IDE/Editor Ever. Of course, there's no reason to go to those extremes.
bunderbunder 27 days ago [-]
Your 3rd and last paragraphs reminded me of a feature I really like about F#: all source files in an assembly have an explicit, sequential compilation order. And you can only have references to things that had been defined earlier, either in the current file or in a file that comes earlier in the compilation order.
It makes learning and navigating a new codebase much easier. So much so that it doesn't really require IDE tooling the way it does with most mainstream languages. It's harder to get lost when you always know which way is up. Consciously thinking about whether you're doing top-down or bottom-up design also flows naturally from this, for the same reason, and that seems to encourage more thoughtful, readable code design.
Is it more work? Up-front, yes, absolutely. In the long run, though? By the time I finished my first year of CS education I had already been exposed to many many examples of cases where greedy algorithms consistently produce sub-optimal results. Perhaps they aren't teaching people about that in school anymore.
CrimsonCape 27 days ago [-]
That sounds like a nightmare when an IDE presents files alphabetically but has a strict logical order that the UI doesn't understand. Talk about jumping around.
bunderbunder 27 days ago [-]
Editors and IDEs with F# editing modes know how to read the project file and display the files in the correct order.
msteffen 27 days ago [-]
Wait, does F# not support mutual recursion? Can one not write eg a recursive descent parser?
kerkeslager 27 days ago [-]
They do support mutual recursion, but you have to make it explicit.
Nah, Elm doesn't need the rec keyword and could be argued to be a ML descendant
bunderbunder 27 days ago [-]
Same as the rest of the functional languages, even.
mananaysiempre 27 days ago [-]
My first functional language was Haskell, which essentially only has a letrec, so afterwards I’ve always viewed everybody else’s approach as a bit peculiar :) Fair point that it’s the Lisp way too.
Iwan-Zotow 27 days ago [-]
No, this is about single pass compiler, which makes it fast but all references to use in current file to be defined earlier
bunderbunder 27 days ago [-]
That was why it was done that way in languages developed in the 1970s. But, as kerkeslager points out, that logic doesn't work for an enterprise programming language from the 2000s.
We don't actually need to speculate on this. Don Syme has explicitly said that this was a deliberate language design decision meant to discourage the big ball of mud antipattern. And the language maintainers continue to cite this as the reason why they don't change this behavior even though they easily could.
kerkeslager 27 days ago [-]
Single pass compilation can support backreferences, i.e. referencing a symbol and then defining it later, efficiently with a technique called "backpatching". All single-pass compilers I know of use backpatching for computing jumps--I'm not even aware of any other way to compute jumps. For symbols, the implementation of backpatching is a bit more complex, but it's a pretty well-known solution and I don't think it would be a significant barrier for any competent compiler developer. That is to say, if they've chosen to not support backreferences, it's not because it's hard to do in a single-pass compiler.
EDIT: The wonderful book Crafting Interpreters has an implementation of backpatching jumps to implement loops. Before anyone says "this is an interpreter, not a compiler", be aware that most modern interpreters contain a compiler. https://craftinginterpreters.com/jumping-back-and-forth.html
Iwan-Zotow 24 days ago [-]
Sure, we could do some craft to work around single pass limitations, but that was Don Syme decision from long time ago, and F# folks are faithful to it.
Actually liked language a lot, thought it could replace Python as top level AI/ML tool
olejorgenb 22 days ago [-]
> I found that being able to jump around easily would hide the fact that my projects were growing in size and complexity.
That is a good point. Having IDE features like auto-import, jump to definition, etc., definitively allow for a more messy project structure.
Still, I always wonder how big projects people advocating "no IDE features" actually have worked on (or alternatively - if they are some sort of memory savants). One thing is a small-medium sized personal project. Another is a 10-20 man cooperation where you have only written a portion of the code, and a big chunk of that is a long time since you written. IMO that require lots of code reading, which is very painful without jump to definition... I don't really see how a perfect project organization could sufficiently remove that reading friction.
msravi 27 days ago [-]
> The thing that Vim completely misses is being able to jump to the appropriate file where a class/function is defined.
ctags+cscope in vim is great at this!
:cs f e <expression>
dangsux 27 days ago [-]
[dead]
geenat 28 days ago [-]
As an extension writer...
Writing extensions in Lua is huge. (Same as OBS) Looks very simple and productive.
It's one of the main reasons I've stuck to Sublime... extending with Python is very easy and works everywhere.
Even if both Zed and VSCode are strong in other areas.. Rust extensions makes me cringe (a build toolchain? ugh..) VSCode's inconsistent undocumented Javascript API is a pain in the butt (paste & pray driven development).
Will be keeping an eye on this.
throwup238 27 days ago [-]
> VSCode's inconsistent undocumented Javascript API is a pain in the butt (paste & pray driven development).
It's so bad they have a whole Github Copilot mode specifically dedicated to it. Pay and pray driven development.
lukan 27 days ago [-]
Oh and I kind of finally decided to give those shiny modern tools a serious try.
Paste (pay) and pray does not sound too good on the other hand.
theshrike79 27 days ago [-]
Wezterm is configured with Lua, Hammerspoon configs are also Lua.
Both are super easy to sync to multiple computers with chezmoi and the configs themselves can be smart enough to behave differently on different machines.
I wish more software used Lua for config.
ta8645 27 days ago [-]
For what it's worth, NeoVim's extension language is Lua as well.
srik 27 days ago [-]
Yup. I've paradoxically found it more convenient to write my neovim plugins+configuration in lua than in python with vanilla vim's python api.
coliveira 27 days ago [-]
Vim also has support for Lua scripts.
maleldil 26 days ago [-]
Not to the same extent. Neovim has extensive Lua support, to the point where you can do _almost_ anything in Lua, whereas in Vim, it's, AFAIK, a second-class citizen. For example, my nvim config is written entirely in Lua with no vimscript files, except for a few vim.cmd's that run one-line vimscript commands. (exactly three, and they're all highlighting/colorscheme–related).
coliveira 26 days ago [-]
I believe you can do the same in vim, however I agree that there is more friction in vim because Lua is not the main scripting language. Moreover, vim is not guaranteed to be compiled with Lua, so you only want to do this if you can control the installation of the vim binaries.
p4bl0 27 days ago [-]
That's what I really love with Kate (and actually the KTextEditor component of KDE Frameworks): you can build heavy plugins in C++ but there is also a very good JavaScript API that you can write new editing commands with for example.
rd07 27 days ago [-]
Lite XL (which is a project Pragtical forked on) is my first experience writing a plugin for code editor and coding in Lua, and I am surprised on how easy is it. I don't know about other editors, but in Lite XL and Pragtical I can extend or overwrite almost anything the core plugin is doing. I can even start writing the plugin in my user module file (init.lua), and see the change on the fly.
kqr 27 days ago [-]
This is inspired by Emacs which works the same way. It, in turn, takes inspiration from how Lisp systems have worked since time immemorial. You're meant to open a REPL directly into the running system as a way to evolve it.
I'm a VSCode extension author and I don't really know what you mean by "inconsistent undocumented API". Do you have any examples?
golergka 27 days ago [-]
I haven't written much vscode extensions, but I've worked professionally on editors that use Monaco (the text editor library used and developed by vscode team). There's almost no documentation whatsoever.
pjmlp 27 days ago [-]
Yeah, I always complain about Python lack of JIT, but being extension language is actually a good use for it.
Or Tcl, which I used 20 years ago as for our in-house proxy module for Apache/IIS, extensible in C and Tcl.
Unfortunely out of fashion for anyone besides EDA tooling.
fusslo 27 days ago [-]
Tangential: is there an IDE out there that supports different color schemes for each window it has open? does Pragtical? I didn't see it in the docs
I used to like having different projects open in different windows and easily differentiate between them with their color schemes. Kinda like setting a terminal to open with a random color profile
It seems like vscode and sublime want to change the scheme across all the windows.
rudnevr 27 days ago [-]
IntelliJ does, of course. Per project, per window, with background images etc
in vscodium I have a different left bar color for each project - not exactly what you want but I can easily differentiate between them.
There is a workspace settings json file per project:
"settings": {
"workbench.colorCustomizations": {
"activityBar.background": "#faf7c7",
"activityBar.foreground": "#000000" }
}
(disclaimer: this works on Debian Gnome)
TiredOfLife 27 days ago [-]
VS Code you can have different Theme per Workspace.
mosburger 27 days ago [-]
Is anyone else getting a "“Pragtical.app” is damaged and can’t be opened. You should move it to the Trash" error when attempting to run the arm64 build on macOS? Really wanted to try it out!
I suppose it could just be some security crap Corp IT installed on my laptop preventing it from installing.
It looks like it's only taking up 7.9MB in my Applications folder so it must be corrupt or something.
yas_hmaheshwari 27 days ago [-]
I have seen a similar error in the past, and that one was because of MacOS extended permissions
```
cd /Applications/DBeaver.app/; ls -@l
```
And then if you see some extended attributes like quarantine and provenance, you can remove them
Haven't tried with Pragtical (hard to say it out loud BTW, lol) but have had success with right-click-opening other apps that give this error. Sometimes I need to do it multiple times to open it as normal. No issues with the apps themselves, has to do with app signing (or lack thereof for many macOS apps that one just downloads from a site).
tom_ 27 days ago [-]
An error about the app being damaged specifically can stem from the contents of the .app folder being modified after it was signed with the codesign tool. You can use codesign --verify (consult the man page) to get some info about why it's being considered damaged.
I've got this wrong in the past by adding the README too late in the process. Once I'd fixed that, the reason macOS gives for not opening my app became that Apple can't check it for malicious software. Much better... I think? The right click/open workaround does work.
hoistbypetard 27 days ago [-]
I am also getting that error. I have no security crap from Corp IT on my personal macbook.
rpastuszak 27 days ago [-]
FWIW the universal build works with the right mouse button click trick
tbeseda 27 days ago [-]
FYI, in macOS v15 Sequoia +, Gatekeeper/quarantine/signing has changed. Right click to open won't allow the bypass. The quickest way, without disabling runtime protection:
Hmm. That worked for me, but when I run the app, everything in it is reeeealy tiny. Like they're trying to work around Retina display scaling but got it wrong somehow.
rd07 27 days ago [-]
Have you tried changing the scale through Settings > Plugin > Scale ?
kccqzy 27 days ago [-]
That sounds like a code signing error. 7.9MB is a good size.
_benj 27 days ago [-]
Just the fact that they did such an amazing job with their documentation is as huge win for me!
I really liked Lite XL but back when I looked at it it was a challenge to understand it’s API and functionality.
Looking forward to give this a spin!
teo_zero 27 days ago [-]
Micro-review after having used it for half a day on Windows.
It seems really lightweight: the UI is spartan but snappy, loading a file is instantaneous, etc. Downloading and installing a plugin is as easy as dropping a Lua file into a directory. And even after installing several plugins, the speed doesn't seem affected.
On the other hand, it comes with hardly any feature out of the box, and everything must be covered by plugins. The plugins are really "atomic". For example, one is to auto-indent, another one to auto-format a block; one is to highlight the matching bracket a second one to jump to the matching bracket, and a third one to automatically insert the closing bracket, while yet another one draws rulers to visualize the block between matching brackets. Do you want to set markers and jump between then? another plugin. Build from within the editor? another plugin. And so on...
The plugin "store" looks good, but accessing it from inside the editor is a poor experience: sometimes it just hungs and you have to restart the editor. Additionally the fact that plugins, themes and fonts are all mixed up doesn't make it easy to find what you're looking for.
Final judgement: if I need to select and install 10 to 15 plugins just to make it on par with a stock Vim, I'll stay with the latter.
rd07 27 days ago [-]
IMO, Pragtical (and Lite XL) is closer to Atom ideologically where almost everything is a plugin. But compared to Atom, they ship the bare minimum of plugin in their release and let user install the rest as they need. Pragtical is better in this regards than Lite XL where they ship better UI improvement and default plugin, for example the setting page must be installed as a plugin in Lite XL but already shipped as part of Pragtical release.
I agree with you that they should add some plugin as part of their core app to increase user's experience out of the box though.
vouaobrasil 28 days ago [-]
Looks a lot like LiteXL. Is it based off it? What makes it different?
throwaway744678 27 days ago [-]
A bit of context: Motivation about Pragtical Text Editor [0]
I thought for a while that TextMate bundles[1] were that, especially since JetBrains[2], Linguist[3] and VSCode[4] honor them. However, in the spirit of "the good thing about standards ..." highlight.js does[5] almost the same thing that Pragtical does which makes me feel even worse
I had high hopes for Tree-Sitter since it seems to have really won mindshare, but the idea of having an executable grammar spec[6] is ... well, no wonder it hasn't caught on outside of that specific ecosystem
Why fork Lite XL instead of contributing? Just out of curiosity, since I'm not familiar with either project and don't know what their respective philosophies are.
The UI gives me a Godot-y vibe. Is there some relation?
truckerbill 27 days ago [-]
Is it possible to do custom drawing modes for diagrams and viewers?
swah 27 days ago [-]
Downloaded both Lite XL and Pragtical and have to say that Lite XL looked ok on open, while Pragtical looked super tiny and all the UI was out of alignment.
Weethet 27 days ago [-]
Yeah, for me too. It looks incredibly broken as of right now and I don't even understand how. I'd say that it's okay if it was an alpha of a completely new editor, but it's a fork of a one that already works well, so idk, I don't expect it to go anywhere
hollerith 27 days ago [-]
Like other apps that use SDL, this (Pragtical) is blurry on Gnome with the scale-monitor-framebuffer experimental feature enabled and scaling set to some value other than 1.00.
hans_castorp 28 days ago [-]
The user interface font is way too small and nearly impossible to read on a 4K monitor (on Windows)
Fluorescence 28 days ago [-]
Looks good on my Ubuntu 32" 4k.
You can change the UI font size in Settings / User Interface / Font (double click to edit).
My main objection was "smooth scrolling" which I could turn off as "scroll transition". Bit annoying you can't search settings though. Don't know why I am looking at it though because I value the higher level things new editors will always be missing e.g. refactoring, debugging, test integration, advanced panel management and a million extensions I forget I rely on everyday.
rd07 27 days ago [-]
You can change the scale setting through Settings > Plugins > Scale and see the best setting for your monitor
swah 27 days ago [-]
Didn't make a difference here (restarted too, ofc)
stephc_int13 27 days ago [-]
Not sure if this is mentioned somewhere, but it looks like a fork of the lite editor, also built on top of SDL and Lua.
rd07 27 days ago [-]
It is a fork of Lite XL, which itself is a fork of Lite. So, it is a fork of a fork of Lite.
emrah 27 days ago [-]
> light weight
Honestly that's not an issue, I would personally not base my judgment on memory usage, unless it is a memory hog.
I know others do but for reasons that go beyond practical. For those that have things to get done, I suspect they think like I do.
unregistereddev 27 days ago [-]
> I know others do but for reasons that go beyond practical. For those that have things to get done, I suspect they think like I do.
Please don't pass judgement on my preferences or whether they are practical. IntelliJ uses multiple GB of ram. Teams uses most of a gig. My browser uses a couple gigs. Docker containers eat a lot of it. When I am multitasking and everything is a memory hog, I'm forced to choose between using lighter-weight tooling and continually opening and closing apps. Using lighter-weight tooling is the practical choice.
emrah 24 days ago [-]
You skipped over "unless it is a memory hog". When an app uses multiple gigs, it's a memory hog :-)
mnmalst 27 days ago [-]
Doesn't pick up my (non ttf) Terminus font and there is no obvious way to set the font manually.
brisket_bronson 27 days ago [-]
I just tried it and culdn't get past the first screen.
The "installation" failed on mac and had to find a workaround just to use the editor.
All the fonts look wrong, too small and misconfigured. Maybe the project needs more time to mature, in the meanwhile, I'll stick to vim.
prmoustache 27 days ago [-]
Does it have a multiple modes support and vim-like keybindings either vanilla or through plugins?
max_ 27 days ago [-]
3.5 MB is great news, I am happy it's not another electron editor.
I will be trying this!
swah 27 days ago [-]
No LLM plugins yet?
rd07 27 days ago [-]
AFAIK, not yet
kerkeslager 27 days ago [-]
Anyone have any experience building GUIs in SDL?
I have been using Flet (basically multilingual binding for Flutter) to build GUIs the last year or so, and in general the experience has been very good.
However, I've recently started work on a project that has need for a large number of controls--on the order of 2000 controls visible at one time--and I'm running into Flet's limitations. All the Flet controls have animations, which creates a good default experience when there's a few of them, but when you're using 2000 of them, simply passing your mouse over an area with a bunch of controls causes a cascade of small animations and the renderer explodes. Impressively, it usually doesn't seem to cause any performance lag, but it seems like the way they avoid lag is just by dropping the animations half-rendered which causes the window to flash all sorts of broken half-rendered gobbledygook to the screen. My approach has been to turn off animations as much as possible, but there are enough controls visible at any one time that even just rendering the without animations is running into issues.
I'll probably just deal with it for my first version--the core functionality is about number crunching and the user base is used to using much worse UIs--but I'm looking at lower-level tooling that can still remain cross-platform. In this post I'm seeing that Pragtical is advertising that they're written with SDL and I'm seeing some similarities between a code editor and what I'm doing, so it seems like that might be the solution to my problem.
artemonster 27 days ago [-]
Do I understand correctly that its a software renderer? They manually blit a buffer from glyphs and use SDL to show it, akin to immediate mode?
ben-schaaf 27 days ago [-]
Immediate mode is the way a rendering API works. Most glyph rendering works by blitting from a buffer, regardless of how they design the API.
TechMaverick 27 days ago [-]
[flagged]
BigParm 27 days ago [-]
How does it occupy 30MB ram but 5MB disk space does it grow
genezeta 27 days ago [-]
In case your question is sincere, this is normal.
Generally, a program on disk contains code. Part of that is the description of certain structures. Say you have an editor which can load a file, you have to have structures to hold that file, to keep track of the undo history, to represent the file with colours (syntax highlighting) and whatever. Your editor may have a Lua VM inside running plugins that you load. That VM will reserve additional memory to run those plugins. And so on.
All that only exists while the program is running, but not on disk.
a-french-anon 27 days ago [-]
void *p = malloc(30 * 1024 * 1024);
BigParm 15 days ago [-]
Makes sense. It's intuitive when you specify a number of bytes. I have myself been allocating memory using "new" so idk how my broken brain asked such a dumbass question.
k__ 27 days ago [-]
"runs locally on your machine as a CLI application"
Hrm, I was hoping it would run all in the browser.
Cool idea nevertheless!
wordpad25 27 days ago [-]
Project was founded specifically to counter the modern trend of using web stack for editors
rd07 27 days ago [-]
Lite XL which is a project Pragtical forked on has been tested to run on browser. You can try it here :
> Hrm, I was hoping it would run all in the browser.
like Monaco? Or a proper fully featured text editor?
cynicalpeace 27 days ago [-]
Any IDE that isn't "AI first" is going to have a hard time from here on out. Cursor is beginning to eat the world much like VSCode did.
I'm sure there are some here on HN that will say "nah, I prefer the old fashioned way" but you will be decidedly in the minority very fast.
Cthulhu_ 27 days ago [-]
Nah; an IDE / editor needs to be a solid, pluggable and performant core first and foremost, so that any addons like AI shenanigans are opt-in and swappable. While AI isn't new, AI-powered code assist is and with that in mind we're only at the beginning.
Consider LSP, where language developers can now publish a single tool for language specific utilities, where before every editor needed to add support for languages separately. Again, pluggability.
cynicalpeace 27 days ago [-]
We actually are in agreement, especially re pluggability.
Whether it's an extension or "AI first", the impact of AI on IDE's will be massive and an IDE that doesn't do it well will be barely used.
edvinbesic 27 days ago [-]
You’re actually not in agreement, because “AI first” would imply it being a core feature of the IDE/Editor, something like Zed, whereas a plugin would imply that I can ignore it and it not being a core part of said IDE/Editor.
cynicalpeace 27 days ago [-]
lol I agree with every part of what they said except "Nah".
Interesting to be told what I do and do not agree with.
from-nibly 27 days ago [-]
I guess I'm an old grump then. I don't want air first development. It should be an extension. Why would an editor need to have air baked in when things like language support is an extension?
cynicalpeace 27 days ago [-]
It could be an extension, but its going to be so important that the IDE with the best AI support will be the most popular. Presumably that IDE won't relegate it to extension class citizenship. It will be most of the product.
Even now, I've built a ramen profitable side project mostly by sipping my coffee and approving Cursor's suggestions. 10x faster at least.
Way more productivity gains than even language support.
meiraleal 27 days ago [-]
as an extension it already exists, nothing new in that front.
elashri 27 days ago [-]
I doubt that if Stackoverflow or Jetbrains surveys included a question about if people just heard about cursor that you will get more than 50%. Let alone people actually using it and ditching VSCode.
This editor claims to be lightweight, citing that it uses 30MB of RAM. But I assume that's without any extensions loaded.
Back in the day, though, one joke about Emacs was that it's an acronym for Eight Megabytes All Continuously Swapping. This was meant to highlight Emacs's reputation for bloat. Right now when I run Emacs it's using a lot more than 30, let alone eight. I'm pretty sure most of that is all the modes I have installed for every language I might ever use, regardless of whether I'm actually using it right now.
About 15 years back Visual Studio had a reputation for bloat, but my experience was that it was actually quite lightweight and snappy, especially compared to Eclipse and IntelliJ. Until you install ReSharper, which transformed it into 50 tons of molasses.
At work, Visual Studio Code currently consumes about 1GB of RAM and takes 5+ minutes to start up. On my personal computer, a 2013 MacBook, it uses more like 50MB and starts darn near instantaneously. But they're very different beasts; on my MacBook I've got it configured to only load the plugins I need for each project. At work we've got a whole dang Devcontainer that includes configuration to load I-don't-know-how-many extensions, basically anything anyone on the team has ever wanted. The devcontainer extension makes you put the list of extensions to load into a file that needs to be checked into source control. So the only way for someone to get this tool they want is to make everyone else get it, too. All to sling a relatively modest volume of Python code.
And of course if I try to opt out of all of that I make my life even harder. Trying to get by without that pile of crap is just spitting in the wind. Run-time requirements aren't documented; they're shoved into an undocumented and ever-growing list of Bash commands in the Dockerfile. Coding standards aren't documented or managed with something straightforward like Git hooks; they're enforced through a plugin and its configuration.
I do remember when vscode was lightweight. It happened to be a time when not many plugins were available. That put a hard limit on just how much bloat you could accomplish. But, of course, as soon as it got popular people started creating plugins for darn near everything.
Perhaps the problem isn't the editors. Perhaps it's us.
https://www.xkcd.com/2044/
Installing multiple programs on my computer or a server is complicated, and slows things down, and it's insecure and hard to replicate. So we created VMs. And for a while VMs were great. But then we started putting everything we needed in the VMs, and they also became complicated, and slow, and insecure and whatnot. So we have containers. And containers are now slowly getting bloated too. Kubernetes simplified some things, but now we need Helm to deal with K8s, and Helm itself is now quite complicated.
Editors start lightweight and fast, then get bloated with features. So does productivity software. Programming languages start simple and easy to use and understand, and progressively get more features, each of which seems nice in isolation, but soon the codebases use everything, and it interacts, and you need decades of experience to use it all proficiently.
Same for libraries. For network protocols. For standards of all kinds.
It's most definitely us.
Just for clarification, do you mean 50 GiB or 50 MiB? I'm assuming MiB in this scenario, since allocating 50 GiB doesn't mix with an instantaneous startup.
For coming up on a decade I've used Vim with a minimal .vimrc and no plugins. The only time I deviate from this is when I am writing in an s-expression based language. I would probably deviate from this to write Java or C#, but I haven't written either in a while.
There are upsides and downsides. The biggest upside is simply that I haven't spent ANY time learning new editors or new editor features; I'll occasionally learn about a feature of Vim that I didn't know existed, but that's very oriented toward solving immediate problems, because it tends to happen when I run into something that feels like there's probably an easier way to do it, and I'll do a quick internet search. I think a lot of devs spend a lot of time learning tools with the sense that the time spent will be paid back by time savings from using the tools, but the reality is way more hit-and-miss, and I think a lot of people could benefit from being more selective in what they spend their learning time on.
The thing that Vim completely misses is being able to jump to the appropriate file where a class/function is defined. This is more of a tradeoff than IDE folks recognize: when I was using PyCharm/IntelliJ/ReSharper, I found that being able to jump around easily would hide the fact that my projects were growing in size and complexity. The tooling makes this less painful up front, but eventually, you still feel the pain, because eventually there's some bug that cascades through a bunch of files, and you still have to reason about all of them. Finding definitions isn't the core issue with having a lot of definitions, reasoning about how they interact is the core issue, and the IDE tooling doesn't solve that. Being in Vim and having to deal with my project's file structure directly and explicitly means I feel the pain of complexity earlier, when it's easier to fix.
If I'm being honest, I'm not sure that the tradeoffs comes out in Vim's favor here. I don't think we get to have a conclusive answer because there's simply nobody who uses both vanilla Vim and the best IDEs at a high enough level to have an informed opinion about which is better. I'd say I am close because I have used both extensively, but my IDE knowledge is outdated by about a decade.
But, I've said before and I'll say again that entering text into files isn't usually the limiting factor of software development speed. If I'm mentoring a new programmer I'd rather see them learn TDD and/or how to leverage type systems and write code in Notepad, than see them write untested, unchecked code in The Best IDE/Editor Ever. Of course, there's no reason to go to those extremes.
It makes learning and navigating a new codebase much easier. So much so that it doesn't really require IDE tooling the way it does with most mainstream languages. It's harder to get lost when you always know which way is up. Consciously thinking about whether you're doing top-down or bottom-up design also flows naturally from this, for the same reason, and that seems to encourage more thoughtful, readable code design.
Is it more work? Up-front, yes, absolutely. In the long run, though? By the time I finished my first year of CS education I had already been exposed to many many examples of cases where greedy algorithms consistently produce sub-optimal results. Perhaps they aren't teaching people about that in school anymore.
https://learn.microsoft.com/en-us/dotnet/fsharp/language-ref...
We don't actually need to speculate on this. Don Syme has explicitly said that this was a deliberate language design decision meant to discourage the big ball of mud antipattern. And the language maintainers continue to cite this as the reason why they don't change this behavior even though they easily could.
EDIT: The wonderful book Crafting Interpreters has an implementation of backpatching jumps to implement loops. Before anyone says "this is an interpreter, not a compiler", be aware that most modern interpreters contain a compiler. https://craftinginterpreters.com/jumping-back-and-forth.html
Actually liked language a lot, thought it could replace Python as top level AI/ML tool
That is a good point. Having IDE features like auto-import, jump to definition, etc., definitively allow for a more messy project structure.
Still, I always wonder how big projects people advocating "no IDE features" actually have worked on (or alternatively - if they are some sort of memory savants). One thing is a small-medium sized personal project. Another is a 10-20 man cooperation where you have only written a portion of the code, and a big chunk of that is a long time since you written. IMO that require lots of code reading, which is very painful without jump to definition... I don't really see how a perfect project organization could sufficiently remove that reading friction.
ctags+cscope in vim is great at this!
Writing extensions in Lua is huge. (Same as OBS) Looks very simple and productive.
It's one of the main reasons I've stuck to Sublime... extending with Python is very easy and works everywhere.
Even if both Zed and VSCode are strong in other areas.. Rust extensions makes me cringe (a build toolchain? ugh..) VSCode's inconsistent undocumented Javascript API is a pain in the butt (paste & pray driven development).
Will be keeping an eye on this.
It's so bad they have a whole Github Copilot mode specifically dedicated to it. Pay and pray driven development.
Both are super easy to sync to multiple computers with chezmoi and the configs themselves can be smart enough to behave differently on different machines.
I wish more software used Lua for config.
Or Tcl, which I used 20 years ago as for our in-house proxy module for Apache/IIS, extensible in C and Tcl.
Unfortunely out of fashion for anyone besides EDA tooling.
I used to like having different projects open in different windows and easily differentiate between them with their color schemes. Kinda like setting a terminal to open with a random color profile
It seems like vscode and sublime want to change the scheme across all the windows.
I suppose it could just be some security crap Corp IT installed on my laptop preventing it from installing.
It looks like it's only taking up 7.9MB in my Applications folder so it must be corrupt or something.
``` cd /Applications/DBeaver.app/; ls -@l ```
And then if you see some extended attributes like quarantine and provenance, you can remove them
``` xattr -d com.apple.provenance DBWeaver.app/; xattr -d com.apple.quarantine DBWeaver.app/ ```
I've got this wrong in the past by adding the README too late in the process. Once I'd fixed that, the reason macOS gives for not opening my app became that Apple can't check it for malicious software. Much better... I think? The right click/open workaround does work.
`xattr -r -d com.apple.quarantine /Applications/Pragtical.app`
-d is delete -r is recursive
Hopefully, Apple won't lock it down further.
I really liked Lite XL but back when I looked at it it was a challenge to understand it’s API and functionality.
Looking forward to give this a spin!
It seems really lightweight: the UI is spartan but snappy, loading a file is instantaneous, etc. Downloading and installing a plugin is as easy as dropping a Lua file into a directory. And even after installing several plugins, the speed doesn't seem affected.
On the other hand, it comes with hardly any feature out of the box, and everything must be covered by plugins. The plugins are really "atomic". For example, one is to auto-indent, another one to auto-format a block; one is to highlight the matching bracket a second one to jump to the matching bracket, and a third one to automatically insert the closing bracket, while yet another one draws rulers to visualize the block between matching brackets. Do you want to set markers and jump between then? another plugin. Build from within the editor? another plugin. And so on...
The plugin "store" looks good, but accessing it from inside the editor is a poor experience: sometimes it just hungs and you have to restart the editor. Additionally the fact that plugins, themes and fonts are all mixed up doesn't make it easy to find what you're looking for.
Final judgement: if I need to select and install 10 to 15 plugins just to make it on par with a stock Vim, I'll stay with the latter.
[0] https://github.com/pragtical/pragtical/issues/6#issuecomment...
First, the ARM version, when I tried to launch it, had MacOS say it was damaged. Only option was to move it to the trash.
The Universal option did work, but when I tried to open a standard .c file, it crashes. It is fast though and fairly slick looking. But needs work.
I thought for a while that TextMate bundles[1] were that, especially since JetBrains[2], Linguist[3] and VSCode[4] honor them. However, in the spirit of "the good thing about standards ..." highlight.js does[5] almost the same thing that Pragtical does which makes me feel even worse
I had high hopes for Tree-Sitter since it seems to have really won mindshare, but the idea of having an executable grammar spec[6] is ... well, no wonder it hasn't caught on outside of that specific ecosystem
1: https://github.com/rspec/rspec.tmbundle/blob/1.1.12/Syntaxes...
2: https://github.com/JetBrains/intellij-community/blob/idea/24...
3: https://github.com/github-linguist/linguist/blob/v7.30.0/lib...
4: https://github.com/microsoft/vscode-textmate
5: https://github.com/highlightjs/highlight.js/blob/11.10.0/src...
6: https://github.com/tree-sitter/tree-sitter/blob/v0.22.6/test...
You can change the UI font size in Settings / User Interface / Font (double click to edit).
My main objection was "smooth scrolling" which I could turn off as "scroll transition". Bit annoying you can't search settings though. Don't know why I am looking at it though because I value the higher level things new editors will always be missing e.g. refactoring, debugging, test integration, advanced panel management and a million extensions I forget I rely on everyday.
Honestly that's not an issue, I would personally not base my judgment on memory usage, unless it is a memory hog.
I know others do but for reasons that go beyond practical. For those that have things to get done, I suspect they think like I do.
Please don't pass judgement on my preferences or whether they are practical. IntelliJ uses multiple GB of ram. Teams uses most of a gig. My browser uses a couple gigs. Docker containers eat a lot of it. When I am multitasking and everything is a memory hog, I'm forced to choose between using lighter-weight tooling and continually opening and closing apps. Using lighter-weight tooling is the practical choice.
I will be trying this!
I have been using Flet (basically multilingual binding for Flutter) to build GUIs the last year or so, and in general the experience has been very good.
However, I've recently started work on a project that has need for a large number of controls--on the order of 2000 controls visible at one time--and I'm running into Flet's limitations. All the Flet controls have animations, which creates a good default experience when there's a few of them, but when you're using 2000 of them, simply passing your mouse over an area with a bunch of controls causes a cascade of small animations and the renderer explodes. Impressively, it usually doesn't seem to cause any performance lag, but it seems like the way they avoid lag is just by dropping the animations half-rendered which causes the window to flash all sorts of broken half-rendered gobbledygook to the screen. My approach has been to turn off animations as much as possible, but there are enough controls visible at any one time that even just rendering the without animations is running into issues.
I'll probably just deal with it for my first version--the core functionality is about number crunching and the user base is used to using much worse UIs--but I'm looking at lower-level tooling that can still remain cross-platform. In this post I'm seeing that Pragtical is advertising that they're written with SDL and I'm seeing some similarities between a code editor and what I'm doing, so it seems like that might be the solution to my problem.
Generally, a program on disk contains code. Part of that is the description of certain structures. Say you have an editor which can load a file, you have to have structures to hold that file, to keep track of the undo history, to represent the file with colours (syntax highlighting) and whatever. Your editor may have a Lua VM inside running plugins that you load. That VM will reserve additional memory to run those plugins. And so on.
All that only exists while the program is running, but not on disk.
Hrm, I was hoping it would run all in the browser.
Cool idea nevertheless!
https://lite-xl.com/playground/
like Monaco? Or a proper fully featured text editor?
I'm sure there are some here on HN that will say "nah, I prefer the old fashioned way" but you will be decidedly in the minority very fast.
Consider LSP, where language developers can now publish a single tool for language specific utilities, where before every editor needed to add support for languages separately. Again, pluggability.
Whether it's an extension or "AI first", the impact of AI on IDE's will be massive and an IDE that doesn't do it well will be barely used.
Interesting to be told what I do and do not agree with.
Even now, I've built a ramen profitable side project mostly by sipping my coffee and approving Cursor's suggestions. 10x faster at least.
Way more productivity gains than even language support.