|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 email@example.com. 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.
July 11, 2019
Ada - The programming language that promised to deliver very high-quality code at a reasonable price. In practice it was found to fulfill those promises, though at the cost annoying programmers by making them stick to a very strict syntax. So it was all but abandoned in favor of inferior alternatives. After all, debugging is fun!
Agile method - A reaction to Big Up-Front Design, the agilists purport that nothing is known, nor will anything be known until customer acceptance, and therefore you better start coding, right now.
Algorithm - A problem's solution, invented by Al Gore.
Assembly language - The only computer language that allows unlimited artistic expression, assembly was invented by FDR during the Depression as a jobs program.
Big Up-Front Design - The traditional approach to building programs. It relies on the proven assumptions that the customer really knows what he wants, has expressed those ideas clearly and completely in the specification document, and that the future never brings change.
Bit banging - An abusive programming technique that has sent millions of bits into therapy.
Bugging - The part of programming that includes specification, design and coding, but that ends before any sort of testing starts. Primarily involves seeding defects into the code. See Debugging.
C - A programming language whose syntax is so loose most C compilers will happily accept the telephone directory as syntactically-correct.
C++ - An object oriented programming language which has an on-going committee whose goal is to add so many obfuscating features that no single individual really understands all of its nuances.
Capability Maturity Model - A set of practices that defines the effectiveness of a software organization. Rated in five levels, from -3 (Sabotage) to +1 (Chaos). Defining characteristics of a -3 organization: "Total neglect of own charter, conscious discrediting of peer organizations software process improvement efforts. Rewarding failure and poor performance." (Tom Schorsch).
COBOL - The only programming language which will still be around in the year 10,000 AD. See 8051.
Clever code - "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." (Brian W. Kernighan)
Cost Plus Contract - The opportunity to never say "no" to a feature request, never deliver, and keep vast numbers of people on the payroll till someone in Congress (in some other Congressional district) notices.
Debugging - Removing the defects so laboriously inserted during bugging.
Embedded - An adjective designating a journalist in Iraq.
Embedded System - Who knows? Once an embedded system was something using an 8051. Now they include PowerPCs and Pentiums, plus desktop OSes like Linux and Windows. Maybe an embedded system is anything with a computer in it that's not a PC or Mac. Except those usually have many processors embedded inside.
Engineer - A person trained to solve problems. If there are no problems, he'll create a few to solve.
Estimation - The act of putting together a schedule which, if developer productivity triples and electrons can be moved faster than the speed of light, will result in funding of the project. See Clairvoyance.
FET - A vacuum tube that does not require 6.3 VAC.
Firmware - A product marketed by Pfizer under the trade name "Viagra."
Firmware standard - The platinum rod maintained in a temperature-regulated environment by the National Institute of Standards and Technology to measure ED.
Flash memory - A technology invented so no program needs to be completed. Ship with a boot loader and eternally email updates till the customer is so frustrated he gives up, long after his check has cleared.
Forth - An older language whose adherents once sent me 20,000 emails when I poked some fun at it, ah, so, uh, Forth is the world's most popular computer language and is perfect for a wide range of applications, including all of them.
Free() - obsolete; unused. See malloc().
Glitch - an anomaly in your program. In anyone else's program it's called a "bug."
Hacking - The art of software development as taught in many universities.
Hard core - A microprocessor embedded in fixed cells on a programmable device like an FPGA. What - did you expect some other definition?
Hard Real-time - A sentence resulting from a felony.
Int - A data type that holds some number of bits which varies depending on the processor, compiler and wind direction.
Kernel - An important ingredient of Taco Bell's products, consumed by developers around the world.
Linux - 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, sold by his evil minions, and used only by clueless GUI-loving newbies. Under no circumstances see Windows.
Long - A data type that's pretty much bigger than an int, in most cases, but is definitely smaller than a breadbox.
See a follow-on blog entry with more definitions.
Feel free to email me with comments.
I'll present my Better Firmware Faster seminar in Melbourne and Perth, Australia February 20 and 26th. All are invited. More info here. The early registration discount ends January 20.
If you'd like to post a comment without logging in, click in the "Name" box under "Or sign up with Disqus" and click on "I'd rather post as a guest."
Recent blog postings:
- 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.