Pour beans into a colander and rinse them off, removing any unwanted pieces. Add to a large pot with 6 cups of water (or enough to cover them by about 2 inches), a small chunk of onion, bay leaf and ½ teaspoon of salt.
Bring to a boil, then reduce heat to a simmer and cook for 1 to 2 hours, until the beans are tender, but not bursting. (Mine usually take about 1 hour but depends on how dry/old your beans are). Check them a few times during cooking to make sure they are covered in water and add a little more water if needed.
Once the beans are tender, drain them, reserving ¼ cup of the liquid. Set aside.
Add the bacon to a large pot and cook for about 5 minutes or until cooked. Remove some of the grease. Add onion and garlic and cook until onion is translucent. Add ham (or sausages), diced tomatoes, peppers, cilantro, oregano, paprika, cumin, black pepper and cook for 5 additional minutes.
Add the cooked beans, reserved broth, and beer. Simmer for 15 minutes.
Taste and season with salt and pepper, or additional spices if needed.
Serve garnished with cilantro, as a meal with warm tortillas, or as a side dish.