Ah, memories. My inspiration to study CS, though probably fortunate that it was mostly dead by sophomore year, or my college GPA would have been much worse.
Netrek's macro system was another feature I wish were more widely adopted in games. Receiver-configurable distresses (RCDs) allowed a sender to publish named kinds of messages ("help at location, intercepting X, ship status, bombing planet, etc.) but receivers control the formatting. So I can set up my client to only show your hull+fuel for general distress calls but more data based on the kind of message.
Actually, I _loved_ netrek... it was an inspiration! It was more RTS than flight sim tho. But it was quite possibly the first MMO as well! I never played it over a modem, tho, just on a LAN... which is definitely not the same thing as a 28K internet connection circa 1999. But that game was genius, and quite possibly _would_ have worked over slow, lossy and highly latent connections, I never tried it.
If everything is wired and functioning correctly I believe you are correct; the article mentions the case of electricians mixing up hot and ground wires. Presumably an appliance manufacturer could also have a mistake, but assembly lines are more consistent than humans -- if UL or CE tests a device it's likely all devices of that model are OK.
I suspect not, but I'd be happy to hear otherwise. Certification is as much about process and traceability as it is about the code itself. Open source naturally tends to give visibility into the development process, but there's usually no business driver to spend the money on certification. Think multiple thousands of dollars per line of code.
You cannot certify libraries. The best you can do is to provide a certification kit which consists of tests to be run in the target environment and appropriate documentation/traceability.
However, as the GP notes the libraries must merely be "certifiable": You can do all the certification work yourself as long as it is possible with the libraries in question. Having access to the source code and the lack of non-determinism are two big requirements that come to mind.
 In fact you cannot even certify software only entire systems.
A great point. I'm actually the opposite. I can do detail-oriented things best early in the day (8am-noon) but I'm often at my creative after dinner and into the evening (6pm-10pm) when there tend to be fewer distractions.
This can make multitasking harder or easier. If tasks mesh well you can work on whichever you're better suited to at the time.
That's totally valid.. One thing it might be also be worth paying attention to is our ability to focus during a particular time of day..
My ability to focus creatively or detailed seems to be directly tied to how well rested my mind is.
When I sleep and eat well it's far easier to concentrate and slip into flow.
It's Saturday and I woke up at 7, an hour before my alarm.. I've pretty much cut out all my caffeine, sugar and processed foods. The more I cut out our limit the more my energy soars. I have friends who found the same after citing back beer and certain meats. I'm the guy who lived to sleep in.
Either way I find my energy boosts are like CPU usage.
The less that is taxing my body by what I put in it and drain it with leaves more energy for all the tasks. It's borderline addictive to modify.
Is it as objectionable when considered a higher base price, but letting people opt out of content they don't want and be refunded? I don't understand why tiering is bad. You'd have to avoid an awfully lot of businesses to get away from tiered services.
That was my impression as well. The rates are from the lower end of the pool, people with general experience and no deep expertise.
I have worked off and on for many years as a contractor working on high-end database scalability and performance issues as well as parallel algorithm design. While the rates fluctuated with the market and how much I liked the project, I was always charging well above $100/hr even for terms that ran several months.
A lot of it has to do with who your customers are. If you are working on the design of a system that will be moving $250M per year if it performs correctly, spending an extra $100k to hire a deep expert in the design of such systems is below the noise floor. You might be a "database scalability consultant" but you are not fishing in the same pool as most of the people that claim similar labels for themselves.
My wife works at one of the largest law firms in the world, and trainees there makes about $10-$15/hour. On paper their salary is high, but the hourly rate is pushed far down because of ridiculously long hours. Their secretaries make as much or more than them.
Newly qualified lawyers there make $20/hour if they're lucky. This is in the UK, specifically in a London "magic circle" firm - one of the highest paying law firms in the UK. US firms in London pay up to about 1/3 more total yearly salary, commensurate with the same firms salary levels in the US, but also tends to expect even longer hours.
It's first quite a few years post qualification that their salaries get high enough that their hourly rates starts to become decent.
Average salary for a solicitor in the UK was around $37k/year a couple of years back, for longer than average hours, at a time when the national average salary in the uk was ca. $40k/year...
I'm sure there are lawyers who start out at high hourly rates from day one, but I'd be surprised if more than a tiny fraction starts out around the $100/hour rate.
Actual billed out rate from a major law firm, sure - my wife is billed out at around $300/hour as a trainee.
Good point, I was looking at it from the perspective of a client wondering "how much will I pay." As you say the lawyer doing the work won't be taking home nearly that much. I didn't know it would go as low as $20/hour though. My conservative estimate for a new lawyer in the US would be $80K/2400 hours = ~ $34/hr. How do the expected hours compare in the UK?
I agree that removing noise and consumption for the sake of distraction is a fine goal, but we cannot pretend there are no consequences from going to one extreme to the other. It's tempting to look at an isolated event like Osama Bin Laden's death and think "who cares? doesn't affect me" but these events form the fabric of the world.
Democracy requires and educated and informed electorate [Jefferson], and if you don't know what the dots are, you can't connect them. Sure, willful ignorance will give you more time to be productive, but when society at large chooses this route, don't be surprised when things go downhill.
For me, the joy of engineering is problem solving. If you can solve a problem at hand with skills you have, don't stress over knowledge you don't have -- we are all necessarily ignorant in areas because there isn't enough time to become an expert in everything.
That said, some things _do_ need heavy algorithmic lifting; recognizing that your problem falls into this category saves time. Maybe you can reuse code that does X instead of rederiving and reimplementing it. Maybe the client's performance requirements are asymptotically impossible to achieve. Knowing this lets you confront the issue sooner and gives you a stronger claim than "I can't do this" if they push back.
Algorithms can be a force multiplier for your skill. A recent project required a key-value associative array. Unfortunately we don't yet know what the key strings will look like (long? short? self-similar?), the number of keys (5? 100? 8000000000?) or the expected use (lots of inserts and deletes? mainly lookups?), and the best approach depends on these variables.
Now, any single approach would be easy to implement, but maybe not so easy to adapt if (when...) requirements change. Instead, I'm using STL containers and algorithms as modular building blocks. Changing from a set to a trie? Changing from a vector to a list? A few lines of changes (and sometimes none).
Now, would you call this algorithmic knowledge or programming (C++) knowledge? Well, I'd say somewhere in between... in a sense I'm punting to a library that's been written and tested by smarter people than me, just like I might use any other framework. On the other hand, if I don't know what it means when the framework says "lists take O(n) for lookups", or "vectors offer constant time random access", then even when requirements are clear I might not be able to map them back to the best implementation.
Algorithms are just abstracted solutions to common problems. A binary search doesn't (mostly) care if you are dealing with integers or widgets or FoobarConfigurationManagers. It just says "follow these steps to find an element." Programming is full of common problems: iterating over a list; multiplying the result of two functions; adding a set of numbers. Simple, right? But combine these simple tasks in the right way and you have an algorithm to calculate convolutions.
Likewise, combining simple algorithms can solve a more complex problem.