About your anecdote 1, obviously there's bad management. That's what project managers are for, you know, to keep track of to-dos and if any of them require contacting the client. Arranging meetings, etc. Have you arranged that meeting yet? No? Well do it, now. How many projects are there? Does the company have a list of todos for each project? You know, like using Microsoft Project (TM) to keep track of each one of them?
The company I currently work for has weekly meetings for each single project. Don't get me wrong, these aren't "meetings with powerpoing presentations etc.", but operational meetings. How much we've advanced, if there are any problems with development, unknown bugs, need feedback, things that really concern us developers.
As much as those meetings seem to be a pain in the ass, they're necessary to keep the engine going. Sometimes I've found that my approach to a certain project was going in a completely wrong direction. True, it's good to let developers work, but don't give them the full responsibility for the project. Programmers have so many things to work in that we lose track of things like customer support.
In other words, if a worker ends up procrastinating and delaying a project, here's some advice for the company: YOU'RE DOING IT WRONG.
Sorry if this is a bit off-topic, but sometimes I have to get these things out of my system.