https://www.oecd-ilibrary.org/sites/b2774f97-en/1/2/1/index....
553 karma · joined May 24, 2018
https://www.oecd-ilibrary.org/sites/b2774f97-en/1/2/1/index....
In that way you minimize any tax risks and at the same time you test how much the company is interested in you and values their employees.
I once had to repair my circa-1990 Crate GX160, so I bought its schematics. Most of the passive components went into multiple stage filters on every freaking section. Talk about overkill. I doubt you could even hear the effect of some of those filters, but they definitely played safe and took care of designs back then. Except for a few vendors, now it's all about packing as much they can on the digital side and penny pinching on the hardware.
[0] - https://www.newyorkfed.org/research/epr/04v10n3/0412mcca.htm...
That being said, learning about the inner workings of Prolog and how the WAM (Warren abstract machine) is composed helped me a lot to adjust my programming skills and align them to how things are best coded in the language.
IMHO defensive techniques including recovery should be placed in runtime monitors and supervisors, not in underpinning code which should have a minimum set of behaviors. It should also be kept as simple as possible to avoid code bloat and help reviewers and tools like static analyzers do their job.
Old computing hardware was designed like that. Then software attempted to replicate hardware "exceptions", however not realizing that the model was intrinsically different and completely exploding in intricacies dealing with interrupts, stacks, memory management and threads.
In a similar way, supervisors should be as decoupled as possible from the target code to provide reliability and avoid overall system complexity, with their own set of narrowed down requirements.
Sadly our industry is plagued with historical, ad-hoc programming techniques that are not relevant anymore or were plain empirical bad advice in first place. For example, blindly relying on stateful paradigms, or side effects by design or as an acceptable consequence of certain programming idioms.
In theory it would make more financial sense that most companies at the startup stage would be fully employee-owned, considering the equity and tax scenarios. But what founders are open to that? It amazes me that still there are/were people, myself included, willing to partake in a rigged endeavor plagued with pitfalls and restrictions, compared to other business models out there.
I am far from a database expert, but the fact that I have been able to implement without much effort efficient systems that have high bandwidth and reliability requirements, balancing and low latency speaks eons of the current state of affairs.
Except for a couple of years I have resided mostly outside of California, but when doing consulting I have mostly engaged with companies in the Bay area.
In the past when I did pure embedded development I had to fight tooth and claw to get rates close to $100/hour, while at the same time iOS app developers or webdevs were starting at $120-$140/hour easily, even after the mobile app craze. Despite taking into consideration that I am both a hardware and a software engineer, and rates outside of California were much lower ($45-$70/hour at the time). Which was one of the reasons I pushed hard to find my clients in the Bay area instead.
These days since I have more experience and business contacts I have diversified into more complex projects that have embedded components and pay me better since they belong to regulated industries. Even now I work with full-stack software programmers in AWS/GCP cloud apps, React/Vue frameworks, modern databases and connected middleware that make around $200/hour. For comparison, in the last years I have been involved in the development of a medical device where I did the hardware design (MCU/FPGA, signal acquisition), HDL/firmware programming (Verilog, RTOS, Linux, BLE), technical host tools (C++, Python, Qt) and was paid $180/hour, and lately a mobile robot project where I did the hardware architecture, integration and system control loops (MCUs), and prototyped the high level software application (RT-Linux, ROS, Nvidia Jetson) for $150/hour. An acquaintance in the valley that was working for a similar project but entirely in the ML/CV stack was billing $270/hour. That may be a bit extreme example since ML is hot today, but nevertheless.
However if you want to see the quaternions as a vector subspace in problems of higher dimensions or in non-euclidean manifolds, for example path interpolation, finding integral solutions or representations, they fall short and it makes sense to use a Clifford algebra that is compatible with differential operations (e.g Lie) and gives consistent calculations across all dimensions.
And yet you can still go a level further, with objects like those in Moon & Spencer's holor theory that include generalizations for transformation rules beyond covariant or contravariant, generalized connections similar --for example-- to universal Christoffel symbols, and effectively creating rules for tensors, pseudotensors and stranger array-like objects.
* "A brief introduction to Clifford algebra" - https://www.researchgate.net/profile/Giorgio_Vassallo/public...
* "Doing euclidean plane geometry using projective geometric algebra" - https://arxiv.org/pdf/1501.06511.pdf
* "Projective geometric algebra: A new framework for doing euclidean geometry" - https://arxiv.org/pdf/1901.05873.pdf
* "3D Motion from structures of points, lines and planes" - https://tubaro.faculty.polimi.it/Journals/Journal_2008_DA.pd...
* "The Construction of 3D Conformal Motions" - https://link.springer.com/content/pdf/10.1007%2Fs11786-016-0...
https://github.com/pbleyer/ConstitucionDeChile/blob/master/C...
Git repo at https://github.com/pbleyer/ConstitucionDeChile
https://www.eventbrite.com/e/the-secrets-of-monkey-island-30...
I remember being pretty excited when I discovered YAML and even pushed its use in some projects trying to avoid the verbosity of XML. These days I will never trade accuracy for conciseness, in particular if its form relies on whitespace and there is not enough redundancy in the specs for consistency checks. Yes, syntax matters.
I have tried Yocto through the years and deployed a bunch of projects with it. Although it gives you the sense that it has a more coherent environment than Buildroot, I find that it is difficult to maintain since it has too much unnecessary complexity for embedded targets, and sooner or later that ends up getting in the way and biting you back. Not enough visibility, which is crucial for embedded systems. More so if the systems have network connectivity and need to be properly secured.
It could be that I am too acquainted to Buildroot's pretty flat and its spartan, no frills architecture. With highly constrained devices that is an advantage. Automating configurations takes low effort, they build quite fast, and you can maintain testing and deployments easily with your own bash or python scripts. There are few places to fiddle with variables and you can easily assemble images on the fly or through overlays. Many times you just need to modify the configuration file and rebuild.
The last years I have been progressively using Buildroot along with docker. They complement each other well and you can create base systems and then grow them tailored to your application taking advantage of the docker incremental build system. I regularly maintain cross-compilation and qemu-based docker image toolchains for my target architectures that way. They can be recreated and tracked reliably, 100% of the time. I use them to build the application images or just augment them with a buildroot overlay with the extra files and then also deploy them remotely through the docker facilities.