WordSelah v1 (demo) is officially shipped! 🚀
A desktop scripture companion that displays KJV Bible verses alongside personalized declarations.
This release establishes the foundation.
Next: a 2 hour scheduler, preferences, and SQLite integration.
🔗 https://t.co/tse3mh2dgC
Starting work on MyPass v3 🔐
v1 was about functionality.
v2 focused on encryption and securing the vault.
v3 is about taking the application further.
Better architecture, stronger security, improved user experience, and more features.
Git branches and GitHub forks solve different problems.
A branch lets you develop a feature independently within a repository.
A fork creates a separate copy of a repository under another account.
A Python repository shouldn’t contain every file generated by the development environment.
My .gitignore excludes local IDE configuration, Python bytecode, virtual environments, and sensitive configuration files where appropriate.
Examples:
.idea/
__pycache__/
.venv/
.env
An application that depends on an API needs a plan for failed requests.
Possible causes include DNS errors, connection timeouts, invalid responses, or unavailable services.
“Something went wrong” isn’t always enough information to debug a problem.
An application that depends on an API needs a plan for failed requests.
Possible causes include DNS errors, connection timeouts, invalid responses, or unavailable services.
“Something went wrong” isn’t always enough information to debug a problem.
API efficiency isn’t only about making requests faster.
It’s also about avoiding unnecessary requests.
Caching repeated verse lookups helps. Where an API supports chapter retrieval, batching related verses may reduce request count.
API efficiency isn’t only about making requests faster.
It’s also about avoiding unnecessary requests.
Caching repeated verse lookups helps. Where an API supports chapter retrieval, batching related verses may reduce request count.
For a simple API request, Python’s standard library can be enough.
urllib.request supports HTTP requests without installing another package.
For larger applications, libraries like requests or httpx can make HTTP handling more convenient.
For a simple API request, Python’s standard library can be enough.
urllib.request supports HTTP requests without installing another package.
For larger applications, libraries like requests or httpx can make HTTP handling more convenient.
API keys should never be hardcoded into a public repository.
A safer approach is to read credentials from environment variables:
os.environ["API_KEY"]
For optional configuration, os.getenv() can provide a fallback.
Also keep local .env files out of Git.
API keys should never be hardcoded into a public repository.
A safer approach is to read credentials from environment variables:
os.environ["API_KEY"]
For optional configuration, os.getenv() can provide a fallback.
Also keep local .env files out of Git.
Calling choose_message() during module initialization and again during rendering can perform unnecessary work.
The cleaner approach is to select content when the application actually needs a new message.
Function calls should have a clear purpose and predictable timing.
A useful Python distinction:
data[key] raises a KeyError if the key is missing.
data.get(key) returns None by default.
But a fallback isn’t enough on its own.
Missing content should also be detectable so the underlying data can be corrected.
A useful Python distinction:
data[key] raises a KeyError if the key is missing.
data.get(key) returns None by default.
But a fallback isn’t enough on its own.
Missing content should also be detectable so the underlying data can be corrected.