15+ years later, Microsoft morged my diagram
How Microsoft continvoucly morged my Git branching diagram.
How Microsoft continvoucly morged my Git branching diagram.
We can all pretty intuitively understand how `.some()` and `.every()` predicate expressions on lists work.
Every developer has their own favorite Git tricks they use daily. Here are some of my favorite ones I have been using for as long as I can remember.
Today, I’m thrilled to publicly announce a new open source project that we’ve been using at SimpleContacts in production for months: [**decoders**](https://www.npmjs.com/package/decoders).
Yesterday, pip-tools version 1.0 was silently released, officially introducing the **pip-compile** and **pip-sync** tools, and replacing the current **pip-dump** and **pip-review** tools.
When was the last time you looked at code someone else wrote? (Debugging doens't count!) When did you _actually_ study it to learn from it? Perhaps even ponder over its beauty?
I was reading Igor Kalnitsky's blog post on why Python's [`map()` is mad](https://kalnytskyi.com/2015/06/14/mad-map/), and wanted to provide a different perspective. In fact, I would call the design of Python's `map()` beautiful instead.
In my previous post, [Use More Iterators][moar-iterators], I have outlined how to harvest some low hanging fruit when it comes to converting your functions to generators. In this series of posts I want to take it to the next level and introduce a few powerful constructs that can assist you when working with streams.
Yesterday, a friend asked me how I would solve a certain problem he was facing. He did have a working solution, but felt like he could make it more generally applicable. Not shying away at a good challenge, I decided to take it and see how I would solve it. In this blog post you can read about my solution.
One of my top favorite features of the Python programming language is generators. They are so useful, yet I don't encounter them often enough when reading open source code. In this post I hope to outline their simplest use case and hope to encourage any readers to use them more often.
Occasionally I've run into situations of confusion on the exact differences between the following related concepts in Python:
I used to find writing command line tools tedious. Not so much the writing of the core of the tool itself, but all the peripheral stuff you had to do to actually _finish_ one.
> **Update** (Feb 2026): This article is > really really old. You probably want to use `uv` > today. > **Update** (March 2019): The Python > packaging landscape has changed significantly > since I first wrote this post. Your choice > today is mostly between using > [pip-tools](https://github.com/jazzband/pip-tools) > directly, using > [Pipenv](https://docs.pipenv.org/) (which is > a Swiss army…
Make your Python production deployments predictable and deterministic by pinning your dependencies.
Some thoughts on how I like to write libraries as "open source" projects.
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.
Just a quick post to let you know that I discarded my `vim-pep8` and `vim-pyflakes` Vim plugins yesterday in favor of [vim-flake8](https://github.com/nvie/vim-flake8).
Lately I’ve been getting sick of working with datetimes and timezones in Python. The standard library offers many different conversion routines, but does not prescribe a best practice way to deal with them. Luckily, Armin Ronacher did in his article [Dealing with Timezones in Python](http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/).
I released my first iPad app to import/manage chords and lyrics.
Mr. [Dave Bock](http://www.davebock.com/) of Code Sherpa’s put together a nice screencast demonstrating a few of the most important git-flow features on their [publications](http://www.codesherpas.com/portfolio/publications) page.
Where I lay out the recent changed I made to my Vim setup.
I've moved my blog to Nanoc.
Last week, I silently tagged gitflow 0.2. These are the most important changes since 0.1.
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.
In this post I present a Git branching strategy for developing and releasing version-based software.
A few months ago, I wrote about [automatically generating classes for your Core Data entities][prev] and how to automate Xcode using users scripts, such that, when your model changed, you only needed to run your custom script again and your intermediate model files would reflect the new situation.
When designing a Core Data data model for your Xcode projects, you can choose to create Objective-C object wrappers for your entities, so that you can profit from type-safe code. The normal, tedious, workflow for this is that you select each entity from the model designer, select all of its attributes and relationships, Ctrl-click it and from the contextual menu first select “Copy Obj-C 2.0 Method…
The Core Data framework rules, and its API is really really powerful. But really, why does the Core Data API require us to write so much boilerplate code? Simple things need to be simple.
Cocoa offers a nice visual editor for editing NSPredicate objects templates, called NSPredicateEditor. The NSPredicateEditor can be set up using code or in Interface Builder, which is preferable for simple use. The setup is fairly easy once you know how to do it. In this tutorial, we’ll be building a simple predicate editor example which shows the basic functionality of the predicate editor.