June 17, 2017

Beta Derelict Packages

Quite some time ago, I updated DerelictUtil with some mostly cosmetic changes. This involved making sure all of the functions in the SharedLibLoader class were annotated as they should be (all public functions are final, @nogc and nothrow are applied where appropriate), but also resulted in a couple of utilities that would break binary compatibility. So I decided to bump to a 3.0 release.

The last time I pushed out a major version of DerelictUtil that was not binary compatible with the old version, there was some breakage. Some dependent packages had a SemVer tag that was too liberal. In some cases, people who were building manually wound up with some packages built against the old version and others against the new version in the same program.

This time, I wanted to do it right. So I created a 3.0 branch in the DerelictUtil repository, tagged a 3.0.0-alpha.1 release (and updated the trailing decimal for bugfix releases), then started gradually getting the Derelict packages I'm responsible for into shape. This involved making sure each package was up to date with the latest version of the C library it binds to, all dub.json files were converted to dub.sdl (which is my preference), everything had a consistent syntax, adding static binding support for more packages, and adding package modules.

Once everything I wanted to update was updated, and Guillaume updated his stuff, then I started pushing every package to their respective master branches and changing the alpha tags to beta. That's all finally complete. There are still a few little details I missed (e.g. DerelictSFML2 still has a dub.json), but I'll get those fixed up as I work on the documentation.

Speaking of documentation, that's where my efforts will be focused next. I'm going to make a push to get docs for every package. Once that's done and all the kinks are worked out of the beta versions, I'll start chopping off the beta tags. Before then, I'll put up a cheatsheet with a table of all the DerelictOrg packages, their current version, and which version of a C library they bind to.

The DerelictGL3 package was the only one to get a major rewrite. It now supports compile-time selection, through templates and mixins, of which OpenGL versions and extensions should be loaded. Anything not requested will not be compiled into the program. I also added support for wrapping all of the function pointers inside a struct. When using multiple contexts, this allows loading each context once instead of having to call reload on every context switch. I've still got work to do on adding extensions, but it's usable and working. Until the documentation is complete, you're on your own in figuring out how to use the new features (though I'll do a post on it soon, the one I did before is no more), but you can still use it the old way, too. Just import derelict.opengl and it should all work as it always has.

June 11, 2017

Worth Reading (June 2017)

Oh wow its more than a year since my last ‘worthreading’ :( It was a crazy ride! Crazy hours at work, speaking at 4 conferences and 2 vacations later I am here now. I tried to recollect the some discoveries since then:

Website: All D compilers usable in travis-ci on a glance


Talk: ACCU 2016 Keynote by Andrei Alexandrescu

  • c++ concepts
  • sentinels
  • Design by Introspection
  • (re)invents fast partitioning algorithm

Andrei and his unique and entertaining way of doing presentations at prestigous ACCU 2016:

link to youtube

Here another link that is worth mentioning since Andrei is talking about it in his talk:

“Why Concepts didn’t make C++17”

Post: “Minimal Dev Setup on OXS” by Oliver Müller

This post was insanely useful to me, since it introduced me to (among a ton of other things) brew-cask

Blog Post

Book: “Drive” by Daniel H. Pink

Amazon Link

An amazing book, good overview of the current state of science about what motivates us. Historical catchup from Motiviation 1.0, 2.0, 2.1 and now 3.0. I recommend this book for everyone leading people, working with people or if you just want to get a better understanding about yourself :)

Book: “Elon Musk” by Ashlee Vance

Amazon Link

I was blown away by this story - admittedly I knew little about the details of Musk’s life other than being this huge entrepeneur and founder of paypal, tesla and spaceX. This book really comes close convincing you that this guy is going to change the world (if he did not already) and sent us to mars.

Post: “Public Speaking Transformed My Life…and Can Change Yours Too” by Cory House


A fascinating read about how to stop worrying and transforming into a public speaker. If you spoke on conferences already you will love to see parallels to what you experienced - if you have never tried it you will want to after reading this! Very inspiring.