Automatización Personal y Herramientas

Automatización Personal y Herramientas

Proyecto

Automatización Personal y Herramientas

Stack técnico

Python, Bash, PowerShell, Flask, Node.js, Docker, GitHub Actions, Azure Functions, REST APIs, SQLite

Descripción

Personal Automation and Tools is a continuing collection of small systems I build when a repeated task deserves a reliable interface. The projects include scripts, document utilities, content helpers, lightweight web applications, API integrations, and scheduled jobs. They are deliberately smaller than a product platform, but they use the same engineering habits: define the problem, identify the trust boundary, choose the simplest suitable runtime, make the behavior observable, and leave a path for maintenance. This collection lets me apply experience from Python, PowerShell, Bash, Node.js, Flask, Docker, Azure Functions, REST APIs, SQLite, and CI/CD to everyday work.

I begin by observing the manual workflow before automating it. The goal is not to reproduce every click; it is to understand the input, decision, output, frequency, and cost of failure. Some tasks need only a short script. Others benefit from a command-line contract, a small web interface, persistent state, or a scheduled trigger. My software-architecture background helps me avoid turning a simple utility into an unnecessary platform, while product thinking keeps the result centered on the person using it. The right design is the smallest one that removes meaningful friction without hiding important decisions.

Language choice follows the task. PowerShell is effective for Windows administration and repository workflows, Bash for portable shell composition, Python for data and document processing, Node.js for JavaScript-based tooling, and Flask for a lightweight HTTP surface when a browser is the clearest interface. I use C# and .NET when stronger domain modeling, integration with existing applications, or long-term service structure justifies it. This polyglot approach is not about collecting technologies. It reflects an engineering judgment developed across many systems: runtime, deployment, dependencies, and team familiarity should support the job rather than dominate it.

Data storage is equally proportional. A file may be sufficient for a deterministic transformation, while SQLite provides transactions and queryable history without operating a separate database service. REST integrations are isolated behind small clients with explicit request and response models. Inputs are validated before they enter the workflow, and outputs carry enough context to be traced back to their source. These decisions apply lessons from SQL, distributed systems, and API architecture at a personal scale. Even a small tool becomes frustrating when it loses provenance, silently changes a format, or cannot explain which input produced a result.

Security is part of the initial design because personal utilities often touch files, accounts, and credentials with broad access. Secrets remain in environment or approved secret stores, file operations are constrained to intended locations, and network clients use the minimum permissions available. I consider unsafe command construction, path traversal, accidental logging, unbounded inputs, and dependency risk before adding convenience features. Knowledge from security engineering, identity, cryptography, and OWASP guidance informs these checks. A tool used by one person still deserves safe defaults, especially because automation can repeat a mistake faster and across more data than a manual action.

Reliability comes from making each utility predictable. Commands return meaningful exit states, scheduled work records completion, and retries are limited to operations that can be repeated safely. Docker provides reproducible dependencies when installation differences would otherwise become the main source of failure. GitHub Actions can run tests, package tools, or execute controlled schedules, while Azure Functions support event-driven jobs that should not depend on a personal machine remaining online. I apply observability in proportion to the tool: enough logging and state to diagnose failure, without building an operational platform larger than the automation itself.

AI capabilities are added only where they improve a specific judgment or transformation. A language model can help classify text, draft alternatives, summarize a document, or select among approved tools, but its output is validated before it controls files or external actions. My experience with LLM workflows, Azure AI, agentic architecture, and Model Context Protocol helps me define narrow tool contracts and permission boundaries. Deterministic code remains responsible for validation and execution. This pattern allows experimentation with AI while preserving explainability: the model suggests or plans within a bounded context, and the application decides what is safe to carry out.

Collectively, these tools show how I work beyond large architecture diagrams. I use engineering knowledge to remove repeated friction, then improve the result through feedback rather than trying to predict every requirement at the beginning. The projects exercise scripting, web development, data handling, cloud scheduling, containers, security, testing, and AI integration in compact forms that are easy to inspect. They also create reusable components and lessons that inform larger systems. The common outcome is practical leverage: a manual process becomes a small, maintainable capability whose inputs, authority, behavior, and failures are clearer than the workflow it replaced.

Pregunta al asistente de Mariojose

Pregúntame sobre Mariojose

Prueba: "¿En qué se especializa Mariojose?" o "Muéstrame sus servicios y trabajos recientes".