Today, around 1 PM, my external monitor and internet went out. I went to check the fuses—everything was fine. I stuck my head outside, looking for a construction bucket that might have chewed through a cable, but found nothing. This had happened a few times before and usually fixed itself quickly, so I decided not to panic just yet. A little later, Tonya arrived from a neighboring town and told me that they had no electricity either—and that the traffic lights weren’t working across the...| Roman Imankulov
In this post, I’m diving into what Cursor, the AI Code Editor, does behind the scenes when I ask it to write code for me. My main goal is to figure out how to craft my prompts for the best results and see if there’s a better way to tap into its workflow. It turns out that Cursor’s prompt structure reveals a lot about how it operates and how to set it up for maximum performance.| Posts on Roman Imankulov
Making service layers work with Django admin.| Roman Imankulov
How to handle edge cases when integrating with external systems without overwhelming yourself.| roman.pt
Exploring the Interface-Mock-Live Pattern: A Guide to Efficient Testing and Code Structuring| roman.pt
Exploring a neat Pydantic trick to differentiate between set and unset values in update API calls.| roman.pt
How to provide coding guidelines for GitHub Copilot and influence GitHub Copilot suggestions| roman.pt
The benefits and trade-offs of feature flags in software development that we learned at Building Radar.| roman.pt
Why following the most exciting opportunity may not be the right move.| roman.pt
Break out of your old routines and create a path to success with these tried and tested habit-building techniques| roman.pt
How to write unit tests that are easy to read and maintain.| roman.pt
Reflections on the challenges of being a tech team lead: why they are so stressed, and what can you do about it?| roman.pt
How to parse query string to pydantic models with FastAPI Depends() and dynamic function signatures| roman.pt
I thought that surprise bills were something that happened to others. Then I paid more than $400 for a service I didn't use. Then I got a refund.| roman.pt
Reading an anti-utopia as an outline of today's Putin's Russia| roman.pt
Discussing why repaying your tech debt with a code cleanup hackathon is a waste of time.| roman.pt
Having that `pip install -r requirements.txt` that takes ages to install? Make sure you install all binary packages from wheels.| roman.pt
User stories are not feature requests with a cargo culted ticket structure. I'm exploring the proper and uncomplicated use of them in the context of a small team or a personal project.| roman.pt
My attempts to use the Leaflet JavaScript library to visualize codemaps| roman.pt
Some thoughts and takeaways on practical time series caching with Python and Redis from the Dashboards project that I implemented with Anyblock Analytics.| roman.pt
My summary and takeaways from the book "Flow: The Psychology of Optimal Experience."| roman.pt
Overview of tools and services to document your Python web application from installation instructions to public API. How to make sure API documentation is in sync with your code. How to serve internal documentation and keep it private.| roman.pt
How do you enforce architecture for your Python and Django projects other than in code reviews or guidelines?| roman.pt
Who are product managers. What product managers do and how are they different from project managers and why does it matter for developers.| roman.pt
I restricted the use of dicts in my code to make it easier to follow and maintain. Here's my explanation of the benefits and advice on what you can use instead. Bonus point: what to do with all the legacy code when there's no time to eradicate all the dicts.| roman.pt
Why I prefer simple function-based views over class-based views in Django, and where I put my business logic.| roman.pt
A pythonic interface for running complex enum migrations in Alembic scripts.| roman.pt
A reflection on the struggles of maintaining energy and positivity during night events| roman.pt
As you write a tech or product specification, don't leave unresolved comments hanging.| roman.pt
I released a Django application to proxy requests and send server-side events to Plausible Analytics| roman.pt
How to define your column to store Pydantic models as JSON fields in SQLAlchemy ORM| roman.pt
A snippet to pretty print SQL from Django ORM queryset| roman.pt
There's time to talk, and there's time to listen. Take pauses. Proactively invite others to share their thoughts.| roman.pt
My thoughts on how to become a better reader. The context is non-fiction books.| roman.pt
I use multitasking as a measure of the success of our regular team meetings.| roman.pt
I honestly don't understand why some people find it ugly or unpythonic. I try hard to annotate my Python code with type hints and here's why.| roman.pt
Research from Microsoft says that the number of bugs in a file correlates with the number of contributors to it. It goes against common wisdom on sharing knowledge to increase the bus factor.| roman.pt
I created an open-source project that automatically fixes grammar and stylistic errors. It can also adjust the tone and formatting.| roman.pt
How and when to use parametrized fixtures in Pytest.| roman.pt
Reflections on a Successful Blogging Year: Lessons Learned and Takeaways.| roman.pt
Our experience introducing feature flags at Doist| roman.pt
How using the phrase "Stop me before it's too late" can help you invite feedback and improve your solutions| roman.pt
Pydantic offers backward compatibility features for your data model, allowing you to easily adapt to changes in your data sources| roman.pt
How I passed the AWS Certified Developer - Associate certification exam. Preparation, mindset, certification procedure, and lessons learned.| roman.pt
3 simple techniques to balance product work with tech debt elimination| roman.pt
Tools I use to find why my Python code is slow.| roman.pt
My experience and takeaways from working with the AWS Serverless Application Model.| roman.pt
Five-minute summary of the book 'Accelerate: The Science of Lean Software and DevOps'| roman.pt
My summary and takeaways from Martin Fowler’s Patterns for Managing Source Code Branches| roman.pt
A copy-pasteable memo about my setup for a TypeScript React project| roman.pt
Why sharing database between two services creates a tech debt.| roman.pt
How to split large pull requests into chunks and not go nuts — exploration of tooling and my low-tech workflow.| roman.pt
How I promote consistent project structure with Flask and avoid hairy and repetitive code in the application initialization.| roman.pt
Thoughts on hiring and career planning in application to software development.| roman.pt
Improve your Python code to increase your chances to succeed at the interview and become a better developers| roman.pt