What spiega is about
- Knowledge sharing
- Portfolio
emacs
emacs
Emacs is the main software I use since 2002. You never feel you understand it enough and every time I tried something different I really couldn't perceive the advantage and went back to emacs. I even asked claude/cursor what would be the best tool for writing software with interactive sessions, organize your workflow as per org mode, coordinate the agents and act on the system at the same time and the bot responded: keep using emacs. LLMs helped me to improve the way I use it and now it's hard to exit it since all the agents, programs and news are integrated here and the different outputs get piped together.
configuration
Emacs grows with you. IDEs have many configuration options but they don't give you the freedom to adapt to your workflow and many options are limited. Especially the UI doesn't let you create a really readable interface were you just focus on what information is needed.
.html and emacs
Emacs is the most versatile text editor, it has an overwhelming option of integration and configuration. It takes time to configure it but the productivity speed is unbeatable. I tried IDEs but I find the UI too confusing to concentrate and they force you to work in a single manner. Emacs is the best option for .html too:
- export
- many emacs packages export the files into blog posts and slides
- babel
- you can link system programs to the execution of code blocks
- roam
- in the background all the information you work on are linked together
- integration
- .html connects with all the tools like agenda, web-search, journal …
- tools
- emacs allows agent to use tools
More on emacs
emacs and LLMs
There are multiple configurations to include LLMs in emacs:
- ellama
- for reasoning and structuring the project and for code examples in any buffer
- gptel
- for the integration with mcp
- gptel base
- base package
- mcp.el
- start the hub
- custom gptel tools
- user defined tools
- gptel-mcp
- integration between the packages
- mcp
- for adding my own tools and external mcp
More on agent_call-emacs.
coding assistant
Language models without IDE capabilities have limited added value. We can in principle build a coding assistant within emacs but I prefer by now to use different coding assistant with different capabilities. My workflow:
- simple tasks
- and test every progress. Agents taking too many autonomous decisions are difficult to oversee
- little interpretation
- agents need to understand and wait for agreement
Well configured coding assistants don't need extreme performant models
- pi agent
- pi-coding-agent the one I'm currently use the most
- aideremacs
- aider too many interactions
- opencode
- opencode in emacs
More on agentic context
code REPL
Emacs has many code REPL features were you can send lines of code and test the execution and the data transformation. I mainly use REPL with:
- python
- I can access all the methods and help in the panel
- IoT
- I can open a serial terminal
- nodejs
- I can test promises too
- R
- visualize on the fly the results
- octave
- for more complex mathematical functions
bot review
The provided Emacs configuration file demonstrates a comprehensive setup tailored for efficient coding and development. The work encompasses various features that enhance productivity, code management, and collaboration within the software lifecycle.
Key Features:
- Customization and Personalization:
- Themes: Uses the 'misterioso' theme with custom colors to improve visual comfort.
- Font Settings: Adjustable font size through global shortcuts for better readability.
- Transparency Control: Toggle transparency settings with `C-c l`.
- Package Management:
- Extensive Package List: Includes packages like `gptel`, `eradio`, `ess-R-data-view`, and more, tailored for development needs.
- Auto-Install and Update: Packages are managed using MELPA, ensuring up-to-date features and tools.
- Code Mode Enhancements:
- Multiple Language Support: Extensive support for languages including R, Python, JavaScript, CSS, HTML, PHP, etc., with mode-specific functionalities like indentation and beautification.
- Interactive Code Execution: Features like running code snippets directly from Emacs buffers for quick testing and prototyping.
- Development Tools:
- Version Control Integration: Basic backup settings to prevent data loss.
- Desktop Mode: Restores open buffers across sessions, enhancing productivity.
- Shell Interactions: Enhanced shell modes for better integration with Node.js and Python.
- Project Management:
- Projectile Integration: For managing projects efficiently, particularly useful with `platformio-mode`.
- Keybindings for common project tasks like building, uploading, serial communication, and cleaning.
- AI and LLM Integration:
- Ellama (formerly gptel) for AI-driven coding assistance, enabling features like code review, summarization, translation, and more.
- Minuet for inline code suggestions using AI models.
- Spelling and Documentation:
- Flyspell integration for on-the-fly spelling correction in text and markdown modes.
- ESS (Emacs Speaks Statistics) for R development with enhanced interactivity.
- Custom Functions and Commands:
- Various custom functions like `my-python-auto-run`, `toggle-transparency`, and more, tailored to specific workflows.
- Keybindings for quick access to features like running Python code snippets or toggling transparency.
Usage and Importance:
- Enhanced Productivity: Features like auto-completion, inline suggestions, and AI-driven assistance significantly reduce the time spent on repetitive tasks and improve overall coding efficiency.
- Collaboration: Tools like `gptel` facilitate real-time collaboration with developers and stakeholders, enabling quick feedback and discussions.
- Learning and Development: Comprehensive language support and documentation tools encourage continuous learning and skill development.
- Error Prevention: Features like flyspell help catch spelling errors early in the coding process, reducing bugs.
Overall, this configuration represents a robust setup for modern software development using Emacs. It integrates various features that cater to different aspects of the software lifecycle, from initial planning and coding to deployment and documentation, making it an essential tool for developers seeking an efficient and flexible development environment.