Hey Everyone!

The month of November has passed, and the last of the 4coder progress has been published on Patreon (the itch.io release in a couple days).

So, considering my original todo list, where did I get? Here is a summary of my original todo list with plusses on the finished items:

  • [+] Mac
    • [+] Core platform features
    • [+] Multiple built in mappings
    • [+] Runtime mapping changes
  • [ ] Behavior Cleanup
    • [+] Properly configure OpenGL
    • [+] Organize rendering layer and reduce redundant OpenGL calls
    • [ ] Better behavior with saving read only files
    • [ ] Better behavior with failure to save file
    • [+] Delete and rename files, and make directories without switching ...
Read More →


Hey Everyone!

I just published 4.0.24 on itch.io, check out the devlog for info on what the new build includes.

In this post I want to outline my decision about what to do with one more week of 4coder November. Looking through my original todo list, and my updated todo list, there are a lot of possible candidates. A list of the many things I could pick from this week:
  • Query bars that accept commands, such as paste, just like regular buffers
  • Undo/redo cleanup and API
  • New command mappings to make a more notepad/sublime style ...
Read More →


Hey everyone!

As should be expected I got a lot of bug reports on the new Mac build, and the platform reorganization also effected Windows and Linux and I got some bug reports for that too. I've now released a build that should fix all the bug reports I got on 4.0.22, except for the request for full Mac keyboard support, which looks like it's going on the long term todo list.

With bug fixes out of the way, I am now moving on to the things I said I was moving on to when I ...
Read More →


Hey everyone!



As of right now 4coder 4.0.22 is up on the itch.io page. You can get the free version on Windows, Linux or Mac. And for the first time ever you can buy the full version which includes this and all future 4.0.X builds in one purchase.

The new build also features renderer improvements to help speedup rendering, remove some rendering bugs, and speed up the process of tracking down remaining rendering bugs. And there is now room in the system for alternate renderers, further broadening the extent to which I will be able ...
Read More →


Hey Everyone!

First things first, this entire blog post was written in 4coder on a Mac! It was the first dog fooding I did for the new Mac version of 4coder. If you are reading this, then the first test must have gone pretty well!

Here on the first full week of 4coder November, I am writing, for you, a full-detail list of the things I am working on this month. If your #1 feature request or issue is not on this list let me know, I don't want to forget anything big! Also I won't necessarily get ...
Read More →


Hey everyone!

I've got some new plans about the schedule for 4coder builds, and how I will distribute them. I made the full post on Patreon: full post.
Read More →


Hey there everyone! This post is only a 4coder progress update in the sense that it features some code samples from recently written parts of the 4coder engine update "4.1.X".

This is more of a technical write up for discussion purposes. I have a neat thought about "abstractions" which we discuss a lot in the Handmade community, and to explain it I'd like to talk about the abstractions I have found useful in 4coder, and the abstractions that hurt more than they helped.

Of course I realize I might just be wrong, or my ideas here might ...
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 →


4coder: What is Happening Lately

Allen Webster  — 5 months, 3 weeks 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 →


4coder: Status and Next Steps

Allen Webster  — 7 months, 3 weeks ago
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 →


4coder 4.0.18: Pushed to the Limit

Allen Webster  — 8 months, 3 weeks ago
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  — 9 months, 3 weeks 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  — 11 months, 2 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 →


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  — 1 year, 1 month 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  — 1 year, 2 months 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  — 1 year, 3 months 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  — 1 year, 3 months 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 →


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, 7 months 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, 7 months 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 →