Reads for 9/4/2013

Here’s what I’ve been reading today:

Gaming:

Other:

  • Cow Tipping: Fake or Really Fake? – A good link to keep handy next time the topic comes up. Nothing I wasn’t already aware of, so could probably have skipped reading it. 
  • Corporate Personhood: Why It’s Awesome – The law around “Corporate Personhood” is very interesting and nuanced and not easily reduced. 
  • Straight  UpA brief history of how Johnnie Walker grew to be such a global brand. Interesting aspect is the ceremonial role it has taken on and positioning in the the developing world. Feel like I want to apply some value judgement here, but it is hard to unpack the complex web at work.

Recipe of the day: Polenta Tart with Roasted Cherry Tomatoes

Evolution of Bicycles (via I Love Charts)

Reads for 9/3/2013

Here’s the deal – I scour through a ton of reading material each day and to start tracking my reading, I figured it would be a good idea to capture the articles I actually read. Additionally, figured it would be an good throw-back to the days when everyone used del.icio.us to share everything they spent more then 5 minutes reading. That social aspect has mostly been replaced with twitter and facebook, but there is so much weight from commentary and the pressures of the curated timeline results in much more targeted sharing.

So here goes! Today happens to all be fairly general, but I expect some categorization in the future.

One more thing…

Werner Herzog and Errol Morris, hugging, smiling, underneath a rainbow.
“…Werner Herzog and Errol Morris, hugging, smiling, underneath a rainbow.” from Portland Mercury Blogtown

PM Links for 4/28/2013

  • A Dangerous Bias: action over thinking – A caution that it is easy to run into action but there is value in the upfront initiation processes and that they can help guarantee project success. 
  • Averages Without Variances are Meaningless – Or Worse Misleading – A good reminder in light of the revelations on Reinhart/Rogoff that statistics are important and we should be careful in choosing and testing our tools.
  • When and Why Does Total Quality Management Work, and Why Isn’t It Still Prevalent? – Another story of a good technique, miss-used, implemented poorly and as a result looked down on and phased out. Give it another 5 years and I suspect TQM will be re-invented under a different name. 
  • Basics Reminder: The First Essential of Project Management: Benefits
  • Opportunity v Threats (again) – Discussion itself is worth being reminded of, but there is one item worth calling out – a tool vs technique distinction is drawn. This distinction I feel is key to a lot of project management. Because of the state of PM education, tools end up dictating process instead of the other way around. We need to always be on the lookout for these situations!
  • The PMBOK Approach to EVM – “It was clear to me, as a result of these encounters, that EVM is not well understood and that the cost / benefit aspects of utilizing it are not properly grasped by a large number of PMs.” I’m a big fan of EVM, but if I only had the information I had to learn for the PMP exam I’d probably have a very different opinion.
  • Self Help for the Week: How to accept a compliment – Accepting a compliment can be challenging for many people – the scripts given near the end should take the anxiety away. 
  • Video for the Week: Statistics Before Calculus [via John Goodpasture] –

Fine Print: While article recommendations are welcome, I avoid articles that overtly try to sell a book or service. 

Project Managers give Project Management a bad name

If you present people with the 5 immutable facets of project management, you get a positive response:

  • What does ‘done’ look like?
  • How will we get to ‘done’
  • Do we have the resources to get to ‘done’
  • What obstacles will we encounter on the way?
  • How do we know we’re making progress?

People want the answers, yet when you start talking about Project Management the room goes cold. Why? Where is the disconnect between information people want and the tool (Project Management) to obtain it?

The problem in my mind comes from bad project managers and the problems they cause. There are a number of common sins –

  • Incomplete project management
  • Schedule inflexibility
  • Methodology mis-match

These are far too common and the problem is compounded by the fact that most management can’t easily tell the difference between these problems and shortcomings of project management in general. Without understanding of good project management or project managers by both management and team members, it is easier to blame the discipline instead of the individuals.

While each of these sins could use a post on their own, there are a few specific recommendations –

  • Improved training of project managers. A certification is not enough, there needs to be continuing education and improvement.
  • Training of managers in what good project management looks like. Either in the form of basic project management training or a course specifically for project sponsors, managers everywhere need to know what they need from project management and what they should be looking for.
  • Include project management in retrospectives and project goals. Identify issues with project management and make improving it a part of the next project.

Project management can be a force for good, making teams more effective and improving project success rates, but only if we confront project manager shortcomings, not just project failures.

Report on NASA’s Project Management Challenges

The US Government is a great source of Project Management resources and while I plan on giving an overview of what is available for free in the near future, I stumbled across an item from NASA’s “ask” that I just had to share.  The US Inspector General released a report recently attempting to answer why NASA projects so often seem to cost more and take longer than originally planned.

While the full report weighs in at 72 pages, I’d recommend everyone interested in Project Management to read at least the overview. Where the rest of the document is interesting in its deep exploration of the current operating environment at NASA, the overview gives a good introduction to the four major factors limiting project success:

  • NASA’s culture of optimism.
  • Underestimating technical complexity increases cost and schedule risk.
  • Funding instability can lead to inefficient management practices.
  • Limited opportunities for project managers’ development.

These issues are far from specific to NASA and serve as a great reminder to constantly review trends in your own projects’ success and examine ways to improve.

What is Project Management?

While I’d have loved to start with something juicier, I find myself out of the habit of narrative writing. As a result, to get back into the habit I’m making things easier on myself by writing more straightforward posts to get things going.

There is a surprising amount of ambiguity when people say ‘project management’ given how long the discipline has existed. Part of the problem sits with the variety of ways companies use the title ‘Project Manager’ – from team lead type roles to designated nagging managers through full-blown classic project managers and scrum masters. This post aims to cut through the confusion and hopefully make people realize that just because there is a person with the title ‘Project Manager’ doesn’t mean they are doing project management.

The best high-level description of project management I’ve found captures the base motivation:

“Project management is how grown-ups manage risk and uncertainty.”

New undertakings always have things that can go wrong and things which aren’t known at the start. At a certain point the cost of failure becomes great enough that some process needs to be put in place to make sure that a project completes or failures are detected as early as possible and avoided where possible. To get to an actual project management definition, we need to add a concept of what we need to do to achieve the goal.

Gren B. Alleman, who blogs at Herding Cats, provides the best breakdown of what needs to be done in order to be considered ‘doing project management,’ phrased in terms of 5 questions that must be answered:

  1. What does ‘done’ look like?
  2. How do we get to ‘done’?
  3. Do we have the resources to get to ‘done’?
  4. What obstacles may we encounter on our path to ‘done’?
  5. How do we know we’re making progress?

These ‘Immutable Priciples” are not aspects of any particular project management methodology (e.g. Agile, PRINCE2, APM, PMI/PMBOK) but are rather features and questions that any methodology needs to cover. Glen goes into great depth describing each of these at his site, so I won’t duplicate his efforts here. The answers may take different forms depending on the methodology and may (or may not) be backed up by data and analytical tools – that they are being answered is what is important. One major point note – these are living questions and while they are most obviously asked at the start of a project they also need to continuously re-answered as things change.

Early in my project management training I heard two key ideas which have stuck with me and I feel contribute to a working definition of Project Management:

  • “Everything will be known, it is just a question of when.”
  • “Never let your project live a lie”

Combined, these speak directly to applying the 5 questions with integrity. Project management is largely an attempt to learn things as early as possible, such as obstacles that may be encountered. If we’re not actively keeping our answers to the five questions fresh, our project may be headed for an issue we’re unprepared for or miss its schedule. As is often said, “hope is not a plan” so lets make sure we’re being proactive about evolving our plans and hunting out issues rather then keep our fingers crossed that things don’t take a turn for the worse.

Just asking the 5 questions regularly I believe helps even the least formally organized project meet its goals. One would think then that given the wealth of additional techniques and methods that exist projects should be like clockwork, yet frustrations abound. While I’ve hinted at what goes wrong, I’ll cover it in depth in my next post – “Project Management is good, Project Managers commonly aren’t.” (hopefully I’ll come up with a catchier title…)

Upcoming Posts:

  • Project Management is good, Project Managers commonly aren’t
  • Bad useful tools

Blogging on Project Management incoming!

During the day, I work as a Project Manager and I love it.

I’ve always been a process person, making it a great fit for me. I spend a lot of time thinking about project management as a discipline and a process along with the challenges I regularly face and really want to share. As a result, pm blogging will commence shortly!

It may not be as exciting as discussions on sensing soil moisture levels, but hopefully everyone will learn something in the process.

Building a VPlotter

A couple of months ago I decided I needed a project I could finish as the watering system seems like it will be forever on the horizon. I’ve wanted to make a vplotter for a while + seemed like it would be something fairly easily finished while giving me experience I could carry forward to the other projects on my plate.

VPlotters are a type of computer controlled drawing device, where the pen is hung vertically from two motors against a wall, resulting in a ‘v’ from the two control points to the pen. An early example is hektor, a graffiti bot that draws using spray paint on walls. These types of drawing machines, due to their simplicity compared to cnc-esque plotters, are fairly common projects. A quick non-authoritative list includes –

Using this as a starting point, my design has a couple of key aspects. First, I’m not going to have any sort of pen-up feature. Any drawing I make will have to be one continuous line. My rationale is to minimize the complexity and the types of drawings I plan on making don’t require it (more on this later…). I also plan on making it wireless, with the controlling computer not physically connected to the controller. Two reasons here – for some of my plans, I expect this to run continuously and my ‘always-on’ computer is not near where I hope to hang the plotter. Also, it should help develop some rf experience I can carry forward to other projects.

I’m fairly far along with this project already (just quite behind on blog updates). Next post to come will be on the math and some theory.

MSP430 Clocks (Part1)

[Editor’s Note] I started this post months ago, but a stressful bit of time at work led to me putting this on the back burner. It has already proven its worth as I remembered none of what I’ve written here + managed to quickly get back up to speed. Hope it proves worthwhile to you!

MSP430 Clock SystemOne of the challenging aspects of moving to programming microprocessors is managing the multiple clocks available. The MSP430 documentation refers to this as a “Flexible Clock System” which we can take as a “steep learning curve clock system,” that I butted heads with last time when I tried to get 1-wire up and running. This post is an attempt to better understand the complexity of the architecture and save myself issues in the future.

The first challenge is getting through the acronyms. Each component of this detailed system has its own acronym which all sound pretty similar. I’ll throw out the acronyms + basic definitiens first before we dive into each piece.

Clocks:

  • ACLK – Auxillary Clock. Low frequency, used for standby mode + wakeup.
  • MCLK – Master Clock. For processor and high speed peripherals
  • SMCLK – Sub-system Master Clock.

Oscillators:

  • DCO – Digitally Controlled Oscillator. Internal oscillator. High frequency, quickly stable
  • LFO – Internal low frequency oscillator. Sub 12kHz, very low power
  • LFXT1 – Low Frequency/High Frequency External Oscillator – this sources a watch crystal on XIN/XOUT.
  • XT2 – An external Oscillator that can go to high frequencies.

Now some nomenclature notes. CLK means the actual signal. What this means is that you often run into DCOCLK and LFXT1CLK which refers to the clock signals coming out of the DCO or LFXT1. Now with that in mind, lets see where each of the clocks can be sourced. Each row represents a clock that powers some part of the system which may be sourced from one of the oscillators in each column.

Clock DCOCLK VLOCLK LFXT1CLK XT2CLK
ACLK Yes Yes
MCLK Yes Yes Yes Yes
SMCLK Yes Yes Yes Yes

Each of the ‘Yes’ boxes is actually adjustable by ‘/1, /2, /4 or /8.’

Wait, what is with the “/1, /2, /4, /8?” Well, there are dividers in the chain. Lets say that the VLOCLK is configured to run at 12kHz for MCLK, the ACLK could be set to 3kHz (12kHz/4) if needed. Why would would we want to do this? (Why so many rhetorical questions?) Well, if we’re sourcing a counter to ACLK and don’t need more accuracy than 3kHz, this keeps our register from filling up and overflowing too quickly, allowing longer timers.

A discussion of clocks can’t really happen without a discussion of power consumption. A full discussion on power saving will have to wait for another time, but there are some high level concepts we can consider now. First, we want to spend most of the time in low power with a slow clock to conserve power. Then, when required, we want to be able to quickly do a bunch of processing with a high frequency clock so a minimum of time is spent in the high power mode. This aligns well to the clock options – ACLK can be sourced to a low frequency source for low power sleeping and MCLK to DCO or another high frequency source for moments of high activity.

Ok, some details. First, if an external clock is being used (LFXT1) the internal low-frequency oscillator won’t be (VLO). Just happens to be that’s where the switch happens. A crystal would be a more stable source while the internal VLO is liable to drift with temperature.

The MCLK is the easiest piece to understand. That’s the speed the CPU runs at and is a direct analog to what you’d think of as processor speed in a full computer. MCLK typically runs off of DCO

ACLK and SMCLK are used to drive peripherals – i.e. Timer, A2D, etc. The difference is that ACLK is only sourcable from the low frequency sources while SMCLK can come from any of the clocks.

While the DCO is configurable over a wide range of frequencies, configuration is imprecise. The internal resistor and capacitor used in the DCO are on silicon, so there is a variation between otherwise identical processors. To work around this limitation, MSP430 series has one or more ‘calibrated’ frequencies with configurations burned to ROM. For the value line processors, they only have 1MHz calibrated. This doesn’t mean you can use a different frequency, just that you can’t expect it to be precise or function the same over different chips.

Now the question rapidly becomes how to configure these bits + pieces to do what we want. The traditional way is to play with a bunch of registers, play with code, then change it into hard-coded strings to save on program space. When I started writing this all up, that was how things went, but now there is Grace. Grace is a graphical tool that integrates into CCS allowing you to configure peripherals (including the clocks) using a simple graphical interface. It then generates the registry strings for you. I have yet to play with it, but expect it to be a valuable tool, particularly in the beginning as I develop further confidence and understanding.

Next up, playing with 1-wire on the MSP430.

References:

About that MSPGCC Problem

I’ve got a long technical post coming on the clock system of the MSP430, a topic that I ended up having to become an expert in to get 1-wire working properly, but in the meantime there have been developments in the mspgcc world.

You may recall that I abandoned doing 430 development on Linux in part due to incompatibilities with TI’s compiler (IAR) and the sample code they provided. I’m happy to say that progress has been made, as reported by 43oh. MSPGCC now includes header files directly from TI. What this means is no more choosing an equivalent processor with a different model number and hoping it works.

While I’ve now aligned my development to using CCS and IAR, I’m glad to see this progress and may return once I have more experience overall.