Functional dynamic dispatch with Python’s new singledispatch decorator in functools

October 20th, 2013

I just read about Python 3.4’s release notes. I found a nice little gem.

I didn’t know what “Single Dispatch Functions” were all about. Sounded very abstract. But it’s actually pretty cool, and covered in PEP 443.

What’s going on here is that Python has added support for another kind of polymorphism known as “single dispatch”. This allows you to write a function with several implementations, each associated with one or more types of input arguments. The “dispatcher” (called singledispatch and implemented as a Python function decorator) figures out which implementation to choose based on the type of the argument. It also maintains a registry of types to function implementations.

This is not technically “multimethods” — which can also be implemented as a decorator, as GvR did in 2005 — but it’s related. See the Wikipedia article on Dynamic Dispatch for more information.

Also, the other interesting thing about this change is that the library is already on Bitbucket and PyPI and has been tested to work as a backport with Python 2.6+. So you can start using this today, even if you’re not on 3.x!

Read the rest of this entry »

How investors play the option

September 17th, 2013

Paul Graham put up a new essay, one of his longest, called “How to raise money”. It gives a good glimpse into the mind game that is startup financing.

I thought it was particularly interesting how he documented three different ways in which investors say “no”, without really saying no.

Read the rest of this entry » Press Coverage – August 2013

September 3rd, 2013 made its funding announcement — a $5M series A, led by Grotech Ventures and with participation from FundersClub, Blumberg Capital, and ff Venture Capital. Read on for the full list of links to our coverage.

Read the rest of this entry » brand hacking

July 20th, 2013

There’s some hoopla lately about “weird” startup names in the Wall Street Journal, with specific coverage of “.ly” domains in The Atlantic Wire:

The latest start-up boom has led to the creation of at least 161 companies that end in “ly,” “lee,” and “li,” which is, naming consultants tell us, 160 too many. There’s feedly, bitly, contactually, cloudly, along with a bunch of other company-LYS […] and all but the first ever “ly” name are “just lazy,” Nancy Friedman, a naming consultant, told The Atlantic Wire.

Read the rest of this entry »

Building ships

July 17th, 2013

“If you want to build a ship, don’t drum up the people to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.”
Antoine De Saint-Exupery

“We’re killing it”

July 5th, 2013

Good post today, A “Third Way” in Entrepreneurship, that discusses the “always be winning”, annoyingly positive veneer of most startup entrepreneurs. This is a community where many founders you meet always share their latest victory and pretend that failures rarely happen.

… entrepreneurs are pressured to maintain a totally positive face to the outside world about the state of their company. In San Francisco, “we’re killing it” is almost now an inside joke because of the ubiquity of that response when someone asks an entrepreneur how their company is faring. Most of these companies are not “killing it”, and the entrepreneurs probably know that.

There is also a nice comment thread discussing the “we’re killing it” phrase, a discussion to which I contributed an anecdote and interpretation.

The comment I added to the discussion:

A friend once relayed a story to me of a dinner meeting of ~20 early-stage high-tech executives he attended that was sponsored by a startup organization. The moderator asked one question as an ice breaker to kick off the night: “What is the greatest challenge that your startup faces today?”

My friend was the first one picked to share. Being a very level-headed guy (who personally hates the term, “killing it”), he suggested that one of his biggest challenges was maintaining work/life balance & personal relationships, for himself & also for his employees, so that they don’t burn out on the job.

The baton then got passed to the next entrepreneur, and, as my friend tells it, entrepreneur after entrepreneur shared their “greatest challenge”, though they were only “challenges” in the weakest sense of the word. For example: “handling all the new customers we have”, “scaling our servers for our massive user-base”, “hiring enough software engineers to keep up with the business growth”.

He realized then that every entrepreneur was “positioning” the answer to make it appear that the greatest challenge faced was dealing with the company’s illusory massive success.

I think this anecdote describes the “killing it” mentality quite well — even among peers and in a setting where people should be comfortable sharing their fears, this community prefers reality distortion.


May 23rd, 2013

Paul Graham, in a footnote from his essay on “How to Make Wealth”:

One valuable thing you tend to get only in startups is uninterruptability. Different kinds of work have different time quanta. Someone proofreading a manuscript could probably be interrupted every fifteen minutes with little loss of productivity. But the time quantum for hacking is very long: it might take an hour just to load a problem into your head. So the cost of having someone from personnel call you about a form you forgot to fill out can be huge.

This is why hackers give you such a baleful stare as they turn from their screen to answer your question. Inside their heads a giant house of cards is tottering.

The mere possibility of being interrupted deters hackers from starting hard projects. This is why they tend to work late at night, and why it’s next to impossible to write great software in a cubicle (except late at night).

One great advantage of startups is that they don’t yet have any of the people who interrupt you. There is no personnel department, and thus no form nor anyone to call you about it.

David Foster Wallace on advertorials

May 13th, 2013

In “A Supposedly Fun Thing I’ll Never Do Again” (which also appeared in Harper’s Magazine as the essay, “Shipping Out”), David Foster Wallace discusses an “essay” he came across discussing a cruise, but which was really an advertisement.

In other words, Celebrity Cruises is presenting Conroy’s review of his 7NC Cruise as an essay and not a commercial. This is extremely bad. Here is the argument for why it is bad. Whether it honors them well or not, an essay’s fundamental obligations are supposed to be to the reader. The reader, on however unconscious a level, understands this, and thus tends to approach an essay with a relatively high level of openness and credulity. But a commercial is a very different animal. Advertisements have certain formal, legal obligations to truthfulness, but these are broad enough to allow for a great deal of rhetorical maneuvering in the fulfillment of an advertisements primary obligation, which is to serve the financial interests of its sponsor. Whatever attempts an advertisement makes to interest and appeal to its readers are not, finally, for the reader’s benefit. And the reader of an ad knows all this, too – that an ad’s appeal is by its very nature calculated – and this is part of why our state of receptivity is different, more guarded, when we get ready to read an ad.

Read the rest of this entry »

Python double-under, double-wonder

April 11th, 2013

Python has a number of protocols that classes can opt into by implementing one or more “dunder methods”, aka double-underscore methods. Examples include __call__ (make an object behave like a function) or __iter__ (make an object iterable).

The choice of wrapping these functions with double-underscores on either side was really just a way of keeping the language simple. The Python creators didn’t want to steal perfectly good method names from you (such as “call” or “iter”), but they also did not want to introduce some new syntax just to declare certain methods “special”. The dunders achieve the dual goal of calling attention to these methods while also making them just the same as other plain methods in every aspect except naming convention.

Read the rest of this entry »

PyCon 2013: The Debrief

March 17th, 2013

PyCon US 2013 is over! It was a lot of fun — and super informative.


The People

For me, it was great to finally meet in person such friends and collaborators as
@__get__, @nvie, @jessejiryudavis, and @japerk.

It was of course a pleasure to see again such Python super-stars as
@adrianholivaty, @wesmckinn, @dabeaz, @raymondh, @brandon_rhodes, @alex_gaynor, and @fperez_org.

(Want to follow them all? I made a Twitter list.)

I also met a whole lot of other Python developers from across the US and even the world, and the entire conference had a great energy. The discussions over beers ranged from how to use Tornado effectively to how to hack a Python shell into your vim editor to how to scale a Python-based software team to how to grow the community around an open source project.

In stark contrast to the events I’ve been typically going to in the last year (namely: ‘trade conferences’ and ‘startup events’), PyCon is unbelievably pure in its purpose and feel. This is where a community of bright, talented developers who share a common framework and language can push their collective skills to new heights.

And push them, we did.

Read the rest of this entry »