down. translated.

@spec.get_opts.each do |name, opt| options[name] = opt.value counts[name] = opt.count end @spec.get_args.each do |name, arg| args << arg.value named[name] = arg.value end args.flatten! args += trailing @report =, named, trailing, options, counts) if @report.opt(:help) self.print_usage() end unless @spec.get_args.values.all? {|arg| arg.fulfilled? } raise InterfaceError, "Required argument '#{name.upcase}' was not given." end if @spec.trailing_error && !@report.trailing.empty? raise InterfaceError, "Error: got trailing argument(s): #{trailing.join


Long time without an update. Since the last one I've learned some CAD and I've done some work on an old game project called Desdichado.


Desdichado is a turn-based tactics game project I began a couple years ago. Since returning to it I've primarily been working on art, specifically the model for a character named Ril, and I've also made modifications to my custom cel shader. Here's what Ril looks like:


I've also taught myself a bit of CAD, using CadQuery. I had a lot of fun with this and enjoyed creating models with code instead of the 3D modeling experience I'm used to. In particular it allowed me to adjust the entire model on the fly quickly - a single common measure can be changed at once instead of editing the mesh of every part using that measure.

I designed a few things, including this small LED lamp: