Saturday, July 16, 2011

Why Silicon Valley needs more money than NYC; wealth of a nation

Historically, before computers, I think Wall Street served a good purpose. It's ultimate goal was to make sure that great people who could transform the world had the resources needed to do so. The need to coordinate money into the hands of people who can use that money to create wealth is still needed. It's why the world needs investors. However, do we need Wall Street? Do we need the exchanges? Do we need Goldman Sachs?

These are fundamental questions. I don't know the answer, but I'm willing to bet the answer will converge to "No".

I think there is an opportunity for silicon valley to disrupt wall street.

I view wall street in aggregate as corrupt these days because it isn't about creating wealth; it's about managing and optimising money. Money is not wealth. I internally cry a bit when I see a math/computer science major head for NYC to make money. Will they make money? Yes. Will they make wealth for the nation? No.

I'm not really going to defend what I feel. I don't want too. I feel like Silicon valley needs to over-turn Wall street to change the leaders of the country.

We need people who want to make life better for everyone rather than exploit people with complex rules and financial instruments.

I believe we can build a better and brighter future.

The wealth of our nation has been derived from our ability to say "Fuck you nature" not "Let's subordinate most of the country to poverty".

When I look to silicon valley now, I see we are solving communication. This crazy thing called the Internet gives us new tools and new vehicles. I expect us to be able to vote from home. I expect us to remove the computational barriers that forced hierarchy on us. I expect the social web and the Internet to transform us into a culture of a switch rather than a hub.

I expect better out of us.

Why women shouldn't vote! (Men do stupid things)

In reading what is good about men? this early morning due to a bit of insomnia. It was an interesting read.

I'd like to apologize now for the link-bait title. I actually encourage women to vote (even more so now), and I have no problem with whatever feminists do. Also, for brownie points, I took women studies in college; primarily because I was seeking to understand why so women are so sparse in computer science.

In the "What is good about men?", if you take it as an axiom and ask follow-up questions. What are the consequences. What about women and voting? Why have women not had/have a vote? Why have men been against it? Why do men oppress it?

So, I was thinking about that when I was trying to get myself to sleep. It's interesting.

I think I got it. Initially, women didn't want to vote so they were not responsible for the stupid ass decisions the men were taking. That's nice, but why the aggression against it?

Well, I think the story goes like this. We are the children of victors. Once the victory is achieved, the peace settles in. A generation is born in peace and corruption and the conflicts moves inward. This corruption enables weaker men to gain prominence and weaker men need to put people into submission. That's where the differential is introduced.

As to laws and aggression, most people fear change and will fight based on that notion alone. Strong men embrace change because change is different, interesting, contains glory, and fun. Weak men fear change because strong men come out on top.

In any-case, I should return to sleep now. I thank HN for bringing it my attention whilst I desperately try to sneak back into bed.

Saturday, July 9, 2011

Nerd Rage: Bad Controls on iOS devices for games

Like, seriously, state machines are not hard.

Taking a few steps back, I bought a game on the App Store for over $0.99; when I spend more than $0.99, I expect magic and perfection.

When I get a buggy, clunky, and bad user experience, I get angry especially when I paid more than $0.99. Now, I could just sit from my magical armchair of developer perfection and complain, or I could write some crappy code and maybe educate some iOS fools with code. So, I spent 20 minutes to write an HTML5 joystick controller. Here it is world: angry code to do joysticks right.

Put this in your iOS 4 and enjoy the multi-touch-ness: http://ios.jeffrey.io/

Thoughts on good UX for mobile and games:

1. You need to control the event structure and not relegate it to some bounded box model. Bounded boxes are fine for buttons, but for things that need a level of fluidity and engagement, you need to control the entire screen.

2. You need to understand state machines and how to guarantee the absence of a bad state transition. Namely, the controls shouldn't stick nor flip-flop. It should be very simple.

3. You need to understand there are a multitude of thumb sizes.

4. You need to eat your own dog food.

I seriously wish I could get a refund. Argghhh!

The eternal engineering question

Build or Buy?

This question haunts me because if I buy, then I'm not getting exactly what I want and am compromising my wants. If I build, then I risk it being disappointed (and messing up), and worse if its not what I want, then I have to live with the shame and can't complain.

So, I was going to go to Mac

but then I started to look at the price and power of the laptops...



the mac book has same processor, 1/3 of the memory, 1/3 of the HD, smaller screen, 1/3 of the video memory. Argh! So, maybe I'll just build one like codinghorror. Gauh.


Sunday, July 3, 2011

Why writing programming languages is so fun yet so damn hard

I love sitting down on a Sunday day and throwing a parser with some tree manipulation to try to create a new way of expressing computing. However, it's hard.

I'll point out some goals that I think about when I'm in a PL mood.

(1) I hate garbage collection in a non-trivial way. It's stupid. Before you curse me into madness, there are a couple of ways of dealing with it. One, ignore it and have memory leaks. It's not rocket science to manage memory, but it can be a pain in the ass when you try to pass around ownership. Two, kill the heap. This, I've tried and it works; it isn't for the feint of art. Three, have reckless memory manage in contexts that get destroyed and share state via a DB like thing (i.e. Mysql, SQlite, or a DOM). I like Three a lot.

The nice thing about having reckless memory usage with a persistence back-end is that the thing that is reckless can fail. Say, you run out of memory, ok, create, kill the context. Now, from a performance point of view, this approach is strange to say the least. This is why I'm interested in embedding transaction logic into PL for optimization.

I don't have a solution to this as my last big language attempt just used a DB.

(2) Asynchronous is full of win. I'm not a fan of threads (Threads are Hard, m'Kay), and I would like a very easy way to think synchronously yet behave asynchronously. I'd like not to have to pass around closures, nor do I feel like yielding my code with co-rountines. I want something better..

(3) Saving state is fun. My last PL had the ability to zip of a closure, put it in a queue, and then distribute the computation. I'd like to be able to pause the state of the computation and move it between computers. The difficulty here is making it play safe with a persistent data store. See (1)

(4) I don't want to write a VM nor target low level code. My primary target must be C (or C++). I'd like the code to run on the iOS. I'd like it to be vanilla C. I'd very much like it to work in JavaScript. I'd like a real "write once, run anywhere" language that targeted machine code.

(5) I need closures; just because they make my life easy

(6) I like either dynamic types or polymorphic types (ala OCaml)

(7) I like type inference

So today, I made a very basic framework for expressing some of these ideas. I have mental solutions (because I've solved them before) for (3-7), but 1 and 2 are driving me nuts. I know C# has a kinda solution to 2 using co-routines, but's only ok. I want magic.

I want real magical shit in my PL, but magic is hard.

Morning Choice: Video Game or Code

Every weekend, I have a choice.

Do I play a video game? Or code?

Today I choose coding. Videos games are getting old.

And, I'm busting out ocaml because I'm going to try something very hard. I'm going to work on an asynchronous state machine compiler where you write code synchronously that turns into an optimized state machine.

Saturday, July 2, 2011

First Joke of the Morning

I'd like to talk about whole foods

The thing about whole foods is this: you need to read everything. The other day, I wanted some Parmesan cheese. So, I grabbed some at whole foods. It wasn't Parmesan. It involved sheep milk, and I was not amused. My hamburger helper like meal tasted like feet.

Comedy

Delivery is very hard, so I've written jokes that are hilarious. Well, to me at least.

One is based on a very funny yet embarrassing experience from my child-hood. In a casual setting, telling people makes them LOLz. However, trying to stand up and tell it to people. Woah, that's hard. Well, its hard for me because I'm a hard-core introvert that lives in my own fantasy world. Interacting with the outsiders tends to be a messy process. Fortunately, I've learned ways of dealing with it.

For instance, I used to have a deep fear of talking in front of people. So, I taught at college. That beat the fear out of me, and so I can go up and talk in front of people. It's oddly easy when the subject is boring like math, programming, or business.

What about messy and embarrassing past stuff? How do I not crack up during delivery?

Back to comedy: How do i take a personally embarrassing moment in my life and turn it into a deliverable routine?

To the twitter mobile!!!

Update: twitter was a failure. How about quora?

Wealth: the link between Hacker and Hustler

tl;dr;

hackers generate wealth, hustler's turn wealth into money

Longer version:

I was thinking about wealth the other day. How do you define wealth?

I think wealth is best defined by the ability to satisfy your want. If you want something and can't have it, then you are not wealthy (i.e. poor). So, I'm an inventor-hacker, and most of my want is satisfied with some work (except for things like space travel... I'm very space-travel-poor).

What about money?

Now, where does money play into this? When I grew up, my parents fought about money. My dad made it, and my mom spent a lot of it. So, I wanted nothing to do with money, and I put on the hat of the academic monk. I was happy in that role, but then I needed money (due to personal reasons). My personality isn't the type that settles for nickels and dimes when I actually have to go out and earn, so some friends and myself did the cool thing before it was cool. We did a start-up, and we were going to be bigger than Facebook and Texas! Multiplied!!

It was a failure; the next business wasn't a failure. I learned about money, and how to make it.

Money is time. It's someone else's time for doing something that neither you (nor them) want to do. That's the only thing that it is. It's nothing else.

So, if you want money, then you do things people don't want to do (or can't do) (like math), and do it well.

So, back to wealth. Wealth is satisfying want. If you have a lot of money, then you should be able to satisfy your want and be happy. What if your want can't be satisfied by money, yet you have it?
"There is no class so pitiably wretched as that which possesses money and nothing else." - Andrew Carnegie
What do you want? Answering this question is the key to your happiness. If you are a hacker, then the shear act of satisfying your want produces wealth. I've invented things my entire life, and I have to say that makes me very happy. I like making obscure tools for obscure problems. I like optimizing the shit out of the things. I like automating tedious things (because tedious things are bullshit). I oddly enjoy taking some shit ball mess of code and figuring out where it leaks memory. I like to solve problems, and I really-really love math.

The things that I do to satisfy my wants generate wealth.

What about the hustler?

The hustler's job is very straightforward: Transform the wealth that hackers generate into money. Build a nice cave, make the hackers happy on all non-hacking related dimensions, hire more hackers, and hire people to sell the wealth. Build a business that is good at transforming the wealth of your hackers into products for people, and then you win.

Extra credit: what do managers do? They make sure the hackers are producing the right kind of wealth. Tada!