Carefully hand-written assembly language routines can bring dramatic savings in the runtime and RAM/ROM budget, for deeply embedded systems. This is especially true on very tiny Wearable devices, where small micro controllers are very often used, running at low frequency, with very limited memory resources.
Determining the frequency of a sinusoidal waveform can be achieved using an FFT based method. If we restrain ourselves to the simple case where the waveform is made of one single sine wave, then the fundamental frequency (f0) is indeed what we call the “waveform frequency”.
If that is the case, a simple FFT would allow isolating the frequency peaks. An histogram would then detect the highest one: the fundamental frequency. Again, this is valid only for this kind of waveforms. We can even tolerate some level of harmonics which are due to distortions.
Back in the 2G mobile days, I was writing Layer1 GSM software for a very prominent semiconductor company in that field (VLSI Technology). This was very a interesting technology, 2G was only starting to boom. We had the opportunity to not only work on freshly adopted standard, but even sometimes to influence the committees work. You probably remember these epic phones, like Ericsson GH688 and other similar models
The C preprocessor and macros are one of the most useful elements for writing portable C/C++ code . It even can be used to completely different purposes, like text processing. However, it suffers one major drawback: it does not support nested macros expansion (put differently, macros within macros).
Clever use of X-Macros (https://en.wikipedia.org/wiki/X_Macro ) allow to decorrelate a set of data from the code which will handle them. For example, I had recently to implement a parser, which would analyse an incoming stream, isolate the embedded command and act upon.
So in this typical situation, you generally get the stream matched against some predefined-strings, arranged in an ordered way. Then, you get an ID, parameters and call a specific handler. Nothing fancy.
However, if you want this code to be maintainable (for example, you decide to change the handler name), and upgradable (adding new commands ID), you certainly would like some mechanism which would gather all the changeable bits (the commands, the ID’s, etc ..) from the pure parser structure. This is where X-Macros become handy.
Although not as powerful as a Bash scripts, yet it is possible to craft quite involved scripts in MS-DOS. This is especially important as, believe it or not 😉 most of the world PC’s are powered by some Windows version, so enter the underlying MS-DOS.
Or ask yourself “how did we ever lived without a mobile phone” ? Same kind of question …
Before we have all been Agilize’d, we were still conducting projects, after all. Typical move was to fire MS Project and start aligning rows. Put duration, resources. Then we were linking everything together, the screen started looking like a spaghetti … but the Gantt Software did manage that nicely.
Continue reading “How was it before Agile ?”
You’ve probably been there as well … You apply for a new job, so the polished CV and letter have been sent. Then you start going the process of engineer hiring: you passed the first round of selection, which verifies that your skills and competences are relevant.
They Are ! So you are heading to the newco for meeting real people. You are very motivated, have learned how much EBIT the company did the 3 last years, you can even maybe recognize the CEO if you pass by him. You are an experienced software engineer, with a proven track record in the same field.