Category Archives: Rants

History Rants

DFW: This Is Water

 

And the so-called real world will not discourage you from operating on your default settings, because the so-called real world of men and money and power hums merrily along in a pool of fear and anger and frustration and craving and worship of self. Our own present culture has harnessed these forces in ways that have yielded extraordinary wealth and comfort and personal freedom. The freedom all to be lords of our tiny skull-sized kingdoms, alone at the centre of all creation. This kind of freedom has much to recommend it. But of course there are all different kinds of freedom, and the kind that is most precious you will not hear much talk about much in the great outside world of wanting and achieving…. The really important kind of freedom involves attention and awareness and discipline, and being able truly to care about other people and to sacrifice for them over and over in myriad petty, unsexy ways every day.

That is real freedom. That is being educated, and understanding how to think. The alternative is unconsciousness, the default setting, the rat race, the constant gnawing sense of having had, and lost, some infinite thing.

David Foster Wallace, Kenyan College Commencement Speech, 2005.

History Politics Rants

Bike Lanes Boost Local Business

NYC study finds that bikes lanes boost local retail sales by almost 50%, at a time when average retail sales increased by 8%. Additionally, dedicated bike lanes reduced all injuries for all street users by over 30%.

NYCDOT_-_9th_Street
NYC_DOT_-_Pearl_St

Download the pdf here.

Also relevant:

Random Rants

DFW: On Perfectionism

Perfectionism is very dangerous, because, of course, if your fidelity to perfectionism is too high, you never do anything, because doing anything results in … it’s actually kind of tragic, because it means you sacrifice how gorgeous and perfect it is in your head for what it really is.

–David Foster Wallace
via PBS Blank on Blank

Rants Technology

A Startup Development Plan

  1. Continuous Integration, use it.
  2. All code must have tests. Lower coverage == CI fail
  3. Tests must run fast. Slower average test speed == CI fail
  4. Code quality regression == CI fail.
  5. Vagrant and Chef for your development environment. A new dev machine is  a “git clone” and “vagrant up” away.
  6. Github is the hub: pull requests for code review. One other person signs off on code before it goes to staging
  7. Deployment is one command away.
  8. Rollback is one command away.
  9. Scaling capacity is one command away
  10. Build for horizontal scaling.  Start with multiple instances of every server/application/service type. Plan on your servers/apps/services being fungible, unreliable, and innumerable.
  11. Faster response to the user is always better. Anything that doesn’t need an immediate response, queue it up and do it  in the background. Cache and pre-compute as much as possible.
  12. If someone else has made a library that does most of what you want, use it. (Submit patches so it does all of what you want)
  13. If you can abstract the solution out of the app into a standalone library, do so and make it open source. Open source is the great code review in the sky. More eyes means better code.
  14. A service is better than a solution. A solution is better than a hack. A hack is better than nothing at all.
  15. Done is the engine of more.
  16. Perfect is the enemy of the good.
Awesome Rants

Desiderata Of Happiness

Go placidly amidst the noise and haste, and remember what peace there may be in silence. As far as possible without surrender be on good terms with all persons. Speak your truth quietly and clearly; and listen to others, even the dull and the ignorant; they too have their story.

Avoid loud and aggressive persons, they are vexatious to the spirit. If you compare yourself with others, you may become vain and bitter; for always there will be greater and lesser persons than yourself.

Enjoy your achievements as well as your plans. Keep interested in your own career, however humble; it is a real possession in the changing fortunes of time.

Exercise caution in your business affairs; for the world is full of trickery. But let this not blind you to what virtue there is; many persons strive for high ideals; and everywhere life is full of heroism.

Be yourself. Especially, do not feign affection. Neither be cynical about love; for in the face of all aridity and disenchantment it is as perennial as the grass.

Take kindly the counsel of the years, gracefully surrendering the things of youth. Nurture strength of spirit to shield you in sudden misfortune. But do not distress yourself with dark imaginings. Many fears are born of fatigue and loneliness.

Beyond a wholesome discipline, be gentle with yourself. You are a child of the universe, no less than the trees and the stars; you have a right to be here.

And whether or not it is clear to you, no doubt the universe is unfolding as it should. Therefore be at peace with God, whatever you conceive Him to be, and whatever your labors and aspirations, in the noisy confusion of life keep peace with your soul. With all its shams, drudgery, and broken dreams, it is still a beautiful world. Be cheerful.

Strive to be happy.

The Desiderata of Happiness, by Max Ehrmann

Rants Stuff Technology

Urban R&D: the perfect keychain

After many years of research and testing, I think I have finally hit upon the ideal keychain. Before I get into specifics, though, lets talk about what, exactly, makes a keychain “Ideal”.

  • First and foremost, silence: I don’t want to hear my keys every step I take.
  • Additionally, the ideal keychain must be lightweight, as light as possible.
  • Small, so as to not interfere with my day to day movements and add the least wear and tear to my pants as possible.
  • Indestructible: I’m carrying this thing everywhere, and well, probably going to be sitting on it.
  • Utilitarian: Why else would I carry it with me? For me, utilitarian means being able to store some data, open a beer, easily open packages, and turn a screw here and there.
  • Easy to add and remove elements: oddly enough, this is the toughest bit to combine with the rest. The traditional split ring keychain makes adding or removing anything a fight at best.
  • Finally, that it can be attached to my beltloop and fit in the backpocket of my pants, without clumping up at the bottom of the pocket, so that I don’t have to sit on my keys, and instead they stay to the upper corner of the pocket.

So, what collection of objects has all of these wonderful properties?

The carabiner key

The Lucky Line Keyring: easy to add and remove keys, but never comes undone accidentally.

The Lacie Iamakey, slow but small and indestructible.

The NiteIze S-Biner size #4: It is the perfect size to hang off a beltloop and into your pocket.

The Gerber shard, sharp enough to cut plastic clamshell packaging, opens a beer, turns a screw, and the TSA lets it through. Super cheap to boot.

 

And that, my friends, is the perfect keychain.

Rants Technology

So you’d like to start a Web Company, eh?

“Men wanted for hazardous journey. Small wages. Bitter Cold. Long months of complete darkness. Constant danger. Safe return doubtful. Honour and recognition in case of success.”

Ernest Shackleton.

This is the perhaps most accurate description of a job at an actual startup. If this sounds like something you’d be interested in, read on.

Remember, Most startups fail. Failing, however, is a crucial step towards not failing.

General advice: read as many of Paul Graham‘s essays as you possibly can. from the top down. Paul Graham has literally helped several hundred startups get off the ground. Some essays will not really be useful right now, but the ideas in there are generally very very good. Check out news.ycombinator.com on a fairly regular basis. Read the comments, lookup every word and acronym you don’t know. Watch these videos

Try to answer these questions as quickly and cheaply as possible:

  1. what is the addressable market size? meaning, in the world, right now, how many people would pay for this? How many people would be interested to the point of being regular visitors?
    this is intended to give some sort of idea about how big the opportunity is.Use tools like quantcast.com to help evaluate how big the audience is that your product might reach. Imagine if you are making a management tool for independant contractors: How many people visit http://www.contractortalk.com/ on a monthly basis? that’s about your addressable market.
  2. figure out the minimum viable product. Try to get your product down to one sentence. Perhaps even one or two pages. (not counting boilerplate, like “about us”, “FAQ” etc.)Don’t get caught up in vision of the final product. No plan ever survives first contact with the customer. Try to get to the very essence of what it is that your idea does. It should literally be one sentence, or possibly less than a sentence. The minimum viable product for google was literally a place to type in text, hit enter, and get search results from a database of websites.When people think of ideas, they go from version 0 to version infinity almost immediately. You should never stop thinking about version infinity, the absolute pinacle of what it is that your idea could be, but, you should laser focus on version 0.1, the absolute minimum of what it is that your idea does. Literally, the one thing, that without it, your idea doesn’t exist, it’s still an idea. It really should be one thing. sometimes you can get away with two. sometimes.Then, you make the one thing and you show it to as many people as possible. Maybe you don’t even make it, you tell people online that you are going to make it, you setup a website where people can give you their emails so that you can tell them when you make it, and then, when you have their emails, you ask them about it, you get them involved, you show them mockups, get them to beta test, ask them to pay you for it upfront. the works. Your customers are your partners.
  3. Fail often, fail fast, and fail cheaply.
    failure is the process of stumbling towards success. This means relentlessly testing assumptions that you have as quickly as possible, with as little downside as possible. the difficulty is figuring out how to test accurately yet also as cheaply as possible. thus, use what is already there to try to invalidate your assumptions. Think of it like science: you’ve got strong hunches that you want to prove correct, but you can’t be sure of them, and aren’t going to bet the farm until you’ve got a sure thing. The only way to be sure is to test it and be honest with yourself about the results.

How are you going to fail as fast as possible? Remove as many people, steps, and processes as possible from getting your idea in front of someone who doesn’t care about you. (Your family and friends are useless in this regard, insofar as they will not tell you that your idea is a stinker)

Crucially, if your idea happens to be related to computer and software in any way shape or form, learn how to program your computer. There are a ton of awesome resources out there to learn how to write software and for starting a business, but it can be daunting to try to separate the wheat from the chaff.

The two best languages at the moment are, in my humble opinion: ruby and javascript. Ruby because it is easy and understandable, yet also powerful, javascript because it is ubiquitous, interesting, and easy to play with: if you’ve got a browser, you can mess around with javascript. I’d look through each one below and see what seems like it’s your thing. Also, remember: it’s not that hard and more importantly there is no speed limit.

Free ruby stuff:

Free javascript

At this point, you should be ready to start failing. Go forth, claim your destiny.

Stay tuned for the next installment of this multi-part series.

Rants Technology

The Semantics of Emptyness

Empty space, often realized as indentation, is a common method to signifying meaning in programming languages. Python is famous for this, Haml uses indentation to represent the structure of HTML. I, for one, am not a fan.

In human language, information and meaning, codified, take the shape of syntax and semantics. Syntax being the framework within which the semantics can be parsed. I like to think of syntax as a protocol, the agreement we make to enable the exchange of meaning. English syntax enforces word order, whereas Latin requires declension and conjugation to provide a framework within which we can communicate. Syntax itself informs and modifies Semantics, subtle shifts in word order and conjugation change the meaning of a sentence. A set of words that violate the syntax of english are in essence almost meaningless aside from them self. If I were to take all the words in this paragraph, sort them  randomly, remove the spaces and all punctuation, the result would be gibberish. Additionally, syntactic elements, separated from the words they encompass are without meaning as well.  All of the spaces, punctuation and the order of the parts of speech of the words in the paragraph would also contain very little information at all.

With programming languages, so much of the same holds true: the syntax provides the framework through which the meaning of a program can be understood. My problem with considering whitespace as meaningful with regards to syntax and semantics is that for almost every language, including human language, whitespace has one purpose: token separation. It is only important because of what it is not. Let me try to provide a concrete example.

Above this line there are four spaces. This sentence on the other hand, has eight spaces. The spaces above are meaningless, because empty space itself is almost a purely syntactic element. It has absolutely no semantic value. Beyond that, it’s almost impossible for you to visual discern exactly how many spaces there are because typically the syntactic element we use to separate tokens is the very token you are trying to count.

Haml has many graces: it makes it very easy to whip up totally valid html in a flash and templating is a joy, however, it’s use of whitespace indentation to indicate html element nesting levels is maddening, precisely because it has radically overloaded the concept of emptiness and indentation. To give you an example of this degree of exactly how maddening it is, in one of the sentences above, between two words, there is a double space. Where is it? Can you see it by quickly scanning the document?

I’ve never been able to tinker in python, at least not in the same way that ruby lets me throw together things that just work anywhere I’ve got a text editor (that I can clean up later, naturally). I literally find myself cursing the emptiness. If programming is about expressiveness and power, I for one would not like to wield that ability with a void.

Politics Rants Technology

The Internet is my Religion

Watch live streaming video from pdf2011 at livestream.com
Random Rants

Question Assumptions

So often the traditional methods and means of getting things done are built around assumptions that are either outdated, or don’t apply in a novel situation. Mark Wahlberg was able to shoot several fight scenes, which typically take 20 days each, for a movie whose entire shooting schedule was 35 days. How did he do it? He actually filmed real fights, the same way that HBO films live fights for pay per view.

From 37 signals:

Experts go with what they know. And they’ll often insist something needs to take a long time. But when you don’t have tons of resources, you need to ask if there’s a simpler, judo way to get the impact you desire. Sometimes there’s a better way than the “best” way.

The question becomes, then, how can you tell if there is a simpler way? That is the result of being honest with yourself about what it is you are trying to achieve.

The goal was to make the fights seem real. Not to make them look good. To seem real. Focusing on that changes the requirements.

It enables you to switch mental modes: We aren’t making a movie, we are shooting a fight. That happens all the time, in real time, on TV. When you re-examine your requirements, you can see where there are shortcuts to be made not only because restrictions that previously existed no longer do, but a clearer understanding of the goal enables you to step outside your current domain and re-examine other domains for best practices. In the case of “The Fighter”, the other domain was that of sports television: literally brimming with expertise and best practices around capturing live action in a compelling way.

The enemy isn’t best practices and acquired wisdom, it’s a failure to understand truly what it is your want to achieve, and from there search for expertise in other domains.