|Jack Ganssle's Blog
This is Jack's outlet for thoughts about designing and programming embedded systems. It's a complement to my bi-weekly newsletter The Embedded Muse. Contact me at firstname.lastname@example.org. I'm an old-timer engineer who still finds the field endlessly fascinating (bio).
For novel ideas about building embedded systems (both hardware and firmware), join the 35,000 engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
Definitions - Part 2
July 18, 2019
This is a follow-on to last week's Definitions blog entry.
Malloc() - A C library function used to slowly consume all system RAM. Sometimes not used on embedded systems to avoid memory leaks. Though malloc() does return an error code, most programmers know their code is perfect so never check it. Windows applications are immune from memory leaks since programmers can count on regular crashes to automatically release previously-allocated RAM.
McCabe Cyclomatic Complexity - The scoring algorithm in the Great Game of Programming. The current high score is held by Eric Allman for Sendmail, though legions of developers are working hard to beat even that impressive record.
Microsoft Project - A widely-used application that creates exquisitely-detailed colorful PERT and GANTT charts that no one reads or believes.
MISRA C - A set of guidelines meant to stifle the artistic freedom of fun-loving C developers worldwide.
Multicore processor - Moore's Law taken to the limit. A device that no one knows how to use and for which no tools exist.
OOP - Acronym for Outrageously Obfuscated Programming. See Procedural Programming.
Procedural Programming - The opposite of OOP, procedural programming is the art of exposing ones data to the entire system to facilitate easy interaction between components. Commonly used on systems bid on a cost-plus basis.
Recursion - See Recursion.
Reestimation - The process that follows the boss's shriek of rage when presented with a project's schedule. Also widely-used by the first wave of consultants hired to save a doomed project.
Schedule - See Lie, Mendacity, Deceit, Distortion, Fantasy, Fraud, and Deception.
Security - The art of ^H^H%6*((((buffer overflow PRIZE AWARD!!! THE INTERNATIONAL AWARENESS PROMOTION DEPARTMENT WISHES TO CONGRITULAET YOUR EXCELLCENIE'S LUCK IN WINNING $1,200,000 (ONE MILLON TWO HUNDERD THOUSAND). PLEASE FORWARD YOU COMPLEAT DETAILS URGENTLY.
Soft core - See Firmware.
Soft Real-time - An event that doesn't really have to be done within a certain timeframe, but that requires service, well, pretty fast. In a timely manner. Uh, like, don't make the user wait too long. So Linux, may it's name be forever blessed, is soft real-time, but Windows isn't. Got it?
Syntax error - The absurd behavior of a compiler when it encounters the almost legitimate C code that worked fine on Manx C version 0.9 in the early 80s.
SystemC - A technology that gives hardware developers all of the evils of software engineering.
UML - Acronym for Unified Modeling Language, a technique for making pretty pictures no one understands.
Warning - A message emitted by a compiler to try and convince the programmer that some program construct is likely confusing, wrong or dangerous. Because of the serious nature of warnings most compilers have a provision to turn most of them off. The rest typically go to /dev/null.
Watchdog Timer - the hardware and software used to reboot crashed code. Not used by developers who believe their code is perfect (see Delusional).
Windows - The golden child of operating systems. Answer to life, the universe, and everything. Most excellent example of perfection. Utterly without fault. Maintained by a band of devoted faithful whose primary mission is to strike down all favorable references to *that* other operating system which was spawned by the devil, promoted by his evil minions, and used only by clueless Slashdot-reading newbies. Under no circumstances see Linux.
Y2K - The first end of the world. Stay tuned for the Unix version in 2038.
8051 - The universal microcontroller architecture which was obsolete minutes after being introduced. In the year 10,000 AD someone, somewhere, will be writing 8051 code. Probably in COBOL.
Kevin Towers added this: Bus terminated project – A project that is terminated when the programmer gets hit by a bus.
And these are from George Farmer:
Double – What an engineer orders at the bar near closing time after a 20-hour coding marathon.
Agile – In an environment where an engineer is expected to do more with less in a very short period of time, Agile is a set of methods that asymptotically allows an engineer to do virtually everything, with virtually no resources, in an infinitesimally short period of time.
Infinite Impulse Response – The incessant reaction from the Bean Counters that your latest, perfect creation costs too much.
Finite Impulse Response – The incessant but slightly constrained reaction from the Bean Counters that your now less-than-perfect creation, after much consternation, stripping out all that perfection by burning the Midnight Oil (most likely using Agile techniques defined above), still costs too much
Lightyear – One-third less days than a regular year.
Feel free to email me with comments.
Back to Jack's blog index page.
I'll present my Better Firmware Faster seminar in Melbourne, Australia February 20. All are invited. More info here.
Recent blog postings:
- Life in the Time of Coronavirus - how are you faring?
- Superintelligence - A review of Nick Bostrom's book on AI.
- A Lack of Forethought - Y2K redux
- How I Write Code - Comments first, code second.
- How Projects Get Out of Control - Think requirements churn is only for software?
- 2019's Most Important Lesson. The 737 Max disasters should teach us one lesson.
- On Retiring - It's not quite that time, but slowing down makes sense. For me.
- On Discipline - The one thing I think many teams need...
- Data Seems to Have No Value - At least, that's the way people treat it.
- Apollo 11 and Navigation - In 1969 the astronauts used a sextant. Some of us still do.
- Definitions Part 2 - More fun definitions of embedded systems terms.
- Definitions - A list of (funny) definitions of embedded systems terms.
- On Meta-Politics - Where has thoughtful discourse gone?
- Millennials and Tools - It seems that many millennials are unable to fix anything.
- Crappy Tech Journalism - The trade press is suffering from so much cost-cutting that it does a poor job of educating engineers.
- Tech and Us - I worry that our technology is more than our human nature can manage.
- On Cataracts - Cataract surgery isn't as awful as it sounds.
- Can AI Replace Firmware - A thought: instead of writing code, is the future training AIs?
- Customer non-Support - How to tick off your customers in one easy lesson.
- Learn to Code in 3 Weeks! - Firmware is not simply about coding.
- We Shoot For The Moon - a new and interesting book about the Apollo moon program.
- On Expert Witness Work - Expert work is fascinating but can be quite the hassle.
- Married To The Team - Working in a team is a lot like marriage.
- Will We Ever Get Quantum Computers - Despite the hype, some feel quantum computing may never be practical.
- Apollo 11, The Movie - A review of a great new movie.
- Goto Considered Necessary - Edsger Dijkstra recants on his seminal paper
- GPS Will Fail - In April GPS will have its own Y2K problem. Unbelievable.
- LIDAR in Cars - Really? - Maybe there are better ideas.
- Why Did You Become an Engineer? - This is the best career ever.
- Software Process Improvement for Firmware - What goes on in an SPI audit?
- 50 Years of Ham Radio - 2019 marks 50 years of ham radio for me.
- Medical Device Lawsuits - They're on the rise, and firmware is part of the problem.
- A retrospective on 2018 - My marketing data for 2018, including web traffic and TEM information.
- Remembering Circuit Theory - Electronics is fun, and reviewing a textbook is pretty interesting.
- R vs D - Too many of us conflate research and development
- Engineer or Scientist? - Which are you? John Q. Public has a hard time telling the difference.
- A New, Low-Tech, Use for Computers - I never would have imagined this use for computers.
- NASA's Lost Software Engineering Lessons - Lessons learned, lessons lost.
- The Cost of Firmware - A Scary Story! - A hallowean story to terrify.
- A Review of First Man, the Movie - The book was great. The movie? Nope.
- A Review of The Overstory - One of the most remarkable novels I've read in a long time.
- What I Learned About Successful Consulting - Lessons learned about successful consulting.
- Low Power Mischief - Ultra-low power systems are trickier to design than most realize.
- Thoughts on Firmware Seminars - Better Firmware Faster resonates with a lot of people.
- On Evil - The Internet has brought the worst out in many.
- My Toothbrush has Modes - What! A lousy toothbrush has a UI?
- Review of SUNBURST and LUMINARY: An Apollo Memoir - A good book about the LM's code.
- Fun With Transmission Lines - Generating a step with no electronics.
- On N-Version Programming - Can we improve reliability through redundancy? Maybe not.
- On USB v. Bench Scopes - USB scopes are nice, but I'll stick with bench models.