# nvie.com > Personal blog of Vincent Driessen (nvie), a Dutch software engineer > working on developer tools, API design, and maintainable software. Author > of decoders, git-toolbelt, git-flow, pip-tools, and various Vim plugins. Long-form technical writing on TypeScript, library design, API design, Python, and Git workflows. Posts are listed newest first and dated, so you can judge how current one is before reading it. ## Posts - [15+ years later, Microsoft morged my diagram](https://nvie.com/posts/15-years-later/): 2026-02-18 — How Microsoft continvoucly morged my Git branching diagram. - [Why .every() on an empty list is true](https://nvie.com/posts/why-every-on-an-empty-list-is-true/): 2021-12-06 — Or why .some() on an empty list is false. - [Git power tools for daily use](https://nvie.com/posts/git-power-tools/): 2018-11-08 — Three little Git gems I cannot live without. - [An intro to decoders](https://nvie.com/posts/introducing-decoders/): 2018-09-25 — Type-checking your boundaries. - [pip-tools 1.0 released](https://nvie.com/posts/pip-tools-10-released/): 2015-07-21 — The future is now - [Beautiful code](https://nvie.com/posts/beautiful-code/): 2015-06-16 — When was the last time you marveled at a piece of code? - [Beautiful map](https://nvie.com/posts/beautiful-map/): 2015-06-15 — Map isn't mad. It's beautiful. - [Thinking in streams](https://nvie.com/posts/thinking-in-streams/): 2015-03-25 — On building an elegant DSL for composing streams from generators. - [Modifying Deeply-Nested Structures](https://nvie.com/posts/modifying-deeply-nested-structures/): 2014-10-03 — A little journey of stripping down a problem to its essence. - [Use More Iterators](https://nvie.com/posts/use-more-iterators/): 2014-09-29 — Reasons and practical tips to convert your code to use iterators. - [Iterables vs. Iterators vs. Generators](https://nvie.com/posts/iterators-vs-generators/): 2014-09-25 — A little pocket reference on iterables, iterators and generators. - [Writing a Command-Line Tool in Python](https://nvie.com/posts/writing-a-cli-in-python-in-under-60-seconds/): 2014-09-24 — How to write a quality command line tool in under 60 seconds. - [Better Package Management](https://nvie.com/posts/better-package-management/): 2013-05-08 — Ideas for improving package dependency management in Python. - [Pin Your Packages](https://nvie.com/posts/pin-your-packages/): 2012-09-26 — Make your Python production deployments predictable and deterministic by pinning your dependencies. - [Open Sourcing: the Ultimate Isolation](https://nvie.com/posts/open-sourcing-is-the-ultimate-isolation/): 2012-09-09 — Some thoughts on how I like to write libraries as "open source" projects. - [Introducing RQ](https://nvie.com/posts/introducing-rq/): 2012-03-28 — Today, I'm open sourcing a project that I've been working for the last few months. It is a Python library to put work in the background, that you'd typically use in a web context. It is designed to be simple to set up and use, and be of help in almost any modern Python web stack. - [vim-flake8: Flake8 for Vim](https://nvie.com/posts/vim-flake8-flake8-for-vim/): 2012-02-14 — A new Vim plugin for automatically running Flake8 checks. - [Introducing Times](https://nvie.com/posts/introducing-times/): 2012-02-02 — A tiny pet library for dealing with datetimes and timezones in Python. - [Chords + Lyrics](https://nvie.com/posts/chords-lyrics/): 2011-10-05 — I released my first iPad app to import/manage chords and lyrics. - [A git-flow screencast](https://nvie.com/posts/a-git-flow-screencast/): 2011-01-27 — Dave Bock created a nice video on using git-flow. - [How I boosted my Vim](https://nvie.com/posts/how-i-boosted-my-vim/): 2010-09-14 — Where I lay out the recent changed I made to my Vim setup. - [A whole new blog](https://nvie.com/posts/a-whole-new-blog/): 2010-09-13 — I've moved my blog to Nanoc. - [An upgrade of gitflow](https://nvie.com/posts/an-upgrade-of-gitflow/): 2010-03-04 — Last week, I silently tagged gitflow 0.2. These are the most important changes since 0.1. - [gitflow 0.1 released](https://nvie.com/posts/gitflow-01-released/): 2010-01-26 — After the overwhelming attention and feedback on the Git branching model post, a general consensus was that this workflow would benefit from some form of proper scriptability. This post proposes the initial version of a tool I called git-flow. - [A successful Git branching model](https://nvie.com/posts/a-successful-git-branching-model/): 2010-01-05 — In this post I present a Git branching strategy for developing and releasing version-based software. - [Auto-generate classes for your Core Data data model, revisited](https://nvie.com/posts/auto-generate-classes-for-your-core-data-data-model-revisited/): 2009-09-19 - [Automatically generate classes for your Core Data data model](https://nvie.com/posts/automatically-generate-classes-for-your-core-data-data-model/): 2009-06-30 - [NSManagedObjectContext extensions](https://nvie.com/posts/nsmanagedobjectcontext-extensions/): 2009-06-22 - [NSPredicateEditor tutorial](https://nvie.com/posts/nspredicateeditor-tutorial/): 2009-06-20 ## Published elsewhere Posts written by the same author, but hosted on another site. - [Fractional indexing techniques explained visually](https://liveblocks.io/blog/how-crdts-and-sync-engines-keep-realtime-lists-ordered-with-fractional-indexing?utm_source=nvie.com#regular-array-indexing): 2026-04-23 — An interactive guide to fractional indexing, and how it’s used in Liveblocks. - [Introducing Zen Router](https://liveblocks.io/blog/introducing-zen-router-our-open-source-type-safe-router-compatible-with-cloudflare-workers?utm_source=nvie.com): 2026-02-26 — An opinionated HTTP router with typed path params, built-in body validation, and a clean auth model. - [Open sourcing the Liveblocks sync engine and dev server](https://liveblocks.io/blog/open-sourcing-the-liveblocks-sync-engine-and-dev-server?utm_source=nvie.com): 2026-02-18 — We've open sourced most of our server stack. Now you can run and test your Liveblocks apps locally. ## Pages - [About](https://nvie.com/about/): who I am and how to contact me - [Projects](https://nvie.com/projects/): open source projects I've built and maintain - [Archive](https://nvie.com/posts/): the same post list, as a web page ## Optional - [Atom feed](https://nvie.com/private_feed.xml): the full text of every post, in one file - [Sitemap](https://nvie.com/sitemap.xml): every canonical URL on this site