I decided to learn go by creating a stack based language.
Bob Nystrom’s game programming patterns was quite useful and surprisingly fun to read.
Nice idea. Starting a new Express project can be gruelling for the first couple hours as you scan through old code to find everything you need.
However, I find GPLv3 is quite a restrictive license to use for a “starter pack”. It forces the license on every project that is started from it, which really limits its usefulness in my opinion.
However, I find GPLv3 is quite a restrictive license to use for a “starter pack”.
Great point. I have now changed the license of the project to MIT.
Howdy!
Last week, I turned 40. I used to have trouble imagining that I would survive past 35, but I did. I definitely never would have predicted the life that I have now though even 6 years ago. My daughter turns 4 this week.
In my spare time in the last week, I’ve been doing a variety of things. (This is in addition to work, family, errands and a bunch of other stuff!)
I’ve been working on some “window” management code to contribute to
libtickit. This is a
conversion of some code from the Perl Tickit project into C. I’ve
gotten a lot of the basics working (over the last couple of weeks),
but in the last week, I finally started porting the tests over from
Perl. Hopefully, I’ll be able to start getting this into the upstream
libtickit distribution soon.
Last week, I mentioned that I was working on some changes to the
testworks-specs library in Open Dylan.
I’ve made further progress on that. I’ve updated the documentation
for testworks to document testworks-specs for the first time.
I also did some trial builds of various test suites based on
testworks-specs with my updated version and have been fixing
various issues that I found. Not all of the issues were in my new
code though! My changes to make some errors be visible at compile
time resulted in some trivial errors being visible for the first
time and I’ve pushed a variety of fixes to the various test suites.
I’ve got a draft of a blog post underway that describes the changes
in more detail and demonstrates some of the differences between the
old and new behaviors.
We got some new interest in Dylan from some people in the last week and that may well prove to be exciting. I’m hoping they stick around and help us take things to a new level (especially on Microsoft Windows).
I also started on a Dylan binding for nanovg. This can be found within my calvino repository where I keep various graphics-related bindings libraries.
This has been pretty fun. In the process, I found a bug in the Open Dylan compiler’s support for structs-by-value and submitted a pull request that fixed it.
I also used this opportunity to dig into some other issues.
Our bindings generator, melange,
allows you to specify an interface file
which is processed by melange to generate the actual C-FFI bindings.
I wanted to mark my C-FFI bindings for nanovg as being inlineable
so that a lot of overhead from boxing and other things could be
optimized away. Until now, this wasn’t supported by melange but I just
landed a commit that adds this support.
Another thing that I ran into is that when inline-only is specified
for a C-FFI function, a confluence of factors can result in this not
getting inlined and then multiple out-of-line copies of the function
being generated. I haven’t solved this yet, but I’ve been using it as
an excuse to dive into the compiler and learn about how the inliner and
related parts of the optimizer work.
I am producing a nanovg binding because it seemed fun and useful,
and a good excuse to continue diving into parts of the compiler and tools
that could always use some love. But I am also going to take a shot
at writing an OpenGL / nanovg backend for our DUIM user interface library
and see how it goes. I’ve mentioned DUIM before, but as a reminder,
it was written by one of the people who worked on CLIM in Common Lisp
and prior to that, Dynamic Windows at Symbolics for the Genera Lisp
Machine OS.
One thing that I could use some advice on: When I write my widget rendering code with nanovg, it seems like it would make sense to make it possible to control some of that via something like a stylesheet. Qt (4.x and later) does this pretty well from what I remember. But many people also complain about CSS syntax and suggest that there could or should be something better. What other examples of controlling rendering in a UI library are out there? Are there popular alternatives to providing something like CSS?
Last week I did not have the time to work on mpm, so I’ll work on that this week.
As I said last week, I am trying to translate the help text into more languages. If I have time, I’ll work on setting up a registry for mpm packages.
I’m getting ready to launch my CUDA as a service startup Veeocho.