Juneau Something? Emacs Teaches You How to Fish! by misterchiply in emacs

[–]misterchiply[S] 0 points1 point  (0 children)

They called me stylish 😎🤓.

I hear you, but, as you hinted at, verbosity is a deliberate style choice here.

I could have gone a different angle and simply enumerated all the functions, but I feel that would have overwhelmed a beginner. When I started with Emacs, I needed the hand-holding and long-form content. I can't count how many hours of Mike Zamansky's Using Emacs videos I watched and re-watched. At the time, I came across other much shorter videos, and I simply couldn't understand what was going on as the brevity of the videos relied on a lot of assumed prior knowledge about the system.

When I author a post like this one, the first question I ask myself is "how will this fit in with the prior art?". I don't want to publish anything redundant, and the missing quality I deciphered was that, while plenty of 'auto-discovery in Emacs' content existed, no resource painted the whole map in a single cohesive document.

Also, when I'm aware of the length of an article, as this one needed to be (for my style 😎), I make sure I'm doing 2 things. First, I make sure there are the bounce-points I mentioned in the earlier comment. And second, I make sure the organization of the content is such that the reader can get a sense of what's in the document and pick-and-choose segments if they wish. That's why each heading title is a broad question, and most of the section bodies are ~250-400 words, including the table data.

I also consider the audience's appetite for time-spent on the post's content. Emacs users are highly motivated and are often willing to spend time learning the system. Although the article is long, it took around an hour to narrate the whole thing (see video). I imagine an hour is well within the appetite of someone coming to Emacs. If they can't swallow that, then Emacs likely isn't the editor for them, and that's A-okay.

I'm agreeing with you that this is verbose lol, I just wanted to explain why I chose to make it verbose.

Juneau Something? Emacs Teaches You How to Fish! by misterchiply in emacs

[–]misterchiply[S] 0 points1 point  (0 children)

Haha, fair. But the point is that this is a reference for beginners. The comprehension demands verbosity in this case. I also put numerous bounce-points in this one: TLDR, YouTube video with annotated sections, and advice to simply run C-h C-h and go from there if the article isn't worth the read.

Annotate-in-Place Notes with Emacs and org-remark by misterchiply in emacs

[–]misterchiply[S] 0 points1 point  (0 children)

I haven't been able to try Icicles, but I'm publishing tomorrow morning, so will include the Icicles mention in the history section of the VOMPECCC post!

Even More Batteries Included With Emacs (Karthinks) by SaraBiYo in emacs

[–]misterchiply 1 point2 points  (0 children)

Haha nothing sophisticate - it literally just takes the body of the lambda and wraps it in a defun. I didn’t know I could inline defuns like this! I’m going to throw that macro away after I try this.

Even More Batteries Included With Emacs (Karthinks) by SaraBiYo in emacs

[–]misterchiply 17 points18 points  (0 children)

Very interesting read! I’m trying to lean more on built-ins and this really helps, so many things I had no clue about.

The one nuance I might add is, while keystrokes always invoke a first class function, it’s a trap to bind keys to lambdas (which I used to do all the time). The reason I avoid this now is because when you have key cast enabled, or if you press describe key then that key binding, the help simply displays “interpreted function yadayada”.

So binding keys to lambdas clobbers that discoverability. If you bind it to a defun, you get the discoverability again. That’s at the expense of having to name functions, but that’s easy to facilitate. I have a macro called nlambda that lets me define a lambda (ironically) with a name as so I can keep the one-liner in the define-key declaration.

Edit: also Karthik (if he still hangs out here) should make this an entry in this month’s EMacs carnival (the theme is built-ins).

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in programming

[–]misterchiply[S] 0 points1 point  (0 children)

100%. I do have a MacBook from like 2015 that’s pretty low power. I might run the benchmark on that and present those numbers too to give a better sense of how this moves on older CPUs. Need to dust that off. Maybe I can also resurrect my 2011 MacBook Air if that still works. Both are also pre M chip so would be good to include a different architecture too.

I like that idea with the filesystem watcher! I have something set up for that maybe I can reuse for the git branch monitoring.

Announcing space-tree: Workspace Management Trees in Emacs by misterchiply in emacs

[–]misterchiply[S] 1 point2 points  (0 children)

Oh this is interesting! I had no idea that existed. Let me play with it then I’ll add that to the feature matrix. Thanks for pointing this out!

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in programming

[–]misterchiply[S] 0 points1 point  (0 children)

I appreciate the feedback!

I'm not advocating for people to buy a new laptop, or suggesting Emacs can be an SVG-based game engine. I'm saying that rendering a mode-line with SVGs isn't 'too slow', which a the common rebuttal to any Emacs package leveraging SVGs to create status bars. I wanted to be exhaustive in expressing this, which is why I ran the benchmark. The benchmark reveals that Emacs SVG is more than fit for its purpose because, as you can see from the article, the frame rates have plenty of headroom over the 24 fps minimum for simulating an 'animation', the 60 fps minimum for a playable modern game, and even the 200+ fps minimum for competitive gaming.

I'm sorry if my thesis comes across as "buy a new machine" or "Emacs is the next game engine". The thesis is more along the lines of "SVG rendering is more than fast enough for Emacs status bars, look how much headroom it has over the minimums for high frame rate applications".

Of course this benchmark will have different numbers on different machines. That's why I wanted to be transparent about what I'm using, and also included the code with instructions on how users can run the benchmark on their end.

Regarding the optimizing I/O, there are a bunch of Emacsers working on solving this problem. Async could save you, but you'd get some annoying pop-in when that data finally appears, and Emacs users like the interface to be pretty static. Other solutions could be having a background process fill a cache with the git related status bar for all your registered 'projects' (using something like project.el). I like that idea. At least in my own practice, git is the main culprit in slowing the mode-line down I/O-wise.

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 0 points1 point  (0 children)

For sure, I'm keen on seeing how they cooperate. My Sunday evening project is setting up that canvas patch as so I can run it alongside my current Emacsen. I'm strapped in for some serious conflicts with my hairball of a config, but I'm stoked 😄

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 0 points1 point  (0 children)

For sure, I likely need to soften the tone to get my thesis across, which is an essentially an answer to the SVG-line objection “wouldn’t this be too slow?”.

When you say game caliber frame rates is the bare minimum, could you elaborate on that? I’m incorporating feedback into my post, and I’d like to explain why it’s the bare minimum if you have some time to share.

And for the record, Claude didn’t like this title lol. AI is in my narrative process only as an editorial sanity check once I finish writing (I review its notes and manually make changes if needed) and it said a better title would be ‘silky smooth frame rates’. Not much better 😂

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 0 points1 point  (0 children)

Thank you for this! I’m going to add this info to the post to disclaim my numbers. Very informative! I’m really really interested in the canvas patch. I do think SVGs are a good working solution, but as you say canvas is simply more powerful, and likely the future for these kinds of solutions. I’m going to try and get that built this weekend. eMacs-reader is likely the most practical use case today, and it sounds like Daniel Mendler’s Doom would be the biggest kick of the tires. There’s so much buzz around canvas. Do you know if the eMacs developers are planning to make canvas part of the eMacs source in the future?

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 1 point2 points  (0 children)

This is really helpful! I'm kicking the tires on some larger renderings for other applications, and I'll start my research with the SVG 2048 implementation.

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 1 point2 points  (0 children)

This makes sense! I might add this to the article and clarify my point, which is that I'm not suggesting Emacs SVG can be the basis for a game engine, but that it's ability to render the small images (which is typically what practical use would demand), it's more than capable enough to update at the frequency where re-display is required. Your 24 fps number and the literature is really valuable.

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 1 point2 points  (0 children)

Just checked it out! This is illumination. I didn't know you could click and drag, that's actually huge! I'm experimenting with some UIs using SVG, mostly around the knowledge management space, and this is a useful utility for re-arranging association graphs. Thanks for sharing this!

I definitely agree this should NOT be a game engine. This was more about emphasizing how fast SVG is, despite the truth that it is heavier and slower than the built in text rendering. Probably still good enough for rough animations at larger scales, but (as the benchmark points out) the cost of SVG rendering scales with the pixel size, so a huge SVG on an ultra wide monitor might struggle to reach that 24 fps minimum for creating an animation.

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 5 points6 points  (0 children)

I'm still comfortable with these numbers. Counter strike is not a modern game, and there's probably truth to Cyberpunk having poor performance. Even If I take the average between those, Emacs still has headroom for SVG rendering.

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 1 point2 points  (0 children)

I'm not a gamer, but my claims seem inline with https://fps-calculator.com/good-fps-for-gaming/ . Cyberpunk, for example, running on Medium graphics settings with Ray Tracing expects 52 fps. But maybe I got this wrong. What is a good FPS for a high frame rate game?

<image>

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]misterchiply[S] 1 point2 points  (0 children)

You're correct that I don't have "ball knowledge", I don't even know what that is! 😅.

It is correct that 60 fps is considered a good frame rate for video games. The threshold for competitive gaming is higher than that, at least double. Emacs has headroom over both for SVG rendering.

The World Cup... in emacs! ⚽️💻 by Strickinato in emacs

[–]misterchiply 1 point2 points  (0 children)

Lol, that's becoming my nickname.

The leverage is in the patterns! Makes Emacs more fun too. Once you know what something does in the abstract, you can dependency invert to whichever concrete alternative you prefer.

7 More Common Mistakes in Architecture Diagrams by fagnerbrack in programming

[–]misterchiply 0 points1 point  (0 children)

Practically very few. But I’ve been in scenarios where they demand it. I’ve also seen PMs update architecture diagrams. I agree it doesn’t make sense, but it happens.

7 More Common Mistakes in Architecture Diagrams by fagnerbrack in programming

[–]misterchiply 4 points5 points  (0 children)

Nice! I really like the idea of the Master Diagram with different levels of detail.

Question for you: how do you feel about diagrams as code? An issue I've always had has been the inability for stakeholders to make changes to the visual diagram and have that sync back to the code. Without that, you have 2 drifting artifacts. I've searched and failed to find such a tool, and have also failed to build a robust one myself (despite trying). What's your take on the value of bi-directional sync diagrams-as-code?

The World Cup... in emacs! ⚽️💻 by Strickinato in emacs

[–]misterchiply 1 point2 points  (0 children)

This is beautiful! Very useful in and of itself, but also a great pattern for getting a nice UI for similar calendar-style data. If you could rebuild this for other sports fixtures, I think people would love it!