
Show HN: Phi-editor, a text editor implemented in Go and SDL - felixangell
https://github.com/felixangell/phi-editor
======
ishaanbahal
"Phi is a minimal text editor designed to look pretty, run fast, and be easy
to configure and use. It's primary function is for editing code."

"The editor is written as if it's a game, so it will probably eat up your
battery, as well as run possibly quite slow - especially if you dont have a
dedicated GPU - and probably crash frequently."

Can't quite understand what it wants to be, a fast editor that's minimal or
one that's like a game and kills my battery and run slow?

~~~
aorth
My guess (hope) is that Phi is just very new and alpha, and that the author
was trying to say "it might eat your homework." Nevertheless, contrast that
with Xi, another new, modern text editor written in Rust:

> _Incredibly high performance. All editing operations should commit and paint
> in under 16ms. The editor should never make you wait for anything._

> _Reliability. Crashing, hanging, or losing work should never happen._

[https://github.com/google/xi-editor](https://github.com/google/xi-editor)

~~~
zippoxer
Xi is orders of magnitudes more mature than Phi. You can't compare 76
contributors and 1128 commits vs 1 contributor and 103 commits.

~~~
Chris2048
Of course you can compare them. One is way more mature, use that.

~~~
noobermin
I don't even think Phi is intended to be anything other than an
individual/hobby project. Has the author even commented here yet?

My point is it's not like they are intending Phi to replace sublime, they're
probably just doing it for fun. Even if they are more serious, they're being
honest about its short comings right now.

------
rkangel
Text editors and terminals seem to be an interesting space: nobody is quite
happy with the status quo, but the status quo is too well established to be
dislodged. Everybody keeps attempting their own implementation, but the
existing players are good enough (or can be tweaked to be good enough) that
no-one gets serious traction.

~~~
coldtea
>* Everybody keeps attempting their own implementation, but the existing
players are good enough (or can be tweaked to be good enough) that no-one gets
serious traction.*

The problem is that not enough people/money are thrown at the problem.

Microsoft has done wonders with VSC with its big team -- but in the end of the
day it's Node and DOM based.

Imagine what something like ST would be, if it wasn't an one-man effort.

------
jimmies
A text editor that renders text the hard way... Cool!

Talking about editors that do crazy stuff, I have a story about the de-facto
text editor in Vietnam in the 80s-90s called BKED. That editor runs on MS-DOS
and looks just like edit.com [1], except for it displays and allows the user
to input text in Vietnamese. Nothing really quite special at the first glance.

The Vietnamese alphabet is Latin-extended, and it needs about 100 or so extra
characters (caps included) besides the standard Latin alphabet. Thankfully,
the extended ASCII character set (code 128-255) was just barely enough to hold
the extended Vietnamese alphabet.

Consequently, the obvious way to solve the problem of displaying Vietnamese on
DOS was to override and redraw the character set in the VGA-compatible text
mode [2]. Its rivaling editor, called VietRES, did just that. With some other
TSR hooks [3], VietRES made it possible for any text or TUI program on DOS to
display and accept Vietnamese. You might have guessed it, RES stands for
RESident. However, it has a drawback that is it messed up the TUI of many
programs because it had to override almost all of the extended ASCII
characters, most notably table-drawing characters. It was an inevitable
problem if you ever want to display Vietnamese characters with just ASCII. The
problem carried on to even Windows 3.1 and Windows 95. Our Windows-based
Vietnamese support program at that time overwrote the MS Sans Serif and turned
every '®' in every software install package to an 'â'. Many other character
sets had this problem, for example, in Japanese, the '\' was turned into the
Yen symbol.

Two years ago I thought about BKED and realized that BKED had no problems
drawing tables. It could even display bold and italic characters at the same
time alongside with regular characters. When I tried to run it on DOSBox, it
was clear that BKED did something really clever to get around that. First I
thought it might have used the secondary table or something. So I updated my
status on Facebook praising whatever the author did. The author of the
software -- now an old man -- somehow is a friend of a friend of mine, saw
that and chimed in. He said his editor doesn't run in textmode. My mind was
_blown_! It is a full-blown graphical program in Hercules/CGA/EGA/VGA graphics
and just pretends to be a text-mode program. It draws every single character
in its UI. It had to do it very quickly and economically -- computers in
Vietnam at the time were all old secondhand ones imported from the US recycle
centers and such. Now as I looked at it more, it was no surprise to me it
could also do quite sophisticated mathematical formulas [4]. Thanks to its
flexibility, the editor was used to typeset the whole suite of national
textbooks on every subject in the 90s. The author also wrote another textbook
about Turbo Pascal for college students. Indeed that book was the first I read
on programming and Pascal was the first language I learned when I was 12. His
work and contribution were well paid off -- he is now a very high-ranking
official in the National Ministry of Education.

The editor was never open-sourced. I just got his email a month ago. If
nothing else, I will ask him to release this gem to our future generations to
enjoy.

1: [https://i.imgur.com/RZN50oS.jpg](https://i.imgur.com/RZN50oS.jpg)

2: [https://en.wikipedia.org/wiki/VGA-
compatible_text_mode](https://en.wikipedia.org/wiki/VGA-compatible_text_mode)

3:
[https://en.wikipedia.org/wiki/Terminate_and_stay_resident_pr...](https://en.wikipedia.org/wiki/Terminate_and_stay_resident_program)

4: [https://i.imgur.com/ofhE0TG.jpg](https://i.imgur.com/ofhE0TG.jpg)

~~~
rntksi
That was unexpected, to see BKED being mentioned here! I was about 6 years old
when I first used it (that, and a nice game called "bum"). This brings back so
much memories. And to think that it had this much history behind its
programming! Amazing. Definitely should poke the author into releasing the
source code for next generations to have a look at it.

~~~
jimmies
I bet every relatively complex program that ever tried to display Vietnamese
chacters had to do something wonky at some point. There might have been more
amazing engineering stories. They just don't get told very often because of
the sanction and lack of communication in the olden days. Part of what I want
to do in life is to document as many of those amazing stories as possible
before they got lost.

Remember the BKAV splash screen with the running green man in DOS? I have
never wondered why a TUI program like BKAV would bother going around just to
make a graphical screen just to display a useless running man. Now as I
thought about it, it perhaps was because the author faced the same issue, so
it's just another graphical program pretending to be a textmode one. The
running man is perhaps just because he could do it while he was at it.

------
noobermin
A text editor in Go rendered in SDL, that's an interesting combination I never
thought I would see.

------
nspattak
I skimmed through the code and I am interested to see what it is doing, so
thanks. However from a high design point of view, don't you think that
requiring 3D acceleration contradicts the "minimal fast text editor" ?

------
bionoid
I found it interesting to just glance at the code, having never touched Go
(but familiar with SDL). Some day I will find the time hack around in one of
these new languages, whether it be Go or Rust or Red or Perl6 .. :)

I have some trouble understanding the rationale for using SDL_ttf in an editor
implementation, though. Did you just cut shaping, bidirectional text and font
fallback as acceptable losses, or is it on the roadmap? If so, what is your
strategy?

~~~
Ultimatt
Perl 6 is watching you already
[https://p6weekly.wordpress.com/2018/04/16/2018-16-so-
that/](https://p6weekly.wordpress.com/2018/04/16/2018-16-so-that/)

------
gct
Seriously quit writing text editors that require GPU acceleration.

