I've been working in Software Development at Parasoft since 1992 - which in my opinion is before the epoch (my measure being the first real use of the web). I've been involved deeply in creating software, creating software tools, and helping customers address their software problems including automotive, cybersecurity and embedded.
The views and opinions expressed herein are those of the author and do not necessarily reflect the views of anyone else on the planet. Caveat lector.
You can follow me on twitter @CodeCurmudgeon, Google+, Static Analysis for Fun and Profit, Facebook, and LinkedIn.
I’ve gotten a lot of interesting feedback on the What Went Wrong with Static Analysis? post. So many people had their ideas about what was working, what wasn’t, and how to address it, that I thought I’d give people a chance to give their two cents.
I’ve created a poll which some basic issues as listed in the post and in various comments on it. Feel free to vote – there is a place if you have something not already on the list. After it’s been up for a bit I’ll post some results and commentary as is applicable.
I just posted a brief note about Dennis Ritchie at the Parasoft Blog. You can read about this amazing man who helped create C and Unix. Our thanks to him.
Dennis Ritchie, co-creator of the C programming language and UNIX operating system, died this week (2011). Back in the early days of Parasoft, we used to refer to “C” as “K&R C” (for “Kernighan and Ritchie C”). In fact, like lots of other long-time C programmers, many Parasoft veterans still have the classic C Programming Language book sitting on their bookshelves today.
Although he’s hardly a household name, Ritchie has had a tremendous influence on the software development community. Where might we be today if we didn’t have the luxury of building on his foundations?
On the language side, consider all the languages that were derived from C. Without C, there’s no C++…without which there’s no Java, no C#, and no Objective C. An enourmous amount of the software that we use everyday was built on those languages.
And on the OS side, think of all the things that stemmed from UNIX. Without UNIX, there’s no Linux. No Mac OS X. No Solaris. And without Linux, where would the open source community be? Would we have Android? What would the mobile device market look like? The server market?
In many ways, his vision was eerily similar to that of Steve Jobs: have it do what you really need it to do… and no more. It’s the epitome of elegant engineering.
If you compare C to Java, one of the defining differences is that Java is a very rich language. It has a built-in library that will cover pretty much anything you can think of. C has none of this—but it’s fantastically fast. It takes a lot less code to do something in C than it does in Java, VB, C# and the like. That’s really why C is still so popular. It’s a great balance between being close to the computer (and thus efficient) and being human understandable. The newer languages are more human understandable, but the trade off is that they’re rather inefficient compared to C.
The UNIX kernel is the same way. Amazingly, Thompson and Ritchie’s UNIX kernel was only 64K—smaller than the current Linux keyboard driver! UNIX truly respects the concept of having layers in an operating system. At the core, there’s just a kernel that runs the computer. Services lay on top of that. Networking is separate. Hard drives are an add-on (not core to the OS). And the GUI is a very high-level layer. This separation enables extreme efficiency. For example, while moving Windows to a new chip tends to open a can of worms, it’s actually quite simple with UNIX.
A few remarkable quips from Ritchie:
“I am not now, nor have I ever been, a member of the demigodic party.”
“UNIX is very simple, it just needs a genius to understand its simplicity.”
“C is quirky, flawed, and an enormous success.”
As Jon “Maddog” Hall, executive director of Linux International, tweeted: “…all programmers owe him a moment of silence.”
With the plethora of new mobile devices constantly coming out, consumers are bombarded with geek-speak on which ones are best. From the geeks perspective it’s all about the hardware specs. And geeks buy new things all the time just to keep up with the latest.
For everyone else, you buy something to fill some need or desire. If it does it the way you want, then good. If not, don’t buy, get rid of it, upgrade it, etc.
The funny thing about the geek method is that they mistakenly think they’re getting the best thing, because the numbers are there, and as we all know, numbers don’t lie! And there’s the rub – hardware specs are not an indication of system performance.
Luckily for much of the public they don’t fall for such nonsense. It’s like saying that one car is faster than the other simply based on how many cubic inches or centimeters the engine has. Such a number will tell you that one engine is bigger than the other, nothing else. What it doesn’t tell you is which vehicle is faster, which is stronger, which is more responsive, which has better mileage, or anything else useful in and of itself.
Add to this the fact the the market for computing devices has changed. It used to be common for people to have machines that were simply underpowered for their daily needs. That hasn’t been true for years now, most computers you can buy will do what you want them to today, and for the next couple of years or even longer.
“Processor speed, disk size and RAM matter a lot less in tablets or post-PC devices than they did in the classic PC era, when they were expensive and scarce. Design, good software, slick interactivity and good media availability matter more, because that’s what’s scarce today.”
“Comparing individual specs between smartphones is like opening up the hood of a Ford Mustang and the hood of a BMW M3 and pointing out why one is better than the other based on its innards. The Mustang’s engine displacement alone doesn’t make the Mustang better than the M3, any more than the M3’s suspension alone doesn’t make the M3 better than the Mustang.”
Such comparisons blind one to the important issues about a particular product. Questions like “Will it do what I want?” and “How fast will it do what I want?” are more important than “What is it’s PassMark rating?” Some people DO need a faster device for what they are doing, others do not. Some devices will be fast at some things and slow at others. Knowing how they perform for your needs is what’s important.
This was all very much at play last week and Apple (AAPL) released a new iPhone which not only failed to have a new shape, but didn’t have the latest important specs as declared by the geekocracy.
This is a fine example because it’s real, tangible, and recent. Should you buy an iPhone? Should you upgrade? What’s different about the new one? The breakdown is fairly simple.
First, what the new iPhone 4S doesn’t have (the “disappointing” part)
A new number – iPhone 5. Does this really matter to consumers?
A new shape – again, so what. Unless the shape is a real problem for you, this is a non-issue.
Bigger screen – a minor bummer, would have been nice. But bigger screens also carry a cost in battery life and portability. I’m pretty much at the limit for what can fit comfortably in my pocket. Some would have you believe that bigger=better.
NFC – stores don’t have it yet, so I don’t need it yet. It’s an early-adopter thing.
LTE – AT&T (ATT) isn’t ready, so I don’t mind, especially since I happen to live and work in what should be a good area for HSPA+. For Verizon users this is a major letdown. For Sprint (S), well hey, WiMax iPhone wasn’t going to happen anyway. In either case, you need either a bigger phone or less stuff inside to accommodate it, not to mention lousy battery life. I’m not interested in LTE until I know I can get an unlimited plan for it, otherwise I’ll stick with what I have.
What the iPhone 4S does have:
Radically better camera, especially for low-light. If you were going to buy a new point-and-shoot camera, this might do the job.
Dual-core – not sure if any apps will actually be faster – maybe not necessary depending on what you do with your phone. This does included a better GPU – great for certain things, maybe not noticeable for others. If your phone is slow, this is a good upgrade. If your phone doesn’t seem slow, then don’t worry about it.
Faster network for some AT&T users – This isn’t 4G, it’s HSPA+ and it’s hard to say yet who this will affect. Obviously if you’re not on AT&T this is a worthless feature. If you’re in an area that gives you faster service, this might be a good thing. Again, it depends on whether you’re experiencing slower than desired network performance, like web pages loading slowly.
Cloud-syncing – if you have a lot of iTunes content like movies, music, etc. this is nifty. If not, it’s another non-feature.
Voice assistant – this appears to be interesting in the videos they show but it’s still considered a beta feature. Great fun for geeks, probably not ready for prime-time yet.
More storage space – up to 64 GB. If you’re out of space and you actually need more space this is great. As opposed to being out of space because you don’t delete things you don’t need. This is a classic spec example – some would automatically say it’s a better phone, but the reality is 64GB is going to cost more. If you are happily living with a 16GB phone, why would you upgrade to this? It makes no sense. (disclosure – I’m a space hog – I’m on the edge with my current 32GB phone. But at least I recognize that my personal usage model is abnormal.)
See how easy it is to break things down to real issues? Very few actual hardware specs involved, and no simple assumption that bigger is faster, or that bigger/faster is better.
Luckily the geeks influence is waning over the public at large. A recent article in Beatweek gives a great history and breakdown – give it a read.
A prime example of the waning influence is the ill-fated WebOS. From it’s inception, WebOS was something the geeks loved. I’ve read countless articles about it being better, most without any substance as to why it’s better for me. But it’s new and it smells better – everyone will love it. The rest of the world hated WebOS – and the geeks still love it.
As for me, I’m going to judge things on how they work for me. For those who are only interested in the numbers – good luck with that.
Dropping a CPU’s core voltage, yields a greater-than-linear decrease in power consumption, making the marginal loss in clock speed a good choice.
This one was too funny to pass up. From SlashGear:
Siri was Apple’s middle-finger gesture to the hardware arms-race that epitomizes the Android smartphone market today. Don’t just make a phone that runs 1-percent faster, make one that actually works better with users’ needs.
I was sad to hear yesterday about the passing of Steve Jobs. He was a man with a vision and a dream and he certainly changed the way regular people interact with their computers. I’m sure Apple (AAPL) will survive, but he will be missed.
Thinking back about my own experience with Apple, I recall the initially painful move from the Microsoft (MSFT) Windows world. It can be a bit shocking at first if you;’re not prepared.
As people start to buy iPhones and iPads there is a migration occurring, not just in phones but it leads to buying a Mac for your next computer. A diaspora if you will from the Microsoft hegemony. Since I’ve been using Macs for about 10 years, people frequently ask me about making the move. I thought it might be helpful to encapsulate some of the questions and answers here.