The Holy Trinity

Existential Type

The Christian doctrine of trinitarianism states that there is one God that is manifest in three persons, the Father, the Son, and the Holy Spirit, who together form the Holy Trinity.   The doctrine of computational trinitarianism holds that computation manifests itself in three forms: proofs of propositions, programs of a type, and mappings between structures.  These three aspects give rise to three sects of worship: Logic, which gives primacy to proofs and propositions; Languages, which gives primacy to programs and types; Categories, which gives primacy to mappings and structures.  The central dogma of computational trinitarianism holds that Logic, Languages, and Categories are but three manifestations of one divine notion of computation.  There is no preferred route to enlightenment: each aspect provides insights that comprise the experience of computation in our lives.

Computational trinitarianism entails that any concept arising in one aspect should have meaning from the perspective of the other…

View original post 926 more words

“Cows Have to be Milked”

Pittsburgh (Abolitionist) Vegan

I have come across this argument before, but not in several years. Today, two fellow students reminded me of this common argument: “Cows have to be milked.”

Searching the Internet, I came across conflicting information. Some sources claim that the cows may contract Mastitis, an inflammation of the mammary gland. I also came across several sources that state cows become agitated when not milked. Others still, claim that the teats will eventually just dry up. I have contacted the Holstein Association for more information. (Holsteins are the dominant breed of dairy cow in the United States.)

[Update 05/23/12] At the time I originally published this article, I did not have a response from the Holstein Association. Now I do:

“Hi Pierce,

While we are not a veterinary organization, which would be the best source, I have lived on a dairy farm my entire life and can hopefully help clarify it…

View original post 688 more words

Featured Image -- 2193

A Dramatic Tour through Python’s Data Visualization Landscape (including ggplot and Altair)

Regress to Impress

Why Even Try, Man?


I recently came upon Brian Granger and Jake VanderPlas’s Altair, a promising young visualization library. Altair seems well-suited to addressing Python’s ggplot envy, and its tie-in with JavaScript’s Vega-Lite grammar means that as the latter develops new functionality (e.g., tooltips and zooming), Altair benefits — seemingly for free!

Indeed, I was so impressed by Altair that the original thesis of my post was going to be: “Yo, use Altair.”

But then I began ruminating on my own Pythonic visualization habits, and — in a painful moment of self-reflection — realized I’m all over the place: I use a hodgepodge of tools and disjointed techniques depending on the task at hand (usually whichever library I first used to accomplish that task1).

This is no good. As the old saying goes: “The unexamined plot is not worth exporting to aPNG.” 

Thus, I’m using my discovery…

View original post 5,025 more words

Featured Image -- 2187

Video Conference Part 1: These Things Suck

Ben Garney

What I cannot create, I do not understand. – Richard Feynman

I do a lot of video chat for work. If it’s not a one on one, it’s pair programming. If it’s not pair programming, it’s a client meeting. I use a lot of Skype and Hangouts.

Sometimes they don’t work for unclear reasons. Sometimes file transfers fail. Sometimes screenshare breaks, or when it’s active you don’t get webcam, too. Or the connection lags or drops even though everything is running fast.

Every time I experience such a failure, I get really angry and think, “I could do this better!” But I never quite got angry enough… until now. I guess the weight of years of frustration finally got to me.

I wrote my own (prototype) video conferencing app. It turned out pretty well. And that’s what these posts are about.

Conventions & Caveats

We will be referencing a 640×480…

View original post 933 more words

The 100:10:1 method – the heart of my game design process

Nick Bentley Games

design-method

This is the second post of a series on practical game-design techniques. Here’s the first

In my years designing games, my methods have evolved from Games-Randomly-Emerging-from-the-Inchoate-Chaos-of-my-Brain-Area to something resembling an honest-to-goodness, write-downable process. I’ve decided to share this process here, for four reasons:

1. I’ve used it to create 3 of my 4 favorites among my own designs (Catchup, Stinker, and Cat Herders – Odd is the exception), which suggests it might have value.

2. I haven’t seen anything exactly like it.

3. Writing about it will give me ideas for improving it.

4. Pondering game design is one of the two great pleasures of my life (the other is spending time with my ladylove, who’s just sort of discombobulatingly great to be around)

Recombobulation Area …so thank heaven for this

I call it the 100:10:1 method. I’ll start by describing it, then discuss why it helps me.

The 100:10:1…

View original post 2,061 more words

C++ in Competitive Programming: I/O

Growing up

Welcome back to my series about Competitive Programming. Here is the introduction in case you missed it.

In this post I’ll explain some common idioms to deal with input and output.

In C++ a simple task like reading an integer from the standard input can be done in different ways: using streams, C functions or OS-dependant calls. The streams model offers a pretty high level interface, but it is generally slower than using native operating system calls. However, in different cases, it is acceptable.

I have solved a lot of challenges and very rarely I had to switch to C functions (e.g. scanf) or turn off the synchronization between C++ streams and standard C streams after each input/output operation (by using std::ios_base::sync_with_stdio). Most of the time the I/O is not the point of the exercise then we can use the convenient streams model. This point seems irrelevant but it brings about simplification, enabling us to write not only simpler but also safer idioms. We’ll…

View original post 1,640 more words

Featured Image -- 2165

The 50 Startups That Launched At Y Combinator Summer 2015 Demo Day 1

TechCrunch

Hardware took the spotlight at today’s Y Combinator Demo Day, reflecting a major shift of the accelerator beyond the cliche mobile app startup. Out of the 50 companies from the Summer 2015 batch that demoed on the record today, 20 featured hardware. What was formally the Demo Day lunchroom has become an expo hall for all manners of robots and gadgets.

Tomorrow, another 50 or so startups will present. Soon, we’ll have our selections made for our favorites. But for now, here’s a look at all 50 that strutted the stage today:

TeaBOT — An automated beverage vendor

TeaBOT is a robot that makes grab’n’go tea. You enter up to three types of its dozen teas, pay via iPad or credit card, and the bot automatically mixes you a hot cup of tea. The company says the bots can earn $100,000 a year. The startup licenses the TeaBOTs to retailers and colleges, and…

View original post 4,314 more words