San Diego’s 2nd SuperHappyDevHouse (SDSHDH2)

November 14th, 2010

Update: The idea of SHDH in San Diego was conceived from within the SD Hacker News group who then ran the event; but after the 2nd event, it’s clear that this is pretty much a movement that deserves to stand on its own (time for a “spin off”!) Official page and mailing list.

IMG_1171

Our second ever SHDH here in San Diego just concluded, and it was a blast (again!) :)

Thanks again to Erica for hosting the event and Microsoft (hat tip to Aaron) for the pizzas. Having a light touch of corporate sponsorship really goes a long way for a grass-roots bring-your-own-everything event! When I asked “who wants pizzas?”, about 70% of the people raised their hands.

IMG_1172

This time we up’d our attendance cap and had almost 30 attendees. Roughly a quarter were hardware hackers, and the rest were purely software (web apps, Android + iPhone apps + the upcoming contender, Windows Phone 7!)

IMG_1173

IMG_1170

Jim & Terry who started Hackerspace San Diego invited us all out to check out their co-working space in El Cajon (a large aircraft hanger), fully equipped with tools for hardware hackers.

A couple of other random things I’ve learned along the way:

  • The San Diego tech + startup community is quite fragmented; Phelan’s effort with SD Tech Scene (Google Calendar) is really useful for anyone who wants to know what’s going on with the SD tech community in general (and if you’re running a tech event in SD, be sure to get on it). Many of these groups have the same overarching goal of building a vibrant tech startup ecosystem here in San Diego, but we’re getting limited success on our own – perhaps it’s more beneficial to join forces.
  • As I went to the other local tech meetups and as I talked about SHDH, I quickly found out that it’s quite hard for people to remember the word “SuperHappyDevHouse”, so I usually tell people to just Google “San Diego Dev House”, which seem to stick better (and we always show up on the first page)
  • Organizing SD SHDH and SD Hacker News has been a fun and fulfilling one for me which I’m happy to do for no money at all (the positive “ROI” I reap for myself are all non-monetary ;) ), but I don’t scale as the number of attendees and quantity of events do! I’m not perfect but I’ve done could, always thinking in the attendees best interest, and I know it is in their best interest that I have more help with the organization of events going forward (help anyone? ;) ) ** special story below **

We’ll keep doing SHDH-es as long as long as there is interest, for as long as we can!

Looking ahead, our possible venues for SD SHDH 3 would be Erica’s new residence (if possible), or at the Ansir Innovation Center in Clairemont Mesa (6,000 sq. ft. co-working slash startup incubator space – see pics – thanks Bin Li from Ansir Corp for offering!)

Your happy SD SHDH 2 hosts post-event:
IMG_1178

Recap of pictures and video clips from the previous SDSHDH1.

** special story **

One thing I learned working 6 years now at a publicly traded B2B software + hardware tech co is the tension between sales and engineering that I’m sure isn’t unique. To generalize, here’s how they think of each other (at least the ones who dare publicly say it):

  • Engineer: “Sales guy, you just sell the product – I make it. Without me, you got nothing to sell.”
  • Sales guy: “Engineer, you just make the product. Your product sucks. If it weren’t for my great people-skills to compensate for the product inferiority, your product wouldn’t sell.”

If you asked an engineer which department is the most important to preserve (during bad times) or pour more money into (during good times), it’ll be engineering. If you asked a sales person, it’ll be sales.

Here’s a new perspective:

A company has to build something and it into the hands of customers in exchange for money to survive. The engineers engineer the product. The sales guys engineer the (human) relationships. The lack of either 1 in the equation will result in disaster. This is similar to what Customer Development is about. A lot of times people focus on the product, but the neglect the human aspect (plug: SD Lean Startup).

In my efforts to hustle and get the word out about our events, during the days when I wonder where I’m going to find 4 walls and a roof as shelter for our next event (given that we have $0 in our bank account, or the lack of a bank account to begin with, or the lack of a membership/event fee to precede that), where I’m going to find that 4 walls for the next-next and next-next-next event … I’m reminded that as a techie at heart with a computer science background that technically, this is not a technical problem. This is a relationship problem, and this ride has forced me to get out of the classic techies’ comfort zone. Organizing these events is pretty much like running a startup: gotta make more with even less (which in our case, was zero).

Business is a human enterprise.
Keith Ferrazzi

To that end, I’m truly proud that we’re able to keep our events free of charge for you party animals (yes we know you’re all price sensitive cheap @#$%* too ;) ), and I’m happy when the attendees walk away happy. I’ll even go out on a limb here and risk disagreement by making the following forward-looking statement: We will never charge SHDH & SDHN attendees as a requirement. The conventional wisdom about keeping out not-genuine people doesn’t apply to us since people know what we’re about (accurate PR message) and false-positives wash themselves out after one visit (must be that stench of an intense group of highly passionate and genuine people!)

###

(imagine that the below is a scrolling list of text like you see at the end of a movie)

###

Special thanks to the people who’ve let us use their home and business for shelter so far!

(insert page break)

Tom Han (Broadway Coffee – pls write a review! God knows how many times I’ve had to stress out over when 1 person forgets to pay for their drink!)

(insert page break)

Erica Douglass (for her big heart!)

(insert page break)

Also special thanks to Joël Franusic from SHDH “HQ” for special event org advice!

redis unknown command

October 21st, 2010

Short story: If you installed redis (or more specifically redis-server) on Ubuntu, and it’s largely working except for a few commands where it errors out with an “unknown command”, it’s probably you are using an old version of redis; and the fact that Ubuntu’s package naming convention using epochs is misleading does not help.

Long story: I’m using redis-py and I’m doing all sorts of operations which work, except for a few sorted set operations like zrank.

>>> r.zrank('a','b')
Traceback (most recent call last):
File "", line 1, in
*snip*
File "/usr/local/lib/python2.6/dist-packages/redis/client.py", line 349, in _parse_response
raise ResponseError(response)
redis.exceptions.ResponseError: unknown command 'ZRANK'
>>> r.zrank
<bound method Redis.zrank of <redis.client.Redis object at 0xb7819c0c>>
>>>

Read the rest of this entry »

Begin each day by telling yourself: Today I shall be meeting with interference, ingratitude, insolence, disloyalty, ill-will and selfishness

October 17th, 2010

A really great quote when you have to work with people that really stress you out to no ends and you find yourself running really low on patience.

Begin each day by telling yourself: Today I shall be meeting with interference, ingratitude, insolence, disloyalty, ill-will and selfishness—all of them due to the offenders’ ignorance of what is good or evil. But for my part I have long perceived the nature of good and its nobility, the nature of evil and its meanness, and also the nature of the culprit himself, who is my brother (not in the physical sense, but as a fellow-creature similarly endowed with reason and share of the divine); therefore none of those things can injure me, for nobody can implicate me in what is degrading.

—Marcus Aurelius

From the book:

Half-baked Idea Of The Day: TLDR

October 9th, 2010

Update 1: Based on initial feedback, I might be conveying this wrong. The proposed idea is not yet another way to find interesting things to read. Example use case: The moment you visit a URL, just as you are about to read it, the browser tells you that “hey, before you read this, this might actually be a waste of your time.

If you’ve never seen that expression “TLDR” on the web, that’s short for “too long didn’t read”.

I use Instapaper to save things I want to read for later when I have time to read. But just as my pre-Instapaper days, the problem is that my list of things to read grows faster than I actually have time to read and de-queue items from the list. As you’ve heard, “wealth of information creates poverty of attention“. Not a new problem that I’m sure a lot of people suffer from.

We all have our own ways of coping, so I wonder if we could take all the methods (that work) and productize it.

There is an old story about a finance professor and a student who come upon a $100 bill lying on the ground. The student stoops to pick it up. “Don’t bother,” the professor admonishes. “If it were really a $100 bill, it wouldn’t be there.[1]“

The above story captures the essence behind one of my own tactics to cope[2]. Read the rest of this entry »

IE6 effect in HTML5 – How It Works [updated]

October 7th, 2010
ie6 html effect

Quick update: Thanks for the endorsement Mr. doob! I’m honored :)

Here is a web site with a cool Javascript effect by Mr. doob, recently posted on HN & Reddit. I’m trying to get better at my Javascript so here’s my dissection of this interesting effect, if you’re interested in learning how this is done.

First, create a HTML 5 canvas element (highly recommended short read about canvas here). Make its width and height the same size as window.innerWidth and window.innerHeight so that it fills up the content area of the browser window. Append the canvas element to the document body.

var canvas = document.createElement( 'canvas' );
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.style.display = 'block';
document.body.appendChild( canvas );

As of now, there’s only a 2D context to pick from. In future, there might be a 3D context based on OpenGL ES (quote). So just get the context with getContext, and then create the image element.

var context = canvas.getContext( '2d' );
var image = document.createElement( 'img' );

Now let’s add an event handler to the image for when the image loads. ‘this’ refers to the image element itself. bitmapWidthHalf and bitmapHeightHalf is exactly what it means: half the length of the image’s width and height respectively. Math.floor is used to round the result of the division down to the nearest integer.
Read the rest of this entry »