Sunday, May 29, 2011

Gas + Commute = Bad: Before and After the move to Seattle

On March 21st, I left Overland Park, KS where I was driving an hour a day to work. Coming to Seattle, I wanted to live close to work, so I do. I can walk to work in less than 10 minutes. If I hustle, then it can be done in five minutes. I don't even need a bus. I'd like to share some numbers from my mint.com regarding gas usage.

January$363
February$402
March$293
April$39
May$0

The gas tank will be empty on June 1st, so I put $40 in it. I expect that to last until the end of june (at least). The only reason I have been driving recently has been due to my wife's check ups for her broken ankle. Beyond that, we can live in harmony without a car. Which is good because traffic in Seattle can suck it hard.

Now, you may be thinking, but I like saving the money by living in the burbs. OK, great. But, I get to have that smug feeling that I'm better than you because I don't use gas. That's way better. That combined with my wife's obsession to recycle means we are a green family with our heads planted firmly up our asses. It's awesome.

Saturday, May 28, 2011

Business for Programmers: Marketing Yourself with 10 steps

The nice thing about being in a start-up is that you work with marketers and salesmen close, and I had the pleasure of working with a fantastic marketer and superb salesmen. So, you may be wondering why a programmer needs to know anything about marketing?

Well, that's a good question. If you look at a business, then it breaks down into doing these four tasks:

Build Thing: Make a product/Offer a skill to service
Market: Find people that like said thing
Sell: Get money for said thing
Support: Make sure said thing survives customers

That's basically the entire understanding you need to understand business. If you can write a business plan in a page that addresses these four things, then you can build a business.

As a programmer, you are a business; ignorance of basic business fundamentals will own you in the future. You go to school or hack your projects out, and this will build your skill at building things. However, if you build something and no one uses it, then did you build anything?

Step 1: Have skills that fit the market
Do you have skills that you can market to companies? You need to have skills, and your product needs to fit the market. If you know COBOL, then you may want to upgrade to Java/.NET. If you know OCaml, then you may want to downgrade to Java/.NET. Learn PHP or Perl since it is a plague on web programming.

Step 2: Find a passion, pick you destiny
You need to be passionate about something, and you need to have an interest in computing. If you don't have passion, then you are not going to be a good product. This guide isn't going to be much help without passion. While you may be passionate about computing in general, you need to decide on one to build a career on. If you want to be a generalist, then you can free-lance or be a technical co-founder. If you want to be a specialist, then you need to find a company that needs that specialty.

Step 3: Join/start an open source project centered around your passion
Just get involved in the community or try to build your own. (a) it will help you network, (b) it will communicate your passions. Everyday, you need to be writing code on something.

Step 4: Have a github account
Make good code, and share it. I'll be honest, your resume compared to github is shit. Get something good on github that is tasty. Now, get 10 followers. Pick code to share is similar to the code you could stand writing for the rest of your life.

Step 5: Dedicate time to stackoverflow/quora/forums/linkedin/reddit
Make an effort to contribute/lurk every week. Scouring these sites gives you an idea about the entire market in two ways. It gives you an idea of your competition, and it gives you an idea about the current market conditions. Any site that clusters programmers is worth paying attention too.

Step 6: Build Karma on HN
If you don't have an HN account and consider yourself a hacker, then shame on you. You must be living in the cave. I get it; caves are fun. Now get an HN account and start contributing. Don't interject until you know you can add value to the conversation.

Step 7: Get over rejection
There is a new thing called rejection therapy, and I recommend it. I recommend buying some products and trying to sell it door to door, and you will understand the nature of sales. Understanding the nature of sales is critical to understanding the importance of marketing. You need volume.

Step 8: See the world as risk/reward and take bets.
Look at the newfangled shit that comes out of the industry. I remember betting badly against ruby due to it being stupid dynamically typed shit pie. I didn't take the risk on Ruby, and I lost out on the reward. There's a new thing now called node.js; is it worth the bet? I don't know, you decide.

Step 9: Put yourself in the business of your customers
The nature of programming is that the act is usually always helpful to someone. Who are you trying to help solve a problem? For who? You? Your Mom? Your friend's Mom? Your coworker? Your business partner? Before you can begin coding and solving problems, you need to know who you intend to help. If its just you, then fine. If it is your coworkers, then you should probably talk to them. Why do your customers need you? How do you make your customers more awesome?

Step 10: Meet people
We live in a new world where sites like meetup.com can trivialize the finding process. Everyone is looking to socialize with the right people. Once you find people. Don't fuck it up since that tends to make bitter people (i.e. you alone in your parents basement troll'n it up). Read "How to Win Friends and Influence People", and then try to apply the principles.

Monday, May 23, 2011

The Engineer and the Artist

I've noticed a pattern emerge amongst my friends and myself.

Many of my highly technical friends are computer scientists, mathematicians, scientists, and engineers. They would be the canonical examples of left-brain thinkers. Most of them have married (or in an active relationship) with an artist of some kind. The significant others are the canonical examples of right-brain thinkers.

The pairing is perfect.

Since I'm most familiar with my wife, I'll share some things I've learned about my wife and life in general.

My wife inspires me.

Before my wife, I was a methodical machine producing code. I try to change the world and make it better. Engineering, science, math are the ways we organic clumps of meat transform reality to make our lives better. Life is messy, and its our job as engineers is to clean it up. Why?

Once I've constructed the perfect reality where I sit in the middle of a vast plane of mathematical perfectness sitting on my throne of enlightenment, then what? Seriously, once I achieve the perfect state of the universe, then what? Once I've made all the money in the world, then what? Once I've built what I wanted to build, then what? Once I've built the ships to carry us out to conquer the universe, then what? Once I've conquered the universe, then what? Once I've reduced all existence to a single dense form, then what?

Explode, break it, and fuck things up. That's what.

Engineering is the way we improve our lives, but it is not the answer to the meaning of why we live. People find meaning in all sorts of ways. This is when I discovered art. Why is that pretty? Why does that move me? Why does a song sound beautiful? What are these emotional things? Why are the cracks in the pavement interesting?

These questions are the ones that turn a black and white reality into a messy pile of grey.

Who employs my wife? me. Now, if I could just get her to sign the damn employee agreement! Artists!

Seriously, I love my wife. Everyday, she teaches me what it means to be human. She breaks the mechanical barrier that I have around my heart, and she inspires me to be better. Not better in the engineering sense, but better in the sense of being a human being. Without my wife, I would probably turn into some troll.

Life needs more love.

I think engineers are attracted to artists for this reasons. If you are an engineer, then you have to deal with the shitty facts of reality. Like the speed of light. The speed of light is a mother fucking bitch. I hate it. Laws of thermodynamics suck too. Gravity, oh its a mother fucker! Seriously, life is full of shit that some engineer has to go in and work around.

Why do we deal with all this shit? Well, because life is harsh without engineering.

Now, I'm not saying that engineering is devoid of art, engineering can be an art. However, at the end of the day, the things engineers build have to work. This means that engineers can not wave around magic wands and make life better. It's slow methodical work that requires team-work.

Art fundamentally does not answer the ultimate question of life. This question, which spawns religion, is in my mind unanswerable using any formal reasoning system. I have no methodical way of exploring this question, so I don't. Art however is a great way to keep our minds off that question.

Meeting an engineer's significant other generally will generally tell you everything about them. My wife is the kindest person I've met. She feels bad for stepping on flowers. She's sweet and kind. She changes my world view much to my infantile protests. I swear, she doesn't have a mean bone in a body. She even recycles hard-core!

She inspires me to try to write poetry, and she opens my heart in a way that I can't express. I can't engineer a feeling, but her existence is like poetry.

Sunday, May 22, 2011

Instead

of hacking away at some bitcoin-bazarr, I spent the majority of my day making my wife happy, writing a love letter to my wife, and reading.

What did you do today?

Me the philosopher

I'm thinking about life and death and stuff; does that makes me a philosopher?

Yeah?

Sweet! I'll add that to website.

The dream that was our first failed start-up; start-ups are hard; the future is bright

I've recently discovered the awesomeness of bitcoin. Some years ago, me and some friends did a start-up before it was really super cool. The dream was simple: enable artists to buy and sell their shit as content is king.

There was a sub-text to the dream that was simple: FUCK MIDDLE-MEN.

We were building a in-system currency for enabling micro-transactions so people could sell things for fractions of a penny. We wanted to get prices to a point where indie artists could create and stimulate market demand by using low prices. In theory, it was awesome.

I fucked this up by being an academic trying to build a transaction system that would abide by all the rules of VISA/MC/banks, and then scale to the size of 10x facebook (Transactions are hard!). I say I fucked up because I think I put us in a position where we needed investment. There were lots of legal problems around our dream, and this was a big barrier to investment; so, we watched the dream die a slow and painful death. At least, in Kansas. Gauh, why did we try to do it in KS!

Now, the perfect solution is available via bitcoin. I'm honestly glad we didn't succeed because bitcoin + a weekend hack project could have put us out of business. We live in a bold new world with this internet thingy.

The dream we had can now be concisely built and done without worrying about VISA, Banks, Hackers or other shit. In fact, a bigger dream is available. Shit!, bitcoin could end piracy! (Well, kinda)

We are watching the death throes of the music industry. Eventually, the movie industry will end too. See, its not that music or movies are going to die. The middle-men, executives, organizers, and overhead to get the music and movies to consumers. They are going to go away with all the licenses.

Well, they aren't going to go away in a #rapture sense. They are going to have to accept a new reality (which is painful because most people hate change rather than embracing it). They are going to have to focus on the new emerging market and learn a new aspect of the trade. Well, people will skill will. People with no skills, they are kind of fucked... They should become artists.

How? Well, imagine a bit-torrent like protocol that required a bitcoin wallet. Sharing would be restricted between those people that have paid for it. The artist would simply start to seed their product with their wallet. In theory, this would lower the price of the content, increase the artist share. Lower product price + greater artist share should mean increased demand and thus more value to the artist. The ability to control pricing on the fly would enable artists to effectively market.

Downloading a client would be the most hard-core version of this scenario, but it is possible.

The interesting thing is that bitcoin is unstoppable. It may go into the black market, but eventually, it will win and be a legal form of currency. At least, for buying digital content.

What I'm considering now is whether or not it is worth it for me to build an escrow service with a search engine. It would be fairly simple with Elastic Bean Stalk, S3, some EC2 machines for search via Solr. Shit, I should be building this! Next weekend, I'm going upstairs to be with my wife.

What this system is going to create is a place for amateurs to get to a point where they can take on patronage projects. Once people effectively demonstrate that they can make things people want, then they can raise serious funds. Look at KickStarter. I love kick starter.

This is how small time videos produces will go big. I watch a bunch of YouTube people, and if they tried to raise serious funds, then I would fund them with some pre-sales. Now, how this will turn into $1B budget for making movies, only time will tell.

I think it is possible, and that is step one.

A good problem to have (unless you are Sony)

"A good problem to have" is entrepreneurial way of saying, we are fucking this up and pushing shit out the door, but it doesn't matter if no one uses it.

For many people, it works.

For some, it fails. See PSN.

When you incur technical debt that puts people at risk, then you must pay it.

My role in life is not to create "good problems to have". My role is to solve them. I like solving puzzles. This will make sense as I'm writing a larger entry, but I wanted to throw some content out the door that was self-contained to my future main-point.