From that moment on, I loved the living NPC, to the point that I often ignored approaches for creating the sense of life in a place. Away from a particular structure or building, the living NPC works great. I find however it starts to be less great when you are dealing with a specific place like a dungeon or keep. It can work if you have a clear idea of where the NPC would be at any given time. But people are not predictable and do weird things with their spare time (just think of how you move around the house in your daily life). For that I like tables.
One easy approach is location encounter tables that function on turn increments or other periods of time suited to local exploration. These are great and I do employ them, but more and more I have shifted away from this approach in favor of a room by room table. This gives me greater ability to customize each area. It also glosses over time keeping a bit. Rather than worry about whether ten minutes or an hour has passed, I just roll on the table for each room when the players enter them. So if they go into the library, I have a table for the library and roll to see what is present.
This also allows me to do other things like include not just who is there,but what they are doing. It also allows me to mix and match. For instance let's say I have a tower and am fleshing out the bedchamber of the lord's two sons, Rom and Reugar. I might put together the following table using a simple d10 roll (adding 2 to the roll after sunset) or a 2d10 roll depending on what I need:
1-3: Room is empty
4-6: Rom is present
7-9: Ruegar is present
10 Both Rom and Ruegar are here
2: Brothers not here, but Lord Goff-Tan is puzzling over Nong Sai tablets on the table
3: A Gru guard has come in here to sip some of Ruegar’s wine
4: Rom is present and examining a number of Nong Sai tablets on his table, taking notes
5: Rom is present and resting
6: Brother's not present, Ria, their sister is snooping around
7: Ruegar is present and drinking wine as he reads a scroll from the Book of Ramos
8: Ruegar is present and resting
9: The brothers are here drinking, throwing dice and talking about their trip to Tongtel
10: The brothers are both present and joined by Pa-Sai, an ogre who serves their father as a military adviser
Or if I want to have even more fun I could do 2d10 or even a d100 and give myself more options. A d10 or d6 is quick and dirty, but it does constrain your options a little. With d10, 1d20 or a d100 this table could include more details about who is here, who isn't and where they might have gone to. It could also include more off-the-wall results.
I don't use these tables religiously, just to help shake my habits up a bit. Often times you just instinctively know who is in a room and what they are doing. In those instances go with your gut. Also be careful with table results. A table can't account for all the variables of live play (time of day, prior events, etc). So they do need to be used with caution and you need to be able to overrule them when results make no sense (for instance an NPC being in two rooms at the same time.
Not ever room needs this many results. Typically when I construct a location I include a general encounter table and provide specific tables like the above for certain chambers (for instance the library, sleeping quarters, the audience hall, etc). But I also include information that is far from random. People do tend to live structured lives so if there is an audience hall it may be used for receiving people in the morning or perhaps just the first day of the month. That kind of information comes in handy because players who ask around before going somewhere can learn these details and use them to their advantage.