4coder: What is Happening Lately

Allen Webster  — 5 days, 5 hours ago
It seems that it has been a while since there was a 4coder update, but there has been plenty of progress.

Lots of the progress has gone into the new buffer handling engine which is not yet at a point where it does something you can see, but that will change soon. I would estimate that it will be past half way done by this time next month, which is a slightly slower pace than I originally hoped, but it still has the new engine ready well before the end of 2017. Here and there I have also mentioned that ...
Read More →


For a while now I've been thinking things over, and I've decided to embrace a new direction for 4coder.

To anyone using 4coder, don't worry I am not about to leave you without an editor. This is actually not really a big change for users, because the project has been naturally pushing in this direction for a while. I just haven't officially embraced and announced the change until now.

Basically what I've come to realize is that the original vision of code intelligence that I set out to experiment with has fallen away. There are ...
Read More →


So I just got a new build out today (4.0.19) fixing some lingering problems with Unicode and the Lexer. As I explained last month, I'm starting work on a new buffer engine now, but it's going to be a little while before that is ready, so I'm splitting my 4coder time between that and small builds like this one. By the way, that new engine is not yet at a demonstration point, but I did have a break through on how to solve virtual whitespace + comments interactions, which has been puzzling me for a while ...
Read More →


Hey everyone!

The newest version of 4coder, 4.0.18, will be the first to feature full unicode support. As of today I have all of the unicode features working that I want for the build. 4coder now translates UTF8 into codepoints, and the font system supports rendering all the codepoints provided by a font. I restructured the font system so that now users can drop .ttf files into the new font folder and 4coder will load them at launch. It looks like everything will be ready to ship in just a few days, once I finish doing a few ...
Read More →


4coder Fridays

Allen Webster  — 4 months ago
A history of 4coder Fridays

The term "4coder Friday" was first coined by Casey Muratori, back in late 2015/early 2016. That was about the time that Handmade Hero started making the transition to using 4coder and so occasionally a little bit of prestream time was dedicated to exploring the configuration. It wasn't every Friday, nor was it always on Fridays, but the term 4coder Friday was just so fun to say that it stuck.

In February of 2016 I switched to using 4coder full time, so that I could make sure it was prepared for Handmade Hero to ...
Read More →


So it's been over two years since I started 4coder, and I don't think I properly slowed down and cleaned anything up at all during the 2016 portion. I can't even remember what 2015 4coder was like, but I figure I probably was even less disciplined back then. So for that reason the project I took up a while ago of carefully considering the organization of the code and the major systems is still going on. Since cleanup doesn't lend itself to new features I have also split my 4coder time between little features I can ...
Read More →


4coder's New Project Files

Allen Webster  — 5 months, 4 weeks ago
This is a post to briefly describe the new 4coder project file feature in alpha 4.0.14.

The feature is meant to support the common situation where just having one build rule that is always in a "build.bat" or "build.sh" for the entire project is not always enough. Obviously anyone with access to the customisation layer has always been able to extend this, but the project file system creates some built in project configuration possibility. It also solves several other smaller issues, but we'll get to that in a minute.

The way it works is you ...
Read More →


New 4coder Information Site

Allen Webster  — 6 months, 4 weeks ago
Through November I have been building up an information site for 4coder and today I posted it at 4coder.net. I still need to fill in lots of the information which I will continue to do over the next few days. A lot of people have asked for different information pages including a features list, a road map, and tutorials, all of which will be going on the site. I will also be posting the 4coder API documentation there from now on. If there is any category of information you would like to have on 4coder that is missing let ...
Read More →


4coder October Update

Allen Webster  — 8 months ago
Hi everyone!

It has been a big month for 4coder. Just today I released alpha 4.0.12. I finally switched over to the gap buffer, and eliminated the transitional framework that I first constructed eleven months ago. Getting rid of that extra complexity bought me a great deal of room in my "complexity budget", and I spent it on new features in the buffer system.

The immediate upgrades are the systems for arbitrary wrap positions, and virtualized white space at the beginning of lines, which have allowed me to create a code smart line wrapping system, or "code wrapping ...
Read More →


The 4cpp Lexer: Version 1.1

Allen Webster  — 9 months, 1 week ago
Dear everyone,

Two weeks ago I shared version 1.0 of the 4cpp lexer with my backers on Patreon, and I promised after a two week period, everyone who came here to this fabulous handmade.network would have free access to the library. But since then I have made a few improvements to the system. The new improvements make the system even easier to use, more efficient, and expose the entire relex system, which now supports the same input chunking that the main lexer supports. Therefore today I'm not going to release the library that I promised to release ...
Read More →


The 4cpp Lexer: Version 1.0

Allen Webster  — 9 months, 3 weeks ago
A long long time ago, at least a year ago, I decided I would contribute the code parsing system in 4coder as free and open software for our community. I released a little example of what I thought it might be like way back then on Patreon, but since then there's been nothing. I've been waiting because I just wanted to make sure that when I actually "released" something it would be really well thought through.

As of this morning I think a release lexer is ready and I have prepared the package!

The lexer supports all sorts ...
Read More →


The Return of School

Allen Webster  — 9 months, 3 weeks ago
Today is my first day of classes in my sixth semester of school at the University of Michigan. I would like to assure everyone updates will still be coming to 4coder and I will continue to stay on top of bug reports and feature requests, but I will be moving more slowly. Last year during my second semester of school I managed to implement: build in editor, keyboard internationalization (although that is a forever ongoing project with Windows), word completion, the first version of direct buffer manipulation API, the query replace and replace range functions, and a Linux port (thanks ...
Read More →


4coder GUI (should be) returning soon

Allen Webster  — 11 months, 3 weeks ago
If you follow the posts on the 4coder Patreon right now, then you know that I stopped posting the 4coder GUI blog posts because I stopped working on the GUI for a little while. What I have been working on was mostly less glamorous. I've been fixing bugs eliminating confusing APIs, both internally and the API exposed for customizations. I've been reimplementing everything I can through the custom API. Most recently what I have done was to use the custom API to construct a new build and goto error work flow. There are twelve internal commands that I ...
Read More →


In last week's post I discussed the rough plan for making 4coder GUI customizable. That plan is somewhat theoretical, and the implementation only began a few days ago. But for the most part knowing that the system will be immediate mode basically informs the rest of the design. There may be a few things that would be done differently if I knew I was dealing with hooks up front, I may do a little more to help the user manage their state, rather than just assuming they'll be able to do whatever they want. Even still, I don ...
Read More →


4coder's GUI: Problem Statement

Allen Webster  — 1 year, 1 month ago
The primary goal for the 4.0.x family of 4coder versions is to figure out the actual GUI system that 4coder will use and to give absolute control over the GUI to the custom layer. I want to see users be able to delete the code that adds the scroll bar to the file, or write up a tool bar for functions they would rather not tie to a key-combos, or to create drop down menus for their custom word completing system, or to trivially modify open file and new file to work exactly the way they want. It ...
Read More →


Last week I discussed all the goals of the 4coder GUI system I have been developing. Now I will look into detail on how I plan to achieve the first big goal: giving the entire GUI to the custom layer and making it as easy as possible.

Any talk about ease of use and GUI will wind up being a talk about how great immediate mode is, and I have already talked about this on a previous blog post. In the 4coder GUI the API design is immediate mode. But because of all the other constraints on the 4coder GUI ...
Read More →


New 4coder Version: alpha 4.0.3

Allen Webster  — 1 year, 1 month ago
Hey folks,

Today I am announcing the first 4coder build to come out of the "Summer of 4coder". This new build is the first to feature the GUI system I have discussed in older blog posts, and now that it is out I will take a little more time to describe some of what I discovered, what I have come up with so far, and what I would like to do even better.

In the mean time if you are supporting the project be sure to go check out the new build!
Read More →


One whole month has passed but there has not been a single 4coder update. I was hoping all month that today there would be an update with new GUI stuff ready to go, but it's just not going to happen. The new theme editor is getting there pretty quickly, and there are some other improvements I would like to have in the next version. Specifically I want to address the high idle CPU usage by going to a system that is more event driven.

Now for the good news. With school year over though the way is cleared for ...
Read More →


Moving to the Handmade Network!

Allen Webster  — 1 year, 2 months ago
So thanks to the works of the Handmade Dev guys, 4coder is going to have a new home right here on handmade.network!

I mean first of all, the projects are all exciting and I just want to be nearby when awesome stuff happens, but also... look at this site I mean for literally no work at all the 4coder blog suddenly looks about a hundred times better than it did back when I was trying to design it myself. Also did you notice how fast everything is? It is off the hook people.

If you want to check out ...
Read More →


SIL Open Font License

C Allen Webster  — 1 year, 2 months ago
The following parts of the Software are separately licensed as follows:

- The Liberation font family is licensed under the SIL Open Font License (version 2 onwards).
The full text of this license is available in the accompanying 3rdparty/sil.txt file

- The Hack font family is licensed under the a modified SIL license
The full text of this license is available in the accompanying 3rdparty/hacksil.txt file

- The Inconsolata font family is licensed under the SIL Open Font License
Copyright (c) 2011, Raph Levien ([email protected]), Copyright (c) 2012, Cyreal (cyreal.org)
The full text of this ...
Read More →


The 4coder License

C Allen Webster  — 1 year, 2 months ago
4coder-alpha License

The Software ("4coder", "4ed.exe") is Copyright 2015 by Four Tech LLC, all
rights are reserved. Anyone who has purchased a copy of the Software,
("The User"), is granted a personal, non-assignable, non-transferable,
license to use the Software for personal or commercial uses.

The User may not redistribute, sub-license, or resell the Software. The User is
permitted to make an unlimited number of copies of the Software which are subject
the the aforementioned restrictions.

The Software is provided "as is" without warranty of any kind, either express or
implied, including without limitation any implied warranties of condition,
uninterrupted ...
Read More →