Saturday, August 22, 2020

Keyboard Video Mouse

 Objective-C is horrible, and Xcode is a nightmare. Swift is pretty good though. It is easier to not use the object oriented bits of Swift than it is to avoid classes in C++. Type parameterized functions and classes in Swift are much easier to use than are templates in C++. Having containers builtin to the language is nice in Swift instead of including templates with impenetrable error messages in C++. Immutables and strict typing are nice in Swift, but for true functional programming with powerful searchable types not biased against function types, only Haskell will do. Lua is the only scripting language that results in code worth checking in. The best thing from GNU is make, but only if it is used properly, without implicit dependencies or rules, and without too many defines or includes. Every compiler has its quirks. Apple's compilers are the worst, with the most implicit paths, but they are still useable; I hope their frequent "updates" do not make things worse. An application on MacOS requires a call to NSApplication.shared to start, a linked list of classes between, and a call to MTLCommandBuffer:commit at the end. There are various forms of callback, including functions passed to NSEvent, functions in derivations of a class passed to a link in the list, or functions in derivations of links in the list. Passing functions to NSEvent is easiest, but some events unfortunately require derivation. MacOS makes it impossible to smoothly change a display in response to moving a window, so polytopes must appear unfortunately related to the MacOS frame. Reading Apple developer documentation is reverse engineering, and my intxface code on sourceforge is the only complete application I know of that uses make and Metal without MetalKit and Xcode.