The Visual History of ddhx
Did you know this project started in 2017?
However, before ddhx, there was my 0xdd utility, written in C#, released in 2015.
0xdd
While I was still learning C#, I had a knack for Text User Interfaces (TUI), and even back then, there were no superb hex editors that I liked. I’ve already wanted to make a TUI application for the fun of it
And so, I decided to write my very own, first TUI program (fwod takes the cake, but it is now forgotten history). But, since I feared my programming skills were subpar, I only made it a read-only program.
First Version: v0.1
Released the 25 October 2015, 0xdd saw its first release of the “hex viewer”. This version did not render bytes 0xe0 and up properly into the character column.
Funny enough, when this was released, it had my old username of guitarxhero
.
Last nano-like UI: 0.6.2
Released the 13 April 2016, featuring the position percentage field, 0xdd 0.6.2 was the last version featuring a nano-like interface. The reason being that the interface was taking too much space.
Last Version: 0.7.0.2
Since the UI had dialog boxes, for 0xdd 0.7, I decided to make over the interface to be more like the MS-DOS EDIT text editor. Last version of 0xdd was released 15 February 2017.
I don’t know why I removed the position marker, I think I had plans to add something similar to a vertical scroll bar.
ddhx
To get away from the “VM-ness” of .NET, 2016 was the year I started to learn the D programming language out of my failures to stick with Rust and Go. So, in 2017, while I was still transitioning from C# to being more comfortable with D, I thought to myself, “Hey I still have this project I can rewrite over to D”.
First Version: v0.0.0-2
So later the year of 2017, while 0xdd saw its last release, ddhx 0.0.0-2 saw its release 24 September 2017.
This was the second (serious) project of mine being written in D, after ddcpuid.
But instead of a nano, or EDIT, interface, ddhx was rather inspired from the simplicity of vim, the text editor.
Entering commands is at the top, because of the readln
function. It inserts a newline after hitting the return or enter key and thus displacing the whole view console/terminal buffer.
Previous Version: 0.3.3
So far ddhx has seen small, incremental updates, and visually, only the hexadecimal was relaxed to lowercase, and the offset marks are now spaced instead of being filled with zeroes.
Current Version: 0.4
With the current version, 0.4.0, ddhx has seen an uplift in its interface. The offsets are wider and should displace the screen less often in large files. The status bar is now more informative. And this is the first version to be a little more vim-centred, making ‘:
‘ now a key for the command menu, ‘/
‘ for searching forwards, and ‘?
‘ for searching backwards.
Future Version: 0.5
The future versions don’t plan to change very much in terms of visuals, but since it is planned to finally turn it into a hex editor, it will feature an inverted color statusbar!
Speaking of, here is an example design for the new statusbar:
ins | hex | ascii | 368 B | 1.1 KiB (0.093516%)
So basically:
- Editing mode (readonly, insert, overwrite);
- Data mode (offset mode is already displayed at the top left);
- Character mode (this will affect which characters can be applied);
- Display buffer size;
- And file binary and percentage position.
Comparing this to HxD2, this is already more information than necessary, but crucial in a tightly packed TUI app, since I have much less space.